程序员面试大揭秘——应聘微软、亚马逊、谷歌、苹果等IT公司你都要做什么准备?

对于多数求职者而言,面试好似一个迷局。你去了,见了几个面试官,答了一堆问题,然后,或两手空空离开,或幸运地拿到录用通知。 你有没有想过:面试结果是怎么得出的?

对于多数求职者而言,面试好似一个迷局。你去了,见了几个面试官,答了一堆问题,然后,或两手空空离开,或幸运地拿到录用通知。

你有没有想过:

  • 面试结果是怎么得出的?
  • 面试官会不会互相交流?
  • 公司最看重哪些方面?

好了,不用再挖空心思,再三思索了,我来告诉你。

在本章,我们邀请了来自顶尖科技公司(微软、亚马逊、谷歌、苹果、Facebook及雅虎)的面试专家来为大家答疑解惑,揭秘面试中的那些事儿。

这些专家会让我们了解各家公司的面试流程,帮助还原那些发生在面试会议室之外的事情,以及面试结束后的事项。

这些专家还会告诉我们各家公司面试流程的不同之处。比如,亚马逊的“调杆员”是怎么回事,谷歌的招聘委员会是如何运作的。是的,每家公司各具特色。了解这些“怪癖”会让你更加胸有成竹,不会被突如其来的亚马逊“调杆员”给吓住,也不会对苹果居然同时派出两位面试官来考察你而感到意外。

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

此外,这些专家也强调了各家公司的面试重点。尽管这些顶尖公司都喜欢考察求职者的编码能力和算法基础,他们其实也各有侧重。不管这是源自各家公司的技术背景或是历史,至少你知道该如何做好准备。

**接下来,让我们一起揭开微软、亚马逊、谷歌、苹果、Facebook和雅虎的“面试迷局”吧。**

微软面试

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

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

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

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

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

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

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

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

必要准备事项:

你为什么想要加入微软?

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

独特之处:

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

亚马逊面试

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

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

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

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

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

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

必要准备事项:

亚马逊是一家互联网公司,这也意味着他们非常关注“扩展性”问题。请做好相应的准备。当然,回答这些问题,并不要求你具备分布式系统方面的知识。具体建议可参看“扩展性与存储限制”一节。

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

独特之处:

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

谷歌面试

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

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

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

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

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

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

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

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

必要准备事项:

作为一家互联网公司,谷歌非常看重如何设计可扩展的系统。因此,务必掌握“扩展性与存储限制”一节的问题。此外,谷歌的面试官很喜欢问些涉及“位操作”的问题,也请重点复习这些方面的知识。

独特之处:

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

苹果面试

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

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

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

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

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

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

必要准备事项:

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

独特之处:

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

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

Facebook面试

Facebook的在线工程难题曾引发热议,其实这无非又是吸引眼球的手段之一。除了解答这些难题,你还可以通过传统渠道申请该公司的职位,比如提交在线职位申请,或者参加校园招聘会。

① 感兴趣的读者可以访问页面Facebook Engineering Puzzles:www.facebook.com/careers/puzzles.php。 ——译者注

一旦被Facebook挑中,求职者一般至少要接受两轮电话面试。不过,公司所在地的求职者可以少一轮。电话面试主要涉及技术问题,求职者通常要用Etherpad或其他共享文档工具写些代码。

② Facebook总部位于美国加利福尼亚州的门罗帕克市,地址为黑客路1号(1 Hacker Way)。——译者注

如果你还在上学,在学校接受面试,那你还要写代码。面试官会要求你在白板或白纸上写代码。

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

现场面试的每个面试官都各有侧重,以确保大家不会重复提问,并全面考察求职者的能力水平。面试问题主要分为算法、编程水平、软件架构/设计能力等几大块,同时,面试官也会考察你能否适应Facebook快节奏的开发环境。

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

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

Facebook很看重“忍术”(灵活应变)——也就是使用任何语言快速构建优雅、可扩展解决方案的能力。懂PHP并不会显得特别突出,因为Facebook也有很多后台工作要用到C++、Python、Erlang和其他语言。

必要准备事项:

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

独特之处:

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

雅虎面试

雅虎往往只招美国排名前20的高校毕业生,不过其他求职者仍可通过雅虎公开招聘渠道(或者,可以内部推荐的话就更好了)得到面试机会。取得面试资格后,你会先接受一轮电话面试。对你进行电话面试的一般是资深员工,比如技术主管或经理。

在现场面试中,一般由来自同一团队的六七个人来面试你,每轮面试时长45分钟。每个面试官都会侧重不同的领域。比如,有的面试官可能侧重于数据库知识,而有的面试官则会关注你对计算机体系结构的理解。每轮面试的时间安排大致如下。

  • 开头5分钟:一般对话。比如,自我介绍,聊聊项目经历等。
  • 中间20分钟:编程问题。比如,实现归并排序。
  • 最后20分钟:系统设计问题。比如,设计一个大型分布式缓存系统。这些问题往往与你以往的项目经历或面试官当前在做的工作有关。

当天面试结束后,你可能还会跟项目经理或其他人面谈一次。内容包括产品展示、你对雅虎的疑虑以及你手上有无其他公司的录用通知,等等。这次面谈旨在增进双方了解,通常不会影响你的面试结果。

与此同时,之前的面试官会讨论你的表现并尝试作出结论。最终录用与否由招聘经理决定,他会综合考虑面试官对你的正面及负面评价。

如果你的表现不错,有可能当天就会收到口头录用通知,但也不一定。也许他们要过几天才通知你,个中原因不一,比如,你应聘的团队可能还想再面试几个人看看。

必要准备事项:

雅虎面试少不了系统设计问题,几乎成了惯例,所以,还请做好相应的准备。他们想要确认你不仅会写代码,而且还能设计软件。要是没有这方面的知识,也不要紧,你仍然可以给出自己的设计思路。

独特之处:

雅虎的电话面试一般由拥有决定权的人负责,比如招聘经理。此外,雅虎往往会在当天给出面试结果(如果你能入他们法眼),这一点很特别。在你进行最后一轮面试的同时,其他面试官也正在讨论你的表现。

 

本文摘自即将上市的《程序员面试金典》