编者按:本文来自微信公众号“InfoQ”,作者:洪亮劼,36氪经授权发布。
作者简介
洪亮劼,电子商务平台 Etsy 的数据科学主管(Head of Data Science),AICon 演讲嘉宾,前雅虎研究院(Yahoo Research)科学家、资深科学家和高级研发经理职位。长期担任多个国际著名会议及期刊的评审委员会成员和审稿人,并且组织过多个关于推荐、搜索、用户体验优化的国际研讨会。他拥有 3 项美国专利。
写在前面
根据 InfoQ 2017 互联网技术人薪资报告的结果,AI 工程师的薪资水平在整个互联网技术圈基本处于金字塔顶端范围。很多非 AI 领域的工程师们咋舌之余,也不禁好奇,到底 AI 工程师们是凭什么拿到这么高薪资的?我有机会成为 AI 工程师吗?
问:成为 AI 工程师需要几步?
答:两步。一,通过电话面试;二,通过 Onsite 面试
今天,就给大家分享面试官老司机总结的面试指南。希望有志于从事 AI 岗位的读者们,可以知彼知己,百战百胜。
在电话面试之前,有一个步骤是必不可少的,那就是筛选简历。因为人工智能和数据科学家的职业背景,我来分享一下如何筛选具有博士学历,特别是计算机专业相关毕业生的简历。筛选简历的过程需要很细心,对于普通的博士毕业生,我们会快速看以下两个方面的信息。
第一,候选人是否有高水平的论文发表。关于论文发表,首先需要看的是论文档次,也就是论文是否发表在高质量的会议上或者高水平的期刊上。对于计算机专业的博士生来说,会议一般比期刊更重要。其次,我们也要看候选人的论文是专注一个问题或者一个小领域还是很多领域都有涉猎。同时,对于这些论文,要关注候选人是第几作者。然后,我们需要关注的是论文发表频率,看论文工作是否都是一年做出来的。最后,我们可以去看一看这些论文的引用数。一般来说,博士刚毕业不会有很高的论文引用量,但也不乏水平比较高的候选人,论文会有惊人的引用量。
第二,我们需要看一看候选人是否有工业界实习经历,是研究实习还是工程实习。这里面,我们可能关注的是实习的公司。而且,我们可以关注是否是同一家公司还是多个公司。如果是研究实习的话,我们还需要去看一看候选人是否有相应论文发表。
在看了这两个因素之后,我们心中对于这个候选人就有一个很基本的认识。在需要高标准的情况下,一个博士毕业生需要有 3-4 篇第一作者的高水平论文发表(在毕业的时候,引用数在 70-100 左右),然后有 1-2 次工业界实习经验。
除了这两个硬指标以外,我们还会关注下面这些内容:
简历里是否有一些信息不完整的部分。比如有一些明显断档的经历,没有本科学校,没有说明博士生导师;
会什么编程语言和开发工具。是否只熟悉 Matlab 或者 R,是否有开源项目贡献;
是否已经有审稿经验;
是否已经有组织会议的经验。
所有这些因素都没有明显问题之后,我们已经定位到了比较靠谱的候选人(通常,只有少数人能够通过上面这轮简历筛选)。我们可以根据实际情况来调整在筛选简历这里的标准线从而让候选人能够和我们直接交流证明自己的实力。
这里再说几个比较细的准则:
博士生的论文中,非第一作者的一般不算数;
已经发表的会议论文和同一内容的期刊文章算一篇;
可以有非第一档次会议或者期刊的论文,但没有第一档次就很难说明问题;
如果有单一作者的论文,是一个比较大的问题,电话面试的时候一定要问清楚原因;
课程项目原则上也不算数(注意,这是对博士毕业生而言);
简历是 LaTex 生成还是 Word;
毕业学校和 GPA,一般不是很侧重要考虑的问题。
再说几个对于已经有工作经验的候选人的简历筛选要素:
如果有教职经验或者博士后经验,原则上是一个大问题,需要电话面试问清楚;
一两年左右频繁换公司是一个大问题,需要电话面试问清楚。
这里要多说一句的是,上面这些标准是对计算机相关专业比较适用的准则。而对于数学、应用数学、统计、物理等专业的人来说,可能有些标准需要重新设定(比如发表论文的标准需要降低)。总之,这里说的是一些比较大的方向,不过在把握了这些原则之后,我们就可以安排少量的候选人电话面试了。
这里我们简单说一下对于硕士阶段的候选人的简历筛选。一般来说,硕士和博士有不同的培养目标,因此上面所说的很多标准和原则对硕士毕业生并没有完全的指导意义。对于硕士毕业生来说,公司实习经验是很重要的。不排除一些优秀的硕士毕业生已经有论文发表,因此这方面也可以减低一些标准来衡量。对于硕士毕业生来说,学科项目可以作为一些参考,不过因为大多数学科项目都没有真正的应用性,我们只能从一个侧面了解这个候选人可能具备的一些技能。
筛简历的过程之后,就是电话面试了。电话面试的目的是要验证这个候选人是不是像简历里所说的那样有相应的经历。当然,有一些公司在电话面试的时候也会考察候选人解决问题的能力,这个内容也会经常出现在电话面试的安排中。对于科学家的职位,我们一般需要 1-3 轮电话面试,来了解下面这些信息:
了解候选人简历上的基本信息,如果对简历上的内容有疑点,需要在这个阶段问清楚;
考察候选人是否具备基本的专业知识,并对相关领域有一定的见解,考察候选人是否有其他领域的知识;
考察候选人是否有基本的专业相关的编写代码能力;
初步感知候选人的表达能力。
在询问候选人简历信息的时候,以下这些内容是需要弄明白的:
对于候选人是第一作者的论文,候选人是否能够很清晰地说出这些论文所解决的问题及解决思路。在进一步的沟通里,候选人是否能够讲清楚模型细节甚至是公式细节。候选人能否把实验的目的、数据、比较算法讲清楚。当然,这需要面试官提前做好准备。同时,询问候选人其他作者在这篇论文中的贡献;
对于候选人是非第一作者的论文,询问候选人在这个工作中起到了什么作用。看候选人是否诚实可信,也可以看出候选人的学术道德水平;
对于单一作者的文章,需要候选人解释为什么这个工作没有合作人,博士生导师为什么不是合作者,这个论文的研究时间如何而来;
对于有博士后经验或者教职经验的候选人,要询问候选人是否了解工业界研究和学术界研究的区别,如果以后有机会,是否还考虑学术界教职;
对于有工作经验的候选人,要询问候选人反复换工作的原因,询问清楚候选人在项目里的具体贡献,候选人的职业规划,看职业规划和简历经历是否相吻合。对于在某一个公司待了很长时间没有升职的候选人,也需要询问一下为何在原公司里没有其他机会。
在考察候选人专业知识的时候,需要弄明白以下这些内容:
对于某一专业最基础的一些概念和知识,候选人是否能够清晰地讲解出来。这一条其实很多人很难做到,不少人能够做复杂的工作,却往往在最基础的内容上含混不清。而在一些跨领域的工作中,基础知识往往是一个科学家所能够依赖的,提供解决方案的最初的工具。所以,基础很重要;
候选人是否诚实说明自己懂什么,不懂什么。在广泛的领域里,科学家应该有足够的自信说自己的专长是什么,自己的局限在哪里;
候选人是否对跨领域知识一窍不通,还是略有知晓,界限在哪里;
在考察编程水平方面,虽然很多公司已经有比较完备的方案考察软件工程师,但这些题目和考察目的其实不太适合科学家,这需要公司专门针对科学家制定一些考察题目。
在上述考察候选人各个方面的过程中,一个贯穿始终的主题就是要看候选人是不是能和面试人员进行有效的沟通。当然,也要考虑到,有人可能不太适应电话面试,而在面对面的交流时则毫无问题。
电话面试之后,如何判断是否要邀请候选人到公司来面试呢?一般来说,有这么两种情况是需要邀请候选人到公司来面试的,从而进一步判断候选人的水平。
第一,候选人的简历以及其在电话面试中表现的水平很高,的确是公司需要的人才。这样的候选人进入 Onsite 面试的通道是水到渠成的,要加快速度实施公司招聘流水线的后面步骤。对于这样的候选人来说,Onsite 面试主要是要考察候选人有没有其他特殊情况,导致其无法胜任工作。
第二,候选人的简历或电话面试中的表现存在争议。可能在好几轮的电话面试中,候选人在其中有些轮的表现要明显好于其他轮;或者候选人得到了很多好评,但是也有一些比较负面的评价。这个时候,我们采取不“一棒子打死”的态度,往往希望能够邀请候选人到公司来仔细考察。
在经历了简历筛选和电话面试的流程之后,我们已经对候选人有了一个初步的了解:他(她)的背景、熟悉以及不熟悉的领域、编程能力和沟通能力。对于各方面都表现不错的候选人,我们一般就会安排到公司来进行现场面试。对于科学家岗位,现场面试一般包括下面这些环节:
一场一个小时左右的学术报告会;
和招聘经理讨论可能的项目方向;
和其他科学家、工程师讨论技术和研究问题;
在白板上展示基本的编程开发能力;
和人事讨论职位的其他问题。
学术报告会 是考察候选人学术水平的一个非常重要的环节。因为简历和电话面试都无法系统地看出候选人的整个学术生涯的特征,比如是偏理论还是偏应用?是蜻蜓点水似的研究,还是专注某几个问题?这样我们能够看到候选人的整个学术生涯的清晰明确的线条。
同时,报告会还是观察候选人语言能力的好机会,看候选人是否有较强的语言组织能力,能够清晰地表达自己。这一点之所以关键是因为有一些候选人连自己的工作都讲不清楚。
另外一个需要考察的就是,看候选人能否在公开场合接受各种质疑和对自己工作的挑战,包括候选人是否能够承认自己工作的局限和不足,是否能够礼貌且“一语中的”(To-The-Point)地回答技术问题。
和招聘经理讨论可能的项目方向,很多候选人显得很随意,觉得这就是闲聊。其实这也是考察候选人的一个很重要的机会。
首先,招聘经理可以说一些公司的产品或是项目,看看候选人是否有兴趣,是否能够通过一些简单的产品介绍,问出一些有科学价值的问题。会问问题,其实是一个非常重要的技能。
招聘经理也可以稍微深入地讨论一两个产品具体的现实问题,看候选人能否快速说出一些解决方案或者是一些思路。在整个谈话中,可以体会出候选人是否只有学术的经验而没有任何产品和产业的“感觉”(Sense)。有一些候选人在这个阶段会显得没法把谈话进行下去,完全是倾听问不出任何问题。这就需要招聘经理仔细控制谈话来看候选人是否对新事物有好奇心,是否能够跟上思路,是否对新领域新问题有快速的思考。
和参加面试的科学家以及工程师讨论研究问题,主要考察的是候选人在一个类似工作的环境里能否“半”独立地完成科研解决方案的设计和实现。为什么说“半”独立,是因为这个环节里,沟通也是很重要的,很多条件、约束和限制都需要候选人和面试人员进行有效沟通来理解清楚。因此,候选人面对的并不完全是“应用题”似的独立解决问题的场景。
通常的形式是,面试人员针对某个具体的问题,询问候选人如何提供一个有效的科学解决方案。这里面需要注意下面这些环节。
1、候选人能否问出有效的问题,这些问题是不是在帮助候选人自己减少问题的不确定性,帮助候选人自己寻找答案,还是漫无目的地问各种问题。
2、候选人是不是不假思索地就提供一些思路,然后也没有认真思考,又反反复复更换思路。这是候选人没有系统思维能力的一个体现。
3、候选人的整体思维模式是怎样的?
这两种思维模式都是行之有效的思维方式。但是也有候选人在两者之间踌躇,一方面提不出基本的解决方案,一方面也写不出完整的数学模型来。
第一种思维模式。先提出一个可能的多步骤解决方案,然后看是否能够简化步骤,再看能否提出比较规范的数学模型;
第二种思维模式。先提出比较完整的数学模型,然后根据实际情况简化,提出更加快速的算法。
4、候选人能否在提出基本方案或者是数学模型之后,用自己掌握的方法把问题的细节算法写出来,并且能够分析算法的各方面特征。这考察的是候选人解决问题的连贯性和独立性。有一些候选人的确能够写出漂亮的数学模型,但是很可能完全没办法把模型算法化,写出来的程序惨不忍睹。
5、还有一个需要考察的维度就是,候选人遇到领域之外的问题,是如何思考的。有的候选人就彻底懵了,完全不能理性地提出方案。而有的候选人则会小心翼翼地利用基础知识,尝试解决问题,或者是把新领域的问题转化成自己熟悉的问题。
值得注意的是,在这个环节中表现不好的候选人,不管过去在论文、学校方面有多么优秀的经历,都要打一个大问号。事实证明,在这个阶段不那么令人满意的候选人,在现实工作中往往也很难胜任实际的工作。
对于有经验的候选人,除了重点考察能否提出优秀的解决方案外,还可以看候选人是否具有“全局观”,比如对这些问题的考量:如何设计更加有效的数据通路,没有数据怎么办,上线以后系统表现不好怎么办等。
对候选人在白板上进行基本的编程能力的测试,是整个 Onsite 考察中的另外一个核心内容。总的说来,数据科学家或者人工智能工程师的编程能力需要和普通工程师的基本相当,有些时候甚至要更高。这里面,除了考察基本的算法问题以外,还需要考察能否对普通的机器学习算法进行编程,也就是说,看候选人是否真正能够把模型或者一些算法用程序实现出来。关于候选人的编程能力问题,这是一个单独的话题,今天我们就不在这里展开了。
有一点需要留意观察,候选人的表现是否在有压力或者劳累(毕竟一天的现场面试是很累的)的情况下有重大波动。优秀的候选人能够通过沟通来缓解自己的压力。
想了解更多 AI 招聘干货?推荐《AI 技术内参》,一年时间,为你系统剖析人工智能核心技术,精讲人工智能国际顶级学术会议核心论文,解读技术发展前沿与最新研究成果,分享数据科学家以及数据科学团队的养成秘笈。