楼主是社招,今天面完三面,从面试官的表情感觉自己凉了。
前两面的面试官都很nice,问的问题也相对基础,基本都答上了
三面面试官标准的理工男有点严肃,而且是编程算法全能(汗颜),问了很多又偏又细的问题,应该凉了。
面试前几天从早上七八点复习到夜里十二点多,临阵磨枪毕竟不行,功夫还是要下到平时啊。
不说废话了,下面回馈牛油分享一下面试题目。
一面、二面
一面二面连着一起面的,有部分题记不住了,不过都是比较基础的简单题目。不过我还是犯了很多弱智错误了。。。
1、算法:找第K大的数(快排)
2、算法:从n个数字的数组中任取m个为一个组合,返回所有组合,顺序不一样的算一个组合(递归遍历+回溯)
3、LR损失,推导,并且求导
4、L1、L2的区别, L1为什么图像是菱形
我说菱形可以用取点值画出来,面试官问怎么取点,我就有点懵住了,面完才想起来菱形应该是 |x| + |y| = 1 的函数图像
5、梯度下降系列算法有哪些
我有点蒙住了,后来才想起来应该问问 momentum adam 之类的算不算
6、xgb介绍一下
7、你知道有哪些损失函数?
8、FM 与 LR对比一下
9、softmax 与 二分类 比有什么特点。
三面
然后三面就比较恐怖了,面试官很严肃,而且问的很细,有的题还很偏
1、看过什么论文
2、看过哪些开源项目
3、看过哪些开源框架的源码?看过tensorflow源码没?
4、看过xgboost源码没?
5、开源项目一般就训练个模型吧,就很少量的代码。看过什么大的工程的源码吗?
没看过源码别问了QAQ
6、让你学 C++ 你认为你多久可以上手?
7、算法:一个排好序的数组 arr 中,可能有重复数字,给定一个数target,求 arr[i] + arr[j] = target (i < j) 的对数。
提了两个方法:
1)一个字典记录出现过的数字和对应的索引列表(因为可能有重复,所以是列表)。然后一边遍历一边查询字典中是否出现了 target - arr[i],如果有则计数。
2)双指针。
但是有重复的数很麻烦,我考虑了一般的重复数情况,和两个重复数之和恰好为target的情况。但是面试官说还有别的情况,我就想不出来了,然后面试官说先到这吧。。。
8、auc介绍一下,给出计算公式
9、xgb怎么并行运算(除了自带的并行找特征分裂点,还说了一般模型的按数据和按特征并行)
但是面试官一直追问详细的并行方法。。。
10、xgb与LR各自的优缺点
11、LR为什么更容易并行
12、有哪些常见的模型优化算法
13、adam公式写一下(同时介绍了adam是momentum和RMSprop的结合)
14、RMSprop为什么比adgrad好?(答:利用了系数维护梯度平方,不是简单求和)
15、为什么 adagrad 简单求和不好?
16、GMM介绍一下,损失函数写一下
17、EM算法介绍一下
18、进程线程的区别?进程和线程相比有什么好处?
19、用户态和内核态
总结
总体来说一面二面问的比较基础,也比较顺利,三面不知道是不是压力面,但是看出了面试官很有实力,问的也很细,确实这样才能区分应聘者。
本来还以为三面是问一些场景题,还准备了一道,结果没用上。。。
还是自己太菜,不能怪别人,坐等感谢信。
全部评论
(23) 回帖