找工求職4 - 實際面試

最後來到面試環節。面試的詳細過程我不詳細贅述了,只挑一些我印象深刻的地方記錄下來。這篇我會將囊括下列公司的面試經驗。

  • MathWorks
  • Google
  • Amazon

MathWorks

MathWorks 就是大家熟知製作 Matlab 的公司,地點在清淨的波士頓郊區 Natick。我請朋友幫我內推。

Video

收到履歷後,通常 MathWorks 會寄給我們一個網址。網址裡面是五道問答,像是自我介紹、為什麼投 MathWorks、簽證問題等等。讓你用視訊鏡頭錄影後上傳就算完成。

OA

MathWorks 的 online assignment 很特別你可以選擇寫程式題或是寫數學題,當然他不反對你兩個都寫。通常網路上會有許多面經,有機會打開連結做題時會遇上一樣的。當時我沒有那麼幸運,我遇上非面經題,直接跟他拼了。寫完後,我無聊點開數學題來做。裡面問一些機率和Matlab 語法相關問題,有興趣可以一併做了。

Phone

接下來到 Phone interview。電話中一位印度面試官挑了 linkedlist 和 tree 的問題,我大概花了 30 到 40 分鐘解完。剩下的時間他問問我知不知道物件導向設計讓我解釋一番,這部分我並沒有答好。物件導向是指將程式寫成物件的形式,以人的角度來說,這樣的程式能夠較好的被理解和維護,以電腦的角度來說,這樣的程式被模組化後可以輕易重複使用。我過往的經歷中,最常用到的大概是繼承。其餘的像是多載、封裝、覆寫等等比像是輔助特性。我拿出之前AI 課改作業說明我如何用繼承,他似乎不滿意,不過我已經把知道的都告訴他了。盡力就好,哈哈。

On-site

我沒有來到 on-site,我也不知道為什麼。面完試後隔天,我收到那位印度面試官主管的電話。電話中說,人資覺得 OK 就會來安排 on-site 面試,沒想到隔天系統上顯示拒絕。Hmm… 看來人資覺得我不 OK 呢。雖然感到意外,但是也沒辦法,找工作就是這麼無常。當時我還有 Google 的面試我就沒放在心上了。

Google

Google 算是廣發面試廣招人的公司了,面試過程也制式化,所以很適合刷題勤的人拿下。

OA

Google 的 online assignment 老實說蠻有水準的,不過在大家面經的幫助下大家拿到 Google OA 都是秒殺,因為只要準備近期常出的題目,撞題的機率極高。我那時候也是靠著大家的面經迅速通關。

Phone

上次實習面試在電話面試失敗,這次得從電話面試重新站起。Google 的電話面試再度來到我面前,我卻因為忙於助教的工作沒有時間準備只好硬著頭皮上陣。我被問到大整數運算,我試著用 linked list 解決,結果不是很理想,許多 corner case 處理上不夠仔細,好在面試官沒有多說什麼,陪同我一步步完成。兩個大整數加法,試著考慮減法,然後寫完程式最後交上去。我面試的職缺不是一般熟知的 SWE,而是 SETI。有興趣的人可以查查兩者的差異,我個人不排斥做 testing infrastructure。過了一週後,HR 打電話來說我過了,正在幫我準備 on-site interview。我很意外,因為我覺得電話面試表現不理想,這讓我更想把握這次得來不易的機會。

On-site

我和HR約了稍微晚一點的時間來 onsite interview,為了就是要盡全力準備。來記得那時候leetcode 我大約刷了 300 多題,從得知要準備 google on-site 時,我全力衝刺寫到 500 多題,同時也寫了無數的面經題,用紙筆反覆推演,讓全身熟悉解題的感覺。On-site interview 是一個美好的體驗,HR 會幫你安排好住宿和一切費用,你可以用這些優勢做好面試前的準備。

Google on-site 的題目十分多變,也很有挑戰。雖然我準備得很充足,但是到了當下還是花了一點時間想了一下。幸運的是,所有的問題我都有給出解法,我覺得我已經超常發揮了,使用了120%的實力,Offer 應該離我不遠了。想不到沒有那麼簡單。兩週後,我接到 HR 的電說想要再加面兩輪,然而因為 head count 已經用完的關係,即使我通過也無法順利在今年畢業。他希望我撤回申請明年再戰。我問他有沒有亞太地區的職缺可以補上,於是他幫我轉給亞太地區的 HR,這樣一來我有了延長賽可以打。

延長賽意外很快就結束了。先是日本方面很快就拒絕我了,台灣方面則是有一位來自新加坡的 HR 接洽,他幫我轉給台灣的HR後,就沒有下文了。Google 這條路徹底走完,雖然結果不理想,但是已經盡力沒有遺憾了。

Amazon

亞馬遜的機會從我請FB上的朋友幫我內推三個職缺而來。之所以沒有走校招,因為前一年我投了校招後完全沒有動靜。因此我想投投看社招的職缺,也許可以解決這個窘境。很幸運,我被撈起來了。

OA

內推完後,我以為是無聲卡所以沒有多加理會,直到我在垃圾郵件夾裡發現當天就要過期的OA … 幸好有發現。當下我立刻卯起來搜尋面經相關資訊,好在資料量不大。下午發現,再花個 3-4 小時練習完面經就直接上戰場了。很幸運,題目有在面經的範圍裡,我還記得是Union Find 系列,順利解掉。與校招不同,社招的 OA 沒有奇怪的 behavior 選擇題,簡單直接算是對我胃口。我不敢想像要我做閱讀測驗的後果,恐怕我不能在這裡悠哉寫文章才對。

On-site

他們似乎急著招人,跳過 phone interview,直接來到 on-site。on-site interview 我選了一個奇怪的時間,我這屆的畢業典禮。原因我忘了,可能是帶著如果沒完成這件事,我就沒心情參加畢業典禮吧!

有了準備 Google on-site 的經驗和培養的實力,這次準備起來更順手,相對的這次準備的東西卻更多。除了複習面經,也要準備 behavior questions 和 system design 的問題。我將心力大量灌注在前者,後者我只有簡單看過 CAP 的概念和一些情境思考題後就上戰場了。

On-site 的當下我覺得我表現普通,反應不夠快,解題思路也沒有交代很清楚。Behavior questions 也沒有回答的像練習一樣順暢。甚至最後一輪還讓面試官幫我上了什麼是 Load balancing 一課。恩… 最後HR打來說我通過面試了,老實說蠻意外的。我猜可能是他們用 SDE2 的標準面試我,而我沒有達到標準索性給我降一個 level 讓我過就是了。但更重要的是,他們那時候挺缺人,有時候公司為了達到招募人數放寬標準也是有可能。最後,我順利在亞馬遜工作到現在。

一個小趣事,當初我面試的組跟最後我上崗位組不一樣。算是幸運,HR 沒因為原本的組不收,就把我晾在一旁。

結語

回顧這趟找工求職之旅,我體會到找工作縱然與實力和準備有相關,但是最關鍵的時候卻是依靠身邊的貴人幫忙和看運氣。如果不是教授提供我工作機會,如果不是剛好亞馬遜正在擴招,即便我再天生神力做了許多 project 刷上千道題,也不會是現在這個結果。

一路走來,找工作對我來說,是99分的努力加上1分的機運,而那1分的機運卻比你所有努力都來得重要。

在灣區有著令人稱羨的工作,是一件令人舒服的事,可是我們不能因此自負。許多人不像我們有這樣的機運,他們也許正在靠著自身努力想要扭轉命運。所以,請溫柔地關心他們。設想如果我們與他們在一樣的處境下掙扎,我們有辦法順利突破嗎?每個人都為了更好的生活努力著,少數人較幸運罷了。

最後,哪些東西是自己花時間與精力爭取而來,哪些機會是別人無條件提供給我們,分清楚兩者不同,然後記在心上。我們可以因為自身努力而驕傲,但不能僅僅因為成就而傲慢。