我曾写了篇关于我很享受 Spotify 面试的文章,现在我经常收到来自陌生人的友好电子邮件,咨询如何为即将到来的软件工程师面试做准备。我想更多地公开分享我的想法 - 尽管它们并不是专门针对 Spotify,而是适用于任何更大的科技公司。

如果你有一份你即将到来的梦想中的技术公司的面试,这可能为时已晚,你无法从任何技巧中受益。你应该已经为旗开得胜准备好了。

如果你还有时间做准备,那么这里有几个建议。

放下对“白板面试”的负面看法

如果你对于白板面试是不屑的态度,这部分内容对你没有任何帮助。这篇文章也不是关于白板面试的。我知道业内对白板面试有一个误解,但请无视这些误解,把目光放在你梦想公司的回报上。如果认可全部关于“白板面试滚出面试界”的观点,那么你会错过加入那些有比你优秀的队友的伟大公司。

我们应该学会接受现实,停止抱怨,并为获得想要的职位做一些真正的准备。要知道,你正在与数千名其他候选人在竞争,他们渴望在该公司工作并会为实现这个目标来做任何的准备。这有点像大学的入学考试。

最后才去参加梦想的公司的面试

不要犯这样的错误:让你梦想中的公司成为你第一个接受面试的公司。因为你会表现得非常紧张和缺乏实践,并因此而错失良机。

甚至在你申请之前(或者如果你可以在一个月之内推迟面试),请在你感兴趣的其他公司进行面试,但是应选择那些即使他们拒绝你,你也不会崩溃的公司。假装热情这很难做到,至少对我来说是这样,但为了获得锻炼的机会,请尽力去获得至少一次电话/视频面试的机会。如果你能说服他们给你一次现场面试的机会就更好了。现场面试和竞赛一样,会有真实的压力,也有真实的人在评判你,并且有真正面试级别难度的编程难题让你解决。

这可能也适用于运动竞技,但如果你想赢得冠军赛,你就不能在锦标赛的压力下屈服。 你必须有足够的实践和自信,知道自己可以取得胜利。

最后去你梦想中的公司参加面试时应有的状态 —— 不再紧张,当你有几次“磨炼”(经历过大型科技公司的全天候面试循环)时;很高兴面试官抛给你的问题(因为这是一个改进的机会),了解自己(解决问题的方法、自己的极限、不良的习惯以及优势)。

你要把面试管带进自己的节奏中,做到自信、优雅,并给面试官眼前一亮的感觉。

和朋友进行模拟面试

这更像是季后赛,而不是锦标赛:虽然离决赛还有一段时间,但依然感觉得到压力。

与你的朋友进行面试让你的能力被判断出来。你会想在盆友面前表现一番,而不是看起来一无是处。你会想要继续提升自己的技能,好让自己能够解决国外的编程问题,这能让你拥有不同的风格和经历来应对编程面试。面试官风格的变化将帮你了解在各种听众前的表现。

面试是一门表演艺术 - 就像在舞台上演奏乐器一样。

如果你像我一样,不想“劳烦”你的程序员朋友来模拟面试,但总有一天他们也会因为相同的原因来劳烦你的。其实他们也能从模拟面试官的角色中获益,这是通过在他人的人生路途中伸出援手的另一种艺术形式。

在家练习

你需要鉴定你的技能,这是对你进行提升的关键途径。你需要补齐你的知识短板。

是否对二叉树不熟悉(因为你很少使用到它)?那就把二叉树与你工作中的问题结合起来,把它放到你的工具箱中协作你工作,不用完全理解二叉树的含义或其中一个特殊的算法,补齐短板,把那些问题熟悉一下。不要去浪费时间,事情的本质不会发生改变,但是你要结合其他东西,用不同的视角来看问题。

你在家做的练习越多(在你绊倒的地方和在你做得好的地方多进行思考以及自我反省),你就越有勇气面对面试过程中遇到的问题。

除此之外,你真的很难获取某种特定的权利在空余的时间来做这个准备工作。不过,我还是希望我们能找到更好的途径。

专注于语言,而不是框架

你需要能够根据编程语言来思考。如果你不记得标准库的某一部分,可以使用帮助方法,但你不应该在面试当天想着用语言表达你的想法。你不要思考编程语言,也不要顾虑自己的肢体语言,也不要想数据结构是如何工作的。在实践层面上,你需要做的只是思考既定问题,了解它的限制,并最终提出解决方案。

我也看到很多程序员,数年的职业生涯都用来从事更高层次的抽象工作(如,框架、库、针对特定项目的抽象机制),而从不花时间去探索和理解人们最熟悉的语言的表层领域。如果你认为通过学习最热门的新框架就能提升技能,那你的面试可能会失败。

将面试推迟,花时间研究你用的语言,并用这门语言解决更多问题,这样你将提高你成功的几率。

关注你的表现,而不是过往经历

你的过往经历只能让你获得面试机会,但不足以让你获得工作。很多人觉得他们已经做了那么多惊人的事,一定不会被公司拒绝的。

从面试官的角度看,他们只看最终的结果,而不是你获得这个结果的过程。你是否每时每刻都在编码,并祈祷代码不要出问题(如有问题,就要一遍一遍的重写项目的某些部分)?你是否与其他人协作,但只做工作的一小部分?你是否还从互联网拷贝大量代码?你的日常工作是否基于任务繁重的项目?你在这些事之间做怎样的权衡,你意识到这些问题了吗?

你可以在提交记录中收集一些信息(假设信息一致),但面试官不会用一整天的时间和你交谈。

你需要花时间提升你的编程技能,否则就会面临面试失败的情况。

知道如何表述对公司仰慕的原因

如果你只是表现出找工作的欲望,你面试会失败。你需要对公司的某些方面或其产品充满热情。对该公司做功课,并能让面试官感受到你想要在那里工作的热情。

我认为求职信是一个很好的选择。

祝你好运

我希望以上提示对你有帮助。通常一家公司只有一次面试机会(或者每年一次)- 一定要在每次面试的时候展示你的优势和技能。

https://mp.weixin.qq.com/s/fR92bZw72eBMhl6pBL6mvQ