如果你的目标是成为一名软件工程师或数据科学家,技术面试通常是求职过程的一部分。最近,软件工程师兼技术作家UduakObong-Eren分享了他在30天内完成60多次技术面试后的经验教训。如果您是一名希望发展职业的软件工程师或技术专家,那么技术面试肯定会很困难,而且常常让人觉得很困难。因此,技术面试有时会让技术人员感到害怕,无论是在感觉上还是在其他方面。本文介绍作者软件工程师UduakObong-Eren在30天内完成60多次技术面试的经历,以及从这些成功和失败中吸取的教训。这些课程分为三类,对应于典型招聘流程的三个阶段。虽然这里的大部分课程直接针对软件工程师和技术专业人员,但它们背后的原则几乎适用于任何职业。希望你能从中找到对你的职业有用的东西。我是如何开始的?“如果你要失败,那就快点失败。”-匿名像其他软件工程师一样,我接受过许多不同类型的技术面试——从令人生畏的白板编程面试到非凡的面对面面试。Hackerrank平台上的45分钟编码挑战。虽然我有过一些很棒的面试经历,但我也有过一些糟糕的,甚至是非常糟糕的经历。但我希望在面试中表现得更好,甚至非常好。我想学习克服我的面试恐惧症并在面试中表现出自信。就像熟练的冲浪者一样,我希望能够驾驭面试带来的高压浪潮。那时候,我也一直想换工作。所以从2020年1月到2020年3月上旬,我向美国和欧洲的多家公司提出了申请,并得到了他们的回复。这包括从像Coda这样的早期初创公司到像Crunchbase这样的后期初创公司,从像Affirm这样的中型公司到像亚马逊这样的大型公司,甚至像Webflow这样的远程公司。在发出至少109份申请后,我收到了60多份面试邀请。总之,这包括60多次介绍性电话采访、50多次技术视频电话采访、18个家庭编码项目、11次编码挑战和8次现场采访(包括3次虚拟采访)。为了便于理解,我将吸取的教训分为三类,对应于典型招聘流程的三个阶段。面试前阶段这个阶段是指在与公司初步接触之前直到第一次面试发生的阶段。关于工作申请的经验教训当我开始向公司申请工作时,我想象我提交的申请越多,我获得面试的机会就越大。看起来合乎逻辑,对吧?所以我设定了一个目标,每天发出5个申请,并期望每5个申请获得一次面试。但是我的策略并没有像我预期的那样奏效。我收到的面试邀请数量往往达不到我的目标:大约每12份申请中有一次面试的比例为1:12。我面临这个问题:我是否需要稍微增加每天的申请量?比如每天发出10份申请。或者我需要在其他方面做一些改变吗?在每一个不成功的申请背后,我都能看到需要改变的地方。当我不再执着于申请数量,稍微调整一下并开始考虑简历的质量时,情况发生了变化。我开始将每个申请视为对招聘经理或其他会看到我简历的人的推销,我是我想出售的商品。如果公司需要填补人才缺口,而我说我有这些技能,我需要让他们相信我有。然后,我的新任务变成了找到一种方法来有效地推销我的技能、经验和个人品质,以便让招聘经理相信我是他们职位的合适人选。这是我想出的自我推销类型的一个例子:结合我的简历,这封求职信的成功率为95%。只有一次coverletter没有用,但是hiringmanager还是回我说这个职位已经没有了,但是他想以后再联系我。这里的教训是:你发出的申请应该非常具体——质量胜于数量,最好两者兼而有之。你需要了解自己独特的能力和经验,并以符合公司需求的方式展示它们,同时又不失个性。您还需要了解您申请的公司的特点及其具体需求。初创公司或小公司的需求可能与大公司不同,因此需要不同的技能组合。推销自己,并确保在面试中支持你的主张。从招聘人员信件中吸取的教训在此期间,我收到了很多招聘人员的来信(大部分是主动来信),要求我申请他们公司的空缺职位,但我对其中大部分都不感兴趣。当然,考虑到我繁忙的日程,这些电子邮件太多了,但我学会了同理心并理解这些招聘人员只是在做他们的工作。因此,我不再将这些电子邮件视为收件箱中的噪音,而是开始尝试回复所有招聘人员,即使是那些我不感兴趣的人。这样做让我成功地建立了一个招聘人员网络,这已成为我未来改变职业角色时的重要资源。您不必开始回复收到的每一封电子邮件。但是你知道,我得到的一些最好的面试建议来自我回复过的招聘人员,他们对这个职位不感兴趣。回复没有什么可失去的。面试阶段本节涵盖了面试本身的所有内容,其中涉及许多不同的面试类型。如何接听介绍电话是的,我明白了,你很忙,很多事情都在争夺你的时间。但是,你也是一位出色的专业人士,这意味着当你接到这样的电话时,你至少已经知道两件事:你的面试官的名字至少一个关于公司的具体、有形的事情——他们做什么,公司在哪里位置、新闻内容等。我注意到,当我在准备面试时了解这些事情时,我总是开始对公司产生真正的兴趣。这通常是招聘人员在进行此类面试时所期望的。如何应对技术视频电话采访在技术视频电话采访中,最决定性的一个因素是你是否能清楚地表达你的想法。你可能以前听过:“面试官关心你的思维过程。是的,他们可以看你的代码,但重要的是他们想知道你为什么要这样写。”面试官不在你身边,你看不到其他非语言暗示,比如你的手势和微妙的动作。面试官只能通过你的声音了解你的思维过程。既然您知道如何领导这场对话,那么下一个问题是您如何擅长于此?因为事实是,虽然有些人可以自然地表达自己,但其他人却很难,包括我。答案是:练习!实践!!实践!!!多练习模拟面试。与朋友进行模拟面试让我能够更好、更自信地解释自己的思考过程。但更有趣的是,它帮助我形成了一种新的采访视角。我开始将面试视为与朋友或团队成员的对话。我将另一边的面试官视为我的朋友(有时我会在脑海中给面试官取个名字)。因此,过去对我来说压力很大的面试变成了与朋友的技术讨论,仅此而已。这种新的视角,结合许多实际的面试经验,帮助我变得更加自信,甚至让我享受面试,不,技术聊天。如何开始解决问题在完全理解问题陈述之前,切勿开始解决问题。如果你首先要求对方澄清事情,你几乎不会出错。如果您提前清楚地提出问题,而不是根据自己的假设行事,这??也会给面试官留下良好的印象。如何解决问题优秀的应聘者知道如何解决问题(如排序问题),但最优秀的应聘者知道一个问题的多种解决方案,并了解一种解决方案与另一种解决方案之间的权衡。我最好的面试是那些我不仅解决了算法难题,而且提供了替代解决方案并讨论了权衡取舍的面试。您的目标是为一个问题提供多种解决方案,乐于讨论权衡取舍,并能够至少实施其中一种。对于技术面试,写清楚代码。大多数面试官都关心代码的质量和解决方案的正确性。你想尽可能地编写模块化代码,将可重用逻辑适当地划分为实用函数、命名变量和方法,就像你是老板一样。如果你被问题难住了怎么办?有时你会被难住。可能有很多原因:你缺乏必要的知识,你的假设不正确,你遗漏了细节等等。我曾经认为,在这种情况下,面试官会根据我想出解决方案的速度来判断我。所以我会很安静的思考,不和面试官交流,只是思考。这是我们大多数人出错的地方。我也明白你需要时间独处思考。但是很抱歉打破你的幻想,你在接受采访时不是在你的私人时间。是的,面试官喜欢你能自己想出一个解决方案,但不要忘记,他们也希望看到你与其他同事合作想出一个解决方案。虽然公司需要科技明星,但他们也需要有团队精神的人。因为你的面试官是你的朋友、合作伙伴、团队成员,所以你应该在思考解决方案时与他们交谈。你应该分享你的思考过程,直到你陷入困境;您应该自信地寻求帮助,而不是大声呼救。这样做你可能会揭示解决方案,就像我在Coda采访中所做的那样。如何应对编码挑战这里的课程适用于以在Hackerrank和Codility等平台上执行编码挑战的形式进行的面试。通常这些挑战都是限时挑战,例如45分钟或更长时间。我之前分享的一些经验在这里适用,但其他一些则不适用,比如要求某人澄清,因为这里没有人可以问。以下是我推荐的一些步骤:通读并完全理解问题。从编写有效的代码开始,甚至是蛮力搜索算法。这可能不会通过所有测试用例,但优先考虑的是提出工作代码,最好是在前15-20分钟内。使用不同的输入类型测试您的代码,因为这有助于您处理边缘情况。优化效率。重复步骤4和5直到最后一分钟。在这里,掌握计算机科学的基础知识是关键。如何处理家庭编码项目家庭编码项目让您有机会更好地展示您的才能,因为您有更多时间。这也意味着此类项目更耗时。一家面试我的公司还提供每小时68美元的报酬,用于花在家庭编程项目上的时间——这表明这项任务很严肃,你也应该如此。但在你花时间在家庭项目上之前,你必须非常确定你想加入公司。永远不要在家庭项目的代码质量上懈怠。具体说明您的设计决策,即命名约定、代码结构等,并准备好捍卫您的选择。你应该使用什么工具?在我接受CourseHero采访时,我使用正则表达式来解决我可以用更简单的字符串解析算法解决的问题。事实证明这是一个错误的决定,我没有通过面试。经验教训:只使用您非常熟悉和有经验的工具。如何进行现场面试在面试前一晚睡个好觉。在面试当天早点到达并保持微笑(这有助于您表现出自信,更重要的是让您保持放松和控制感)。面对你的恐惧并接受它——即使你失败了,这也不是世界末日,毕竟这只是另一场技术聊天。然后走进去开始聊天。如何进行虚拟现场面试这与现场面试有很大不同,因为每个人的目光都注视着您,这可能会让人伤脑筋。我接受了三场虚拟现场面试,但都没有通过。对不起,你不能从我这里夺走成功。面试后如何应对失败有很多原因导致你无法通过一轮面试,我认识的一些最优秀的工程师都经历过面试挫折,但仍然失败了。因此,与其沉迷于失败的面试,不如从失败的面试经历中找到可以吸取的教训,并利用它们继续前进。正如他们所说-继续!那么面试成功了怎么办?庆祝你的成功,无论它在你看来多么渺小。我有一些庆祝的想法。接下来你应该做什么?与朋友进行大量模拟面试。虽然我并不完全认同“熟能生巧”的说法(因为在我看来,完美是一个移动的目标),但熟能生巧可以帮助你快速识别面试问题中的规律,帮助你变得熟练,并最终增强你的信心。对于技术面试,需要对数据结构和算法基础知识有很好的理解。开始采访并继续采访。即使您有工作,也可以时不时地面试一次——也许每两个月一次或每季度一次。面试是一项可以继续磨练的技能。希望这篇文章能帮到你。
