前言
楼主是社招,面试的算法工程师岗位。上个月面过一次百度的推荐策略部,但是当时那个面试官很不友好,鸽了我三次,而且每次都是迟到之后才跟我说改时间。最短迟到了四十分钟,最长一次迟到了一个半小时。最后问的问题也鼻子不是鼻子眼不是眼,体验很差,因此没写面经。
这次还是面试这个部门,这次的面试官非常nice,考察也很全面,体验也很好,只是自己还是太菜,二面几个题没答上来,估计凉了。写一下面经帮助牛油。
一面
一面比较简单,而且面试官很nice,因此表现不错。很多问题我忘了,就记了一些有印象的。
1)kmeans是有监督还是无监督
2)xgb模型的原理
3)FM相比于LR的优势(自交叉、稀疏特征不太影响训练、可以得到embedding,进行高维交叉,推理未出现过的特征组合)
4)介绍一下DIN 和 DIEN
5)概率题:男性得色盲的概率是 5%,女性得色盲的概率是0.25%,求一个人是色盲的前提下是男性的概率。(贝叶斯公式推导一下就可以,当时不知道P(男)怎么算,后来面试官说可以认为是1/2)
6)算法题本来要做堆排序,后来面试官说时间不太够(幸亏没做,我不会手写堆排序,面完赶紧学了一下。。。),所以算法题出的是给一个m * n的矩阵,求左上角到右下角共有几条路径?只可以往右和往下走。(leetcode 原题,动态规划,转移方程 dp[i][j] = dp[i-1][j] + dp[i][j-1])
二面
二面被血虐。。。问题很多,很深,很全面。但是面试体验还是不错的,只是我太菜了。。。
1)xgb分裂节点的依据
2)xgb如何处理离散值、连续值
3)如果相邻的连续值比较接近,比如只有小数点后三位的差距,xgb会遇到什么问题吗?(我觉得可能是划分点会处于一种“边界”上?稍微改变特征就会划分到不同的节点?不过xgb是依据分位点划分的,所以说了可能影响不大。这个问题有大神能回答吗)
4)word2vector 如何做负采样?是在全局采样?还是在batch采样?如何实现多batch采样?怎么确保采样不会采到正样本?word2vector负采样时为什么要对频率做3/4次方?
(对负采样没那么熟,别问了QAQ)
5)为了提升xgb模型效果,做了哪些优化?
6)介绍一下 sigmoid 和 relu,relu有什么缺点?
7)介绍一下梯度消失,有哪些缓解办法?
8)深层神经网络为什么不好训?除了梯度消失还有哪些原因?(当时脑子抽了说不出来,今天想起来应该说一下resnet那篇论文里提到的网络退化。。。 T-T)
9)了解图模型吗?了解Graph Embedding吗?
10)知道哪些损失函数?为什么分类问题不能用均方差?(这也是经典的题目,求导后发现预测值越接近label时返回的梯度越小,越难训练)
11)算法题1:开根号(经典题目,牛顿法和二分法。牛顿法注意了解一下那个迭代公式怎么来的;二分法注意如果给小于1的数的话左右边界设置成什么)
12)算法题2:给定一个数组,写一个函数来随机打乱这个数组。
这道题好好说一下,问了很多相关问题,盯着我二十分钟,看着我苦思冥想QAQ。
1、打乱数组的方法我就说一个直观的,生成随机数决定每一个元素去的位置。后来看网上发现这个跟Fisher Yates Shuffle 有点像。
2、怎么证明你这个方法是随机打乱的?磕磕绊绊地写了个数学证明。对于一个元素来说,到每个位置的概率是相等的,因此是随机的。
3、有一个黑盒函数,它的作用是打乱数组,你怎么证明这个函数的随机性?这个问题想了半天,面试官给了很多提示,但是最后还是没想出来。面试后也没在网上找到答案。今天早上突然灵光一闪,或许可以多次运行这个函数,记录每次每个元素被分配的索引的频数,最后计算下频率,看是否是均等概率。早点想出来就好了QAQ
13)抖音这类app怎么做推荐系统?分类问题还是回归问题?当作回归问题的话会不会有什么问题?(提了一下youtube模型,它是对观看时长进行建模)
14)知道哪些推荐算法?(提了很多,后来点了一下百度比较出名的双塔模型)
15)双塔模型有什么问题?(我说不能实时反应客户的行为?)
16)如何改进双塔模型?
17)知道哪些筛选特征的方法?
总结
这次面试虽然也凉了但是学到了不少,平时学习模型的时候还是应该再深入一些,了解模型的细节,以及做法的原因。还有一些主流推荐模型的优缺点和适用场景、改进方法等等。
希望能早日上岸 QAQ
更新三面
没想到一转眼已经收到百度offer了,来更新一下后续三面。
三面是压力面,面试官大哥差点没把我压死。我被怼的体无完肤,一度觉得自己的工作项目就是toy。。。
其实三面也没什么好说的,全程是针对项目提问,看着简历一行一行地问。不过有一个可以抽象出来一个通用问题,我觉得大家一定要准备一下。
就是在面试前一定要想好你项目中每个做法的原因。
举个具体的例子:你在项目中发现了哪些问题/现象,因此你调整了模型的哪个参数?最后取得了什么效果?
因为机器学习和深度学习项目大家很容易盲目的去做,经常是随便试好几个模型,哪个好就用哪个。
但是面试官肯定更希望你能了解模型的细节和原理,有针对性地有充分理由地使用模型、调整参数。
我觉得大家在面试之前可以多准备这方面,就算面试官没有问也可以主动地说出来项目中一些做法的原因。这样可以让面试官觉得你是有独立思考的,而不是随便调包。
不过最好是有深度一点,像 “我发现了过拟合,用了dropout,最后缓解了过拟合“ 这种比较普通的说出来可能也没什么帮助。
再总结
没想到能上岸百度,跟做梦一样,努力终有收获。希望各位牛油也能早日上岸,加油!
全部评论
(25) 回帖