在这篇文章中,我将分享我是怎么动力满满地在一个月内参加 60 多场面试的。更重要的是,我将分享从成功和失败中吸取的经验教训。

我将文章分成三个部分,对应典型招聘流程的不同阶段。

本文的大多数经验值得软件工程师和专业技术从业者借鉴,同时,这些经验背后的原理适用于所有的职业。我希望你能从中找到一些对你职业生涯有帮助的东西。

我是怎么开始的

跟别的软件工程师一样,我经历了许多不同类型的技术面试 —— 从可怕的白板面试到在类似 HackerRank 等平台上的 45 分钟虚拟编码挑战。其中一些面试我的感觉很好,有一些我却感觉非常糟糕。

但是我想要变得非常善于面试。我想要克服面试恐惧症,在面试中表现自信。就像一个冲浪老手一样,我想要学习如何在波涛汹涌的面试高压浪潮中乘风破浪,同时我也想换一份工作。

所以,从 2020 年的 1 月份到 3 月初,我申请了在美国和欧洲的公司(并且获得面试机会),包括:早期初创公司(如 Coda),创业后期的公司(如 Crunchbase),中型公司(如 Affirm),超大型公司(如 Amazon),甚至是允许员工远程办公的公司(如 Webflow)。

在投递超过 109 份面试申请后,我获得了 60 多场面试机会,其中包括 60 多场电话面试,50 多场视频技术面试,18 个可以线下在家写的代码项目,11 个在线编码挑战,以及 8 场现场面试(其中包括 3 场虚拟现场面试)。

我学到了什么

为了便于大家阅读,我将文章分成三个部分,对应典型招聘流程的不同阶段。

kevin-ku-w7ZyuGYNpRQ-unsplash

面试前

这部分涵盖了从和一家公司首次建立联系到得到第一次面试邀请的所有内容。

我从面试申请中学到了什么

当我开始向公司发送面试申请时,我以为发送的申请越多,获得面试机会的可能性就越高。看上去很合理,对吧?所以我设定了每天发送 5 份简历的计划,希望每 5 份申请可以带给我 1 个面试机会。

但是计划没有如我所愿。面试邀请的数量经常达不到我的目标。这个比例大概是 1:12 —— 每发送 12 份申请,获得 1 个面试机会。

我面临的问题是:我应该增加每天投递简历的数量吗,比如每天 10 家公司?或者有什么其他方面是我需要改变的?

随着申请失败的次数增加,我发现有些东西需要改变。

我抽出一天暂停投递简历,并且重新思考我简历投递的方式,然后意识到需要改变。我开始将每份简历看成是向招聘经理(或者任何将要阅读我简历的人)的推销,而现在出售的商品是我自己。

如果一家公司需要填补人才缺口,而我说我有这个能力,那么我需要找到一个方法让 TA 们相信我所说的。

我给自己一个新的任务,那就是找到一个能有效地推销我的独特能力、经验和性格的方法,让招聘经理相信我是这份工作的合适人选。

这里是我推销自己的一个例子:

image-7

在我的简历的加持下,这份求职信帮助我获得面试机会的成功率达到 95%。其中有一次不成功,但是招聘经理仍然回复我说那个岗位已经停止招聘了,但是他也很愿意和我继续保持联系。

这里的经验是,你需要非常注意简历的内容 —— 质量比数量更重要。当然能兼顾两者就更好了。了解你自己的特有的经验和能力,以一种符合公司要求的方式表现出来,且不失个性。

了解你投递公司的背景和特殊需要同样也很重要。一家初创公司或者中小型公司可能与大公司的需求不同,因此需要一份不同的技能清单。

推销你自己,并确保有实质的内容能在面试中支撑你的推销。

我通过邮件对招聘人员了解更多

在此期间,我收到了一堆来自招聘人员的邮件(大部分是不相关的),其中大部分职位是我不感兴趣的。

阅读这些邮件花了我不少时间,但是我学着具有同理心,去理解这些招聘人员只是在完成 TA 们的本职工作。

我不再将这些邮件视为噪音,并开始努力回复这些招聘者,甚至回复那些我不感兴趣的岗位的相关邮件。这样一来,我成功地与这些招聘者建立了联系。如果将来我需要转行,这将为我提供丰富的资源。

你可能不会回复每一封你收到的邮件。但是,你可能会觉得有意思的是,我上面说的其中一些面试机会是通过回复一些不相关的邮件而获得的。回复邮件并没什么坏处。

azharul-islam-9LMGWHqUwnc-unsplash--1-

面试阶段

这部分包含面试过程中的所有内容,我把它们分为几种不同的面试类型。

电话面试

是的,我知道,你很忙,你需要处理许多事情。但是,你同样是一个专业人士,因此当你接到电话前,你至少需要知道两件事:

  • 面试官姓什么,怎么称呼
  • 至少一件关于公司的事情 —— 公司是做什么的,地址在哪,关于公司的新闻,或者其他和公司相关的事

我注意到,当我向面试中询问这些事情时,给人的感觉是我真的对那家公司感兴趣。招聘人员通常会在面试中关注这一点。

视频技术面试

是否能够清晰表达自己的想法,基本上就决定了你在视频技术面试中表现得怎样。

你之前可能听过这个说法:

面试官关心的是你的思考过程。是的,TA 们能看到你的代码,但是更重要的是 TA 们想要知道你为什么这样写代码。

面试官不在你旁边,所以 TA 们看不到你的非语言提示,例如手势或者其他细微动作。面试官能了解到的只有你用来表达思维的声音。

现在你知道了如何进行这次对话,接下来的问题是怎么熟练应对?实际上,虽然表达自己的想法对某些人来说是很自然的事情,但对其他人来说却不然,比如我。

所以 —— 练习!练习!练习!

多练习模拟面试。我跟朋友进行模拟面试练习,使自己在表达观点的时候更加自信。更有趣的是,这也帮助我建立了一个新的面试思维。

我开始将面试看成是一场与朋友或者团队成员间的对话,将面试官看成是我的朋友(我有时候在心里会给面试官取个名字)。因此,原本是一场超高压力的面试,我现在会把它看做是一次关于技术的友善的“聊天”。

基于这个新的理念,在很多场模拟面试之后,我树立了极大的信心,开始享受面试,不好意思,我是说技术聊天。

如何开始处理一个问题

绝对不要在没有了解清楚问题说明的情况下,就开始解决它。如果你先向面试官询问清楚问题是什么意思,那么你的答案也基本不会错。你通过提问来明确问题而不是自己在那儿猜测,也能让面试官对你留有好印象。

如何解决问题

好的候选人知道如何解决问题(例如一个排序问题),但是优秀的候选人知道一个问题的多种解决方案,并且能权衡每种方案的利弊。

我表现最好的一场面试(思如泉涌)是我不但解决了逻辑问题 —— 我还提供了替代方案,并且讨论了它们的利弊。

你的目标是提供多种解决方案,愿意讨论它们之间的区别,并且能够至少实现其中一种方案。

对于技术面试,你需要编写简洁的代码。很多面试官都关心你的代码质量和解决方案的正确性。你的目标是——编写模块化代码,拆分可复用的逻辑单元为一个个方法,正确的变量和方法名——就像老板管理公司一样管理你的代码!

当你被问题困住时怎么办

有时候你会卡在一个问题上,原因有很多:你没有相应的知识,做了错误的假设,缺少细节,等等。

我曾经认为,在这种情况下,考验我能力的标准是我处理问题有多快,所以我会安静地思考,不和面试官交流,只是自己思考。

这就是我们很多人误解的地方。我知道,你需要一段单独思考的时间,但是,很抱歉地告诉你——在面试时最好不要单独思考。

是的,你的面试官希望看到你想出解决方案,但是有一件事你不能忘记—— TA 们也希望看到你能够与团队同事协作讨论出解决方案。虽然公司希望有大牛,但 TA 们也想要团队合作。

你的面试官就是你的朋友、伙伴、你的团队成员。所以,在处理问题时,你可以大胆和 TA 们交流。

在遇到困难时,自信地分享你的思考过程,而不是那种嚷着要人帮忙。通过这样的方式,你可能找到解决方案。我在面试 Coda 时就是这样做的。

如何应对编码挑战

这部分内容适用于在像 Hackerrank,Codility 等平台上进行编码挑战形式的面试。通常这些是定时挑战,比如 45 分钟或者更长的时间。

我之前分享的一些内容在这里很有用,但是其他的诸如“明确问题的意思”等在这里并不适用,因为这个时候没有你能问的人。所以我建议你采用这些步骤:

  1. 通读并明确问题
  2. 先编写能运行的代码,即便是暴力匹配算法,它可能不会跑通所有的测试用例,但是首先要有能够运行的代码,理想的情况是在 15-20 分钟内编写出来
  3. 通过输入不同的用例测试你的代码,因为这有助于你处理边界情况
  4. 优化执行效率
  5. 重复步骤 4 和 5,直到最后一分钟

这里的关键是掌握良好的计算机基础知识。我在文末添加了一些相关的资料。

如何应对线下编写代码的面试题

带回家写的项目是一个能展示你的亮点的机会,因为你有更多的时间。这同样意味着这种面试可能会比较花时间。

我面试的其中一家公司是按时薪(大概每小时 68 美元)支付给员工,然后员工在家里写代码—— TA 们很认真地对待这个项目,所以你也应该认真对待。在你开始花时间写项目前,请想清楚你是否真的想成为这家公司的一员。

不要在带回家的项目中牺牲代码质量。对你的整体框架设计,命名约定,代码结构等要非常用心,并且准备坚持自己的选择。

你应该使用哪些技术

在面试 Coures Hero 时,我使用了正则表达式解决问题,我本可以使用相对简单的字符串解析法。事实证明这是一个错误的决定,结果我没有通过面试。

教训:只用你用起来非常熟悉的且有很多相关经验的技术。

现场面试

前一晚睡个好觉,面试的那天早点到,多微笑(这有助于提升自信,但是更重要的是能够帮助你保持轻松的状态并控制自己)。

直面你的恐惧,明白即使不能解决问题,也不会是世界末日——毕竟你只是进行了一场技术交流——然后沉浸到纯粹的交谈中。

如何进行虚拟现场面试

这可能会和直接的线下面试有很大的不同,因为所有人的眼睛都看着你,并且会令人不安。

我经历过 3 次虚拟现场面试,而且没有通过任意一场。抱歉,我不是你要寻找的那个对虚拟现场面试很在行的人,但是我在文末分享了一些可能对你有帮助的资源。

essentialiving-yvG7vDXCzDE-unsplash

面试后

如何面对失败

有很多原因导致你没有通过面试。有些我知道的最好的工程师在某些时候也没有通过面试,而且现在依然如此。

所以,忘掉那些失败的面试,从每次失败的面试中吸取经验,并利用这些让自己进步。就像有些人说的——我们继续前进!

那么如何面对成功呢

庆祝你的成功,无论是你认为它是多么小的成功。我有一些庆祝的点子。

做了这些之后,我会变得更好吗

我不是要告诉你,我顺利通过了每次面试。但是可以肯定的是,我在每场面试之后都变得更擅长面试,而且我的自信心也真的提升了。是的,我也同时获得了很多入职邀请。

接下来做什么

  • 和朋友反复练习模拟面试。练习能够帮助你快速地辨识出面试问题的模式,熟练掌握,最终帮助你树立自信。
  • 对于技术面试,熟练掌握数据结构和算法能够打败一切。我在文末分享了一些可能对你有帮助的资源。
  • 开始面试,并持续面试,即使你有一份工作,也要不停的面试——可能每个月一次或者每个季度一次面试。面试是一种技巧,所以要不断磨练。

我真心希望这篇文章对你有所帮助,希望这里分享的一些经验教训将有助于你在面试时更加自信,面试表现更好——最终将帮助你找到心仪的工作。

如果你需要一个人来和你进行模拟面试,可以随时通过 Twitter@meekg33k 联系我。

后会有期!

有用的资源

原文:What I Learned from Doing 60+ Technical Interviews in 30 Days,作者:Uduak Obong-Eren