[美國生活] 準備實習面試紀錄

前言

Yi-Ting Lin
8 min readJan 4, 2020

就在把最後一份作業上傳以後,我的寒假就真正開始了,從今年八月初飛到美國後,短短的四個月內大概是我人生經歷改變最大的一段時間了。在台灣工作了三年以後,要重拾學生身份真的是花費我一番功夫,再加上要適應生活還有找實習等等的,也真的是很充實的一段時光。趁著回台灣的空閒時間在我記憶猶新的情況下把這一切記錄下來,一方面希望能夠幫助到有需要的人,二方面也重新檢討中間好與不好的地方讓自己可以再成長。

重大時間表

2019.4 收到CMU錄取通知

2019.6 辭職回到老家並且開始準備leetcode

2019.8 正式抵達美國匹茲堡並且開始修改履歷

2019.9 參加CMU career fair (TOC)並且找人內推以及海投

2019.10 收到第一個實習offer (From Ambarella)

2019.11 收到第二個實習offer (From Uber ATG)

2019.12 回台灣放寒假

準備 — 在到美國之前

如每一個想在美國當軟體工程師的人所預期,在美國找實習可以說是競爭到白熱化的地步,所以我在錄取學校以後,就打算提前辭職然後回到老家準備。

而準備的東西不外乎就是leetcode,在美國面試,不論SDE (Software Develop Engineer),還是跟自駕車或者Computer Vision (CV)相關的職缺,第一關都需要考coding,而準備這些題目的最好方式就是透過leetcode來熟悉題型以及複習資料結構。

Leetcode題目本身就是考資料結構與演算法的運用,題目五花八門,從單純考各種資料結構與演算法的題目,到利用各種絢麗的包裝它們讓你看到解答以後恍然大悟的題目都有,有時候不得不佩服這些面試官,創意程度大概不輸給一些政客提出的天馬行空政見(誤。

而在一開始面對這些題目的時候,我個人是先刷各種分類的題目,例如第一天練習DFS (Depth-First search),第二天練習BFS (Breath-First search),以此類推,其實常考的算法就那幾種,一天一個分類,不出兩個禮拜大概可以刷過一次。而這樣做的好處是在一開始對於leetcode題目不熟悉的前提下,有分類這個提示,做起來會有方向一些。

而通常大部分題目,在第一次看到的時候 (尤其一開始的時候),是很難直接做出來的,這時候我就會去看一些網站來參考解法,除了Leetcode的討論區以外,我還看了以下兩個網站:

  1. 花花醬:我覺得他的影片跟講義做得很好,當真的想不通一些原理的時候來看他的講解覺得幫助很大。
  2. LeetCode All in One 题目讲解汇总:一個中國人的博客,裡面有大部分題目的解法,有時候懶得看討論區的英文就會來這看個省時間。

我在離開台灣前大概刷了300題左右,不過現在回頭來看,我會認為刷leetcode的精髓在於精而不在於多,因為一般來說面試約45–60分鐘不等,而面試官除了第一題以外,通常會準備一到兩題不等的follow-up題目,如果你能夠把他準備的題目都完成的話,通常進入下一個階段的機率就非常高。

因此,我會認為前300題刷完第一次後,比起刷新的題目,應該再多刷過幾次這些經典題目,確保自己在少量提示甚至沒有提示的情況下,能夠用30分鐘以內寫完並且正確執行,這樣才能夠真正符合面試的需求。

撰寫履歷

拿我自己在台灣求職過的經驗來比,我會覺得在美國求職履歷重要很多。台灣的對於求職者的學歷要求相對較高,因此可能校名就已經佔了會不會錄取很大的比例,造成其實名校畢業的學生,往往在履歷上花的時間就不會那麼多 (像我連我之前在台灣求職的履歷檔案都找不到了XD)

但在美國,就算你是名校的學生,也不保證你能夠拿到面試,甚至有時候名校的peer pressure會讓你直接被拒絕,連面試的機會都沒有 (像是Facebook就是有名地注重各個學校人數均衡的公司),所以名校在美國並不保證有面試。以我自己舉例,含內推、學校的career fair以及海投,我大概投了超過一百個職缺,而真正有進入到面試的大概不到10間,所以大概低於10%的回覆率,有時候真的覺得自己讀錯學校了(誤

回到修改履歷的正題,我認為有一個問題是要先問自己的,尤其是有工作經驗或者有相關研究經驗的人更是要好好思考的:

我的履歷想要凸顯的經驗主要在哪一個領域?

或許有些人會不同意我的看法,畢竟在美國很大的一個比例是做SDE,主要還是在刷題,個人經驗只是陪襯。這我同意,但我到了美國以後,發現其實像是無人車、CV甚至是Machine Learning (ML) & Deep Learning (DL)的職缺都很多,而這些就很看重面試者的背景,如果背景符合,拿到面試的機率就相對高很多。

以我自己舉例,我在台灣的工作經驗主要就跟CV相關,而當我去學校的TOC攤位說我對SDE很有興趣的時候,基本上沒什麼說服力,而從empolyer的反應也大概看得出來他對我沒什麼興趣;而當去CV相關的攤位的時候,就明顯的可以感受到employer有興趣,甚至直接給on-campus interview的都有。所以我個人認為除了大公司 (FLAG)以外,大多數的公司還是會面試者除了刷題以外的背景的。

而當真正知道自己想要凸顯的優勢以後,在撰寫履歷上就會比較得心應手一些,有些人會認為可以把履歷分成兩份:一種是自己專攻的領域而另一種是應徵SDE的履歷。我個人嘗試以後,覺得SDE的履歷看起來弱非常多,因此就單純專攻CV的領域了。

當完成履歷以後,建議可以不要臉地到處找人看履歷,不管領域或者英文程度 (當然至少要看得懂英文XD),不同的人往往會給出沒想過的建議,這些都是很好的修改方向。同時也可以多多利用學校的資源,像是我就常常去CMU的career center,個人覺得幫助忙大的,也可以順便練習英文口說。

取得面試機會

取得面試機會的管道我認為主要有以下幾種:

  1. 內推:來源為自己人脈、linkedin和一畝三分地
  2. 公司到學校徵才:在一開學的時候,會有很多公司來學校徵才,這時候通常可以投遞履歷
  3. 學校career fair:跟2.類似,差別在於是學校舉辦的求職博覽會
  4. 海投:自己到公司的網站上投

我個人覺得效益大概是1 > 2 = 3 > 4,能夠找內推就盡量找內推,自己的同學學長姐都是很棒的資源,特別注意找不認識的人 (例如linkedin或一畝三分地)幫忙的時候,我通常都會在寄信的時候簡述我的背景以及經歷,讓對方更瞭解我,解釋為什麼自己適合這個職缺,畢竟別人也有選擇要不要幫忙的權利。

準備面試

從去美國之前一直到真正在準備面試的過程中,常常聽到這個策略:

用小公司來練手感累積經驗,換取大公司成功

我其實蠻同意這個策略的,但實際上執行起來真的是困難重重,而且我自己遇到的狀況是光是拿面試就很難了,所以也就沒有遵照這個策略來執行了,之後再找正職的時候會再想辦法試看看。

回到面試本身,我自己遇到面試的種類有分以下幾種:

  1. 與HR的面試:這種面試通常都是比較輕鬆的,公司在真正把你的資料轉給技術部門之前,會花一些時間了解你的背景,並且跟你簡介公司在幹嘛,通常會走在技術面試之前。
  2. Online accessment (OA): 這種有點像是線上測驗,通常是公司技術面試的第一關,題目有技術性的選擇題或者coding題目,規定要在時間內解出來。
  3. Coding面試:前面有提到的,同長為45–60分鐘不等,面試官會先給出一道coding題目,並且帶有一到兩題的follow-up題目。
  4. Background面試:這個部分也是技術面試,時間通常為一小時,不會問coding題目,而是從你的履歷裡面拿相關的背景知識來考你,像是應徵CV相關的職缺,相關的背景知識像是geometric就會被拿出來問。

1.沒什麼好提的,就單純聊聊天。而2.的話大部分都是可以查語法的,也不需要太大的擔心,多練習即可。

至於3.我會覺得最重要的就是要練習把程式題目完整地表達出來,除了刷題以外,就是需要多跟別人模擬面試。例如用一個google doc然後嘗試先把自己的思路用英文講出來給對方聽懂以後再開始coding,同時在coding的時候還需要注意與對方對話,確保面試官知道你每一行code在幹嘛,通常面試的時候我會大致上遵守以下的SOP:

  1. 拿到coding題目的時候快速掃過,並且確保自己了解題目,有問題發問
  2. 開始與面試官解釋自己的想法,最好使用例子證明自己的演算法會work
  3. 面試官同意後開始coding,當中繼續一邊撰寫程式一邊講述自己的想法
  4. 寫完以後跑一些corner case來確認算法正確

而再Background面試的部分,就得多充實自己的背景知識,我其實自己也沒有準備的很好,就單純運氣很好地在面試uber atg的時候剛好考到課堂上老師有提到的CV背景知識而已。

後記 & 心得

在順利找到實習以後,心裡有踏實一些,畢竟一邊要顧及課業,另一方面要找實習真的是一件蠻辛苦的事情,我也大概列了一下我認為我還可以更好的部分:

  1. 刷Leetcode:刷得精真的比刷得多還重要,要確保自己可以在時間內在沒有或少量提示下能夠寫出高質量的code並且舉出可能的corner case
  2. 模擬面試:這個也很重要,對於我自己來說,如何用英文正確地表達我的程式或者一個技術的概念真的是需要練習的,可以多找同學練習,如果能夠找英文為母語的朋友幫忙聽更好!
  3. 背景知識:在我自己找實習的過程中,蠻多職位都是跟無人車相關的職缺,因此基本知識像是CV、ML與DL的問題都有出現,雖然說這些課堂上多少都有提過,但還是需要額外複習,在面試的時候才不會顯得生疏。

找實習的過程真的不是一件簡單的事情,在尚未確定落腳處那種茫然跟無知是難免的,但適當地舒壓真的很重要,保持好心態一步一步前進,好結果終究會降臨的!

在這邊也感謝一路上幫助過我的前輩們以及一起奮鬥的夥伴們,還有遠在太平洋彼端的朋友與家人,這些支持我都深深放在心裡!

--

--