作者:熊风 链接: https://www.zhihu.com/question/59683332/answer/281642849 著作权归作者所有。AI开发者获得授权转载,禁止二次转载。
最近投了一堆机器学习/深度学习/计算机视觉方向的公司,分享一下自己的经验,希望对大家有帮助。
个人背景:华科本科 + 港科大硕士(MPhil)
拿到的offer有腾讯优图,阿里AI lab,今日头条,滴滴研究院,商汤科技,旷视(face++),大疆,快手。绝大部分是ssp(super special),给到了普通硕士能给到的最高档。
这个回答的适用对象主要还是本科和硕士。PhD找工作的套路跟硕士还是很不一样的,所以这个回答的经验对于手握几篇一作顶会的PhD大神并没啥参考意义。
我也和我们实验室几个找工作的PhD学长学姐聊过,他们的面试主要是讲自己的research,有的甚至就是去公司给个talk,跟本科硕士的校招流程完全不同。现在也是AI方向PhD的黄金时代,没毕业就被各大公司主动联系,待遇也比我这种硕士高很多很多。
一定要找内推。
内推一般有两种,第一种力度比较弱,在公司的内推系统上填一下你的名字,加快一下招聘流程;第二种力度比较强,直接把简历送到部门负责人手上。个人比较建议第二种,会省事很多。
原因如下:
1.现在做机器学习的人实在太多了,在不找内推的情况下,流程会特别特别慢。即使你的简历比较优秀,也可能淹没在茫茫大海中,不一定能被懂行的人看到。
2.现在很多公司的笔试其实挺有难度的,就算是大神也有翻车的可能性。
3.对于大公司而言,即使通过了简历筛选、笔试那一关,你也很难保证你的简历被合适的部门挑中。很可能过关斩将后,发现给你安排的面试官并不是太对口。尤其是深度学习这样比较新的领域,一般部门的面试官多半也是近期自学的,对这个也是一知半解。所以如果是想去BAT这些大公司里面专门做AI的部门,按照正常校招流程走是不合适的,一定要找到那些部门的员工内推。
在我看来,如果是跪在简历筛选、笔试这些上面,连面试官都没见到,就实在太可惜了。为了避免这一点,请认真找内推。最好能联系到你想去的公司部门里的负责人,直接安排面试。
面试遇到的题目,可以分为几个大类:
1.代码题(leetcode类型),主要考察数据结构和基础算法,以及代码基本功
虽然这部分跟机器学习,深度学习关系不大,但也是面试的重中之重。基本每家公司的面试都问了大量的算法题和代码题,即使是商汤、face++这样的深度学习公司,考察这部分的时间也占到了我很多轮面试的60%甚至70%以上。我去face++面试的时候,面试官是residual net,shuffle net的作者;但他们的面试中,写代码题依旧是主要的部分。
大部分题目都不难,基本是leetcode medium的难度。但是要求在现场白板编程,思路要流畅,能做到一次性Bug-free. 并且,一般都是要给出时间复杂度和空间复杂度最优的做法。对于少数难度很大的题,也不要慌张。一般也不会一点思路也没有,尽力给面试官展现自己的思考过程。面试官也会引导你,给一点小提示,沿着提示把题目慢慢做出来也是可以通过面试的。
不过这部分有些是LeetCode原题,在这里我简单地举几个例子,附上LeetCode题目链接:
2.数学题或者"智力"题。
不会涉及特别高深的数学知识,一般就是工科数学(微积分,概率论,线性代数)和一些组合数学的问题,这部分有些题也在知乎上被讨论过,这里附上相应的知乎链接:
3.机器学习基础
这部分建议参考周志华老师的《机器学习》,列一下考察的知识点,并附上相关的优质知乎讨论:
a.逻辑回归,SVM,决策树:
b.主成分分析,奇异值分解
c.随机森林,GBDT, 集成学习
d.过拟合
4.深度学习基础
这部分的准备,我推荐花书(Bengio的Deep learning)和@魏秀参学长的《解析卷积神经网络-深度学习实践手册》,列一下大概的考察点和相关的知乎讨论:
卷积神经网络,循环神经网络,LSTM与GRU,梯度消失与梯度爆炸,激活函数,防止过拟合的方法,dropout,batch normalization,各类经典的网络结构,各类优化方法
5.科研上的开放性问题
这部分的问题没有固定答案,也没法很好地针对性准备。功在平时,多读paper多思考,注意培养自己的insight和intuition。
6.编程语言、操作系统等方面的一些问题。
C++, Python, 操作系统,Linux命令等等。这部分问得比较少,但还是有的,不具体列了
7.针对简历里项目/论文 / 实习的一些问题。
这部分因人而异,我个人的对大家也没参考价值,也不列了。
在大多数情况下,你能拿到什么样的offer,其实已经被你的简历决定了。如果平时没有积累相关的经历和成果,很难只靠面试表现就拿到非常好的offer。所以建议大家平时积累算法岗所看重的一些干货。
下面几点算是找AI相关工作的加分项:
1.一作的顶级会议论文
2.AI领域知名公司的实习经历(长期实习更好)
3.相关方向有含金量的项目经历
4.计算机视觉竞赛,数据挖掘竞赛的获奖或者优秀名次。现在这类竞赛太多了,就不具体列了。
5.程序设计竞赛的获奖(例如OI/ACM/topcoder之类的)
当然,名校、高GPA这些是针对所有领域都有用的加分项,同样也是适用于这个领域的。
所以我的建议就是,如果自己所在的实验室很厉害,资源丰富,就专心做科研,发paper;如果所在的实验室一般,没法产出相关的优秀成果,可以考虑自己做比赛和找实习。有一份知名公司的实习经历之后,找工作难度会下降很多。
最后,祝有志于AI这个领域的人都能拿到满意的offer。