第 2 章 面试揭秘

第 2 章 面试揭秘

大多数公司的面试方式都类似。本章概述了求职人员如何进行面试以及招聘公司在面试中的关注点。在准备面试、参加面试以及后续跟进的过程中,你可以以此为指南。

如果被通知面试,通常会先进行一次初选,一般是通过电话。在顶尖高校就读的学生,或许有机会以面对面的方式参加这类面试。

不要被面试的名称所迷惑:“初选”通常会涉及编程和算法问题,其通过的门槛是和现场面试一样高的。如果不确定你的面试是否是一场技术面试,你可以向招聘流程的协调人员询问面试官的职务或者面试可能会涉及的内容。一般说来,工程师会对你进行一场技术类面试。

很多公司已经开始使用在线同步编辑软件,但是也有一些公司会让你在纸上写出代码并通过电话读出来。一些面试官甚至会给你布置一些“家庭作业”,让你在挂断电话后解决,或者要求你通过邮件把写好的代码发送给他们。

一般1至2轮初选后会通知参加现场面试。

现场面试一般会有3至6轮,面对面进行,其中一轮通常是共进午餐。午餐面试一般不是技术面试,面试官有时甚至不会提交任何反馈。你可以利用这个机会和面试官讨论你的兴趣所在以及公司的企业文化。其他几轮面试则会以技术方面为主,涉及编程、算法、设计、架构、行为和工作经验问题。

根据公司和团队的不同,面试问题在以上这些领域的分布有所不同,这是因为不同公司的优先次序和规模不同,也可能纯粹是随机的。面试官在面试问题的选择上往往有很大自由度。

面试之后,面试官会以某种形式提交反馈。在一些公司,你的所有面试官会一起开会讨论你的表现并做出录用决定。而在另外一些公司,面试官会提出录用意见,以便于招聘经理或招聘委员会做出最终的录用决定。还有一些公司,面试官甚至不做任何决定,他们的反馈会送至招聘委员会,由委员会做出录用决定。

大多数公司大概会在一周之后与求职者联系,并告知其下一步该怎么做(录用、拒绝录用、进一步面试或最新进展)。某些公司的回复很快(有时在面试当天就回复),某些公司则要慢一些。

你如果等了一周以上还未收到回复,那么你应该联系一下招聘人员。如果你的招聘人员不回复,这并不意味着你被拒了(至少大型科技公司是这样的,其实绝大多数公司这样)。让我再重复一遍:没有回复并不意味着什么。招聘公司的意愿是:在做出最终决定后,所有招聘人员都应该通知求职者面试结果。

延误时有发生。如果你的录用结果出现了延误,请与招聘人员联系。联系时务必态度恭敬。招聘人员和你一样,也十分忙碌,也会丢三落四。

2.1 微软面试

微软喜欢招聪明人,尤其青睐极客。求职者必须对技术满怀热情。微软的面试官不大会问你一些C++ API的个中细节,而是直接让你在白板上写代码。

参加面试时,求职者最好在早上约定时间之前赶到微软。先填表,接着你会和招聘助理碰面,他会给你一个面试样题。招聘助理主要是帮你热热身,不大会问技术问题。就算真的问了几个简单的技术问题,也是想让你放松心情,等到面试真正开始时,你就不会那么紧张了。

对招聘助理一定要以礼相待。说不定他们会帮上大忙,在你首轮面试表现欠佳时,他们有可能帮你争取到重新面试的机会。毫不夸张地说,他们甚至还能左右你的应聘结果。

面试当天你会接受4至5轮面试,面试官一般来自两个团队。许多公司会把面试安排在会议室,微软却把面试安排在面试官的办公室。你正好可以借机四处看看,感受一下他们的团队文化。

一轮面试过后,不同的团队做法不一样,面试官可能会根据个人习惯决定是否将你的表现反馈给后续的面试官。

完成所有面试后,你可能会见到招聘经理(通常会被称为“合适”)。假如真是这样的话,那可是个好兆头,意味着你通过了某个团队的基本考查。接下来,就要看招聘经理要不要录用你了。

快的话,面试当天你就会知道结果;慢的话,则可能要等上一周。要是等了一周还没收到人事部的通知,不妨发封邮件,客气地问一下进展。

如果你没有马上收到回复,有可能是因为招聘助理太忙了,这并不代表你就没戏。

2.1.1 必备项

“你为什么想要加入微软?”

提这个问题,微软是想了解你是否对技术满怀热情。一个比较好的答案是:“自打接触计算机以来,我就一直在用微软的软件,贵公司开发的软件产品令人赞不绝口。比如,我最近一直在Visual Studio开发环境中学习游戏编程,它的API实在是太好用了。”注意,回答一定要展示出你对技术满怀热情。

2.1.2 独特之处

如果到了招聘经理这一关,说明你面试表现得不错。这可是个好兆头!

另外,微软趋向于让每个团队拥有更多自主的权利,产品的组合也非常丰富。因为不同的团队寻求不同的目标,所以在微软每个团队的体验会有很大不同。

2.2 亚马逊面试

亚马逊的招聘流程一般会从一轮电话面试开始,其间求职者会接受某个团队的面试。偶尔也会出现面试两轮甚至更多轮的情况,这可能是因为第一轮的面试官对你的评价不高,或是别的团队对你感兴趣。此外,还有其他特殊情况,比如,求职者就住在亚马逊总部所在地西雅图,或者以前面试过其他职位。对于这样的面试者,也许一次电话面试就够了。

在电话面试中,面试你的工程师通常会要求你通过共享文档工具写些简单的代码。他们问的技术问题可谓五花八门,意在了解你究竟熟悉哪些领域。

接下来,如有一两个团队根据你的简历和在电话面试中的表现相中你,你就要飞到西雅图或者你面试职位所在的分部接受4至5轮面试。在白板上写代码是少不了的,有些面试官还会着重考查你的其他技能。每一轮面试官都会侧重不同的领域,所以他们的提问会大相径庭。在提交自己的评价报告之前,他们看不到其他面试官对你的评价,而且公司也不鼓励面试官在面试过程中互相交流,一切讨论都得等到几轮面试全部结束后才能进行。

顾名思义,“调杆员”1主要负责把控面试质量。他们受过专门训练,并且是从其他团队抽调来的,以便减少面试中的主观倾向。这位面试官不仅面试经验丰富,而且跟招聘经理一样,拥有生杀大权。不过,切记:这一轮面试表现磕磕绊绊,并不等于你的整体表现就很差。面试官会比照其他求职者来评价你的水平,而不是只看你答对多少问题。

1“调杆员”(bar raiser)的概念来自亚马逊美国总部。这个词原指在跳高比赛中一次次将杆调高的工作人员。亚马逊的调杆员则是一群在招聘过程中负责从企业文化以及行为准则的角度考查应聘者,从而维护招聘质量的人。在招聘中,调杆员会用很苛刻的眼光考查应聘者是否在至少一点上高过亚马逊的平均水准,如果是,那么雇用这样的人实际上就等于在提升公司的能力,这就起到了“抬杆”的作用。——译者注

等到所有面试官提交评价报告后,他们会在一起讨论你的表现,并决定是否录用你。

一般来说,亚马逊的招聘团队都会很快给出录用结果,很少有耽搁。要是一周内都没等到结果,建议你发封措辞得当的邮件询问进展。

2.2.1 必备项

亚马逊关注扩展性问题,请做好相应的准备。当然,回答这些问题,并不要求你具备分布式系统方面的知识。具体建议可参看9.9节。

此外,亚马逊还会问很多面向对象设计的问题。请参看9.7节,里面有一些样题和建议。

2.2.2 独特之处

“调杆员”来自其他团队,旨在提高面试标准。他和招聘经理一样重要,请尽量表现得出色一些。

与其他公司相比,亚马逊更倾向于试验新的面试流程,所以上文所述不一定适用于所有人,这只是最常见的面试流程。

2.3 谷歌面试

业界有很多关于谷歌面试的可怕谣传,但多数也只是谣传。谷歌的面试与微软或亚马逊的面试并无太大区别。

谷歌的面试也从电话面试开始,来面试你的人是技术工程师,因此,免不了会问些技术难题,求职者切不可掉以轻心。这些问题也可能涉及编程,有时你还要通过共享文档工具写些代码。电话面试的问题和现场面试类似,要求也一样。

现场面试一般有4至6轮,其中一轮为午餐面试。面试官之间不能交流评价报告,因此,每一轮面试你都可以从零开始。午餐面试不会有评价报告,你可以借机问些其他环节不方便问的问题。

谷歌不会要求面试官侧重不同的领域,也没有所谓的标准流程或结构。每个面试官可以自行决定问哪些问题。

面试过后,评价报告会以书面形式提交给由工程师和经理组成的招聘委员会,由他们做出录用结论。面试评价报告由分析能力、编程水平、工作经验和沟通能力4部分组成,最后你会得到总的评分:在1.0到4.0之间。招聘委员会里一般不会有你的面试官。就算有,那也纯属巧合。

通常,在决定录用与否时,招聘委员会更看重那种有面试官给你打高分的情况,打个比方,如果你的得分是3.6、3.1、3.1 和2.6,效果要好过拿4个3.1。

这也就是说,每轮面试不一定都要有上佳表现。此外,你在电话面试中的表现一般起不了决定性作用。

如果招聘委员会给出的意见是“聘用”,你的材料就会转给薪酬委员会以及执行管理委员会。最终结果可能要等上几周,因为还有不少流程要走,要等待多个委员会审批。

2.3.1 必备项

作为一家互联网公司,谷歌非常看重如何设计可扩展的系统。因此,务必掌握9.9节的问题。

无论你有怎样的经验,谷歌都十分注重分析技能(算法)。即使你认为以前的经验已经足以证明这方面的技能,也需要对这类问题做好充分的准备。

2.3.2 独特之处

面试官不是决策者。他们只提交评价意见供招聘委员会参考。招聘委员会给出录用与否的决定,当然,该决定偶尔也会被谷歌高管否决。

2.4 苹果面试

苹果的面试流程与公司本身的风格非常相符,是最没官僚味儿的。苹果的面试官很看重技术功底,但求职者对应聘职位和公司的热情也非常重要。虽然成为Mac用户并不是应聘苹果的先决条件,但你至少要对该系统有一定了解。

在苹果的面试中,招聘助理会先给你打电话了解一些基本情况,接下来团队成员会对你进行一连串的技术电话面试。

当你受邀去参加现场面试时,招聘助理会出面接待你,并介绍面试的大致流程。然后,你要接受来自招聘团队成员6至8轮的面试,其间这个团队的重要人物也会来面试你。

苹果的面试形式是“一对一”或“二对一”。请做好在白板上写代码的准备,交流的时候一定要把自己的思路表达清楚。你可能会跟未来的上司共进午餐,这看似随意,但其实也是一次面试。每个面试官都会侧重不同的领域,面试官之间一般不会过问彼此的面试情况,除非他们想让后续面试官就求职者某一方面多挖掘点内容。

当天所有面试结束后,面试官们会在一起商议你的表现。如果大家都认为你表现不错,接下来会由你所应聘部门的主管或副总来面试你。能见到主管也不见得你一定会被录用,不过总归是个好兆头。让不让你见主管的决定对你是不公开的,如果你落选了,他们只是默默送你离开公司,也不会透露你为什么落选了。

如果你得以进入主管或副总面试环节,面过你的面试官们会聚到会议室正式表决录用意见。副总通常不会列席,但如果你没能打动他们,他们照样可以直接否决。招聘人员通常会在几天后联系你,要是等不及的话,你也可以主动联系。

2.4.1 必备项

如果你知道哪个团队会来面试你,那么务必先熟悉他们的产品。你喜欢该产品的哪些方面?你觉得有哪些可以改进的地方?给出独到见解可以有力展示你对这份工作的激情。

2.4.2 独特之处

在苹果的面试中,“二对一”的形式司空见惯,不过也不用太紧张,这跟“一对一”面试并无分别。

此外,苹果的员工都是超级果粉,在面试中,你最好也能展现出同样的热情。

2.5 Facebook面试

一旦被Facebook挑中,求职者一般要接受1至2轮电话面试。电话面试主要涉及技术问题,求职者通常要用共享文档工具写些代码。

电话面试后,有可能要求你完成一道涉及编程和算法的面试题目。请注意编程风格。如果你从来没有经历过完整的代码审查流程,那么最好请有过相关经验的工程师帮忙审查一下代码。

现场面试时,主要由其他软件工程师来面试你,不过,招聘经理有空的话也会参与。所有面试官都受过专业面试培训,他们只提供意见,对你的应聘结果不做决断。

现场面试的每个面试官都有着不同的“角色”,以确保大家不会重复提问,并全面考查求职者的能力水平。面试官通常会扮演以下角色。

  • 行为问题(“绝地武士”)。这类面试用于测试你在Facebook的环境中的生存能力。你与公司文化以及价值观的契合度如何?你的兴奋点是什么?你如何面对挑战?还要准备好阐述你对Facebook的兴趣所在。Facebook需要有热情的人。在这场面试中,也可能问你一些编程问题。
  • 编程和算法问题(“忍者”)。这些是标准的编程和算法问题,你在本书中就可以找到类似的问题。面试官有意识地把这些问题设计得极具挑战性。你可以使用任何你想使用的编程语言。
  • 设计、架构问题(“海盗”)。对于后端软件工程师来说,你或许会遇到系统设计问题。前端软件工程师和其他职业求职者会要求回答和他们的领域相关的设计问题。你应该全面地讨论不同的解决方案和这些解决方案之间的取舍。

一般说来,你会接受两轮“忍者”面试和一轮“绝地武士”面试。有工作经验的求职者通常会加一轮“海盗”面试。

面试过后,在交流你的表现之前,见过你的面试官会先提交书面评价报告。这么做是为了确保各位面试官能对你的表现做出相对独立的评价。

一旦收到所有的评价报告,面试小组和招聘经理便会商讨你的面试结果。他们会先达成统一意见,然后提交给招聘委员会。

2.5.1 必备项

作为网络科技的新贵以及“当红炸子鸡”,Facebook也更青睐那些富有创业精神的开发人员。在面试过程中,你要展现出自己热衷于快速创造新事物的激情。

他们期望看到你可以使用任何语言快速构建优雅、可扩展的解决方案。懂PHP并不会显得特别突出,因为Facebook也有很多后台工作要用到C++、Python、Erlang和其他语言。

2.5.2 独特之处

Facebook由公司统一招聘员工,而不是专门针对某个团队。面试成功并入职后,你会先参加为期6周的“新兵训练营”,以便快速适应大规模的代码库。资深工程师会担任你的导师,辅导你掌握最佳实践和必备技能,最终让你可以游刃有余地加入自己喜欢的项目组。

2.6 Palantir面试

和一些使用“统一面试”(公司作为一个整体进行面试,而不是由特定的团队进行面试)的公司不同,Palantir的面试分团队进行。当有更合适你的团队时,你的申请偶尔也会转至另外一个团队。

通常来说,Palantir的面试流程从两轮电话面试开始。这两轮面试大约用时30至45分钟,主要会集中于技术问题。面试中会谈论一点儿你以前的工作经历,但是主要关注算法问题。

你也可能会收到来自于HackerRank的编程测验,该测验旨在评估你编写优化算法和正确代码的能力。工作经验较少的求职者(比如大学生)极有可能收到类似的测验。

在这之后,通过的求职者会受邀前往公司园区参加多达5轮面试。现场面试会涉及你以前的工作经验、相关领域的知识、数据结构和算法以及设计问题。

你也有可能会看到Palantir产品的现场演示。你可以通过问一些精心准备的问题来证明你对公司的热情。

面试之后,所有面试官会与招聘经理开会来讨论你的表现。

2.6.1 必备项

Palantir要求工程师要聪明。很多求职者说Palantir的面试问题要比谷歌和其他顶尖公司的面试问题更难。这并不一定意味着拿到录用通知书会更难(尽管被录取可能会很难),而只是说明面试官更喜欢使用具有挑战性的面试问题。你如果即将参加Palantir的面试,应先把核心的数据结构与算法知识背得滚瓜烂熟,之后再专心准备最难的算法面试题。

如果面试一个后端岗位,你同样需要复习系统设计。这是面试流程当中的重要一环。

2.6.2 独特之处

编程测验是Palantir面试的常规流程。尽管可以使用自己的计算机并且可以随意浏览各类材料,但是不要不做准备就进行编程测验。测验题目极具挑战性,而且测验会评估你所写算法的效率。充足的面试准备对此大有裨益。你也可以在HackerRank.com网站上进行编程题目的练习。

目录