【前言】
潛水了很久,最近看板上有些人分享申請Amazon、微軟等公司實習的經歷,自己前些日子也在Medium上寫了一篇文章分享自己過去半年在美國申請實習的相關經驗,正好又都是不同的公司,所以想說趁寒假有空、稍微調整下內容重新分享在Dcard上,給自己原本交友圈外的卡友們,有需要時也能參考我過去半年來準備面試的經驗與一些小撇步。

我想說的是,不管是不是在申請美國的軟體工程師職位,希望這些內容(各家公司的面試體驗、我自己如何準備面試等等)對於對這方面工作有興趣的台灣朋友們也都有參考的價值。

一些最基本的背景資料,我自己目前在紐約念研究所。大學時期最一開始是念商學院,四年前開始自學寫程式、三年前正式開始跨修資工學程。

【面試結果】
錄取: Facebook, LinkedIn, Niantic (Pokemon Go), Yahoo
面試後被拒: Google, Salesforce
放棄最後一輪面試: Lyft(已簽 Facebook)
線上筆試後被拒: Riot(被通知實習生招滿了)
履歷被拒: Amazon, GitHub, Robinhood, Airbnb, Front, Asana
無聲卡: Cisco Meraki, Slack, Twitter, Pinterest, Microsoft, Twitch, Reddit, Medium, Atlassian, Apple, Spotify, Microsoft, Dropbox, Coinbase, Square, etc.

(以下我會分享幾間我個人覺得特別有分享價值的面試體驗,假如你對於有列在以上、但我沒特別分享的公司有興趣的話,歡迎留言詢問!)

*Google
總體來說,我覺得 Google 面試難度真的滿高的,也是讓我學習非常非常多的一個過程。我自己一開始其實也並不希望這麼早面試 Google 這家大魔王,但是因為自己把履歷上傳到美國 Grace Hopper Conference Resume Database 裡面後被 HR 主動聯絡,自己一個熱血過頭就硬著頭皮上了。

首先,GHC 是美國這邊一個有名 Women in Tech 的博覽會,Conference 期間也有一個很盛大的 Career Fair,幾乎所有第一流的公司都會在那邊招人、現場面試,而他線上就有個資料庫是給學生上傳履歷,這些參展的公司就會在八月底、九月初的時候就先挑選出當天想面試的學生。

我自己當時因為沒空真的飛去參加這個展覽,所以就跟 Google 改成用傳統電話面試的方式。失敗過後,我會建議 Google 這種面試考題非常靈活的公司真的還是不要第一間馬上面。還是找個幾間先來練習一下。一開始就算 Leetcode 這種刷題網站題目寫得非常順、有了點自信,但是我必須再次強調一件很多前輩們也都說過的概念「電話面試跟純刷題真的不一樣」、「電話面試跟純刷題真的不一樣」、「電話面試跟純刷題真的不一樣」。因為很重要,所以說三次。

電話面試時不只是要把 code 寫出來,同時還要用英文把自己的邏輯講清楚,用哪種資料結構儲存、用哪種 Algorithm 來跑這個邏輯、甚至整整 100行 code 的運算複雜度到最後在口頭上演算 test case 等等的,要在短短 45 分鐘內解決兩題、並且讓 Google 等級的面試官滿意,真的不是一件簡單的事情。當每次寫錯時,面試官會跟你說 “No, this is not going to work” 時壓力可大了。

所以 again, Google 的這次面試經驗,把我打回原形、好好反省,也給我了很好很好的經驗值,對於後面的其他面試幫助實在很大。

*Facebook
Facebook 面試絕對是幾間大公司裡最有效率的。臉書一向以「Move Fast 」為他們的中心思想,整個申請流程也是效率十分高。被內推之後隔不到一週就收到 HR 的聯繫來約面試;第一輪面試後兩天也馬上收到通知、並且約最後一輪面試;最後這輪面試更誇張,傍晚面完,下個工作天就馬上收到錄取通知。

最後一樣再談一下 Facebook 的面試難度。

我個人認為面試難度這種事情其實也很看運氣。看面試官當下的心情(?)還有他決定要出的題目。但就個人經驗而言,我覺得難度是 Google ≥ Facebook > LinkedIn。面試官給我的印象上是 Facebook & LinkedIn 的面試官比較願意討論。遇到卡關的時候,都還滿願意跟我先討論我打算運用的演算法跟資料結構,確定我的方向正確之後才開始寫 code 避免白費時間寫出錯誤的 code。

*Niantic
我個人從這款遊戲問世的第一天就開始玩到今天。但除了這款遊戲本身在台灣很紅、想必大家都知道之外,我再稍微介紹一下 Niantic 這家公司的背景。他們其實原本的 Google 的一部分,2015 年的時候才又獨立出來成為一個公司。他們內部的工程師很大部分都是從 Google 一起出來的,工程技術(尤其 AR/VR, Gaming 相關)強度絕對夠,發展其實也不錯,最近也不少大公司的工程師會往那邊跳槽。

畢竟是 Google 體系出來的,我真心認為他們面試是這幾個月以來面過最難的⋯⋯ 我自己也不知道我是怎麼過的⋯⋯

總共四輪面試(HR → 第一輪 tech → 第二輪 tech 是 back-to-back 連續兩輪)中的三次技術面試裡,我總共被考了四題的 coding 題目,其中最簡單的題目在 Leetcode 上是被標註成 Hard,而其他就完全不是 Leetcode 上面找得到的題目。考得非常靈活,而且也要求一定要是最佳解法,可以用 O(n) 解出來的題目用 O(n logn) 就完全不能接受。技術上的嚴謹程度真的完全看得出來是 Google 體系出來的⋯⋯

但嚴謹歸嚴謹,有趣的是每次跟不同面試官聊到 Pokemon Go 的時候他們都很興奮、很自豪,真的很像在炫耀自己孩子。說真的滿喜歡他們公司這種所有人都在做同件事情、也以此為傲的氣氛,但自己最後還是覺得自己不適合在職涯剛開始時就去寫這麼 specific 的東西,畢竟以後若要跳槽或是做自己的新創公司,AR/VR/Gaming 這方面的技術並不一定是那麼能夠應用到其他專案上的。

【面試準備與小訣竅】
*刷題
跟我有些私交的朋友應該都知道,我個人是非常不贊同刷題這種面試方法的(雖然我也同意這也是目前能想到、最公平的做法了)。不過既然現在業界的現況就是這樣,那麼不刷題真的是對不起自己,因為刷題不夠而找不到實習的話我也只能說聲抱歉,請你再給我五年去解決這個問題。

以我個人而言,我自認自己底子並不是特別強,所以我也提早做了很多準備。我今年 5/24 退伍之後就馬上開始刷題,甚至我退伍前兩週就帶了 Cracking the Coding Interview 這本刷題聖經進去兵營,趁休息的時間複習基礎的資料結構。

除了 Cracking the Coding Interview 這本聖經級別的書我還滿建議讀一下之外,我個人花了絕大部分的時間直接刷題。透過 Leetcode 這種紀錄了各種面試題目的網頁,一題一題寫,我到八月出發去美國前在台灣就刷了兩百題,九月、十月在美國的期間加起來最後刷到四百題。

刷題的方法網路上很多討論了,我個人是遵循所謂「分類刷題法」:

每天安排不同的課題,例如這兩天就是專門刷 DFS / BFS 這種演算法相關的題目,之後兩天專刷 Array 題目等等。最後在跟某個公司約好面試後,再開始刷該公司考過的題目(所謂面經)。就算很高的機率,還是要準備好面試時候不會遇到一樣的題目,但是還是可以大概了解該公司愛考的題型。

這邊再提一下,就算遇到了一樣的題目,千千萬萬不要直接寫出來,面試最重要的就是討論。一定要好好的把自己為什麼選擇用這個資料結構、這個演算法的原因講清楚。

另外除了刷題網站之外,我趁出發去美國前的暑假上了九章算法班(這篇文章沒有被他 sponsored,純屬個人意見)。我是覺得還滿有用的,尤其我自己底子不是很好,他會把每種類型的資料結構介紹一次、底層怎麼運作的(打個比方,HashMap 的 get 指令不是永遠都是 O(1) 複雜度)、二分法的邏輯是怎麼運作的等等。

*怎麼申請?怎麼投履歷?
一般而言內推都是最有用的。

Facebook, LinkedIn, Niantic 這三家我通通都是透過內推的方式申請的。找內推人的方法有很多,如果你有朋友在這些公司工作、願意幫你內推的話是最好,因為內推的同時,對方也要在系統上幫你寫一下推薦的原因,如果只是找陌生人、他根本不認識你的話這邊可能就會寫得很籠統。

但是如果真的是比較冷僻的公司,像是 Niantic 我真的沒有認識朋友在那邊工作的話,LinkedIn 是你的好朋友。上去 LinkedIn 搜尋該公司的員工,去找有什麼人是比較有共通點的,有沒有大學的校友,沒有的話有沒有至少是台灣人、甚至大陸人的可以聊聊。

再來第二有用的應該是學校辦的 Career Fair,但是我學校這邊的 Career Events 幾乎都是紐約這邊的公司,而我因為女朋友在舊金山那邊上班、我也很執著於那邊的工作,所以幾乎沒用到學校的活動(但是 Oath/Yahoo 就也是這樣拿到的面試),我就不好多評論。

*怎麼在面試時表現自己?
我非常認同一個論點:「面試官會在前五分鐘內決定對你的印象,然後接下來的半小時都是在找證據去 support 他的那個既定印象」。開頭的自我介紹真的很重要,要在那短短的五分鐘內介紹自己,讓對方對你有好的印象,甚至欣賞你,那麼之後的 coding 部分就算犯點小錯再修正,他可能都會往好的方面想說你是能快速偵錯的工程師。

很多人自我介紹就只是很簡單講說自己是誰,在哪裡念書。

但我會建議大家利用這個難得的面試官邀請你開口的時間,好好講自己的熱忱在哪,自己念資工、寫程式是為了什麼更大的目標(為此,我也建議在出發去美國前的暑假可以做個可以 show 的 side project 來證明自己。Lyft 面試時前十分鐘我的面試官也跟我一起玩玩看我的網站)。雖然有時候可能很 cheesy,但是我覺得這小小的習慣就拯救了自己不只一次。

我知道有些公司的面試官寫報告時,上面就要表示「如果今天我們招募了這個學生,你會不會願意當他的 Mentor,你會不會願意帶領他的成長?」這個就不只取決於你的程式碼是不是寫的很好,而是你這個人是不是好相處的,他會願意跟你在同個 Team 工作的。

*面試時保持冷靜
我還記得我在面試 Google 的時候就有那個壓力要持續開口講話,一不講話就覺得氣氛乾掉,好像有點尷尬、自己是不是顯得很白癡,連這個題目都不會解。

但到後面我就比較能自在、冷靜的跟面試官討論。

甚至有時候打起勇氣,跟面試官說 “Sorry, I think I can’t speak while coding. Let me just finish this part and tell you what I’m doing” 或者 “Sorry, can you give me 5 minutes to think on my own?” 像是我自己 Facebook 面試第二輪時候被考了一題跟數學推算相關的題目,我就跟面試官說我需要自己在紙上推演一下,最後拿到 Offer 的事實也證明面試官並不會因為這樣就給我差評,而我也因為那五分鐘在紙上推算出正確的演算法邏輯去寫出對的程式碼。

*Clean Code
最後到了真的要把程式碼寫出來的時候,建議大家盡量遵循自己所選擇的程式語言的 Best Practice 來寫。盡量把寫 code 寫得乾淨、易懂(consistent indentation, meaningful names for variables and functions, don’t repeat code… 等等的,非常建議大家爬文讀一下一些 clean code 相關的知識,我自己在大小公司實習時發現這幾乎都是很被重視的習慣。而且也會帶給面試官一些既定印象。)。

甚至有些比較複雜的邏輯、一些 nesting if statements 可以寫一寫註解。

這不只是表現給對方看自己有好的習慣(他們也會相信你的習慣是來自你真的有 extensive coding experiences),同時也幫助你自己在面試時不會寫到第 60 行的時候忘記自己第 17 行那邊的程式碼在搞什麼。這個習慣在 Niantic 這種比較複雜的面試題目時,老實說真的幫助自己蠻多。

【總結】
面試終究是有運氣成分的。

失敗是難免的,心態的調適真的是很重要的一部分。我女朋友在 Google 上班,我第一個面試就是 Google 最後也失敗了,當下當然是失望的、非常失望的,但也沒辦法,每次失敗也只能繼續向前。我想這也是 Facebook 文化中我喜歡的 Move Fast 這部分。

這篇文除了紀錄、分享自己這六個月以來準備面試與真正進行面試的過程之外,我最後最後還是得說我自己的運氣真的不錯。Facebook 第一輪面試面的不是最好的狀態還是被過了,最後那輪也還好自己表現的不錯有板回顏面。LinkedIn 的面試也還真的被問到了寫過的題目。

我也知道有很多人比我努力,但結果不見得會比我更好(當然,反之也有人本身能力很強,刷個一兩百題就能錄取 Facebook Google等一流大公司)。

我也想說錄取這些大公司真的不代表能力的全部。

就像我說的,我本身是不贊同以刷題方式面試來決定錄取不錄取的風氣。今天我錄取了這些大公司,但是在我心目中比我厲害、我尊敬的朋友們還太多太多了。我也期許所有看這篇文章的朋友們,好好掌握自己的時間,永遠都做那個當下自己最想做、最棒的事情,我相信只要這樣做,最適合你的機會就會自然的降臨在你身上的!

【OS】
老實說,我對於在Dcard上面發文的規範還滿不熟的,這篇文我還是比較保守的經過了一定程度的刪減,拿掉了照片跟某些內文,但是如果有興趣知道更多的話還是歡迎留言、或者參考我在Medium上的原文: (我不確定到底能不能放連結,本來想說:有興趣的人可以自己Google搜尋我的原文,但是這樣說了又不放連結,真的很為了規範而繞路⋯⋯)

共 32 則回應

3
強者推
0
啊 是強人
請問你是大學畢業後直接上研究所+申請實習嗎?
1
@B2 是啊,除了中間卡個當兵xD
0
那這樣申請實習不會受到限制嗎?
因為大學不是畢業本科系的
再加上研究所還有課業要處理

抱歉問題聽起來有點複雜
因為我跟樓主的情況很類似
但是我當兵完後是開始找工作
找了一陣子了 都是無聲卡
所以想聽聽你的故事
謝謝
0
b4數學系不好找工作嗎?
1
B5 應該是我自作孽吧
實習的黃金時光(大二、大三)因為有幾科畢業必修被當 為了準時畢業 只好暑修
所以沒有找工作所需要的2-3年工作經驗
再加上
寫Code這條路是畢業後才實踐的
所以難度更高

有點後悔在大二時沒有聽我老師的話
雙修數學/電腦科學了
6
B6 我其實主修也不是資工,我的主修叫做 Connective Media 算是半個資工、半個HCI,幾乎所有面試官都會問我我到底在念什麼XD 我是不知道你申請的都是哪種職位,但是一般 new grad or intern positions 應該是不會要求兩到三年工作經驗的。

我自己的故事就是拼一點吧,研究所課業之餘,每天花兩小時不夠就每天花四小時,頂多睡少一點而已。無聲卡的話你可以多試試看找人內推,去LinkedIn或者一畝三分地上面多認識認識一些人聊聊,建立關係、請他們幫忙內部推薦你。
2
請問你是以非本科這樣的身分去投履歷的嗎?
我自己是理院的,不過有在自己讀/練CS相關的東西(畢竟課都修不到....)
但不知道這樣會不會因為不是本科系的關係,想找相關工作就直接被拒絕
0
太強了吧
0
之前有先看過你的原文,難怪覺得好熟悉😂
我超喜歡軟體工程師的經驗分享文,很好奇到底面試跟技能上需要用的是哪些
匯集重點、資料💞💞
2
男生也可以用GHC resume database呀 長知識了!
1
謝謝分享 趕快收藏👍👍
1
B8 我是覺得重要的不是科系,而是履歷上塑造的自己。我第一個資工實習也是在我還是商學院學生時期拿到的,在一間我很欣賞的台灣新創公司,當時我自己一邊自學、一邊做過幾個 side projects,履歷甚至面試時可以拿東西出來秀給對方看我做過的網站或者App~

不過我覺得新創公司比較容易接受這樣的表現方式,大公司一般還是會篩的更competitive一點,至少可能要有相關的實習經驗。我個人在新創後一年去了微軟做軟體實習,然後現在才再靠微軟的經歷拿到其他大公司的面試邀請跟最後的錄取。

我只能建議自學的我們要一步一步來,計畫好現在能拿到得最好的機會,然後每次每次向上爬(當然也不見得大公司就好,只是我個人人生規劃而已~)

以上給你參考看看~
1
B10 很不幸的現在美國軟體工程師的面試幾乎都還是要刷題為主... 我自己這幾個月來刷了四百題的 Leetcode 題目,倒也不是說為了要面試時遇到一樣的題目(結果也沒遇到幾次),而是要真的很熟練每個演算法跟資料結構適合運用的場合,鍛鍊出那種看到一個問題就大概知道要怎麼去拆解跟 approach 的直覺XD

另外就是文中有提到的面試時的心態調整、表達能力,還有寫清楚的code的能力~

B11 可以投,但是我看一畝三分地上面有人說他的面試官跟他說他們公司有 expectation 來 GHC 就是要招女生的,所以我 get around 的方法是透過 GHC 拿到面試邀請之後跟他們說我其實沒有要去 GHC 現場,可不可以改成電話面試XD

不知道有沒有用就是了,FYI 我透過 GHC 拿到的面試(Google & Salesforce)都掛了XD
0
B13 謝謝你的回應!
看來我該做的就是繼續學習,然後看看能不能找個地方練功增加經驗
祝你順利👍
1
B15 恩恩 #願原力如你同在 祝你好運!
0
leetcode 400題好狂˙˙˙˙啊啊
我打開第一題腦袋已經燒了😂😂
當機中
1
請問原po商轉資的過程能方便分享一下嗎
像是從哪個領域 開始著手的
0
大大可以分享一下你平常用的資源網站等等😂😂或是不錯的
0
好文推 恭喜!
1
B17 其實這就跟train出一個ML model的概念一樣,塞了四百個training data進去之後就跑出個model可以去解後面的題目XD

B18 B19 我其實去年錄取微軟時有寫一篇分享自己利用網路資源、從商轉資工再加入微軟的過程,但是現在回頭看覺得那篇也沒有寫得很好,這幾週放假有機會我會再另外好好寫一篇文介紹的。

但是簡而言之的話,我是覺得有些我當初用的資源至今也已經過時,軟體開發這塊真的每年變動都太快,我自己今年跟最近是花了很多時間在學習 React & GraphQL,個人滿推薦Wes Bos在這方面的課程,有Intro等級的也有Advanced等級的課程內容。
2
太厲害了!!
2
可以問你大學跟研究所是那間學校的嗎~
1
太強了 拜託多發點文嗚嗚嗚
0
大大可以找厲害的大神或是同事,朋友一起來寫分享文💞💞
0
B23 這種自學程度
不管念哪間大學研究所
都不會有任何侷限
2
B26 我知道ㄚ~單純想知道而已
這完全超過學校的了!
1
B23 我大學在香港大學,現在研究所在紐約 Cornell Tech~

B24 B25 我其實有自己的部落格,目前已經分享過這篇找實習攻略,另外還有申請研究所的攻略(打算這兩天一樣修改一下內容,再轉貼在迪卡上面)跟介紹我們學校的文章~

不知道分享連結會不會違反版規,但是有興趣的話可以先參考看看:
1
通報 📢
好像有人對這篇文章有新想法唷,快來去看看!
0
B23 B24 B25 我剛在留學版把申請研究所的經驗也整理了上去,如果有興趣的話也能參考看看,其中多少也包括了一些自己轉資工的過程 :)
1
通報 📢
好像有人對這篇文章有新想法唷,快來去看看!
1
今天暑假在 google intern
透過 GHC 投了 facebook、amazon 的 intern,結果被以年紀拒絕...
他們想收隔年畢業的嗚嗚嗚
決定明年繼續待 google,運氣好就其他國家的...
回應...