【美國留學】求職心得:實習篇

踏上美國土地後,第一件煩惱的事情就是如何順利找到實習,本文將分享我的面試經驗以及我是如何拿到 Google Offer 的。

I-No Liao
工程師小夫妻
10 min readDec 31, 2019

--

2020 Summer Internship

  • 申請職缺:Software Engineer Intern (Summer 2020)
  • 申請數量:89
  • Online Coding Assessment:10
  • Coding Interview:Akuna Capital (2), Google (3), TuSimple (1)
  • Offer:Google (Google Cloud)

從數據上來看,我履歷投得不多,身邊許多同學都是兩三百間在丟,在這邊履歷沒扔個 150 間都代表不夠積極找工作,事實也是如此,我學期後半段幾乎都沒有繼續投履歷,完全專心在課業上。來美國前一直說服自己不要太認真上課,要全力以赴找工求職,但實際上非常難做到,畢竟課業方面不僅是每天都要趕數不清的 Deadline 而已,每次的作業還都非常具有吸引力,實在難以讓我對課業敷衍了事。

從入學前每天固定刷 3 題 Leetcode,到學期前半段每天只刷 1 題,到最後沒在刷題,花在找工作的精力可以說是直線下降。再者,拒絕信一週三五封真的很容易令人灰心,要在美國找到一個實習或正職,不只是實力,還需要耐力跟運氣,總體而言真的比台灣求職難上太多。雖然我沒有拿到太多面試,但大體而言,若要我給自己面試的表現打分數,我會給自己 90 分,因為我相當程度地掌握了面試最重要的技巧:溝通。每個面試者都很會寫 Code,要如何展現自己的不同呢?我認為是良好的溝通。以下就來介紹我的面試心路歷程吧!

Akuna Capital (Rejected)

  • 網路申請 (海投)
  • 面試語言:Python
  • Online Coding Assessment (選擇題 / 演算法 / Pass)
  • Phone Interview (演算法 / 50 分鐘 / Pass) (Oct. 08, 2019)
  • Final Round Video Interview (演算法 / Behavior Question / 90分鐘 / Fail) (Oct. 17, 2019)

Akuna Capital 是一家薪水跟 Bar 都極高的 FinTech,相當不容易錄取,這也是我第一個拿到 Phone Interview 的公司。我所面試的職缺是 Web Development,主要工作是將後端的金融數據取出後,由前端用網頁的方式呈現給客戶。這職缺對於前端的要求極高,必須要設計一個與使用者互動良好且速度極快的前端頁面。

Phone Interview:考官要求用 Test-Driven Development 的方式作題,也就是先寫 Unit Test 再實際 Implement 演算法。這輪面試中,我的狀態極好,也遇到了非常 Nice 的印度人考官。開頭考官先花五分鐘過了我的履歷,並考我幾個 Parallel Programming 及 Distributed System 的觀念,再來直接進入 Coding Interview。

Finan Round Video Interview:前半段的考官是個白人,基本上就是甩個難題在我臉上,然後整個過程中就是 “ Hm… Ok… I agree ”,完全沒有互動交流,整體感受不是很好,基本上我覺得面試前 10 分鐘以後,就已經宣告沒有指望了。最主要還是我自己狀態不夠好,沒有把題目解掉。後半段考官是個華人,主要問 Behavior Question,雖然相談甚歡,但心中明白已經於事無補了。果不其然,一週後 HR 通知 Good luck for job searching…

當時最接近拿到 Offer 的機會沒有好好把握住,真的很難過,對我而言是個不小的打擊,除了都已經 10 月中還兩手空空沒其他 Offer 之外,真的很想去 FinTech 感受一下高頻交易的威力,並磨練磨練 Web 前端的功力。只能安慰自己也許明年找 Full-Time 還有機會。

Google (Offer)

  • 內部推薦 (感謝超強的交大電子系同學:Google Engineer 洪摯友)
  • 面試語言:Python
  • Online Coding Assessment (演算法 / Pass)
  • 1st Phone Interview (演算法 / 50 分鐘 / Pass) (Oct. 14, 2019)
  • 2nd Phone Interview (演算法 / 50 分鐘 / Pass) (Oct. 14, 2019)
  • 3rd Phone Interview (演算法 / 50 分鐘 / Pass) (Oct. 25, 2019)
  • Project Match — Google Cloud at Pittsburgh (Project / 30 分鐘/ Pass) (Dec. 04, 2019)
  • Project Match — Devices and Services at Waterloo (Project / 30 分鐘 / Pass) (Dec. 05, 2019)

Google 是我第二個拿到 Interview 機會的公司,本身完全不抱希望,當時我實在不覺得我能夠過 Google 的面試。不過我還是做足準備,請 Google 工程師洪摯友幫我 Mock Interview 兩次,過程中學到很多應試的技巧,也逼自己習慣如何用 Google Doc 做題。非常感謝這位友人,這是絕對是我最終能夠順利攻克三輪面試的關鍵。

1st & 2nd Phone Interview:第一次面試包含了兩輪 Back-to-back 的 Phone Interview,兩個不同的考官輪流打電話來進行面試。第一輪面試的考題相當簡單, Follow-up 問題我也順利地答出來。第二輪面試的考題也不難,但 Follow-up 明顯較難,最終我只寫出 Brute-Force 的解,沒有來得及把 Optimized Solution 寫下來,只有口述想法跟預期的做法。即使如此,很意外地,考官竟然覺得我表現不錯,還很口語的甩了一句 “ I think you’re pretty damn good “,讓我緊張的情緒紓緩了不少。然而,畢竟沒有把最優解寫下來,心中仍認為會被淘汰掉。

3rd Phone Interview:幾天後 Recruiter 通知需要再加面一次,當下非常開心,代表還有一次跟 Google 工程師一起解題的機會,於是約了最快的時間,開始了面試。這次面試中,我花了大半時間在釐清問題,想算法的過程中也有點卡,向考官要 Hint 時,考官明確表達不能給 Hint,因為這就是他想要考我的部分,所幸後來我跌跌撞撞地找到了解法,一旦找到解法,Coding 實現的部分很快速地就做出來了。這輪面試非常的驚險,若是後來無法想到解法,一定無法過關的。非常感謝這位考官營造一個舒服的氣氛,雖然沒有給 Hint 但一直跟我說 “ I think you’re very close “,使我不會因為卡住就過度緊張。

Hiring Committee:完成三輪面試後鬆了口氣,當時我仍然不覺得能夠過 Hiring Committee 的審核,畢竟自己是轉專業選手,履歷真的很差,本來就念 CS 的選手們即使有比我稍差的面試表現,履歷也還是碾壓我。然而,Google 讓我大吃一驚,竟然過了 Hiring Committee 的審核,順利進入 Project Match 階段!

Project Match 階段我最感謝的人是我的 Recruiter Alexa,不僅很積極的找我約面談,告訴我 Project Match 的步驟,甚至在修改 Google Project Questionnaire 上給我非常明確的方向,我相信我只等兩週就有兩個 Team 想找我面談的關鍵就在於此。

1st Project Match (Google Cloud at Pittsburgh):這個面試我是在優美的 Rice 校園完成的,那天的天氣非常舒適,坐在圖書館旁的咖啡廳外與 Intern Manager 暢談該 Project 的內容。當下我就覺得這個 Team 應該會發給我 Offer,因為這個 Project 所需要的 Technical Stack 我正好都很擅長並且也是我的興趣所在,果不其然,當天下午直接收到 Recruiter 的通知說該 Team 錄取了我。

2nd Project Match (Device & Service at Waterloo):由於前一天已經得知我被錄取,這次的面談我更加能放輕鬆的跟 Intern Manager 暢談我的想法,基本上這個 Team 的所需要的技能跟前一天的 Team 是相仿的。談完以後 Manager 跟我說 “ See you in a few months ” 害我尷尬了一下,因為我心中還是比較想去前一天的 Team 的。

最後通知 Recruiter 我的決定後,隔天順利地拿到 Offer,基本上確定明年暑假要前往 Pittsburgh 展開我做夢都沒想過的 Google 實習大叔之旅。整個面試的過程除了戰線較長之外,體驗極佳,遇到的三位考官均非常的專業,不論是在溝通或是時間的控管上,讓面試者能夠在最好的環境氣氛下進行作答。自己覺得我在三輪的表現最好的部分是溝通,整個解題的過程中,我的嘴巴都沒有停下來過,在此點出幾個重要的訣竅:

  • Think out loud:這其實是 Google 給面試者的建議,絕對要把自己的所有想法講出來,讓考官知道我們的思路,這招也有效地讓面試過程不尷尬。
  • Clarification:把題目問清楚,包含 Input / Output、題目定義、時間與空間複雜度的預期、預期的演算法等等。這些問題都釐清以後,再請教考官是否可以開始做題。
  • 邊寫邊講:非常困難但非常受考官親睞,整個過程中我就是不停地講講講,邊寫邊講,甚至覺得自己有點吵,但考官們都非常喜歡!建議大家可以在平常刷題時就這樣邊刷邊講。
  • 禮貌與主動交流意見:過程中我一直保持禮貌,盡量地讓考官舒服,並盡量主動地詢問考官的建議。比如說要問問題時我總是說 “ May I clarify that… ”,徵詢意見的時候,我總是說 “ Do you think my algorithm is a good way to go? ”,然後最後再加上 “ Thank you so much for reminding me that…”。

TuSimple (Rejected)

  • 內部推薦 (Rice 畢業學姊)
  • 面試語言:Python
  • Phone Interview (演算法 / 50 分鐘 / Fail) (Oct. 08, 2019)

當時我已經進入 Google Team Match 流程,又恰好正經歷期末地獄,因此完全沒有準備就應試,相當然爾,結果就是沒通過面試。TuSimple 的面試與眾不同,這次的 Phone Interview 實質上比較接近 Online Coding Assessment,Recruiter 會先打電話來確認寫程式的連結可以正常運作,然後就沒有然後了,電話掛了開始寫 Code,所以題意不清的部分完全無法詢問,即使題目不難,但有幾個疑點無法提問,我就草草應答,放棄了這個面試。

結論

非常慶幸自己能夠順利找到實習,雖然過程艱辛,但能夠到夢寐以求的公司實習,一切辛苦都是值得的。總體來說 Google 的面試不難,只要掌握溝通技巧,就可以從考官那兒得到不少的暗示,也可以在考官心中留下良好的印象。接下來的一個學期終於可以好好專心修課,堅實基礎知識,並期待自己能夠從暑假的實習中學習業界軟體開發流程,當然最希望能夠順利拿到 Return Offer,當個真正的 Googler!

--

--