技术面试时,程序员需要什么样的编程测试?

求职面试让人感觉又重回了大学。这么多年来实际编程的经验突然间都被抛到脑后,就好象你再次坐在演讲厅里,证明你对理论课程的掌握,实际上这些问题已经早就让那些喜欢阅读高德纳的开发人员解决了。

我在讨论区见到的最常见的解释就是老板是白痴。其次最常见的解释是,老板们都希望成为Google,而Google确实需要计算机科学专家,而其他公司都不需要。但无论如何,这些公司都采用了Google的招聘流程,并希望借此成为亿万富翁。

其实,真正的理由很简单。当你坐下来为开发人员撰写面试问题时,你必须满足许多限制才能写出一个好问题。而满足所有这些限制的问题最后往往都看起来像“算法”问题。

面试的目的是尽快获取候选人的信息。一个好的面试问题并不一定要代表日常工作。为了解释清楚这一点,想象一下飞行员的面试。在有了基本的了解之后,理应询问候选人在各种紧急情况下该做什么。紧急情况并不代表飞行的日常工作,但安全很重要,因此没有人会指责面试官提出无关紧要的问题。然而,在软件面试中却出现了这样的问题。

既然我们的目标是尽快获取候选人的信息,那么我们的限制是什么?

首先,要完成的程序必须短小精悍。除非你想整个面试就问一个问题,否则这个问题应该是一个称职的开发人员在30分钟内完成的问题。30分钟你根本写不了多少代码。这重限制已经排除了大多数能带来实用价值的“真实”程序。

其次,这个程序必须单独完成,没有复杂的设置或网站特定的知识。花费在解释问题上的时间每多一秒,候选人展示技术力的时间就少一秒。有时我看到网上论坛里有人评论说:“这个公司是傻X,他们使用的是标准的商业网络应用程序,却不让我写REST API,非要让我编写自己的排序函数。”

但是编写一个“写一个REST API”形式的问题,并通过这个问题实际验证候选人能否成功通过面试,这项工作非常困难。这个API应该干些什么?数据从哪里来?你是希望连接到某个数据库,还是通过文件提供数据,抑或者将其保存在内存中?等等。理想情况下,面试的问题应该在30秒以内解释清楚。有些公司确实会提这样的问题,但他们只想招聘懂得特定选择框架的开发人员,而且该框架已经自动完成了所有的样板代码。

第三,这种方法实际上可以表现出候选人是否懂得编程。编写几个返回一些假HTML的函数不能证明什么,但至少证明候选人可以使用循环、集合、类、以及输入输出,还熟悉他们的标准库(我的意思是大致了解编程技术,而不是说他们记住了每个API)。

第四,这种方法可以给优秀的候选人提供脱颖而出的机会。上述我提到的基础看起来可能非常基础。但这并不意味着我们公司的门槛很低。一个良好的编程测试问题需要掌握一定的深度,让优秀的候选人可以快速高效地创建一个比新手更好的解决方案。面试官通过了充分的练习,即使每个人面对的都是同一组问题,他们也知道如何区分经验丰富的开发人员和初学者。

最后,你需要一些证据,证明候选人可以解决一个没有明显解决方案的问题,让他们自行思考答案,而不是手足无措。这类问题的具体性质并不重要,只需保证候选人无法用以前见过的方法解决。这是面试过程中最模糊的部分:这对测试候选人的思维能力有什么真正的意义?这也是排除“利用他人的代码解决我的问题”的方法,尽管这常常是实际工作中的正确方法。

简短、易于解释、仅使用基本语言功能,解决方案既可以是最基本的,也可以有一定的深度,而且还不至于千篇一律。我认为所有这些都是招聘到一个称职的团队成员的基础问题,但是满足这些条件的问题必然最后会成为没有代表性的算法难题。

所以不要过于关注你的答案是否具有理想的计算复杂性,至少在第一次尝试中没必要。面试官可能并不在意。相反,你应该快速出色地编写干净且没有bug的代码。然后,如果有多余的时间的话,再去优化。

由于缺乏全球认可的认证机构以及对具体技术技能的需求,招聘开发人员的过程比某些专业更为严格。

多年来,从雇主的角度来看,招聘的流程已经得到了极大的改善。对于那些习惯于这种面试的候选人来说,这种方式可以招聘到更均衡的团队,避免有人滥竽充数,尽管有关这种方式的抱怨也很普遍。

尽管如此,我依然看到无论我们在该行业中付出多大的努力,招聘仍然具有很大程度的随机性。经过精心设计的面试流程可以改善这种随机性,这也是我们的努力方向。但是,鉴于解雇一个不合格的人的成本之高,漏掉优秀的人才总好过让人蒙混过关,因此才有了这些面试的悲惨故事:一些有真正实力的人才因为机械的流程而被拒。正如Spolsky提出的面试实习生的替代方案一样,尽管这种流程存在各种缺陷,但也是一个无人能及的系统。

好啦!今天的分享到这里就结束了,希望大家持续关注马哥教育官网,每天都会有大量优质内容与大家分享!

版权声明:转载文章来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!