年后跳槽季,如何在编程面试中大获成功?

【CSDN 编者按】作为技术人,在面向编程面试之前,应该如何进行相应的准备?

作者 | Noj Vek      译者 | 弯月

责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

本文的作者经历过100多场面试,而且也担任过50多场面试的面试官,我们一起来看一看他从面试者与面试官双向的角度总结出的面试经验。

面试

从提交申请到正式入职,通常我们会经历3-5次面试。首先是HR经理的电话面试,接着还有几场技术面试。一位求职人员在一家公司的面试中花费的时间平均为8个小时左右。面试的目的是为某个职位寻找合适的技术人员,并从他们身上获取高于薪资的价值。

根据形式不同,一场面试通常需要45分钟~1个半小时。我的一位经理曾说:“你必须搞清楚面前这个人是否值一辆兰博基尼,因为公司每年在这个人身上投入的资金超过了一辆兰博基尼,即20万~30万美金(包括办公室租金+各项福利)。”

我经常问自己,我们可以透过求职者身上的哪些特质判断出他将有长期的良好表现?我选对人了吗?

免责声明

 

虽然我经历过100多场面试,而且也担任过50多场面试的面试官,但是这个数据量远远不够。再者,我们很难通过短短一个小时的面试判断某个人是否能够在接下来几年中给出优异的表现。很多时候,不是因为求职者不够优秀,而是公司未能很好地引导他们,或未能让他们发挥出最佳水平。

求职者只有在面试中有十分出彩的表现,才能取得成功。面试失败的时候,我得到最多的答复是:“我们没有从你身上看多太多亮点。”

哪些因素有助于取得面试成功?

 

在我看来,最有利的因素有三个:

  1. 良好的人品;

  2. 适合的技术经验;

  3. 解决难题的能力。

简历

作为面试官,一般我都会在面试前仔细阅读两遍简历。作为面试者,我很讨厌那些根本不看我简历,却占用我的时间的面试官。通常,在简历中写:“努力工作,注重结果”之类的言辞,基本没什么用。为了突出自己,你必须更具体:“我参与了项目X,在其中负责工作Y,最后取得了结果Z。”

如果求职者在简历中写明GitHub链接,我就会去看他们的GitHub,看看他们都构建了哪些产品。即便他们不是编程高手,但至少证明他们能够写代码,而且能够与其他人合作,完成工作。

推荐

如果你信得过某个人,那么他的话在你这里一定很有分量。尤其是当你给某人写推荐信时,一定要说清楚:“你是否曾经与这个人共事,你觉得他能够胜任这项工作吗?”而作为面试官,我也会打电话给推荐人,问问他们:“他的表现如何?你愿意再次和他合作吗?”

以上是面试之前需要做好的准备,下面我们来看一看实际的面试。

编程面试

 

根据我的经验,能否给出正确答案与在工作中是否有良好的表现,二者之间的联系并不大。然而我发现,面试者找到解决方案的方式之间有一些共同点。

举个例子:编写一个函数,将整数(比如100)转换成“one hundread”。我发现,是否掌握了处理复杂数据结构的编程技巧,与实际工作中的长期表现之间几乎没有联系。通常在日常工作中,你只需要完成基本的工作。

技巧1:澄清问题

面试者是否注意到了问题的范围?这个数字有多大,是否可以为负数?如果是动态语言,则“只考虑数字的情况吗?小数和分数呢?”

绝大多数的实际问题都是模棱两可的,深入挖掘基础的问题,澄清范围,这一点非常关键。

技巧2:讨论各种可行的方式,总结出大致计划

优秀的面试者不会上来就直接编写代码,他们会解释自己的方法和思维模型。这意味着他们愿意在动手编写代码之前,与他人合作,探讨可行的方式。这个时候,你可以利用白板,或者在纸上画出来也可以。

大多数的实际问题都需要团队达成一致。能够与他人交流你的想法,说明每种方式的优缺点,这一点非常重要。

很多大问题都没有正确答案,你需要权衡利弊。能够统一取舍很重要。

技巧3:使用自己熟悉的环境

在白板上编写代码其实并不好,白板上的算法与实际的日常工作有很大的区别。在coderpad.io中编写代码也很麻烦,因为它们没有自动补齐,不会自动整理格式。绝大多数工程师都有自己的IDE:vscode、sublime、vim等。

我发现,让面试者使用自己熟悉的环境,他们的表现往往会更出色。当然,这个环境依然是面试专用的环境,他们仍然有时间的压力,但是这更接近实际的工作。

我做了一项A/B测试,针对同一个问题,让面试者使用他们的电脑,共享屏幕,然后分别使用coderpad.io和sandbox.io。结果发现,在前端开发的问题中,使用sandbox.io的面试者的表现更好,因为阻碍他们尽快开始编程的问题更少。

面试者使用自己电脑,共享屏幕,克隆代码库,这也是一个很好的技巧。coderpad.io能做的事情很少。通过让面试者克隆代码库,可以看出面试者是否能够快速适应一个不熟悉的代码库。

在Google的面试中,他们让我在Google文档中编写代码。这种做法一点都不好。根据我的经验,Stripe的面试过程不错。在面试中,你可以将GitHub代码库checkout出来,然后在自己的电脑上,用自己最喜欢的IDE打开代码。

技巧4:写代码 -> 运行 ->调试

编写完一段小代码后,你应该试着运行一下,看看能否得出正确的结果。面试者可以通过这个迭代找出小错误,从而在面试中有更好的表现。有的面试者一直在写代码,从来都不运行,直到面试结束。结果,最后运行的时候,代码编译不过去或出错。

表格测试也是一个很不错的技巧。你可以编写一个数组:[[输入,输出],[输入,输出],[输入,输出],...],然后传递给一个简单的测试函数。看到测试用例和代码复杂度的变化,面试官也会很高兴。

总结

 

我们必须通过编程问题和接近实际的工作环境来测试候选人。同时,我们应该更加重视之前的经验。

话虽这么说,面试并不能代表一切,有时候我们需要花费一两年的时间,才能深入理解整个代码库,因此我们必须将眼光放长远。

原文链接:https://nojvek.substack.com/p/how-to-make-coding-interviews-better

声明:本文为 CSDN 翻译,转载需注明来源。





☞新的一年,这7个“菜鸟坑”千万别再踩了!☞开源不等于免费!谷歌如何通过安卓开源成为移动时代霸主?| 涛滔不绝
☞Ant Design 遭删库!

你可能感兴趣的:(编程语言,面试,java,人工智能,python)