Palantir 教你如何應對白板面試


Palantir是一家AI公司,專接美國政府大案子,例如從銀行帳戶動態抓恐怖份子。創辦人是Paypal創辦人Peter Thiel。

原文在此:

第一篇:https://www.palantir.com/2011/09/how-to-ace-an-algorithms-interview/

第二篇:https://www.palantir.com/2011/10/the-coding-interview/

會有這兩篇文章也是因為他們很怕錯過高手,所以乾脆教一些白板面試的方法論,照著做應該就不會失常。

我擷取精華如下:

  1. 先不要馬上急著開始,向面試官釐清問題 (例如input都是整數嗎,array有沒有大小限制)
  2. 在白板上面寫一些medium size input example (small size 會有盲點)
  3. 先用暴力法想第一個solution (先有個東西出來,心情上會穩一點,再來根據這個做改善也比較容易)
  4. 找合適的演算法 (Sorting / BS / DP / Greddy / Recursive…)
  5. 找合適的data structure (Array / Linked List / Queue / Stack / Hash / Tree / Heap / Graph)
  6. 一邊寫一邊解釋做法,不用怕自言自語 (Don’t fish for hint)
  7. 想想以前是否有做過類似的題目,解法能不能運用
  8. 分解步驟,把問題拆成幾個小問題,適時使用sub-routines,有助於抽象化
  9. 別怕砍掉重練換做法
  10. 寫完後記得用medium size input example檢查自己的solution

裡面對我來說最重要的一步是:

分解步驟,把問題拆成幾個小問題,適時使用sub-routines,有助於抽象化

再來是

Think it out loud

再思考的時候,很多工程師習慣靜默不語,在腦中一直演繹。但這對面試是很不利的,因為面試除了考你的邏輯、演算法之外,也在考你的溝通跟表達能力。所以把你腦中想的寫在白板上,然後說出你想的方法,讓面試官知道你現在在哪個狀態,他也才好幫你。我當過面試官,有時候我看到面試者已經快要找到對的路時,我常常忍不住給他一些提示,但前提是你要讓面試官知道你想到哪了

我覺得我腦裡的stack頂多只能記3層,所以有時候先寫一個假function,定義好input/output,把主線的solution先搞定,再回頭去寫這個function,通常可以避免寫到一半卡住的問題。

另外interview的公司類型跟會考的題目通常有相關,例如Social Network可能要多讀一點Graph相關,Search公司可能要多看Tree等。

Leave a comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料