面试流程
通常我们的面试分为一次电话面试和一次现场面试(候选人在外地时第二次面试会采用视频会议方式)。一般来说第一次电话面试由一位面试官负责,第二次面试会有多位同事同时参与,以便节省面试者的时间和完全了解所有问题的回答情况。在少数难以决定的时候,或者觉得更适合另一个职位的时候,会多增加一轮面试。
面试中的沟通问题
尊重候选人,平等交流:让候选人自我介绍前,先介绍自己和公司;交流的时候双方处于平等的地位,耐心听完对方的话;面试的目的是全面了解候选人与工作相关的各方面情况,不是为了证明自己更强,所以不要产生驳倒候选人的意图。无论是电话面试还是现场面试都应该做到守时。我们在考察别人的时候,别人也在考察我们。
把握好面试节奏:面试从双方的自我介绍开始,然后开始从候选人过去的职位和做过的项目开始谈起,这些都应该是候选人熟悉的内容,为后面更难的技术问题建立良好的沟通氛围。
重点考察对方的强项:对于有较多工作经验的候选人,面试应该主要围绕他所擅长的方面(而不是面试官自己所擅长的方面),因为他的优点将会是我们雇用他的主要原因。
选择有层次的面试问题:不要只求答案正确,要本着一起讨论的方式让候选人充分说明解题思路;不要不断地变换问题,每个问题点到即止。对一个问题要一层层深入,直到候选人回答不了或完整解答为止,这样才能知道候选人思考达到的深度在哪里。
考察候选人解决问题的思路:可以从一个简单的问题开始,候选人给出回答后,在上一个问题基础上做些变化进一步加大难度,考察候选人思路是否灵活;也可以从一个困难的问题开始,考察候选人分解复杂问题的能力,在长时间没有进展时应该给出一些提示。同时也要注意考察候选人在遇到困难时是否会问合适的问题。
给候选人对你提问的机会:我们要通过面试了解候选人,候选人也需要在这个过程中了解我们。在面试结束前应该给候选人提出对我们的团队、产品、面试过程、职位需求等方面问题的机会。一来解答对方的疑问,二来也可以看出他对新工作的期待程度和热情高低。
面试也是品牌推广:每一次面试并不仅仅是一次壮大团队的机会。哪怕最后没有招来新同事,也可以多让一个人知道我们的公司和产品。我们接触的每个人都可能传播我们的形象和品牌。(在 LC 团队时)被我们拒绝和拒绝了我们的候选人后来都给我们推荐过其他优秀的候选人。
面试中需要考察的问题
对不同的技术职位下面的几个方面有不同的权重,但都应该基本覆盖到:
- 基础知识:基本的数据结构和算法;
- 分而治之等解决问题的高层思路;
- 对概率的基本理解;
- 对时间和空间复杂度的理解;
- 所招聘职位相关的专业问题(iOS、Android、Web 前端、后端架构等);
- 所有技术职位在第二次面试时都要有动手写代码的题,因为 TDS 目前没有不用参与开发的职位。选择不需要特别的技巧,可以在 20 ~ 25 行代码左右完成的题目为宜,重点考察候选人面对问题时的思路是否清晰。之后应该请候选人写一些测试用例,考察是否有良好的测试习惯。
面试中应避免的问题
- 与技术和实际工作无关的智力题,比如过去曾很流行的和海盗、金币、球相关的一类问题。因为在面试中能比较快回答出这类问题的通常是曾在网上看到过答案的人,并且研究表明这类问题对预测候选人在实际工作中的表现几乎没有参考价值。
- 网上常见的所谓 Microsoft、Google 面试题等(关键词:高尔夫球,下水道盖子等),原因同上。
- 年龄、婚姻、子女状况等与工作能力无关的个人问题。
- 除非候选人主动透露,我们不问候选人在上一家公司的薪酬或者她/他对于薪酬的预期。我们给 offer 应该基于自己对候选人的判断,而不是另一家公司对她/他的判断,或者候选人敢开口要多少。否则就容易破坏团队内的公平性,带来长期的管理成本。