不同工程面试类型的利弊

2022-02-22 19:05:44

在代表Stripe和LogicLoop进行了数百次工程候选人面试后,我采访了30多家科技公司,从不到10人的初创公司到Facebook、Palantir和谷歌等巨头,至少可以说我已经看到了相当广泛的工程面试。如果你是一位正在考虑如何设计面试计划的工程领导,或者一位想知道面试类型的应聘者,那么让我们深入了解最常见的面试问题类型以及每种类型的优缺点。

首先,让我们把大象带出房间。没有一个工程面试过程是完美的,所有的面试充其量只是一个候选人在贵公司表现如何的狭隘快照。有些求职者在面试中表现出色,最终成为非常优秀的工程师,但也有一些求职者在面试中表现出色,但最终在工作中陷入困境。话虽如此,尽管面试并不完美,但它确实给出了一些信号,可以表明候选人是否适合你的公司。

第一个是带回家的编码面试。通常这是一个较长的编码练习,可能需要几小时到一天的时间来完成。由于时间压力较小,而且应聘者能够使用互联网上的可用资源,带回家面试通常需要端到端完成一个小项目。

时间压力更小,应聘者可以在一个舒适的环境中工作,在那里他们可以迭代他们的代码,直到他们满意为止。

你在候选人的思维过程以及他们如何与他人互动方面得到的信号较少。

作弊或直接在网上查找答案更容易。

对于生活繁忙的人来说,带回家可能很耗时,尤其是当候选人在多个地方面试时。

算法面试是谷歌、Facebook和Palantir等公司喜欢实施的最经典的工程面试。通常,这将涉及动态规划、递归、排序、二叉树等概念。候选人还需要熟悉数组、字典、树等常见数据结构。

这些类型的面试在大型顶级科技公司中极为常见,许多应聘者知道如何通过leetcode等方式为面试做准备。

算法通常需要一定程度的严格思考才能正确,需要你仔细思考边缘情况,因此它与一般智力和思考复杂问题的能力有一定的相关性。

由于这些算法中的许多并没有在软件工程的日常基础上使用,因此与最近在大学计算机科学课程中学习了这些算法的初级候选人相比,许多高级候选人可能没有把这些概念放在心上。

编程训练营等非传统课程不会教授高级算法,因此你可能会淘汰非传统背景的人。

近年来,由于算法与日常工作没有直接关系,关于公司是否应该进行面试的争议越来越多。

为了反映更多的日常工作环境,一些公司引入了bug squash面试。在这次面试中,应聘者将被允许访问一些带有bug的预先存在的代码库,而应聘者的工作就是找到并修复bug。

这些面试可以让你了解应聘者是如何浏览一个大型的、预先存在的代码库的,而其他类型的面试并不测试这个代码库,因为其他面试形式通常要求应聘者从头开始编写一个小程序。

他们说,比起编写一段代码,调试一段代码需要一个更聪明的人,所以如果候选人能够做到这一点,这是一个好迹象。

有些应聘者会不幸落选,在指定的面试时间段内找不到漏洞。有时候,应聘者在面试过程中遗漏了一部分文档,而这些文档可能会将他们与错误联系在一起。由于时间有限,候选人没有时间全面阅读所有文件,因此有些人会略读,如果略读导致跳过相关部分,那可能就不是他们的幸运日了。这并不一定意味着如果给他们更多的时间,他们会做得不好。

很难在短时间内理解大型代码库。

系统设计面试通常要求应聘者描述他们将如何设置基础设施以支持可扩展系统。这可以是一个白板练习,候选人描述箱子、队列等。他们将建立一个可扩展的系统,例如webhooks交付系统、度量记录系统等。

系统设计面试是一次很棒的非编码面试,目的是了解应聘者是否能够建立一个系统,并考虑基础设施级别的可伸缩性、可靠性和可操作性。

通常,这需要与面试官进行大量的来回对话和提问,这样你就能了解如何与应聘者合作。

对基础设施有更多经验的人往往会在这些面试中表现出色,而应届毕业生和更初级的候选人可能根本没有回答好这个问题的经验。

虽然这种面试形式并不常见,但一些公司已经开始采用代码审查面试,面试官会要求应聘者审查一段代码,或者应聘者会提交一段代码供面试官审查,并纳入给出的反馈。

由于代码评审是工程师工作中的一部分,因此可以很好地了解工程师在工作中实际如何进行代码评审。

这个练习也可以测试软技能。他们是否优雅地接受反馈并纠正错误?他们是否能够以建设性的方式提供反馈?

如果没有更广泛的代码基础上的更多上下文,就很难孤立地查看一段代码。

另一个多年来流行的“实用”代码问题是集成面试。不可否认,在API时代,许多软件工程师不得不将一些外部系统集成为他们工作的一部分。集成面试只是要求应聘者证明他们可以编写一个与某些第三方API(如Stripe或Twilio)集成的程序。

由于集成API和阅读文档是工程师工作的一个常见部分,因此这为他们如何在工作中实际连接集成提供了很好的洞察力。

对于一个有着丰富行业经验的工程师来说,这应该一点也不困难,所以可以说这是一个“简单”的面试。

最后,大多数公司都会进行软技能面试,通常是与团队经理进行面试。面试让招聘经理有机会询问应聘者过去从事过的项目以及他们的优缺点。它还让应聘者有机会询问有关公司和团队的问题。

软技能是工程师工作的重要组成部分,招聘经理与应聘者会面,了解他们是否能很好地合作,这一点很重要。

如果你是一名招聘经理,我希望这能给你一些选择,让你在考虑设立面试计划时进行头脑风暴。在LogicLoop,我们结合了上面列出的面试类型,尽管我们倾向于在算法问题上更轻松,而不是专注于实际的编码练习。如果你是候选人,我们正在招聘工程师[email protected]如果你有兴趣看看我们的面试过程是什么样的!

我们知道,找到合适的人选并不容易,许多公司缺乏工程资源。如果您热衷于节省工程资源,并让您的业务运营人员能够自行设置警报和自动化,请查看LogicLoop,为自己节省大量时间!