近日,华为面向全体员工发出了一个电子邮件,文件的内容是转发华为轮值董事长徐直军撰写的《关于公司高端精英类、软件类人才面试方法调整的建议》。
其中讲到:软件类人才面试要以考察软件工程能力与编码能力为核心,用真正懂软件的编程高手来面试考察软件类人才,识别出真正的软件开发与设计高手。
详情我就不贴了,关键点是:
应聘人员首先进行网上编程,时间 90 分钟,网上编程符合要求的进入面试环节。
应聘人员可以选择一种编程语言,进行两轮面试,每轮约 45 分钟。面试官均独立进行面试考察,提前根据岗位要求设计编程考察题目,通过当面或视频编程的方式,考察实际编程能力及相关知识技能掌握程度。候选人编程 30 分钟,面试官提问与讨论 15 分钟。每位面试官给出独立评价意见。
现场编程对程序员来说是一件非常要命的事情 !
你可能有过这样的经历: 面试官通过电子邮件给你发一个题目,限时完成,你可以先想好,再打开IDE去实现,或者一边想一边写,遇到了问题,还可以Google一下, 写错了还可以再改,反正面试官只要最终结果,不管中间过程。
但是现场编程就不一样了,你写的每一行代码,甚至每个字母都被别人盯着;你敲错了代码, 然后删除也会被别人看到,中间过程被“监视”, 编程思路,想法会被别人一览无余。
和敏捷开发的结对编程不同, 这个“别人”不是你的Peer, 而是决定你“生死”的面试官,这压力可不是一般的大啊! 我觉得一般人有10分的能力,能发挥出来8分就相当不错了。
但是我觉得这个现场编程实施起来还是有一定难度的,主要原因在于时间太短,只有30分钟,这点时间是写不出太多东西的。
换位思考一下,你要是华为的面试官,应该怎么出这个现场编程的题目呢? 题目不能太大,要不然写不完,太小又难以展示出候选人的能力。
也许可以从工作中提取一部分代码,在面试的时候给候选人讲解业务背景(正好考察理解能力), 然后让面试者实现其中的若干关键函数,考察他的编程能力。
还有一种办法就是重点考察设计能力,给一个小需求,让面试者只去设计类,把类的方法写出来,但是不做实现。
或者干脆从产品中找到一段烂代码, 让面试者重构。
现场编程面向实战, 能够过滤掉那些把面经背得滚瓜烂熟,但是设计和编码能力不行的人,没有硬实力是通不过面试的。
现在大家都说:面试造航母,工作拧螺丝, 面试中的知识点在工作中根本不会用到,华为的这种考察方式能够缓解这个问题。
不过,依中国人强大的考试能力,估计现场编程的题目很快就会出现在网上,成为新的面经。
不管怎么说,更加重视设计和编程能力, 这是一个好的起点。
【本文为51CTO专栏作者“刘欣”的原创稿件,转载请通过作者微信公众号coderising获取授权】