2021 New Grad -北美疫情中找工作

MLE/SWE Interview, Salary Negotiation & the New Grad Job Market

Alvin Hou
20 min readDec 30, 2020

這篇除了當作個人紀錄之外,希望能盡可能的分享我今年找正職的所見所聞和所學。由於疫情的影響,今年是New Grad找工作相當艱辛的一年。我也在這之中嘗試了許多以前不會做的事(如寄信給公司CTO、預約公司coffee chat、談薪水等),算是跳出舒適圈成長了不少。以下為這篇大綱和我找工作的結果

  1. 找工作Timeline & 如何拿面試
  2. 如何準備各類型面試 (SWE + MLE)
  3. 面試心得
  4. Salary Negotiation
  5. New Grad Job Market & 各大公司發Return Offer狀況
Offer: Twitter, VMware, Doordash, Bloomberg
Onsite後被拒: Databricks
Onsite取消: Nuro, Scale AI
電面後被無聲: Twitch
OA後被拒: Amazon, Robinhood, Roblox, Citadel, IMC
內推被拒或無聲: Apple, Stripe, Salesforce, Microsoft, Adobe, Pinterest, Nvidia
婉拒面試: Akuna Capital

內文蠻長的,如果懶的看的話可以直接滑到最下面,會有重要連結整理

Timeline 、 如何拿面試

何時投履歷?

越早越好!可以參考朋友Fiona分享的文章,建議在7、8月職缺職缺一開就馬上投。我大概在8月底開始請學長姊內推亞麻、微軟、Adobe等大廠。也在9月把NewGrad-2021 整裡的職缺全部都投過一輪。今年受到疫情影響的關係,科技業缺顯著變少(很多到快10月才開缺),主要都是Hedge Fund / Trading Firm在招人

雖然我8月底/9月初就開始積極海投,但感覺還是有點太晚了。有兩家公司我onsite最後都被取消,原因就是面太慢他們已經招滿了。其他幾家像Citadel /Robinhood 也是太晚投就直接被拒了。建議真的是職缺一開就馬上投!

如何拿面試?

可以參考我去年寫的北美 2020 Summer 找實習心得,有包含如何拿內推和公司招人方式的整理。由於今年Stanford Career Fair變成線上的,成效明顯弱很多。大多都叫你自己上網投,且FAAMG都沒來招New Grad。Microsoft原本說會來,後來偷偷拿掉了,應該是決定不招了。但不論海投、內推或校招,還是記得越早投拿面試的機會越高

以往New Grad大多都可以靠Google或亞麻等廣發面試的大廠,但今年因為疫情難了(後面會詳細說明)。今年我拿面試分成三種

  1. 公司招Target School的學生,參與Campus Event 如Info Session、Coffee Chat等
  2. 請人內推,履歷直接遞給Hiring Manager看
  3. 請在公司當CTO的教授幫忙

第一種以Doordash為例,他主要招Top 10 和加州學校,如果你是Target School就很有機會。我認識的Stanford、CMU朋友人人有OA/面試。彭博也有他自己的學校清單,如果去參加他的campus event(我去了4場)就高機率拿到面試。而Scale AI我去了他們的coffee chat活動,小抱怨一下海投都沒回音,之後就馬上收到面試了。所以我建議去研究看看你的學校屬於哪些公司的Target School,多花點心思去network和投履歷來提高拿面試的機會

LinkedIn的"People"功能,可以看公司員工都是哪裡畢業的,進而推測是不是target school

第二種是找人內推。如果只是請人在公司系統內推,我的感覺是跟海投一樣沒用,我推了好多家都沒下文。但如果是請人直接把履歷拿給Hiring Manager看,就有效許多。我VMware跟Twitter的面試就是這樣來的

第三個說實在我也沒料到會成功。我在寫完Databricks的OA後就被無聲了,但我真很喜歡他們家的產品和發展方向。我就孤注一擲寄信給我之前修課(CS245)的教授Matei Zaharia,他同時也是Databricks的Co-Founder兼CTO。我跟教授分享了我在Apple寫Spark的經歷,並問教授能不能幫我 "connect with the right people in the field",結果他馬上回我並幫我約到面試,教授人真的是太好了…

這次經驗讓我學到機會真的是要靠自己創造的!如果學校和業界的connection很好,教授搞不好有跟你想去的公司合作,寄信問問看都有機會

Timeline

上圖是我今年有面到Final Round的公司Timeline。大概都是9月投履歷,10月電面,10月底virtual onsite,11月初出結果。比較值得一提的是,我稍微排了一下各公司的面試進度讓出offer的時間都剛好在藍色區間這周。這樣除了可以避免exploding offer(公司大多都只給1-2周做決定),也比較好用competing offer談薪水。缺點就是很累,我期中考周面了4家面到快往生…

小心得:我們常會想把面試往後排一點,讓準備更充足。但如果換一個方向想,越晚公司剩餘的缺越少,Hiring Bar也就會越高。更有可能發生像我Nuro、Scale的情況,直接招滿了。所以我覺得如果可以的話,還是盡量排早一些面!

如何準備面試

今年可能因為Leetcode大廠都不招人,我被實際考刷題的面試其實並不多。反倒是遇到了許多類型的是面試,有如 System Design、ML System Design、OOD、ML & Database Knowledge 、CS Fundamentals (e.g. OS, Linux)

雖然題型很多樣,但我覺得比起刷題我更喜歡Design相關的題目。因為除了不需花時間刷題,也不會有剛好這題沒刷過就涼了的狀況。Design的題目著重的是跟面試官的溝通,和平日實力的累積了

在這邊稍微整理一下我如何準備各類型的面試

1. 刷題 (Leetcode)

我覺得刷題還是重質不重量。與其花時間刷一堆新題,不然把以前刷過得題型做熟,之後面試比較好做臨場應變。我在暑假實習的時候,每天下班就刷個3–5題,把之前做過的400題重頭刷過一遍,有些重要或容易忘的題目我會重複做個3-4遍。過程中並沒有做太多新題,我通常都等拿到面試後,再去刷那家公司的新題或面經

如果想要短時間速成或是面試前迅速複習的話,建議刷Blind整理的高頻75題。我大概刷到這75題可以在一個週末做完的熟練度。另外一個小心得是,如果面試遇到沒想法的題目也不用太緊張,可以先隨便丟幾個思路,問面試官 "Am I on the right direction?",偷要幾個提示也都還好

2. Solve an Actual Problem! (實做題)

這類型的題目我今年被考了非常多次!基本上就是給你的一個問題,像是設計排行榜或排班系統,然後你就想辦法把問題的解答實做出來。有的會要你用Object-Oriented Design的pattern寫,有的叫你自己設計資料結構,有的沒有任何限制。基本上這類型的題目就是要看你實做的能力,所以正確度是優於複雜度的,最好先寫一個會動的版本再優化

題目範例:

  • 設計一個停車場,API要能夠停車/移車,每個車佔的空間不同
  • 設計一個工廠排班系統,指派不同的worker來處理不同的task
  • 設計一個排行榜,實作API更新路況和回傳前k名領先人員

心得:被考了許多題後我開始感受到了Python的限制。不少題目如果要做到最佳解,往往會需要用std::map或TreeMap,但Python沒有內建的BST。可能該把C++或Java練的熟一些了...

3. System Design

最經典的準備教材大概是Grokking the System Design Interview,但我覺得以New Grad來說有點overkill。我比較推薦挑著看The System Design Primer,在Github上開源的!Database和Cache那兩段很值得一看,我在面試的時候被問過許多相關的問題,像Which database to choose and why? How to design caching?

如果你對分散式系統很有興趣的話,一畝有整理一篇對系統設計面試有用的經典paper,也可以加減看看

4. ML Knowledge & ML System Design

我有投了不少ML相關的職缺,所以不論是ML Modeling或是ML Pipeline Design都有被考過

ML Knowledge我是複習之前修 CS229 Machine Learning的講義。想要速成的話有個cheatsheet整理的也蠻不錯的。面試多半是考你基礎ML知識熟不熟,像為什麼選這個loss function,random forest怎麼實做的,或要你比較不同的feature selection方法

ML System Design我就相當推薦Grokking the Machine Learning Interview。他內容包含了整個ML Pipeline life cycle,從online/offline training、feature selection到A/B testing都有詳細說明。我遇到題目多半是要你設計一個ML相關服務,請你End-to-End完整走過一次你的設計選擇,例如用什麼ETL框架、怎麼存資料、怎麼更新模型等。這類問題沒有標準答案,主要是想看你對ML和系統整合的熟悉度

基本上ML面試有一個要訣就是從簡單的模型開始討論。如果要處理一個分類問題,最好就是從logistic regression開始講。這樣比較好討論你的模型選擇,如何選feature,如何訓練,如何更新,如何滿足客戶要求的response time等。一開始用太複雜的模型會導致你沒辦法輕易回答上面這些問題

5. CS Fundamentals

這就是考你的CS基本功了。從資料結構(如何實做Hash Table)、作業系統或DB(Index是如何實做)都有可能問。其中我建議加強準備下面兩個領域

第一個是Database,我覺得修一個DB相關的課對面試很有幫助。除了可以對DB有更全盤的了解,許多觀念像CAP theorem對系統設計問題也有幫助

第二個是concurrency computing。最好對multi-threading和locks有基礎的認識,有看過公司問怎麼實做支援多執行緒的service,如何避免race condition

面試心得

今年各公司遇到的題型總結,leetcode好像不再是決勝關鍵

  • SWE面試:Leetcode和實做題50/50,輔以System Design和CS知識
  • MLE面試:ML相關題為主,實做題為輔,不太考Leetcode

以下是各公司的詳細面試心得(大致按面試時間排序)

1. Doordash

去年Doordash找我去當外送員,今年終於拿到正常的面試了。Doordash大概是今年面下來最簡單的一間,寫完OA後就直接onsite,也很快就發offer了。有簽NDA的關係不能多說,但他們並不刁難演算法,而是注重實做能力並強調culture fit。Doordash年底剛IPO漲翻天,也是疫情下少數全面擴招的公司

2. Bloomberg

我去年面彭博實習的時候第一輪就被拒了,今年捲土從來!他們家面試特別的地方是每一輪都會有兩個面試官,一人考一題,所以一小時內要解兩題。我記住去年的教訓,少廢話趕快解題,最後解完都還有一點時間聊天。題目大多都是medium難度,並不會太困難。另外Bloomberg很重視溝通!比起bug-free code,他們更在意你的communication skills。我有一題寫完其實有些corner case會爛掉,我跟面試官提出這個問題和解決方法後,他也並沒有要我真的修掉,溝通過後知道我了解題目後就換下一題了。所以不要一拿到題目就開始解,要多和面試官clarify題目和積極溝通

今年Final Round變成HR和Hiring Manager面,比較偏向Behavior Questions。在過履歷的時候,被問到之前參加的AI Coding Competition。因為Hiring Manager也是Stanford畢業的,我就跟他分享我們如何代表Stanford痛宰Berkeley,聊得很開心就知道最後結果應該不錯XD

Citadel Terminal Live: 左邊為數眾多又熱情的Berkeley隊伍 vs 右邊人很少又很chill的Stanford隊伍

值得注意的是,一畝上有人和HR negotiate offer,結果offer就被收回去了。另外我有一個朋友雖然都面的很好,但在HR輪期望薪資開價太高,就直接被拒了。所以和彭博談薪水要很小心lol

3. VMware

先大力感謝感謝台美人求學求職合作社的前輩幫我牽線到這個機會!

VMware New Grad有分統一招(Propel)或分組招,我是後者,面的組是做ML /Infra/System Performance的核心組。面試考的蠻難的(ML & Systems Design ),但題目也都跟組裡做的專案直接相關,我可以直接看出他們在找什麼樣的人以及未來的工作內容。面試官都很友善的和我溝通設計細節,面試體驗很好!

我最後在做決定時,在Twitter和VMware之間猶豫了許久。雖然最後沒去,但我覺得如果你對ML和Systems都有興趣,VMware以New Grad來說是一個很不錯的選擇

4. Databricks

當今火紅的Pre-IPO新創,開源技術在業界有口皆碑,做的產品跟我的興趣也吻合,是我很想去的公司之一。我靠Prof. Matei牽線拿到面試,但他們家Hiring Bar非常高,遇到的面試官全都名校本科生,是我面過最難的一間公司,比Google難多了

有簽NDA的關係我就不多說細節了,但可以稍微提供一下準備方向

  1. 刷題和System Design都一樣重要
  2. 最好對Database很熟!畢竟他們家的核心技術之一是Data Lakes at Scale
  3. CS Fundamentals也不能輕忽,像是multi-threading和concurrency
  4. 會要求最佳解,也很注重實作能力,write bug free code!

我在onsite的時候有一輪表現得不好就掛了。那一輪我一直沒搞懂面試官要問的方向,不然其他輪我覺得都面的還不錯,有點可惜了QQ 有機會之後再來挑戰了

5. Twitter

首先感謝Rachel、Christine和Eugene學姊們幫忙內推!在學姊們的大力幫助下,趕在最後一刻拿到ML Engineer的面試,並在其他家offer deadline前面出結果!最後我決定加入Twitter的Recommendation Team,五月會上工

有簽約所以就不多說面試過程了,只能說Twitter的面試比起刁鑽算法更注重溝通,要面MLE最好要把基礎ML知識看熟,總體而言面試的體驗非常舒服

6. Nuro

做無人車外送的新創公司,是加州少數不用駕駛就能上路的無人車,公司組成主要是中國人。Blind上有人評比為Top Tier公司,New Grad薪水也很不錯。他們家的面試除了有算法關,到了onsite也有project deep dive和CS基礎關,蠻多輪且難度不低。讓我很不爽的是他家HR在我onsite前鬧消失,到最後一刻才跟我說不好意思招滿了,既不專業又浪費我不少時間

7. Scale AI

做Data Labeling的公司,公司好像平均年齡24歲,是很年輕的新創公司。之前我在Coffee Chat的時候跟裡面的工程師聊天,對方說他放棄Stripe和Pinterest的offer來Scale,應該是真心覺得公司前景不錯。我面試被考了一題OOD實作題,很多follow up蠻有挑戰性的。我想吐槽的是,這家HR也在約onsite前鬧消失,最後也跟我說招滿了。看來HR消失大概就是招滿的前兆...

8. Twitch

身為一個Gamer,在某個層面上算是心中的夢幻公司… SF總部有電競室跟實況主直播間,實在是蠻潮/宅的。難過的是,他們家的面試體驗是今年最糟的一家,從面試前到結束後我一共寄了四五封信HR都沒回。我問了幾個重要的問題,像能不能同時投Amazon跟Twitch的問題也都沒回。第一輪跟manager聊了半小時BQ後,無聲了好一陣子後就被拒了:(

Salary Negotiation

這邊要再度感謝台美人求學求職合作社的朋友教了我許多談判守則和技巧!New Grad雖然議價空間比較小,但如果你有competing offer的話我認為都可以negotiate看看,今年我有成功地將一個offer提高了不少

雖然我還很菜,但下面是我今年學到的幾個談薪水守則

  • 不斷的表達你對該公司的高度興趣,若HR認為你只是想要談高薪水而不是真的想加入,通常就談不下去了(怕你拿了offer去compete其他家)
  • 不要隨便說出你的期望薪資或其他offer數字,說出來後上限就被卡死了,可以模糊應對或說一個range。我當初被問到期望薪資,我就說 "Salary for an average Stanford CS Grad at Bay" ,HR說"Got it, a competitive salary" 就沒再被追問了
  • 到談判中後期,可以給HR兩個數字:低於一個數字就絕對不簽,高於一個數字就直接加入。這樣HR就知道你的range,會比較好談
  • 沒有competing offer也能夠compete!你可以說:如果把offer提高到一個數字,我就放棄跟其他家約的面試/談判直接加入。如果是一個合理的數字,有看到有人成功的。有Competing offer同樣適用這招

不過投資有賺有賠,counter offer也不是沒有風險。雖然機率很低,但也是有公司會會把offer收回(如Bloomberg),自己還是要評估一下風險

New Grad Job Market

最後來聊聊各大公司招人和發return offer的狀況。首先由於之前疫情裁員的關係,市場上已經有許多有經驗的工程師,公司也傾向招有經驗的,New Grad真的明顯比較難找。聽幾個CMU的朋友說,CMU大多人都還是有面試/Offer,但不是Top 4學校的就難拿許多

而如果不想面試想要直接靠實習轉正,公司發return offer的比率就會是很重要的資訊了。整理如下

Apple

就從我今年暑假實習的蘋果講起。蘋果以往return的比例非常的高(80%+),基本上表現正常都能拿到return offer。但蘋果有一個潛在問題是他是按組在招人,所以如果你的組沒有New Grad的Head Count(HC),就只能轉去面其他組。但就我所知以往只要manager推薦,大多都能轉到其他組去,不是太大的問題

我大概在8月中跟manager 1:1的時候,表明說我有return的意願,問一下組內的狀況。結果manager說雖然他很想收我,但組內沒有HC,叫我趕快去投其他組。這真的是潑了一頭冷水,我也是大概從這時候開始積極找工作

我在manager和mentor的推薦下投了內部20幾個不同的職缺,也請了Roger學長幫忙內推,最後全部都沒有回音。我原本以為是我的個案,結果從AI、SW、HW Org都有很多實習生(40+)說因為沒有HC所以被卡住。也有人不離不棄等到隔年1月都還沒Head Count下文(HR叫他等到2021 Q2),所以如果實習要去蘋果的話可能要考慮一下會不會遇到這問題

另外蘋果貌似在九月初就把New Grad職缺關起來了,不知道還有沒有在對外招人

Google/Facebook/LinkedIn

這幾家今年都沒開New Grad缺(秋招),只收return intern。FB正常發return offer,Google也跟以往一樣conversion要再面兩輪。但LinkedIn好像就只發給少部分人,不少人沒有拿到return

Amazon

今年Amazon廣發return offer,我身邊所有去亞麻實習的朋友都有拿到。New Grad亞麻還是有在對外招,但受疫情影響名額應該有變少

我在8/22請學長幫我內推了Amazon New Grad,在9月底收到OA,大概花了一個禮拜把OA1,2,3寫完。雖然測資全對,但隔週Amazon University上面狀態就變成No longer under consideration了。虧我還拜託朋友Fang-I練了一波Leadership Principle,結果就這樣不明不白的被拒了,真的是玄學公司

另外我也有被兩個不同的亞麻HR找去面SDE-II的職位。有一個我回了有興趣後就被無聲了,真的是有如傳聞中的招人很隨便lol

Microsoft

雖然網站有開New Grad缺,但微軟一向只從Career Fair抓人面試,他沒來 Career Fair幾乎意味著沒要招New Grad的意思。微軟今年也沒去CMU,USC等學校的Career Fair

Unicorns & Other Big Tech Companies

這類型的公司發return的比例多半都蠻高的,因為return intern是他們主要招New Grad的管道,有的公司甚至只收轉正不外招(如Zillow、Splunk)。我很後悔去年找實習時婉拒了Stripe 的面試,今年要從外面投New Grad就難上太多了。所以正職如果想進Unicorns,多半還是要靠實習

總結和整理

不小心就打了這麼多,最後再特別感謝我室友BBG罩了我一整學期,不厭其煩的讓我問了各種問題,一起喝Boba排解隔離和找工作的鬱悶。以上是我今年找正職的心得,雖然過程很辛苦,但我也從中成長了不少,再次感謝一路上幫忙的朋友們!

整理的連結如下

台灣人互助社團

職缺資訊和整理

面試準備

Salary Negotiation

如果在找實習的話,也可以參考我去年寫的 北美 2020 Summer 找實習心得

最後希望這篇對準備找New Grad的人有些幫助,也歡迎詢問任何找工作相關的問題!

🌳LinkedIn: https://www.linkedin.com/in/alvinbhou/

--

--