You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
7.6 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 19 | 硅谷面试:那些你应该知道的事儿
一天,一位朋友偶然问我:“听说 Airbnb 的面试一共有七八轮,这是不是真的?”
我回答这是真的,而且告诉他在北京的招人流程也基本是一样的。朋友却觉得没有必要,认为一轮就能面出应试者的水平,弄那么复杂的面试是在浪费工程师的时间。
对于他的看法,我不完全赞同,也不完全反对。其实硅谷的公司大部分都会有多轮的面试,这主要包括了算法编程、系统设计、工作经验等。
**首先,我就来说一说,为什么要有那么多轮的面试。**
算法编程主要考察编程的硬功夫。现在很多公司都要求现场上机,程序能运行,测试例能通过;还有一些公司使用白板考算法,于是才有了 Homebrew 的作者马克斯·霍威尔( Max Howell )去 Google 面试时无法在白板上翻转二叉树的故事。
系统设计主要是给候选人一个系统设计的场景,根据自己的能力和经验去架构整个系统。系统设计面试通常没有唯一解,侧重的是候选人对不同架构和解决方案的熟悉程度,对方案的优缺点的深入了解。
工作经验面试主要是与候选人聊他做过的项目,深入了解和挖掘候选人的技能树。类似 Airbnb 这样的公司还会有关于价值观和团队协作能力的测试。
这样看来,一轮面试是远远不够的,因为有很多工程师程序写得又快又好,但是在系统设计方面会表现的很差,对一些基本的设计理念和方法知之甚少。
还有一些人,具备基本的系统知识,但想问题不全面,不能自己考虑各种场景的设计需求和异常处理,需要提示才能发现系统的漏洞。
又或者有的人沟通能力很差无法准确地表述出问题和答案如果是平时的工作交流沟通能力欠缺会给团队合作带来很大的阻力。当然也有一些人恰恰相反谈起设计和理论来头头是道口若悬河但是一写代码几乎步步维艰。出了错也不知道如何有效地调试Debug
也有人说,可以知人善任。特别能写程序的,就让他多写代码,特别能说的,就让他负责沟通相关的工作,这样不就皆大欢喜了吗。
其实,这样做是行不通的。一来,硅谷优秀的工程师大部分能够独当一面,他们能把工作做好,确实需要用到方方面面的技能,这也是效绩评估中考察工程师的基本要求;二来,好的公司和岗位根本不愁招不到人。你说自己代码写得特别好,但还会有很多写代码能力跟你不相上下,但是系统设计比你牛很多,所以你被拒的可能性还是很大。
**写到这估计还会有人有疑问:即使这样,那一轮代码面试,一轮设计面试也够了啊,为什么每项需要两轮甚至三轮面试呢?**
我的经验是:因为不同题目考察的知识点和解决问题能力的侧重点不同,两轮可以更全面地进行评估;更重要的是,面试官也是人,难免有一些主观看法,进行两轮面试,两个人的反馈意见就可以相互有个参考,比如应试者是不是两轮都出现同样的问题或者失误,对同一领域的不同问题是不是都有正确的见解等。
有的时候,两轮面试官意见相悖,加试一轮的情况也并不少见。此外,有的时候我们因为面试人手不足,也会不停地增加一些新的面试官。这些面试官经验不足,如果他们的反馈成为唯一依据,多少会产生一些冤案错案,进行交叉面试,可以尽可能避免这种情况的发生。
**再说说刷题的问题。**如果你觉得写程序手生,或者一些基本概念需要复习,刷题可能是有帮助的;但是大多数情况下,除非你是跨领域面试,否则每天的工作就是系统设计和讨论,编写代码,功底不至于完全丢下,如果纯粹靠刷题通过面试,后面工作可能还是会比较吃力。
当然,努力刷题对通过面试肯定是很有帮助的,毕竟大部分公司的题库都比较有限,有些题用了很多次被泄露出去,你来面试前做一遍肯定会占便宜。
说到了题库,我有一点对应试者的小建议。很多应试者在面试结束后,喜欢在网上分享题目。抛开道德层面,这种行为确实是极其“大公无私”的;但如果你拿了 Offer 去泄题,后面不如你的人可能会成为你的同事;而如果你没拿到 Offer 去泄题,后面不如你的人可能因此拿到你想要却拿不到的 Offer。
除此之外,面试官并不像想象的那么好骗,应试者是不是见过题目,面试官其实很容易看出来。有时候我们在反馈面试意见的时候,如果觉得有些题你之前做过但是没说,也会如实反馈。这种意见很可能会影响你能不能拿到 Offer。另外即使是同样的题是不是真的懂有经验的面试官也很容易问出来。
**那么,作为应试者,面试官的经验会对你造成什么影响呢?**总的说来,越是经验不足的面试官,他可能更容易把思路局限在一个自己很熟的领域,如果你凑巧和他的思路一致,就有可能拿到很好的反馈。如果你提出了一个完全不同的解题思路,面试官反而不能十分理解,面试成绩上有偏差也是可能的。
面试中还有一个潜规则,就是很多题都有难度等级,也就是分梯度的。你解出了第一部分,才会看到第二部分的问题,答出了第二部分,才有机会看到第三部分。
如果一开始你就比较慢,或者解题比较挣扎,可能面试官就会直接放弃你,虽然他在当时没有明确拒绝,但心中已经给了你 NO所以剩下的时间即使你觉得自己把第一部分答得很完美了然而真相是你根本不知道还有二和三也就不知道为什么觉得自己把题解出来了最后却拿不到 Offer。
**最后说说怎么才能拿到面试机会。**
很多人会觉得找人内推拿到面试的机会一定更大,其实并不是这样。别的公司不好说,但是像很多比较热门的科技公司,员工都会收到很多并不熟悉的人的内推请求。比如我自己,平均一周要内推两到三个人。
公司知道这种情况很多所以内推系统都会设计一个选项“你是否和被推荐者共事过”如果是你能不能替他的能力担保如果没有工作交集或不能担保即使内推了你的简历也会得到和普通简历一样的待遇唯一的优势可能是简历不会丢处理速度稍微快一点而已。HR 筛选简历的所有条件,并不会因为内推而降低标准。
所以平时具备扎实的基本功和出色的业绩,简历上有闪光点,才是拿到面试机会的关键。真的找人推荐,最好找那些共事过的能为你能力背书的人。
今天,我和你聊了聊硅谷面试的那些事儿,比如硅谷为什么会有那么多轮的面试,面试前要不要刷题,面试过程中与面试官的交流,面试题的难度分级和内推的作用。如何拿到一个面试机会并通过面试呢?其实没什么捷径,好的工作经历、扎实的基本功和一份特点突出的简历,就是工程师成功通过面试的金钥匙。
你有什么有趣的面试故事,也在留言中说说,我们一起分享。我们下次再见。
[戳此获取你的专属海报](https://time.geekbang.org/activity/sale-poster?utm_source=app&utm_medium=zhuyun-article&utm_campaign=zhuyun-saleposter&utm_content=zhuyun0416)