我有个程序员朋友,在深圳工作aizhan百度搜索代码。他曾经帮公司面试过一些工程师,也要求现场手写代码。有一次,在一个招聘会上,公司有个职位是嵌入式软件工程师,有一些看着还不错的应届生投了简历,为了做一轮刷选,我那朋友就让他们现场写一段代码,实现流水灯功能。
如果是做过单片机相关的开发和调试,一定会写得出来,因为这是单片机入门的第一个基础实验成功男士。而我那朋友,考查的并不是他们书写的语法或格式,而是他们解决问题的思路,只要代码中体现了左移或者右移的算法,就可以通过。
结果有些出乎意料投稿格式,只有少数几个应届生写得出来,所以就只允许他们进一步去公司面试。
你看,用不着大张旗鼓的给面试题,只需要手写个简单的代码,就刷下了一部分人。
所以,你的问题中,程序员面试被要求手写代码,真的行的通吗?
其实,这不仅行得通,而且还是大部分公司面试程序员时常用的一个方法。理由如下:
一、面试官考查的并不是你的语法,而是你的思路就像我的朋友一样,让求职者手写代码,真不是刁难他们,而是为了甄别更优秀的求职者。在这种情况下,面试官往往会忽略手写代码的语法等错误,只要思路、所用的关键函数正确,基本就算是通过了。
而一行代码都写不出的人,肯定是没有“手感”,这种手感,指的是经常调试软件培养的那种思维保持能力,一旦你没有接触过相关知识点,那么你肯定无从下手。
有人会问,那上机测试来考查不行么?
这也可以,但一旦上机测试,就不会是这么简单的题目了,而且往往花费更多的时间;再说,上机测试,就会提出更高的要求,比如说不能有语法错误,要实现正确结果等,就不是面试官想要考查的重点了;最后,上机测试可以“作弊”,这种作弊,指的是他可以多测试几次来验证,然后反向推导出正确的步骤,这明显违背了面试官的初衷。
所以,手写代码是最快、最好的方式之一。
二、手写代码,最能体现一个人的能力如果一个求职者能当场写出代码,并得到正确的结果,那么,他对代码、算法的临场应变能力还是很强的,在平时工作中,效率也是有保障的。
很多人对程序员有误区,认为他们写代码的时候,就应该像影视剧中的黑客一样,噼里啪啦敲一阵键盘,显示屏不断的滚动刷新黑底白字的英文,就能迅速得到想要的结果。
现实是,很多程序员写代码时,需要通过百度搜索等手段查阅很多资料,有些代码甚至是复制粘贴得来的,调试看起来远没有那么酷。
在这种情况下,一个人能在电脑上写出代码,并不一定能手写出来;反之,能手写出思路、步骤、关键算法等部分的程序员,在电脑上写代码也一定如鱼得水。
所以,手写代码,更能体现一个人在没有外界或电脑的帮助下,自己获取结果的能力。而这个能力,是面试官更看重的。
三、如果被要求现场手写代码,该如何应对?如果面试官要求你手写代码,该如何应对呢?可以参考以下方法:
1)写清实现思路、主要函数及关键节点
就像上面说的一样,面试官考查的并不是结果,而是你实现方法的思路,所以不要纠结于结果,而是把重点放在实现过程,把过程厘清,更能体现自己的能力。
2)写清算法步骤
一段代码的灵魂,本质上就是它的算法。如果你的算法得当,哪怕你写错语法,都没有关系。但是如果你的算法不合理,即使你字写得再好、语法再没错误,也入不了面试官的法眼。
3)多比较几种实现方法的优劣
有时候,面试官想考查你是否会多种方法来解决同一个问题。在这种情况下,你可以尝试写下几种不同的实现方法,然后给出他们之间的优劣,这更能赢得面试官的青睐。
总之,手写代码不像很多人想像中的那么复杂,相反,它反而能简化面试流程,节省大家的时间。作为求职者,你需要在意的,也不是它的结果和语法,而是实现过程和方法,只要把握住以上说的几点,基本上都能通过。
这就是我的看法和建议,希望对你有帮助。
欢迎关注@焱公子,十年500强,专注写职场,每天与你分享职场干货与成长心得。