※ 引述《pandaforme (建 建)》之銘言:
: 越大的公司越容易採用白板題來刷人
: 為什麼呢?
: 因為容易量化且花較少成本來刪選候選人
: 試著想像一家大公司每天都有上千封履歷,面試官不太可能一對一面談
: 且這樣面談會存在很大的主觀因素
: 透過考試就可以消除這樣的偏差和可以量化每一個候選人
: 相對小公司或新創就不太會採用這樣得流程,因為他們負擔不起找到不對的人的成本
: 例如:要想招募資深Java工程師
: 透過白板題招募,很容易找到對Java不是那麼精通的人
: 大公司資雄厚,可以禁得住這樣損失
: 千萬別把白板題想得太美好,它跟你的工作能力是沒有正相關的
: https://bit.ly/2sqRXEd
: https://bit.ly/2R4kQAA
: 它只是方便大公司量化的工具,國外也有很多工程師在批評這樣的制度
: 為什麼白板題被人詬病,因為它脫離現實問題
: 大部分的問題是侷限在一台機器上,要你盡可能去改善你的演算法
看面試官 如果你把題解出來還有多的時間 可能會被問follow-up,例如記憶體不夠怎麼辦,怎麼改演算法讓他能跑在多台機器上...等等
: 如果你刷得夠多,你會發現很多問題跟array有關,很少linkedlist問題
: 因為linkedlist的本質是immutable,immutable對效能反而沒有幫助
: 像array是mutable,可以透過pointer修改或是in place的置換來增加效能
Linked list問題少不代表是因為效能什麼鬼的因素 邏輯錯誤
: 例如:two pointer技巧
: 在現今流量動輒上千萬,應該沒有人敢使用array這樣資料結構吧
: (因為很能難規劃一塊很大的連續記憶體)
: 流量也是大到單一台機器可以完全處理,縱使你的演算法是O(n)
: 一定要用到多台機器來一起運算,勢必會遇到race condition問題
用到多台機器跟race condition不是「勢必」的關係 看演算法跟資料結構的設計 (你有聽過CRDT嗎?)
: 那麼mutable解法在這樣的問題下,就不吃香
???????
: lock會使得效能就會下降,但是不lock結果會不對
對也不對 同上述說法
Lock一定會降效能 但是不lock不見得會產生錯誤結果(我們說inconsistency )
: 所以immutable資料結構才在現今很流行,那考Leetcode的目的是在哪?
: 白板題的解法幾乎不推崇遞迴,變相要你用while/for loop來處理
錯誤 例如DP你一定可以寫出Top down 跟 bottom up版本的,top down就是要用遞迴
例如binary tree問題 也多是用遞迴來解
還有dfs 你不用遞迴嗎?錯的離譜
: functional programmer應該會覺得心裡不是滋味
: 幾乎都是招募imperative programmer才在考白板題的
通篇胡說
: 要脫離Leetcode,就脫離當碼農或是去面小公司/新創公司
: 要面大公司或FANNG,就乖乖準備吧.畢竟你也改變不了他們的流程
: 有時在想,被招募進來也不是在做什麼rocket science工作
: 為什麼面試過程要搞得那麼麻煩且冏長?每當要換工作就要花時間準備刷題
: 也沒有聽過其他的行業工程師這樣搞...
: 只能期許下輩子不要再當碼農了
不爽不要做 想做就乖乖證明你比其他人還行
這些都是花時間就能學會的東西 你學不會代表天資不夠 可以早點換過行業做會比較有成就感