编者按:关于 FAANG 面试流程的指南有千千万。但这是最彻底、最详细的一份指南,因为这是面试官为面试者制作的唯一一份 —— 编撰者花了数百个小时,与数十位现任及前任 FAANG 面试官讨论了他们的面试流程。在本指南中,你会看到对这些面试官的大量直接引用,他们用自己的话描述了每家公司流程和标准的特质,这些第一手的资料是特别有价值的。文章来自编译,篇幅关系我们分七部分刊出,此为第七部分。
微软的面试流程和问题
微软的面试流程包括以下步骤:
招聘人员电话面试(以及首席工程师及以上级别的招聘经理电话)
技术电话面试或Codility测试
现场面试
团队匹配
在我们详细介绍每个步骤之前,以下是关于微软流程、评估标准与面试官的一般说明。
微软让你同时面试不同的团队——如果你想最大限度地增加同时采访其中几位的机会的话。
Microsoft 的流程主要(尽管不完全!)依赖于团队。这意味着,当你面试特定团队时,你不一定只面试该团队中的人员。例如,有时你可能会面试特定团队的招聘经理,而其他面试官将是来自其他团队的个人贡献者。
每个团队都运行自己的流程,每个团队的流程也可能有很大差异。有时,微软会在面试过程中引入类似团队匹配的活动:候选人可以在同一个循环中与多个招聘经理见面。另一种变化是,一些候选人的第一轮筛选是由招聘经理而不是招聘人员进行的。
第 1 步:招聘人员电话面试
请参阅第一部分的“有关招聘人员电话面试的说明”
第 2 步:技术面试(电话面试或Codility测验)
微软的技术电话面试是那种传统的LeetCode风格的编码面试,技术问题难度从简单到中等不等。公司并没有为面试官提供固定的评分标准。部分面试官接受过培训,部分没有接受过培训。在这一轮面试里,他们可以自由地问任何问题,并以他们想要的方式判断你的技术技能。
如果你最终接受的是异步的Codility测验,那就得登录上去并在短时间内回答几个算法问题。从某种程度来说,这比面试官对你进行技术电话面试还要困难些,因为如果你不能通过测试用例的话,就会被筛选掉。他们会根据几个因素来评判你,包括:测试用例、正确性以及代码质量。
第3步:现场面试
每个组织的现场面试形式可能各有不同,但通常会包括以的面试:
一轮行为面试问题
两轮或三轮编码面试
一轮系统设计面试
一轮领域相关面试
微软面试类型详解
编码
这是微软最重要的一轮面试。
微软面试官的提示
由于微软大多数工程师用的都是 C#,因此如果可以的话,你应该在技术面试轮次用 C#、Java 或 Python编码。这样的话,面试官可以更好地理解你的代码,甚至为你提供帮助都有可能。”
微软在编码面试轮次一般会问些中等难度、LeetCode风格的问题。面试官可以选择自己的编码问题,但根据面试官的说法,微软更喜欢以下主题(排名不分先后):
数组和字符串
链接列表
图和树
LeetCode 上面的微软热门问题也是一个有用的资源。
微软面试官的提示
“树的问题最受欢迎,比方说各种类型的树求和、特定顺序的树遍历、子树等。”
动态规划的编程问题过去基本上不会问,但现在更常见了。当你遇到动态规划问题时,一般都是些经典问题,比方说硬币找零、楼梯台阶、编辑距离以及各种类型的计数问题。
编码面试的工具由团队自行决定,但很多团队都用Codility 。
系统设计
系统设计与微软的第二轮最重要的面试轮次相关,有时候是由招聘经理进行的。 微软流程的一个独特之处是他们喜欢提出合规性相关主题的问题。
微软面试官的提示
“我当年去微软面试时是很简单的。在我当上微软面试官时,我试图加强一点难度。但后来我意识到,事情就得这样。技术性问题大概占其中的25%。这不是一次普通的 FAANG 面试。更多的是关于这三件事:a)“这位求职者对自己将要开发的系统了解有多少?”,b)“他们如何满足我们这支团队的确切需求?”,c)“他们了解我们重视的那些小事吗?比如合规性、操纵数据、数据管道、欧盟数据的处理等。”
微软面试官的提示
“ 微软非常注重合规细节。我认为我还没有见过像微软这样专为审计而设置的系统。公司就要求员工记录这么多。 Azure 内置了一个集中式的网格系统。所有得日志都会被路由到这个系统里面。这样一来,集中式的日志保存和审计就成为可能。这是我在其他地方没有见过的。”
除了与合规性相关的问题之外,以下是你可能遇到的其他系统设计问题的例子:
让我们回到过去,你会怎么将货物运送给客户?讨论涉及可用性、延迟、可靠性、通信等的方法。
假设我们对回文很感兴趣,并且每当我们想出一个回文时我们都希望持久地将其存储起来。请设计一个系统,每次有人想出一个回文时,你都可以输入这个回文,并让用户检查系统里面是否存在该回文。
假设你是一名教师,你想要测试学生能否正确认识国家/地区名称。你会获得国家/地区和图片的列表。请设计一个网页 + 后端 API,模拟一次评估学生知识掌握程度的测试(适合全栈角色)。
系统设计面试的工具由团队自行决定,但很多微软员工会用Codility Canvas 或Excalidraw 。
领域相关面试轮次
领域相关面试轮次并列为微软第二重要的面试轮次。与其他 FAANG 公司相比,微软更有可能执行此类面试,这种面试感觉跟系统设计类似,但涉及部分编码问题。
通常,领域相关轮次是根据给定团队所从事的领域定制的,提出的相关技术会比较深入。因此,不管面试你的团队从事的是哪个领域(云网络、大数据等),他们都会向你询问相关内容。
在某些情况下,微软会根据求职者的技能定制一轮面试。比方说,如果你是后端工程师,他们可能会要求你设计 API 或设计数据库。他们还可能会问你有关你最熟悉的编程语言一些开放式的琐细问题。
微软面试官的提示
“在这些面试轮次还有件事要注意,他们会要求你讨论你在工作当中解决的某个复杂问题。对于求职者来说,做好详细讨论 2-3 个项目的准备是有好处的:比如关于如何实现缓存、如何处理扩展问题等等。”
最后,对方可能还会问到一个与你的技能相称的情景问题。比方说,如果你是后端工程师,你可能会收到这样的问题:“想象一下你所在团队正在开发信用卡注册系统。会有不同的公司使用这套系统。你如何开发界面?”
行为面试
这是微软面试当中最不重要的一轮面试:最省力的通过方式是不要怪其他的团队成员,不要显示出危险信号,并保持积极的态度。
微软并没有要寻找的一组特质。可以预期会被问到的问题包括你的优点和缺点、失败经历、与同事的冲突、项目,以及你从过去的职业经历中学到的教训等常见问题。
微软面试官的提示
“很多人都在纠结‘你的两大优势和劣势是什么?’这种问题,可能是因为他们打算当场编答案。提前准备好典型行为问题的答案是有好处的。”
到最后,他们会筛选这三种软技能:积极性、主人翁精神以及沟通能力。他们希望雇用的人友善,能够完成工作而不怪罪于人。这里不是苹果或Netflix,这些公司希望找到具备特殊个性风格的人,或者要求面试官雇用他们想交朋友的求职者。这里比较中性。
行为回合有时候也可以有编码测试。如果出现这种情况,有可能是一个LeetCode风格的问题,简单/中等难度,时长为20 分钟左右。
微软是如何做出招聘决策的
由面试官对求职者进行评分,具体因团队而异。
一些组织是异步的反馈流程,其他一些组织则依赖实时讨论,还有一些组织两者都做。有些组织有评估标准,有些则没有。一个组织的评估标准大概是这样的:
初级:具有成长心态,寻求理解想法
高级:推动自我发展,以开放为榜样,可以接受失败,对不同的想法持开放态度
首席:不断挑战团队思维,让讨论富有成效
延伸阅读:
译者:boxi。