Py学习  »  机器学习算法

面经 | 薪水翻倍至 24 万欧,国外机器学习博士自述面试经历

AI职通车 • 4 年前 • 607 次点击  
记得点击蓝字,关注我们呀~

作者:Generalized Error,源自『运筹OR帷幄』


本文作者根据自己博士毕业后求职、面试的经历,从重要资源、公司、面试过程、面试类型、薪资谈判等方面进行了详细的介绍并分享了自我体会与经验。通读本文,你会发现,“讨价还价”十分必要还很有技巧,祝你面试加薪成功!




   写在前面

求职是从学术环境到工作的的重要一步,但基于自我背景并全面介绍从收集信息、求职过程和经验心得的文章在网络上并不多见,着眼于机器学习方向的博士求职更是麟角凤毛。所以我翻译了这篇 “My Machine Learning Research Jobhunt”,这篇文章非常推荐,值得您在面试前一遍,谈薪资前一遍,谈薪期间再读一遍。

原作者 Generalized Error 刚刚博士毕业,在 NIPS、ICML、ICLR 等各大深度学习顶级会议会上都发表过论文,H指数在5到15之间。他花了半年的时间面试了许多大的跨国公司,而且多数都拿到了 offer。在这份“面经”中,他讲述了自己拿到高薪的秘诀:自己做标的物,让给出 offer 的公司“竞标”。

在过去的几个月里,我在欧洲的一些公司面试了人工智能研究职位。我未在网上找到太多这方面的信息,所以在此分享我的经验,希望能对他人有所帮助。


  我的背景

我刚刚拿到了博士学位,并在所有大型深度学习会议上发表了论文, 例如: 全称神经信息处理系统大会NIPS,国际机器学习大会ICML,国际学习表征会议ICLR。也在专门研究机器语言(ML)应用领域的期刊上发表了文章。

我来自一个没什么名气的大学,我的H指数在5到15之间,文献引用量在500到1500之间。我曾在五巨头FAANG人工智能研究实验室实习。这是我第一次求职,所以可能忽略了一些显而易见的内容,也可能会对之前已经有人做过求职研究的人来说显而易见的内容进行赘述,在此先表示歉意。


  重要资源

根据我的经验,几乎所有关于软件工程职位面试最后的通知都是转到ML研究职位,因为这些职位都属于同一家公司。有三则关于薪资谈判的博客,我觉得怎么推荐都不为过,这些都是宝藏博客,我建议在申请公司职位之前先看看这些博客的内容,在实际薪资谈判开始之前再看一遍,在谈判中途最后再读一遍。


  搜集的公司信息

我只面试了几家全球公司的工业研究实验室,没有面试过初创企业和小公司。此外,我将自的目标限制在欧洲,其他地方的薪酬标准和福利各不相同。

1、知名公司

很多知名的公司都在欧洲招聘人工智能科学家:亚马逊公司(Amazon)在柏林有一个ML研究实验室,苹果公司(Apple)在巴黎设有ML职位,谷歌大脑公司(Google Brain)在阿姆斯特丹、柏林、巴黎和苏黎世均设有实验室,脸书AI研究院和DeepMind在伦敦和巴黎都有分部,微软研究院和IBM研究院均设在剑桥和苏黎世,英伟达(NVIDIA)在柏林、赫尔辛基和慕尼黑设有实验室,推特(Twitter)在伦敦有办事处,优步(Uber)在巴黎招募研究科学家。

2、其他应用领域

除此之外,在其他应用领域也有很多让人感兴趣的职位。汽车领域,大众/奥迪在慕尼黑设有研究实验室。药物设计领域,伦敦的Benevolent AI制药公司,默克公司(Merk),拜耳公司(Bayer),强生公司(J&J)和阿斯利康制药公司(Astra Zenica)都在招募ML人才。金融领域,Citadel公司和Jane Street公司都在伦敦设有办事处。

3、区域分部

在招聘会上,你也能碰到一些大公司的区域分部,他们也会提供一些很有意思的职位。例如,彭博公司Bloomberg伦敦分部,博世公司Bosch斯图加特分部,科韬公司Criteo巴黎和格勒诺布尔分部,或迪士尼研究院苏黎世分部。当然,还有很多我没注意到的公司和职位。

尽管我心里已经有了偏好,我还是向尽可能多的公司申请面试。一方面,若没有竞争性的公司录用,你在薪资谈判中将处于严重的劣势地位。其实,这样做至关重要的原因在于多次面试的练习对提升你的面试技巧大有裨益。我的第一次面试紧张得犹如在三千人面前演讲,而最后一次面试就像是午饭时和同事聊天一样轻松。

此外,你还需要考虑面试过程中出现的意外情况。比如,你肯定会搞砸一些面试,这种情况下,不管对你还是面试官,体验都很糟糕;或者在面试中面试官的提问可能涉及到你盲点,碰上其他完全不对劲的事情,甚至你发现面试的职位你并不感兴趣。例如,在面试NVIDIA的过程中,不知道为什么,他们的操作非常奇怪:预先安排的视频面试中面试官压根没有出现,而且从那之后一直无视我发送给他们的电子邮件。我现在都不知道是为什么。不过我也很庆幸自己没把宝押在这一个公司上。

然而,我发现是参加更多公司面试的主要优势是我开始了解更多的公司。我之前都不知道竟然有那么多超酷的工作!很多最有意思的工作(报价也最好)都是我最初并没考虑过的公司提供的。事实证明,我的一些“安全选择”非常适合我。虽然对你来说情况可能并非如此,但是和那么多的团队谈论他们目前的项目和未来的愿景让我颇受启发。

上文几乎一半的公司我都申请过,不管职位是研究科学家还是工程师,大部分都收到了录用通知。我整个求职过程时间很长(从第一份申请到最后接收公司录用大概用了半年时间),过程比较耗费精力:那段时间我在机场、酒店和面试房间中不停的切换,之后几个月就是不停的接到人事的电话和和人事商谈薪资。在这段时间,就别想着做什么工作了。就跟我一位同事说的一样,“你的精力持续集中在何时会接到哪家公司的回复,根本没有精力去想ICML”。然而,这也让我得到了很多:我学到了很多东西,见识到很多的新观念,而且,我学会了商谈比我直接接受第一份“梦想工作”更高的薪水。


  面试过程的总结

所有公司的面试过程都非常相似。在收到我的简历后,公司先对我做一个简要的筛选,看看我是不是一个合适的候选人,通常通过一两个电话面试进行,每次一小时。然后,我通常会接到现场面试邀请:一整天在公司办公室里被不同的人一场接一场的面试。这些面试通常以介绍我的博士研究开始。接下来是每次约1小时的个人面试,可能是我面试团队的人对我进行面试,也可能是其他团队类似职位的研究员或工程师对我面试。通常情况下,每次面试我都会有不止一个面试官,所以面试一天下来,我基本上就见到未来团队里的大部分人员了。


  对职位提问

几乎所有的面试官都会留出时间让我就职位、团队和公司提问。我比较喜欢询问工作与生活的平衡,工作中的困难,以及他们对目前工作不满意的事情。我发现大部分人都会坦诚地回答这些问题,这会让我洞察到我的未来会有什么深刻、反常、可悲和极其有趣的情况。

从办公室安抚犬的趣事,向我保证“我们工作很努力,但是你可能在公司工作的第二年或第三年每周工作时间就降低到60小时以下”的团队负责人。

告诉我因为压力太大想要辞职,同时又向我保证“办公环境特别棒,我肯定会爱上这儿”的哥们。那些一提到自己的研究非常兴奋的人,会忘了问任何技术问题,而只是简单地说他目前的研究突破对我来说如何如何。

这些都是了解公司和我所面试职位的绝佳机会。绝对应该多花时间来问一些有价值的问题!


  不同的面试类型

我一次又一次地遇到了几种不同类型的面试。其中一些很容易准备(例如编码或行为面试),而另一些几乎没法准备。所有的公司的面试都是不同类型的组合:有些公司甚至都没验证我会不会编码(根本没问任何相关问题)就给了我录用通知,而也有些公司则根本就没验证我的数学能力(没有数学相关问题)。有些公司会抛出很多理论问题,有些则是提出实际问题;大部分公司都是两者结合。总的来说,每当我被难题卡住的时候,他们都很愿意给我提示。我想他们经常会故意模糊他们的问题,只是想看看我的反应,而且很愿意帮助我并和我讨论相关细节。这种面试不像是一个两个立场不同的人的对抗过程,反而更像是同事之间的讨论。

1、“请介绍一下你的研究”

很多面试只是让我谈论我过去的工作。面试官会从我的简历中挑选一份论文让我进行介绍,或者有时他们会让我选择我想介绍的项目。有些面试者只会问浅层问题,而另一些则会去深入探讨(“你假定在定理3中有异方差性,但在整篇论文中并未证明它的正确性。你为什么认为这个假设有效呢?有什么含义呢?”) 。但我们从来没有在“数学层面深入讨论”:在我合著的论文中有一两个机巧证明,我有点担心对方提起;但幸运的是,所有面试官都跟我一样害怕就这些展开讨论。多数情况下,都是问到我最初撰写的论文,但是他们也不介意我介绍我只是合著作者的论文。

2、编码面试

谷歌或脸书的典型软件工程面试非常有名:可能需要针对一些算法性质的难题想出解决方案并实施。通常要使用你自己选择的语言实现,比如C++或是Python。每个问题都有几次迭代:你首先想出一个简单的解决方案并实现它,然后面试官会给你额外的限制或要求更有效的解决方案。之后,他们通常会期望我讨论时间或内存的复杂性,或者讨论我实现的潜在测试案例。很多时候,讨论会转向同一问题的难度升级版本。在几个例子中,面试者后来承认他们自己不知道如何解决他们给我的问题中的最后一次迭代,他们只是想看看我是否能想出一些办法,或者我对一个没法解决的问题会做出什么反应。我发现这些面试是最容易准备的:学好类似Princton算法的第1部分和第2部分,并在leetcode.com上做一些题应该足以应付这种面试了。

3、机器学习面试

一些面试只是测试了一般的ML知识。它们涵盖了大学普通ML课程所涵盖的内容。这些类型的面试通常分为两部分。第一部分是一些ML常识问题(你如何规范深层网络?随机森林训练如何进行boosting?当预测速度比准确性更重要时,有哪两种合适的分类算法?你如何通过内容将文档分组到语义群?你能说说高斯混合模型和k均值之间的联系吗?)。通常有第二部分由“ML编码”组成,在这部分面试中,我必须实现一些标准的ML算法。例如,我记得有实现k均值和k近邻的推理和决策树的剪枝。我通常需要大约30到45分钟来实现(之后,再次讨论效率,也可能要测试案例)。

4、“我们有这样一个问题……”

在一些面试中,我可能刚刚被告知面试官正在进行的一个项目,然后他们就会让我来谈谈如何解决其中的问题(比如“我们试图在我们的视频数据库中找到重复的视频”,“我们需要根据一些模糊指定的标准对这些数百万个实体进行排名,并使用亚秒级延迟实现”,“我们只有非常少的标记数据,并希望使用GAN来扩大我们的数据集,最好的方法是什么?”等等) 。这种面试准备没有好方法,但我觉得面试官主要是想要了解我的思维过程。因此,这些面试并不是为了让你提出完美的算法,更多是关于头脑风暴或讨论权衡,即使你最初的想法完全是错误的也没关系。

5、行为面试

公司通知我人力资源部门的某些人要对我进行的面试一般都是行为面试。幸运的是,问题几乎总是一样的,所以你可以提前做好准备。有一家公司甚至给我发了一本关于他们“公司价值观”的小册子,并告诉我,面试中会问我如何在日常生活中反映这些价值观。你只需要在谷歌上搜索“行为面试”,就会发现很多资源。总而言之,我碰到的这种问题不多,大概整个求职期间才遇到过三四次。

6、其他

有些公司的面试是我在其他公司都没有遇到过的经历。就像数学难题,或者是一个“论文讨论”的面试,会提前给我一篇论文来阅读(通常来自我不熟悉的研究领域)。还有关于统计学、概率和优化理论基础的几个小时的笔试。:)


  薪资谈判

在我的面试之后,公司的招聘人员会联系我说“等好消息”。在面试中,我总是直截了当地地跟他们表示,只有在得到所有公司的回复后才能进行下一步的讨论,几乎每个招聘人员都非常乐于助人并且理解我的这个要求。之后就是薪资谈判了。已经有很多关于这个话题的文章了。

1、地区差异

当然,薪水因地区而异。ML和软件工程给的工资相当不错,所以通过levels.fyi或GlassDoor可以查到期望薪资水平。如果排除掉里面无用信息的话,Blind网站也有很多关于工资和一般面试过程的有价值的信息。但是,你在这些网站上找到的薪资数字大部分都是硅谷和整个美国的数据。我能够在这些网站上找到一些欧洲本地的工资数据,但我不得不花时间寻找。即使在欧洲,各国之间也存在巨大差异:特别是英国和瑞士的薪酬要远高于其他国家。

2、10万欧底薪

当公司问我对薪水的要求时,我总是告诉他们,最低10万欧元年薪。甚至在我开始面试之前,我就知道这是一个现实的较低标准,因为我已经从网上得到的信息,之前的实习以及和朋友同事的讨论知道这一点。肯定有英国或瑞士的公司愿意支付这么多薪水,尽管这个数字对于欧洲其他地区来说相当之高。尽管如此,我还是觉得开始就提出高薪比尴尬的回避“我不想给出具体数字”这种问题要好得多。

3、开始报价

大多数初始报价大约在8万到12万欧元年薪之间。这些是税前总年薪,因此这种薪酬包括基本工资、预期奖金以及任何股权或额外的养老金缴款。我向所有招聘人员提出的都是最高薪资。总的来说,我觉得美国公司(即那些运营中心位于美国的公司)对于我提出的薪酬没什么怨言,而且愿意谈判,而大多数欧洲公司就会说他们无法给出这样的薪资。对了,在整个求职过程中,没有一家欧洲公司给到10万欧元以上的年薪。

4、学会谈判

下一步,我决定哪些公司的录用通知值得我考虑。有的公司在面试阶段给人的印象不好,有些则是保底选项,我已经不需要考虑这些公司了。我为他们在百忙中和我沟通表示了感谢,并告诉他们我不打算入职。我留下了一小部分我真正感兴趣的公司:我现场就愿意接受这些公司的录用!这让我处于一个非常强大的谈判地位:我可以要求每家公司给我提供比当前给出的最高薪资更高的银子,但不会高到把他们吓跑。即使有公司会收回他们的录用(或者不愿意满足我的要求),我还有其他的录用通知候选。自然而然的,每家公司开价都高于其他人,将我的年薪提高到了我做梦到不敢想的数字。这种感觉特别离奇。

5、两轮考察

我在所有公司之间有两轮的反复考察。我的印象是招聘人员在那时有点变得绝望:他们邀请我和至亲好友去他们的城市度周末,费用全包,在邮件中给我发送惊喜的礼品篮,给我提供惊人的薪资等等。直到我觉得在他们都要失去耐心的时候停止考察。值得一提的是,虽然这些公司确实提供了更好的重新安置方案和入职奖金,但他们在提供额外的非货币福利方面缺乏灵活性。例如,没有一家公司在原来的录用通知中提出增加休假(这主要取决于地区标准,每年从25到45个带薪工作日假期不等)。最后,通过这种方式在各个录用通知中权衡,我最终签约的公司的最终报价是他们最初报价的两倍。我的总年薪最终确定在16万到24欧元范围内(不包括入职或重新安置奖金)。


  关于招聘人员的最后一点要说的

我从来没有见过比招聘人员更爱软硬兼施的人了。

他们会告诉你“这个报价是我们能给的最高的了”(在你开价高的时候他们会这么说),强调“他们会为你破例,因为你是最适合这个职位的人”(而就你所知,他们给你开的价跟给其他人的一模一样),他们会无中生有的给出一个严格的录用日期(可能5分钟后就会推迟)。

他们会告诉你他们不会重新协商薪资(只要你告诉他们你还有别的公司的录用通知,而且薪资更改,他们就会立即重新和你协商)。

他们会告诉你他们已经用了两个月时间面试该职位的候选人(但从不停止和你谈判)。感觉招聘人员总是试图确定我是否真的在考利其他公司的录用,或者我是否只是利用他们和另一家公司进行谈判。

我想这一切都是可以预料的,我最好的建议是始终保持礼貌、耐心并坚持。在我有限的经验中,只要你得到了多个录用通知(并且愿意放弃其中任何一个,除非已经得到了自己想要的薪资),你就掌握了主动权。所以就努力谈判吧。



我是如何在秋招中斩获百度、京东等 8 个推荐系统算法 offer 的?

参与投票,免费领取 iPad mini 等5重大奖


今日份最佳雇主候选推荐



点击 阅读原文,开始投票。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53002
 
607 次点击