如果说女朋友是程序员会遇到的第一大难题的话,那么白板面试应该是当之无愧的排行让程序员最头疼的第二大难题,秃顶勉强排在第三。

多数程序员都不太喜欢跟外行解释程序员到底是干什么的,但是因为白板面试太遭程序员恨了,以至于多数也不得不跟外行吐槽什么是白板面试,可见白板面试到底有多让人头疼。

1.jpg

很多人都觉得白板面试饱受诟病,但是不论国内外,白板面试反倒是越来越火。也许是被谷歌这种大公司带的头,到现在白板面试倒发展成为程序员面试的行业入门标准。

什么是白板面试?

白板面试指面试时,面试官要求不借助 IDE,互联网等工具,直接在白板或者纸上手写代码以实现某块功能。跟上学的时候闭卷考试那种感觉差不多。

不论是在墙内还是墙外,各种平台上都少不了程序员们发泄自己愤怒,狂怼白板面试的例子。其中最最最为著名的例子当然非 Max Howell 莫属了。

都说拥有一个好的 Github 是面试一份好工作的敲门砖,然后 Max Howell 著名的开源项目 Homebrew 却不能敲开谷歌的大门。

12.png

被谷歌拒绝的原因很简单,就是因为 Max Howell 无法在白板上写出翻转二叉树的算法。之后不久,LeetCode 上就出了这道题,并且难度被定义为简单。

11.jpg

然而大牛居然解决不了一道基础的算法题倒是让大家惊讶,具体原因 Max Howell 也没说。后来只是发个推吐槽了谷歌的白板面试。

1.jpg

但是毕竟是大牛,有实力的大牛因为一个小问题没被谷歌录取,当然在互联网上被程序员们热议。甚至因为这件事,不少程序员开始纷纷响应,开始各自站队,互联网上还兴起了一次取消白板面试的抗议。

那么目前的白板面试到底有哪些弊端?

程序员平时都是用 IDE 写代码,而且多数情况下还需要面向搜索引擎编程,突然冷不丁地让你用墨水写代码,一下子肯定不习惯。再加上面试的时候本来就紧张,还有面试官一直盯着你,面试者肯定感到不安。

那个时候的心情,估计比考试监考老师一直站你旁边看你卷子还复杂。

而且再加上现在白板面试被越来越多的公司效仿,很多公司只一味的跟风,觉得别人面试都要用白板面试,为什么我们不用,导致最后只是为了用白板面试而白板面试。而用白板面试真正的原因是什么,却又没有学到。

举个糟糕的白板面试的例子,面试过程中,问的问题过于刁钻困难,以至于这些问题在以后工作中根本涉及不到。这样搞根本不能筛选人才,或许刚毕业在学校期间有过一些算法经验,然而并没实战多少的大学生更能适应这样的面试。

而且白板面试的过程中还要严格要求写代码的时间,加上面试官也特别不友善,面试的时候函数名记不住了不跟你说,需要第三方的api的时候也不给你提供,最后还要求写完了的代码要一次能编译过。

这样下来,有能力的面试者反而被淘汰了。

正是因为白板面试过于泛滥,也出现了一种面试前面试者们都去刷题的现象,也就只是为了适应白板面试,这样子搞下去,就跟应试考试没多少差别了。甚至有的面试者为了一个面试要准备几年时间,在LeetCode等网站上刷一大堆5天高考3天模拟。

其实我觉得,白板面试并没有错,错误的是白板面试的方法。白板面试更注重的应该是解决问题的思路,如果函数名记不住了,或者需要api,面试官应该提醒。如果写出来的代码编译不过,面试官应该与面试者进一步讨论如何解决问题。