机器之心转载
来源:知乎
在拿到博士学位后,如何找到一份心仪的研究方向的工作?找工作的过程中会经历哪些过程?需要作何准备?在这篇文章中,一位来自加州大学伯克利分校的计算机科学博士详细介绍了自己找工作的经历,希望给大家提供一些借鉴。
过去小半年的时间主要就在找工作和决定去向,趁着还没入职工作的间隙,在这里发一篇文章总结一下经验,希望对后面找工作的朋友有帮助,也算是对这段经历的一个记录。
我找的是 CV/DL 方向美国 Research Scientist 的岗位。根据我的了解,Research Scientist 主要是做研究的地方有 FAIR, Google Research, MSR, NVIDA Research, Snap Research, OpenAI, DeepMind, 其他的地方除了一些较小范围的组,可能有更多的工程或者产品上的工作职责;但是划分也不是绝对的,而且同一个组每个人可能也不一样。我投的是前一种为主,但是面试下来两种的形式是基本共通的。下面我抛开具体公司的流程,按照环节来总结一下整个过程中的经验。
投简历
根据我的经历和听闻,RS 的招聘一般都是面试前先具体定位到组:你想加入对方组,对方组的 manager 也觉得你的背景比较适合他们组,才会安排面试。一般不会是先通过公司层面的面试,再去匹配组。当然如果是多个组对你都感兴趣,可以协调安排一起面,通过之后会再有一个匹配组的过程。简历在公司官网海投的效果不太好 ,尤其是大公司。找人推到公司内部的内推系统这种,也不推荐;因为这种情况一般不会匹配到组,可能很久之后才有人会看到你的简历。我有非常厉害的同学,因为只是找了一般的公司系统内推,而没有拿到面试。
对于真正考虑去的地方,建议先定位想要去的那个组,然后通过组里面或者临近的组里面认识的朋友师兄师姐来向 manager 推荐。这样可以保证对方 manager 能看到你的简历,而且对 manager 来说,有人推荐的一般比去打捞简历靠谱很多。我非常幸运,很多朋友和前辈在这里帮助了我非常多。我通过这种方法投的基本都拿到了面试,官网海投的大部分没有音信。根据我过往的经历,PhD 找实习面试也是一样的道理,通过官网之外的渠道找靠谱一些。
通过这种方法投了,但是如果对方没有招人名额的话那肯定也是不行了。20-21 两年疫情严重的时候这个就是个问题,21 年末 / 22 年初的市场貌似开放了很多名额,很多组都在招不少人,但是 22 年下半年似乎情况又急转直下了。
如果有名额,给面试的可能性看研究方向和成果。一般来说成果没有办法短时间优化,所以找工作肯定是越合适的组成功几率越高。但也不是一定要求小方向上严格匹配,尤其是在做研究自由比较大的组和公司。有时候一些我以为并不是竞争特别激烈的非头部大厂,但是实际上他们需要的方向和技能并不匹配我的,我就没有收到消息或者面试。
关于研究成果,理想情况是对方听说过或者读过你的工作;我就听说有人文章很少,但是有一个工作非常牛,然后找到很好的研究岗位的。数量质量兼备可能是理想情况,这样从 manager 和公司角度来说,你既能保持效率,又有机会搞大新闻。如果简历关顺利通过,就到了面试环节,下面按照几种面试种类分类来说。
电话面 (0-1 场)
英文 "Phone Screen",一般半个小时,是看到简历觉得 ok,但是 onsite 面的成本太高,所以需要通过电话面来刷掉一些人。一般是简单了解下你的研究背景,也有的公司是其他的形式,比如很短的一个 presentation,也有少部分很简单的 coding 的。过了电话面就进入所谓 onsite,一般是 5-10 个面试安排在同一天或者有时候在相邻的两天。虽然叫 onsite,但是历史原因了,现在为了方便都是远程面。下面介绍的都是 onsite 面试中不同的内容。
Research talk (1 场)
onsite 当天第一场,一般是 45 分钟的 research presentation,加上 10-15 分钟问答时间。这个某种程度上可以给 onsite 的一天定调,如果讲的效果比较好的话,应该对后面的面试会有帮助。一般后面要面试你的人会去视频会议里直接看。大部分情况下都被录像了,后面在公司内部会公开被更多感兴趣的人听到。大概要做的就把自己过往的重点工作用一条主线串起来,讲一个好的、能被听众听懂的故事。不需要用到所有的工作;我认为一般重点讲的不超过 3 个工作,太多了可能会显得没有重点。我认识的有两个同学都是只重点讲了一个最近的工作,然后拿到了非常好的 offer。
网上有很多如何做好 research talk 的教程和建议,我也参考了很多。但是我的准备也是有一个问题,就是没有把讲的过程练习到很流利。这部分准备的时间取决于之前的材料有多全,有些同学就是把之前做的就很好的 PPT 拼接起来。每次讲完,我也会看看有没有什么可以改进的地方。research talk 虽然很多公司是不会显式打分的,但是应该是所有面试中比较重要的一环。
Coding 面 (1-2 场)
Leetcode 类型的 coding 题,其实没有我想的考的那么多,平均每个公司不到一题。我没有被考超过 Leetcode 中等难度的题;就算是中等,也是其中比较简单的。所谓的 AI coding 可能更多一些,就是 numpy, pytorch 或者是 ml/cv 的一些基本操作(比如 nms, iou, filtering, tensor 操作,但没有手写 back-propagation 这种)。这个因公司而异,有个别公司从头到尾一道 coding 题都没考。
我以前没有搞过信息学竞赛,大概准备 Leetcode 类型题我花了一个月左右的时间。我买了个 Leetcode 会员,刷了可能 200 道左右 Leetcode 简单和中等的题 (看到自己账号 2014 年大一大二刚注册的时候就刷了几道困难题,还在论坛上和别人发过帖讨论,有点感叹自己老了)。每一个基本的考点,比如 DFS, BFS, DP, 链表等等,都至少做了几道题。比较熟练之后,不用做到每个练习题都写完整,想出思路即可,可能我在这里又看了 100 道题。
coding 面也是有技巧的,比如如何在不会做的情况下做出一些分析,让面试官给你一些提示,等等,网上也有很多教程。可以对着公司的常见题刷,好像出现重复题的概率还是挺高的,我在 Meta 前几次实习面试就被一直问同一道题。
当然这里我说的主要是偏研究岗位的;如果是偏工程的岗位的话,coding 肯定是会更多,或者可能全部是 coding,可能难度也会更高。
ML/Math(0-1 场)
有一些公司会考一些机器学习基础知识。比如解释 overfitting 的定义,如何判断 overfitting 了,Adam 和 SGD 的区别。还有一些大一的数学知识,比如矩阵的特征值分解,如何判断正定,泰勒展开,梯度,导数相关的知识点等等。不是很多,大概有三分之一的公司考了,一般不会太难,稍微复习一下应该就能比较好地应对。没有手推 SVM 这种。
Research 面(2 场或者更多,有的 6,7 场也是有可能)
这个大家找过实习的应该都会面的。总结介绍一下自己的过去的研究,挑出一两个重点讲一下,自己做了哪些贡献。
常见问题有:对自己过往的工作回过头来怎么看,还有哪些地方可以改进的;将来打算做什么方向;对某个小领域做个简单的概括 / 怎么看;我想做一个东西能不能这样做,可能出现什么问题;做一个东西总是做不好,有可能是哪些问题等等。
也有那种设计问题,给你一个场景,问你怎么开始解决这个 ML 的问题,设计系统,一般是从如何整个 pipeline 角度来说,收集划分数据,设定 metric 等等。也有那种问一个题目,看看你有什么思路,有些就是他们工作中碰到的问题。Research 面可能是面试的主体部分,应该占了所有比例的一半以上,所以得做好多次重复说一样的内容的准备。
也有很多面试官会在这个环节中留很多时间让你提问,或者介绍他们组的情况。如果你本来就认识面试官,在这一关有可能也没有太多严格的考察内容,都是在聊天,或者给你介绍他们组的情况。
这轮如果面试完了,对方觉得从你这学到一些新的视角或者 insight,那可能是最好的。也有 Research 面和 coding 面混合的,前半部分 Research 后半部分 coding.
Behavior 面(0-1 场)
问一些过往的经历 / 场景,你的处理方法,学到什么,想看一看你工作中的性格品质。比如介绍一个工作中和别人意见不同的情况,以及最后是怎么解决的。有些公司是有专门的一场面这个,有些是在其他面试中穿插着的,也有不面这个的。这个部分也需要准备一下,参见网上很多教程。准备过程基本上是,回想一些过去工作学习中发生的一些有趣的经历做为素材,然后可以应对不同的问题做为答案。虽然我准备了,但是发现很多时候还是即兴回答的。一般人可能很难面的很差,当然想出彩应该也比较难。这个按照亚马逊的标准来准备,应对其他的就比较简单了。
补充
每一家公司面试的方式和轮数不同,但是 research talk 和 research interview 一定是有的,我的理解也是在其他几项过关的情况下,对方比较看重的。不同的公司面试也不一样,这个在拿到 onsite 面试之后,有些公司会和你介绍面试大概面什么,前期总体准备来说不太需要具体到每个公司。
最后分享一些自己的经历。我完整面完了 8 家公司的 onsite,并且都集中在 2022 年 3 月。这期间平均每天(周末除外)大概有 3-4 场面试 / talk;强度最高的一次,是上午 8 点面到下午 5 点,每两场中间 15-30 分钟休息。正式的面试就有七八十个单场,所有面试和交谈加一起远超 100 场。
当然你也可以选择,拿了想要的 offer 后就退出这个游戏,然后专心休息或者做其他事情。但是我刚开始一方面是为了求稳,一方面也是因为确实投的地方都考虑去,就安排的比较多,虽然很累也很有收获。最后给了 onsite 的这 8 家公司都拿到了 offer。还有少量一些没到 onsite 就结束了的:有简历拒,有电话面后告诉我没有名额,也有过了电话面和 coding 笔试,但没给后续的面试。剩下的还有不少海投简历的没音信。这些我大多也觉得不是特别 match,否则就会试着找人推来投了。
面试过程中感觉到,很多地方都是很好的机会,学到了很多东西,也认识了很多新的朋友、同行和前辈,manager 也都人非常好,很多组说可以给自由选择工作内容的空间。纠结了很久,最终还是决定去 FAIR,部分也是因为我在 FAIR 实习过,从适应环境上来说风险相对低,内部工具的使用上也会比较容易延续。在此做一下记录,网上找 research scientist 岗位的经历分享相对较少,不希望自己以后淡忘了这段找工作经历,也希望可以帮到后面毕业找工作的同学们,国内找工作的同学也欢迎参考。
原文链接:https://zhuanlan.zhihu.com/p/537028803 (作者:知乎用户@刘壮)
本文为机器之心转载,二次转载请联系作者获得授权。
掌握「声纹识别技术」:前20小时交给我,后9980小时……
《声纹识别:从理论到编程实战》中文课上线,由谷歌声纹团队负责人王泉博士主讲。
课程视频内容共 12 小时,着重介绍基于深度学习的声纹识别系统,包括大量学术界与产业界的最新研究成果。
同时课程配有 32 次课后测验、10 次编程练习、10 次大作业,确保课程结束时可以亲自上手从零搭建一个完整的声纹识别系统。
课程目前还在首周优惠中,欢迎对声纹领域感兴趣的同学一起学习。
点击阅读原文,了解更多课程内容。
© THE END
转载请联系本公众号获得授权
投稿或寻求报道:content@jiqizhixin.com