作者:钢的弦
链接: https://www.nowcoder.com/discuss/54297
来源:牛客网
本人本科硕士皆双非,和牛客大佬们没得比,目前拿到的还可以的offer就是百度SP和京东SP,都是做的推荐算法,其他的不说了。
先说一下个人经历吧,学校比较水,实验室没有项目,实习经历:BAT某家实习+TMD某家实习 比赛经历:几个数据挖掘竞赛Top5的名次。
个人感觉,算法岗确实看学校,但如果简历还可以的话,还是有面试机会的,内推投的简历,80%都给了面试机会吧。
百度提前批:
3轮电话面,远程桌面coding。
百度的面试风格其实是比较好把控的,基本就是项目问答、coding、机器学习算法、CS基础,偶尔会有些概率题智力题。
算法题:
1. 两个有序数组求中位数(leetcode)
2. 判断平衡二叉树(剑指offer)
3. 最长上升子序列
(lintcode)
4. 二叉树转双向链表(剑指offer)
5. LRU cache实现
(leetcode)
6. House Robber
(leetcode)
机器学习问题:无非就是树模型(gbdt、xgboost、rf、lightgbm)原理,LR、FM原理,w2v原理,深度学习在推荐系统上应用(和面试官讨论了google的两篇paper,其中wide&deep network讲的时间比较长),神经网络embedding层和w2v中的embedding的实现区别,其他的记不清了。
CS基础:进程线程区别,多线程实现方式,线程冲突是什么、怎么解决,TCP三次握手细节,海量数据排序(分治),其他的不记得。
京东提前批:
2轮电话面,远程写code。
京东的面试个人觉得不是太难,广告部今年招人比较多,面试内容的话也是围绕项目+机器学习算法来问的,本人有京东算法赛Top20,可能也是个加分项吧。
算法题:链表翻转、判断平衡二叉树、最长公共子序列、海量数据topk问题、蓄水池抽样算法
机器学习问题:也是简历上写的算法来问的,以及问了一些DL的基础,不难。
蘑菇街:
2轮电话面+1轮CTO面。
蘑菇街的面试只是围绕项目进行的,2轮各30分钟左右,都是在问项目,以及项目中用到的技术、算法,不难。
腾讯:
提前批面了AI平台部,感觉是经历过最难的面试,面试官的问题一个接着一个,有点咄咄逼人,无奈水平不够,跪了,校招时候,做了笔试没被通知面试。
1. 项目介绍
2. 你这个项目中间哪些地方提升,中间过程分别提升了多少CTR?
3. 你项目用的分布式LR的是用什么优化方法,参数怎么调的,mini-batch的batch是多少? parameter-server原理,如何解决数据一致性?
4. 会分布式么,hadoop,spark会么,说说hadoop的灾难处理机制
5. hadoop一个节点数据量太大拖垮reduce,怎么办,Hadoop本身的处理机制是怎么样的,手工的话可以怎么调
6. hadoop数据倾斜问题如何解决
7. L1、L2的区别,L1为什么可以保证稀疏?
8. 各种最优化方法比较 拟牛顿法和牛顿法区别,哪个收敛快?为什么?
9. 深度学习的优化方法有哪些? sgd、adam、adgrad区别? adagrad详细说一下?为什么adagrad适合处理稀疏梯度?
10. DL常用的激活函数有哪些?
11. relu和sigmoid有什么区别,优点有哪些?
12. 什么是梯度消失,标准的定义是什么?
13. DNN的初始化方法有哪些? 为什么要做初始化? kaiming初始化方法的过程是怎样的?
14. xgboost里面的lambdarank的损失函数是什么?
15. xgboost在什么地方做的剪枝,怎么做的?
16. xgboost如何分布式?特征分布式和数据分布式? 各有什么存在的问题?
17. lightgbm和xgboost有什么区别?他们的loss一样么? 算法层面有什么区别?
18 lightgbm有哪些实现,各有什么区别?
阿里的话二面跪了,内推的阿里妈妈,难度比较高,跪了也是意料之中。
还有一些公司的面试没有参加,滴滴(面试时候和腾讯笔试冲突了,放弃),网易(2次笔试都过了,不过拿到百度后就没有去面了),搜狗(电话面了1面后,让去现场面二面,放弃)。
其他的offer就是一些小公司了,YY、Bigo这些,主要还是问项目,参考意义不大。
PS:Bigo的推荐算法团队非常厉害,都是百度高T出来的,而且今年待遇非常给力。
下面说一下个人的学习经历吧。
虽然是CS专业,但实验室做的方向和ML半毛钱关系没有,且实验室也只有我一个人在搞ML,所以也算是野路子出身了。
理论基础:CS229视频、西瓜书、统计学习方法、数据挖掘导论、推荐系统实践、深度学习
实践基础:机器学习实战(研一时候照着书上代码打了一遍)、利用Python进行数据分析(照着书敲过一遍)
完成了这些基本功之后就是参加一些比赛了,刚开始入门的时候搞天池和Datacastle比赛,成绩都很水,并且是孤军作战,个中心酸只有亲身经历才能体会,后来研二后开始和一些外校的大神组队,拿了几个还可以的名次,也在大神身上学到了不少东西,所以个人感觉做比赛最好还是要组队,思维更加开阔,一个人闷头做很容易放弃。研二上学期末开始去实习,实习做的也是搜索引擎、NLP、推荐算法相关。
再说一下面试需要准备哪些吧。
算法工程师的面试其实就是围绕几项来展开的。
1. 机器学习算法理论:LR、SVM、树模型、FM/FFM、EM、LDA、word2vec、推荐算法等等,都会被问到,需要懂得算法的推导、适用场景、使用的Trick、分布式实现。
2. 深度学习相关:CNN、RNN、LSTM的基本原理,不同激活函数的差异等等,如果是面的传统机器学习岗的话,DL问的不深,但一定会问。
3. 数据结构与算法:leetcode高频题、lintcode高频题、剑指offer,大概这三样准备好就够了,校招前保证100多道题的积累量,面试时候写code应该就手到擒来了。
4. CS基础:计算机网络、操作系统,推荐书籍:王道程序员面试宝典,这本书对于突击面试很有帮助。
5. 分布式:Hadoop/Spark这些,属于加分项,会问点基本原理,还是需要看一下。
6. 编程语言:虽然做比赛都是用的Python,但
C++或者Java必须掌握其中一个,面试也会问一些语言相关的,我是Java党,面试想速成的话推荐一个Github:https://github.com/it-interview/easy-job,里面知识弄懂基本Java面试问题这块就没问题了。
7. 海量数据处理:经常问的就是海量数据排序,推荐博客:http://blog.csdn.net/v_july_v/article/details/6279498/,弄懂这块就基本没问题。
Anyway,个人的秋招结束了(其实结束很久了),虽然有些遗憾,但拿的offer和薪资也都挺满意了,知足,开始弄毕业论文了,希望能顺利毕业吧,就写到着吧,语序有点混乱,凑合着看吧。