找工求職3 - 面試訓練

面試是找工作最重要的一環。這篇我會將涵括下列主題

  • 修改履歷
  • 刷面經題
  • 練習口說

修改履歷

履歷是求職敲門磚,怎麼寫是一門學問。雖然申請學校的時候我們已經寫過一次,但是該怎麼寫使得內容更加清晰,是有一個公式存在。不過我已經忘了當初這個想法是怎麼來的,請見諒。

公式如下,盡可能在一個句子中提及以下事項。「做了什麼事,達到什麼具體效果,用了什麼工具或方法」。請看一些例子。

  • Achieved 95% accuracy for speech tagging using hidden markov model plus Viterbi algorithm and smoothing work.
  • 事:speech tagging
  • 效果:achieved 95% accuracy
  • 工具方法:HMM + Viterbi + smoothing work
  • Reduced 75% loading time by redesigning foggy map rendering using PIL to extract alpha channel from fog images.
  • 事:redesigned foggy map rendering
  • 效果:reduced 75% loading time
  • 工具方法:used PIL to extract alpha channel
  • Crawled 2327 web pages from reutersnews.com with Crawler4j to construct a data set for a search engine.
  • 事:crawled 2327 web pages from reutersnews.com
  • 效果:construct data set for search engine
  • 工具方法:Crawler4j
  • Deployed Node.js Expression to AWS-EB as PaaS catching and redirecting requests to protect API key.
  • 事:deployed Node.js
  • 效果:catching and redirecting requests + protect API key
  • 工具方法:Node.js + AWS-EB

這個公式能讓你用簡短的話具體交代過去的經驗,讓履歷變得清楚易讀,但是也會讓你過去做的事無法用履歷修飾和美化過去的經驗。一般來說,每一個專案和工作經驗需要大約 4 個句子來說明。如果你發現想寫的項目沒辦法給出 3 ~ 4 句像上方例子的說明,建議考慮換其他項目,或是檢討該項目為什麼無法給出句子。很多時候,殘酷的說,是當下沒有認真做 Project。如果原因確定,之後的 Project 就得改善這方面。

刷面經題

刷面試經驗題如同寫考古題、考模擬考,讓你更貼近面試實際情況。面經之所以存在,是因為那些題目有很高的機率在面試中遇上。寫面經的時候心中期待的會是面試碰到算賺到,沒碰到當練習不虧。

面經取得管道是各個論壇。面試後許多好心人會分享 online assignment 遇上什麼問題,phone interview 面試官問了什麼,on-site interview 又問了什麼。因為沒有標準答案,所以大家會熱烈討論。也因為面經有時效性,每過一段時間會有新的題目,所以怎麼使用面經也是有竅門的。

原則是,確定要面試後再開始看面經,除了 Google 例外。履歷投完後,如果收到 OA 再上論壇查可能的題型,先準備好解法。確定有 phone 或是 on-site interview,用一個禮拜的時間複習每一道題。Google 例外的原因是他們公司除了 OA 外,其餘的面試題目靈活多變。這裡我建議可以把 Google 的面經當成 Leetcode 2.0。就把它想成訓練解題的必要一環。

寫面經也有方法。因為他是面試真題,請盡可能模擬面試當下的情形,讓面經發揮最大效益。面試中我們有的只有白板跟筆,試著用紙筆跟自己解釋題目、提出想法、推演解法正確性、分析複雜度、寫出程式碼,將這個流程透過面經熟練於心。

最後,面經和 Leetcode 題目最大的不同是,題目定義不一定明確,不像 Leetcode 一樣給你明確的 input 和 output。更多時候,面經就是拋出一個模糊問題,讓你定義輸入輸出,最後用程式解決。

練習口說

面試口說分成兩個面向。

  1. 解釋解題
  2. 解釋過去經驗

當我們刷面經題時,你會需要練習解釋想法,這部分請在刷面經題時確實練習。

另一方面,學會解釋過去經驗是非常好的利器對付 behavior questions (針對亞馬遜)。 如何解釋過去的經驗,我推薦可以用 S. T. A. R.。這是我準備 amazon on-site interview 前 HR 給我的準備資源。STAR 的精髓是將一個過去的經歷和挑戰分成易於瞭解的四個關鍵點,以下是簡單描述。

  • Situation:狀況是什麼。
  • 例如,時間管理的挑戰,今天週二才說週五有團體報告要交。同時這週有兩科有期中考。
  • Target:目標改善成什麼樣子。
  • 例如:完成團體報告,期中考盡可能考高分。
    Action:我做了什麼。(這裡請專注在自己做了什麼,而非團隊做了什麼。面試官是面試一個人,不是一個團隊。)
  • 例如:趕緊安排跟組員們開會溝通,決定好各自負責的部分。協調出我負責 ios App MVC 設計和 prototype 實作,因為這部分我熟悉可以很快產出。剩餘的時間,與同學閱讀分享的筆記衝刺期中考。
  • Result:最後的結果如何。
  • 例如,MVC 架構上有小瑕疵,於是我花了更多時間調整 prototype,同時期中考科裡面,某些章節不是那麼重要,所以我將部分讀期中考時間拿去支援實作 prototype。最後報告順利完成,期中考只錯那些偏門的章節,結果合乎預期。

當然不是每一個故事的結局都是好的。大方承認 Result 不好,接著解釋下次遇到一樣的狀況可能改善空間,也是很好的回答。

  • Result:最後的結果如何。
  • 例如,以剛才的例子接續。MVC 架構不理想,prototype 無法實作。期中考全考偏門的章節,我全都不會。結局不好,我覺得在期中考的部分需要多搜集歷屆考題,看看這個教授出題偏好。同時得重新複習 MVC 架構,避免這方面以後判斷錯誤。

學會講故事後,接下來就是應用在面試上。亞馬遜面試都會有 behavior questions,面試前請先用STAR準備好親身的經歷、挑戰、故事,最後想想這些故事該怎麼帶到亞馬遜的14個 leardership principles。相信我這不容易,一定得花時間準備。有些問題就是想強行暴露我們不足,例如 Biggest mistake and what I learned? Tell me about a time a project failed? 這類問題請準備好,回答得好很加分。亞馬遜 HR 跟我說過,成功的經驗固然很好,但是他們更想知道一個人失敗的經驗。因為失敗才代表你在做不擅長的事,你在學習。Learn and be Curious :)

最後一定要強迫自己講出聲音練習,怕尷尬的話找個四下無人的地方,寫好講稿反覆的念像是準備演講比賽一樣。當時面試的前一晚,我吃完飯花了三個小時在飯店房間一個人大聲唸出我準備的講稿,直到我覺得不會結巴或是忘稿為止。唯有這樣在面試官前我才有足夠的信心,因為我已經盡全力準備了。

小結

有了履歷成功進入面試,熟練刷題和講故事的能力,基本上面試就準備的差度多了。下一篇實際面試講的是我面試的心路歷程。