越大的公司越容易採用白板題來刷人
為什麼呢?
因為容易量化且花較少成本來刪選候選人
試著想像一家大公司每天都有上千封履歷,面試官不太可能一對一面談
且這樣面談會存在很大的主觀因素
透過考試就可以消除這樣的偏差和可以量化每一個候選人
相對小公司或新創就不太會採用這樣得流程,因為他們負擔不起找到不對的人的成本
例如:要想招募資深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工作
為什麼面試過程要搞得那麼麻煩且冏長?每當要換工作就要花時間準備刷題
也沒有聽過其他的行業工程師這樣搞...
只能期許下輩子不要再當碼農了