NLP面经汇总
1.竞技世界
这次面试的体验非常棒
从项目入手,然后延申开来问一些基础知识以及代码实现
1. 根据我简历上的项目,问我LR的一些基础知识,然后让我用python的numpy手写LR
2. LR和SVM的区别
3. 知道有哪些优化器嘛?
4. 对深度学习了解多少?知道CNN嘛?
5. 手写CNN的卷积、池化
6. 说一下比较经典的CNN网络
7. 说一下lstm的原理
8. 写一下互信息熵的公式,并说一下它是如何应用到新词发现中的
9. 说一下transfrom的原理
10. 了解bert嘛?
因为涉及到手写代码。虽然问题不多,但是也面了将近一个半小时。然后让我等一会,没想到进来的是hr
hr说总监面安排在下周,因为总监最近比较忙,面试也比较多,公司这周马上准备出去旅游了,只能安排在下周了。然后就是hr面
1. 哪里人?
2. 是否独生子女
3. 考虑在北京长期发展?
4. 高考多少分?考研多少分?
5. 看我博客的名字很文艺,又问我以前是不是文艺青年。。。
6. 喜欢的运动是什么?
7. 坚持最久的一件事是什么?
8. 说了公司对新员工的安排,部门情况
9. 公司薪酬福利待遇
10. 闲聊,聊够半个小时就撤了
2.科大讯飞面经
基本都是在细抠项目。
1. tfidf公式
2. auc如何计算
3. 在放入word2vec之前,对文本做了什么处理,tfidf用的什么工具,做了什么筛选。
4. 了解bert嘛,为何选用word2vec,不用bert
5. rnn和cnn之间有何区别,lstm对rnn又有何改进,了解textcnn吗?
6. 会用java嘛?
7. 用c 写过多线程么?
8. 老家哪里呢,考虑来安徽嘛
9. 现在在学校还有什么事情嘛?
3. 360一面凉经
有时候真的感觉很玄学,之前面试问了我很多深度学习、机器学习的细小知识点,所以这次准备360面试准备了很多这方面的,结果上来面试官问我了很多统计学的知识。
1. 写一下信息熵的公式
2. 再写一下交叉熵
3. 写一下高维高斯分布密度函数
4. 写一下自相关系数(妈的这个好简单,但就是想不起来嘛)
5. 说说你对LR的理解
6. 既然LR解决的是分类问题,它为什么叫逻辑回归
7. 逻辑回归什么时候用softmax,什么时候用交叉熵,为什么?
8. 写一道算法题吧。给定一个二维矩阵,二维矩阵非0即1,随机生成,求能框住所有1的最小矩形面积。
3,4,7回答的不是很好,出来就发短信说凉了。说实话,面试体验还挺好的,360还是个不错的公司,面试官有水平,流程不拖泥带水,就是自己太菜了
4.有赞算法面经
1. 聊项目
2. 逻辑回归的原理,以及逻辑回归的损失函数是什么?
有关逻辑回归的问题答案,整理如图:
3. 随机森林是如何引入随机性的?
对基决策树的每个结点,先从该结点的属性集合中随机选取一个包含k个属性的子集,再从子集中选择一个最优属性划分。k控制了随机性的引入程度,一般k=logd。
4. CNN的卷积层,可调节的参数有哪些?
这题当时问的时候就没听懂意思,求大佬解答。
5. dropout的原理,其思想是bagging还是boosting?在训练、跑数据的时候有何不同?
dropout通过随机失效神经元来引入随机性,属于bagging思想。在训练数据时随机失效神经元,预测生成时并不失效神经元。
6. LSTM的原理?如图。
7. 写一下堆排序
8. SVM懂吗?
9. Spark, hive生态了解吗?
8、9这两个一直想找时间系统复习一下,可是一直没有大块时间沉下心来看,平时零散的看,一直不得奥义,没有那种高屋建瓴、恍然大悟的感觉,希望有大神可以一起交流学习进步。
5.搜狗算法面经
1. 手撕算法题,最优解决旋转数组中寻找目标值
classSolution {
public:
intsearch(vector<int>& nums, inttarget)
{
if(nums.size()<1)
return-1;
intl = 0;
intr = nums.size()-1;
while(l<r)
{
intm = (l+r+1)>>1;
if(nums[m]<nums[r])
{
if((target>=nums[m])&&(target<=nums[r]))
l = m;
else
r = m - 1;
}
else
{
if((target>=nums[l])&&(target<=nums[m-1]))
r = m - 1;
else
l = m;
}
}
if(nums[l]==target)
returnl;
else
return-1;
}
};
leetcode33
2. 神经网络权重是否可以初始化为0
不可以,准确的说,是不可以初始化为相同的值。后面两张有关公式推导的图片,是摘抄自知乎某博主。
可见经公式推导后,如果神经网络的权值初始化为相同的值,那么会导致神经网络在无论反向传播多少次,都无法改变它对称的事实。这个对称是指,比如某模型为y=0.3*体重+0.3*身高,那么无论多少次网络迭代,模型的特征前的系数依旧是相等,使得网络无法收敛。
3. 神经网络的权值可以初始化为很大的值嘛?
也不可以。其实有关神经网络初始值的设定,是个很大的课题,甚至出过很高质量的论文。初始化为很大的值,会使得反向传播时出现梯度爆炸的情况。
4. 为什么会出现梯度消失与梯度爆炸
https://www.cnblogs.com/pinking/p/9418280.html
说的非常好了。这是以及激活函数的演化与改进也是面试常考的点,同时也是深度学习的一大课题。
5. 讲讲常见的优化器
这个又是深度学习的一大课题。一般应付面试官,讲四个即可,比较有代表性,也比较连贯。它们分别是SGD、Momentum、AdaGrad、adam。
SGD
简单好理解,但是其存在的缺陷是,只有当自变量是一个维度的时候,它的前进方向才是真正梯度下降的方向。当存在***变量时,若某一维度的梯度过大,会使得下降方向在该梯度方向的分量过大,偏离了真正的轨道。
下面两个优化器,便是对它的优化
Momentum
其公式意义为,如果一直朝着某个方向前进,那么在这个方向上的梯度会越来越大。当使用SGD时,会出现过度振荡,徘徊前进,而在这个过程中其实那个梯度分量过大的方向的梯度其实在慢慢减小的,原本梯度分量较小的方向在慢慢增大,动量思想可以放大这个过程,使得模型尽快收敛。
AdaGrad
其与动量思想殊途同归,用不同的方法解决相同的问题。h是梯度累积和,求梯度更新的时候,除以它,可以有效的削减大梯度,利于小梯度方向。
Adam
adam综合以上两个优化器的思想,集他们的大成。动量是当前的瞬时梯度越大,那么越快,AdaGrad是如果当前梯度大,就极速削减。其实就好比精确率和召回率他们可以指代不同的指标,而F1分数集合它俩,取了一个均衡。
6. 如果训练模型出现验证误差上下波动比较大,不收敛,这是为什么?
batch选择的太小了。设想一下,如果batch=1的情况下,一次训练样本就一个,随机性太大。很可能这次抽中的样本比较好,第二次抽中的就很差。