FAANG 高级工程师面试终极指南(三)

  编者按:关于 FAANG 面试流程的指南有千千万。但这是最彻底、最详细的一份指南,因为这是面试官为面试者制作的唯一一份 —— 编撰者花了数百个小时,与数十位现任及前任 FAANG 面试官讨论了他们的面试流程。在本指南中,你会看到对这些面试官的大量直接引用,他们用自己的话描述了每家公司流程和标准的特质,这些第一手的资料是特别有价值的。文章来自编译,篇幅关系我们分七部分刊出,此为第三部分。

  

  亚马逊的面试流程包括以下步骤:

  招聘人员电话面试或在线评估

  技术电话面试(如果没有进行过在线评估的话)

  现场面试

  在我们详细介绍每个步骤之前,这里有一些关于亚马逊流程、评估标准和面试官的一般说明。

  所有的人类组织都以某种隐喻在运作着。亚马逊不是一支运动队,也不是一个家庭;他们是一群形形色色的终结者。他们属于不同的品种。他们奖励侵略行为。他们想要接管市场(或世界,取决于你问的是谁)。

  亚马逊的流程不是集中化的,你可以同时接受多支团队的面试。为了增加你的胜算,你可以接受尽可能多的团队的面试。

  亚马逊非常喜欢他们的领导力原则(LP)。亚马逊面试官可能会在任何地方询问你领导力问题:编码面试、系统设计面试、所有轮次的面试都有可能。简而言之,在亚马逊面试时,随时随地都要为领导里原则问题做好准备。

  最后,亚马逊的面试文化更加结构化。在FAANG公司当中,只有亚马逊有正式的、分层级的面试官体系,亚马逊公开鼓励和奖励达到该体系最高层级的面试官。

  你的第1步是接受在线评估还是接受亚马逊招聘人员电话面试要取决于以下几个因素:

  你是中高级工程师吗?

  你以前参加过亚马逊的面试吗?

  你以前曾在 FAANG 工作过吗?

  如果你对这些问题中的任何一个的回答是“是”的话,那你可能就不需要进行在线评估,你的第1步将是招聘人员电话面试。尽管如此,我们从亚马逊的人那里收到了一些相互矛盾的报告,说亚马逊最近可能也要开始对更多高级工程师应用在线评估了。

  如果你要接受在线评估,这个过程大概是这样的。这是一次定时、异步的测试,由多个编码问题组成,测试通过 HackerRank 进行。问题通常是从简单到中等难度不等的数据结构和算法问题。如果你在线评估表现良好,则可以跳过第2步,也就是技术电话面试。

  如果你最终跳过了在线评估,流程的第1步就是招聘人员电话面试。相关情况请参阅第一部分的“有关招聘人员电话面试的说明”。

  亚马逊的技术电话面试是一种编码面试,往往只关注数据结构和算法。尽管注重速度,但 Amazon 面试问题可能需要大量代码,并且允许的时间通常为 30-40 分钟,这意味着你通常会得到一个问题,而 Facebook 则可能会得到多个问题。

  亚马逊用名为 Livecode 的内部工具进行技术电话面试,这款工具具备流行语言的语法突显功能,但不具备运行代码的能力。事实上,亚马逊技术面试的任何代码都不会进行编译或运行。

  面试官有 50% 的可能性会在电话面试的时候抛出 1 到 2 个领导力原则问题。不能保证一定会出现此类问题,但在现场面试肯定有这样的问题。

  虽然存在部分差异,但典型的亚马逊现场面试或面对面面试将包括:

  至少一轮行为面试(这不包括其他面试中出现的各种领导力原则问题)

  三轮编码面试

  一轮系统设计面试

  一轮招聘经理面试

  亚马逊有一种特殊类型的面试官,现场面试环节会出现这类面试官:也就是Bar Raiser。Bar Raiser通常是亚马逊的高级员工,处在亚马逊正式的面试官体系的顶层,他们是亚马逊最严厉、最训练有素的面试官。作为独立、客观的评估者,他们将确保招聘决策避免只受用人团队或部门的影响。

  来自亚马逊 Bar Raiser 的提示

  “成为 Bar Raiser 会对你的升职材料(promotion packet)产生影响。亚马逊鼓励每位即将晋升的 L5 接受 Bar Raiser 培训。升到 L6 或 L7 需要很大的投入。升职材料的其中一部分是:你如何展示某些领导力原则。而“雇用和培养最好的人”就是其中之一。要想成为一名 Bar Raiser 需要做很多招聘方面的工作:你必须进行大量的培训,去做大量的面试。如果你想升职,在亚马逊成为一名 Bar Raiser 的重要性不言而喻。”

  在亚马逊,Bar Raisers以及招聘经理是唯一拥有否决招聘决定这一正式权力的面试官。其实你可以认出他们,因为在现场面试环节当中,这些人是唯一与正在面试你的团队无关的面试官。 Bar Raiser 参与的面试场面可能会非常激烈,但当你感觉到 Bar Raiser向你开火时,请不要退缩;去拥抱炮火吧。

  作为一名接受亚马逊面试的软件工程师,你将面临三种主要类型的面试。分别是是编码面试、行为面试以及系统设计面试。

  你必须在电话面试以及现场面试过程中接受编码面试。现场编码轮次与技术电话面试轮次其实非常相似,不同之处在于,在技术电话面试过程中你可能会遇到领导力原则问题,而在现场面试的编码环节,你肯定会被问到领导力原则问题。

  亚马逊主要询问LeetCode 风格中等难度的编码问题,一般会避免提出困难问题。其想法是让应聘者展示自己如何快速获得最佳结果的能力,这一切都是为了招聘能够快速开发新功能的工程师。

  尽管注重速度,但亚马逊的问题也可能需要大量代码,答题时长通常为 30-40 分钟,这意味着你一般会得到一个问题,而 Facebook 则可能会问你多个问题。

  亚马逊的编码轮次主要测试以下技术技能:

  计算机科学基础以及数据结构、算法知识

  编写逻辑性强、可维护性强的代码的能力。这些轮次需要编写一些类并实现部分功能,比方说“实现文件系统的某些常用功能”

  尽管你在技术面试当中的表现很重要(如果你在技术面试轮次失败,一般都没法进入下一轮面试了),但其实并没有行为面试的结果那么重要,而亚马逊现场编码面试其实主要看重的是领导力原则问题。

  亚马逊面试官的提示

  “因为代码不能在编辑器上运行,所以方法、速度和测试是最重要的。代码语法、拼写错误、变量命名以及边缘情况则不太重要。”

  图方面的问题是亚马逊最常见的问题类型之一,还有需要用到 BFS (广度优先搜索算法)或 DFS (深度优先搜索算法)的树问题。 LRU 缓存、会议室、分词、单词搜索、单词阶梯等经典问题也可能会出现。

  我们从亚马逊面试官那里听说,亚马逊官方题库中的所有数据结构和算法题实际上都在 LeetCode 上。也就是说,亚马逊面试官可以在编码轮中问他们想要问的任何问题,有些人会偏离题库,提出更实际的问题,例如“借助这两个 API 实现具有某些行为的函数……”

  最后,像 Facebook 一样,亚马逊也会避免动态规划的编程问题(不过并没有彻底禁止提出此类问题)。

  行为面试与现场编码面试一样,是获得offer最重要的面试之一。

  来自亚马逊 Bar Raiser 的提示

  “我在亚马逊做过一百多次面试。如果某人在技术面试当中处于差不多能过的状态的话,那么行为面试很可能会让他们过。但反过来则不一样:如果他们达不到行为标准,我们不在乎他们在技术方面的表现如何,反正不会雇用他们。”

  行为面试是亚马逊面试过程中极其重要的一环——亚马逊更有可能仅仅根据行为给应聘者降级或拒绝掉对方——而他们的行为面试可能是所有大型科技公司当中考虑得最周详的一个。如果你没有专门为此做好准备,这个环节也可能是最容易失败的一个。亚马逊行为面试官的风格是最独特的;如果你以前从未遇到过这种面试,并且也没有预料到会有这种面试,你可能会不知所措。

  应聘者最常犯的错误之一就是没有认真对待行为面试,因为对于大多数其他公司来说,行为面试往往只是表面文章而已,不属于面试过程当中的重要部分。最重要的是,如果你想在亚马逊找到一份高级或以上级别的工作,就必须认真做好行为面试问题的准备。

  摆脱困境的秘诀

  不是所有的领导力原则都是一样的。客户至上是??,是统治一切的领导力原则。如果你对问题不确定,直接表现出你支持客户至上。如果对方提出了一个你意想不到的问题,请给出一个答案,表明你会坚定致力于打造客户喜爱的产品。

  亚马逊 Bar Raiser 的提示

  “如果你在领导力原则面试轮次表现很糟糕,或者在面试汇报中领导力原则表现存在问题,那么结论几乎都是‘不聘用’。但是,如果你回答领导力原则问题很优秀,那我们会继续讨论一下,看看就算应聘者技术面试轮次不达标准,是不是也可以雇用。但反过来就不行。如果领导力原则问题出现‘达到标准’或‘低于标准’的情况,那你就失败了。”

  来自亚马逊 Bar Raiser 的提示

  “如果应聘者在技术面试轮次表现不佳,但在领导力问题上表现出色,那么还是有可能获得留用的,因为他们很适合亚马逊,但不适合这支团队。所以有时候我们会帮助他们去其他团队面试,他们不需要再进行完整的现场面试:只需要再做1-2个轮次作为后续即可。但如果他们在领导力问题上的表现低于标准,那就是不适合亚马逊,亚马逊也不会帮忙将他们安排供给其他团队,进行时间较短的现场面试。”

  在这一轮当中,预计会出现以下所有 5 种类别的问题:

  技术问题解决

  学习(及失败)

  (替企业)完成工作情况

  人际冲突

  模糊性

  在亚马逊这里,系统设计和编码并不是最重要的——当然,这些面试你还是得过,但如果这些方面的面试你的表现处在临界点的话,你在行为领导令原则问题上表现出色就可以带你冲过终点线。事实上,面试官可能会在系统设计面试当中问你 1-2 个领导力原则问题。在系统设计轮次中回答领导力原则问题时要尽量高效。领导力原则会先问。尽早答完这些问题,以便你有更多时间去解决技术问题。

  亚马逊面试官的提示

  “在很多汇报当中,我都听到招聘经理这么讲,我们可以延长这份 L5 聘用合同,但要明白,系统设计不是他的强项,不过还是可以指导提高的。到了L6这个级别,对系统设计的标准要求就很高了,已经跟Facebook或谷歌差不多了。”

  摆脱困境的秘诀

  如果你在亚马逊进入到系统设计面试环节,但是又不知道该说些什么,那就讨论一下性能。他们希望亚马逊成为AWS的第一大客户。他们喜欢寻找了解并热衷于对云性能进行微调的工程师。

  亚马逊更有可能问你实用的系统设计问题。例如,如果你正在面试控制亚马逊库存管理的团队,他们可能会要求你设计库存管理系统的一部分。

  其他常见的系统设计问题包括:

  设计自动补全

  设计文件上传/下载至云端

  设计搜索

  设计问题很可能是关于设计众所周知的功能,而不是像设计 Facebook 或 Twitter 这样从头开始的完整系统。

  亚马逊面试官可以在系统设计中提出任何他们想要问的问题,但很多面试官会重复使用亚马逊题库中的问题。

  对于系统设计面试中的工具,候选人通常可以选择任何类型的绘图工具。 Excalidraw 最受欢迎,其次是 Miro。

  现场最重要的两位面试官是 Bar Raiser 和招聘经理。在亚马逊,所有其他面试官都可以投票决定是否录用,但如果提标者或招聘经理没有参与,那么该候选人可能会被拒绝。

  摆脱困境的秘诀

  去亚马逊面试的时候,要认出Bar Raiser(唯一一个工作与你正在面试的团队无关的人)和招聘经理(如果你不知道是谁,请面试前问招聘人员,或者在现场面试时问面试官)是谁。你的大部分精力应该花在给这两个人留下深刻印象上——因为亚马逊非常倚重现场讨论来做出招聘决定,所以印象管理在亚马逊这里更有影响力。

  亚马逊的决策流程在科技圈是设计得比较完善的:开始现场面试前团队一般会先开沟通会(pre-brief),提交异步反馈,并进行汇报(现场面试之后召开的现场会议)。他们严重依赖于现场讨论来做出决定。值得注意的是,尽管部分面试官可能会讲述过普通面试官与 Bar Raiser 发生争执的情况,但大多数时候面试官都会同意 Bar Raiser 的说法。

  亚马逊面试官的打分分为 5 级:强烈推荐、推荐、中立、不推荐、强烈不推荐。

  举报/反馈