越大的公司越容易采用白板题来刷人
为什么呢?
因为容易量化且花较少成本来删选候选人
试着想像一家大公司每天都有上千封履历,面试官不太可能一对一面谈
且这样面谈会存在很大的主观因素
透过考试就可以消除这样的偏差和可以量化每一个候选人
相对小公司或新创就不太会采用这样得流程,因为他们负担不起找到不对的人的成本
例如:要想招募资深Java工程师
透过白板题招募,很容易找到对Java不是那么精通的人
大公司资雄厚,可以禁得住这样损失
千万别把白板题想得太美好,它跟你的工作能力是没有正相关的
https://bit.ly/2sqRXEd
https://bit.ly/2R4kQAA
它只是方便大公司量化的工具,国外也有很多工程师在批评这样的制度
为什么白板题被人诟病,因为它脱离现实问题
大部分的问题是侷限在一台机器上,要你尽可能去改善你的算法
如果你刷得够多,你会发现很多问题跟array有关,很少linkedlist问题
因为linkedlist的本质是immutable,immutable对效能反而没有帮助
像array是mutable,可以透过pointer修改或是in place的置换来增加效能
例如:two pointer技巧
在现今流量动辄上千万,应该没有人敢使用array这样资料结构吧
(因为很能难规划一块很大的连续内存)
流量也是大到单一台机器可以完全处理,纵使你的算法是O(n)
一定要用到多台机器来一起运算,势必会遇到race condition问题
那么mutable解法在这样的问题下,就不吃香
lock会使得效能就会下降,但是不lock结果会不对
所以immutable资料结构才在现今很流行,那考Leetcode的目的是在哪?
白板题的解法几乎不推崇递回,变相要你用while/for loop来处理
functional programmer应该会觉得心里不是滋味
几乎都是招募imperative programmer才在考白板题的
要脱离Leetcode,就脱离当码农或是去面小公司/新创公司
要面大公司或FANNG,就乖乖准备吧.毕竟你也改变不了他们的流程
有时在想,被招募进来也不是在做什么rocket science工作
为什么面试过程要搞得那么麻烦且冏长?每当要换工作就要花时间准备刷题
也没有听过其他的行业工程师这样搞...
只能期许下辈子不要再当码农了