<audio id="audio" title="138 | 数据科学团队养成：Onsite面试面面观" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/8c/30/8c719f6840f6911a09e140b294b09630.mp3"></audio>

本周我们来聊数据科学或者人工智能团队的招聘话题。周一的分享里，我们聊了聊组建数据科学家团队所必不可少的两个步骤，筛选简历和电话面试。我们着重从招聘博士毕业生的角度对这两个环节进行了剖析，梳理了如何看简历，以及在电话面试时需要考察哪些内容。

今天，我们来聊一聊电话面试后面的一个环节，也就是邀请候选人到公司面试，俗称Onsite面试。

## 从电话面试到Onsite面试

电话面试之后，如何判断是否要邀请候选人到公司来面试呢？一般来说，有这么两种情况是需要邀请候选人到公司来面试的，从而进一步判断候选人的水平。

第一，候选人的简历以及其在电话面试中表现的水平很高，的确是公司需要的人才。这样的候选人进入Onsite面试的通道是水到渠成的，要加快速度实施公司招聘流水线的后面步骤。对于这样的候选人来说，Onsite面试主要是要考察候选人有没有其他特殊情况，导致其无法胜任工作。

第二，候选人的简历或电话面试中的表现存在争议。可能在好几轮的电话面试中，候选人在其中有些轮的表现要明显好于其他轮；或者候选人得到了很多好评，但是也有一些比较负面的评价。这个时候，我们采取不“一棒子打死”的态度，往往希望能够邀请候选人到公司来仔细考察。

## Onsite面试

在经历了简历筛选和电话面试的流程之后，我们已经对候选人有了一个初步的了解：他（她）的背景、熟悉以及不熟悉的领域、编程能力和沟通能力。对于各方面都表现不错的候选人，我们一般就会安排到公司来进行现场面试。对于科学家岗位，现场面试一般包括下面这些环节：

- 一场一个小时左右的学术报告会；
- 和招聘经理讨论可能的项目方向；
- 和其他科学家、工程师讨论技术和研究问题；
- 在白板上展示基本的编程开发能力；
- 和人事讨论职位的其他问题。

**学术报告会是考察候选人学术水平的一个非常重要的环节**。因为简历和电话面试都无法系统地看出候选人的整个学术生涯的特征，比如是偏理论还是偏应用？是蜻蜓点水似的研究，还是专注某几个问题？这样我们能够看到候选人的整个学术生涯的清晰明确的线条。

同时，报告会还是观察候选人语言能力的好机会，看候选人是否有较强的语言组织能力，能够清晰地表达自己。这一点之所以关键是因为有一些候选人连自己的工作都讲不清楚。

另外一个需要考察的就是，看候选人能否在公开场合接受各种质疑和对自己工作的挑战，包括候选人是否能够承认自己工作的局限和不足，是否能够礼貌且“一语中的”（To-The-Point）地回答技术问题。

和招聘经理讨论可能的项目方向，很多候选人显得很随意，觉得这就是闲聊。其实这也是考察候选人的一个很重要的机会。

首先，招聘经理可以说一些公司的产品或是项目，看看候选人是否有兴趣，是否能够通过一些简单的产品介绍，问出一些有科学价值的问题。**会问问题，其实是一个非常重要的技能**。

招聘经理也可以稍微深入地讨论一两个产品具体的现实问题，看候选人能否快速说出一些解决方案或者是一些思路。在整个谈话中，可以体会出候选人是否只有学术的经验而没有任何产品和产业的“感觉”（Sense）。有一些候选人在这个阶段会显得没法把谈话进行下去，完全是倾听问不出任何问题。这就需要招聘经理仔细控制谈话，来看候选人是否对新事物有好奇心，是否能够跟上思路，是否对新领域新问题有快速的思考。

和参加面试的科学家以及工程师讨论研究问题，主要考察的是候选人在一个类似工作的环境里能否“半”独立地完成科研解决方案的设计和实现。为什么说“半”独立，是因为这个环节里，沟通也是很重要的，很多条件、约束和限制都需要候选人和面试人员进行有效沟通来理解清楚。因此，候选人面对的并不完全是“应用题”似的独立解决问题的场景。

通常的形式是，**面试人员针对某个具体的问题，询问候选人如何提供一个有效的科学解决方案**。这里面需要注意下面这些环节。

1.候选人能否问出有效的问题，这些问题是不是在帮助候选人自己减少问题的不确定性，帮助候选人自己寻找答案，还是漫无目的地问各种问题。

2.候选人是不是不假思索地就提供一些思路，然后也没有认真思考，又反反复复更换思路。这是候选人没有系统思维能力的一个体现。

3.候选人的整体思维模式是怎样的？

一般说来，有两种思维模式。第一种是先提出一个可能的多步骤解决方案，然后看是否能够简化步骤，再看能否提出比较规范的数学模型；第二种思维模式是先提出比较完整的数学模型，然后根据实际情况简化，提出更加快速的算法。

这两种思维模式都是行之有效的思维方式。但是也有候选人在两者之间踌躇，一方面提不出基本的解决方案，一方面也写不出完整的数学模型来。

4.候选人能否在提出基本方案或者是数学模型之后，用自己掌握的方法把问题的细节算法写出来，并且能够分析算法的各方面特征。这考察的是候选人解决问题的连贯性和独立性。有一些候选人的确能够写出漂亮的数学模型，但是很可能完全没办法把模型算法化，写出来的程序惨不忍睹。

5.还有一个需要考察的维度就是，候选人遇到领域之外的问题，是如何思考的。有的候选人就彻底懵了，完全不能理性地提出方案。而有的候选人则会小心翼翼地利用基础知识，尝试解决问题，或者是把新领域的问题转化成自己熟悉的问题。

值得注意的是，在这个环节中表现不好的候选人，不管过去在论文、学校方面有多么优秀的经历，都要打一个大问号。事实证明，在这个阶段不那么令人满意的候选人，在现实工作中往往也很难胜任实际的工作。

**对于有经验的候选人，除了重点考察能否提出优秀的解决方案外，还可以看候选人是否具有“全局观”**，比如对这些问题的考量：如何设计更加有效的数据通路，没有数据怎么办，上线以后系统表现不好怎么办等。

**对候选人在白板上进行基本的编程能力的测试，是整个Onsite考察中的另外一个核心内容**。总的说来，数据科学家或者人工智能工程师的编程能力需要和普通工程师的基本相当，有些时候甚至要更高。这里面，除了考察基本的算法问题以外，还需要考察能否对普通的机器学习算法进行编程，也就是说，看候选人是否真正能够把模型或者一些算法用程序实现出来。关于候选人的编程能力问题，这是一个单独的话题，今天我们就不在这里展开了。

有一点需要留意观察，候选人的表现是否在有压力或者劳累（毕竟一天的现场面试是很累的）的情况下有重大波动。优秀的候选人能够通过沟通来缓解自己的压力。

## 小结

今天我们讨论了Onsite面试，总结一下要点：第一，我们讲了如何决定一个候选人可以从电话面试过度到Onsite面试；第二，我们详细梳理了Onsite面试方方面面的问题。希望这些内容能给你一些启发和借鉴。

最后，给你留一个思考题，Onsite面试之后，如何来决定是否录用这个候选人呢？是不是需要所有的人都赞同？ 如果不是所有人都赞同，怎么综合意见做出最后的决定呢？

欢迎你给我留言，和我一起讨论。


