2022 SDE Experienced北美軟體工程師跳槽面試心得分享(Google/Microsoft/Amazon/Uber/Nvidia/Databricks/TikTok)

Joey
14 min readJun 26, 2022

前言

完全沒想到那麼快又可以連載下一篇XD 繼之前的台灣實習面試分享以及疫情下的北美軟體工程師正職面試心得分享,這次要來分享新鮮人跳槽的攻略以及心得!

依照慣例先把結果附上,以免被我流水帳日記無聊死:

Offer: Microsoft (sde2), Google , Amazon

Rejected: Uber, Databricks, TikTok, Nvidia

背景

前面的文章有提過~碩畢後在VMware打工快一年的轉碼仔です。

這裡多談一下入職不到一年就想跳槽的原因,其實敝公司也沒什麼不好,只是我是一個容易受環境影響的人,合作愉快的前輩與夥伴相繼離開,H1b一直抽不中導致綠卡無法進行,Broadcom收購的靈壓等等都讓我產生了先面面看再說的念頭。對於WLB、學到的東西、升遷以及與主管的相處倒是都十分愉快,壓死駱駝的最後一根稻草算是簽證因素。

準備

我的準備蠻虎頭蛇尾,三月份開始跟recruiter們勾搭後才跟學弟借了leetcode premium來練手。跟同事取經後發現其實可以挑戰一些sde2 role,所以在五月買了Grokking the system design interview,因為有一些是cloud相關的role所以也複習了k8s/Distributed相關概念。我建議大家可以這樣準備:

  1. Leetcode要面的公司top 10高頻題、一畝三分地面經也參考一下
  2. Grokking the system design interview詳細讀完幾章,各種trade off一定要搞懂,其他的至少看一下diagram增加印象
  3. k8s相關的話基本pod life cycle/api server/controller manager/scheduler/etcd/kubelet/CRI/CNI/CSI稍微了解一下,這種就是背多分

4. Distributed則可以看一些大公司的tech blog/talk來當作背景知識

5. Resume上面的project一定要熟悉,我解釋了超多次給不同公司,有時候仍然會被challenge一些detail。

這裡我們就直接進面試體驗吧!我會按照我投遞的順序來排~

面試體驗

1. Google

當初決定第一個面G的理由有兩個,一是他的process非常的長,先面G才能讓其他offer同時出來做compete。二是我面的是L4 level,G算是少數幾間不需要面system design round的,我也對自己的解題能力比較有自信就先面了。我是透過同期同事合作的recruiter獲得面試機會,這時他已經拿到L4 offer且準備接了,所以我也躍躍欲試的要求了面L4。有趣的是似乎有工作經驗的就可以waive兩關tech interview,我實際只有面連續五關的VO(四關coding+一關behavior)。

雖然我只面過intern沒面過L3,不過之前有給Google的mentor mock過很多次,算是對流程十分熟悉。這次四關的難度不高而且我自認為我每一關都是順順的解到most optimized & follow up解到底那種,頂多只有一點小bug有時會被提醒。小插曲是其中一關coding在出題後因為剛好有寫過,我馬上就給出最佳解,但似乎跟一個英文欠佳的interviewer理想中的解法有一點出入,那個L5 interviewer說他很久沒寫code,也花了很多時間來理解我的解釋,我超級傻眼……到底是誰在面誰。

總之面完後我非常自信的認為應該會過,recruiter送HC前也算他覺得strong enough所以不用先team match。沒想到後面HC卻說我是borderline L4 feedback,決定給我L3而且無法再加面或是找manager appeal。當下聽到其實很不滿,有點被recruiter雷的感覺,但後來跟很多也在面Google的朋友和網友聊過後發現其實1年yoe被down-grade似乎才是常態…(同期同事真的強)

Team match階段我運氣不錯,兩周就有七個組對我有興趣,我應該在這間段quick chat了有10通以上的…因為對GCP和infra有一點排斥所以最後選了個ML/backend相關的組,老板人非常nice甚至還多找skip manager和tech lead來跟我介紹組和大力遊說我加入!雖然他們可能對每個candidate都這樣,但如此用心也讓我對他們以及組的印象加很多分。

2. TikTok

當初是抖音的recruiter主動reach out介紹我Cloud infra software engineer,聽完之後決定還算有興趣,雖然人家說心臟與字節只有一個能跳動(just kidding),但$$看起來實在太多了,想說拿來當練手也不錯就答應了。

抖音的VO是一關過了才有下一關的,共三關VO且都十分相似,都是過履歷/探討project/k8s concept/coding。因為面試官都在中國所以面試都在我的晚上,而且都是中文lol 想當然整個面試充斥著中英夾雜的星星體。神奇的是他們都很愛問Tree相關(easy)和pod life cycle的題目,前兩關過程還算ok但最後一輪VO的面試官看起來十分不友善,甚至連coding都懶得切到online editor介面要我直接用的,不知道在跩什麼,驚呆了我。

最後就吃了拒絕信,這邊吐槽一下,我個人跟抖音這幾個面試官聊天下來的感想是他們其實根本就不缺工程師,只是想在美國hire幾個來當作consultant/oncall仔的感覺,尤其是最後一個面試官字裡行間都可以嗅到喬不起我這個美國菜鳥,只能說一畝上對抖音的評價不是一天造成的呀。

3. Databricks

看到一個台灣manager在招人的post請他幫忙內推的,因為在一畝上常常看到對這間很高的評價所以其實還蠻期待他們家的面試,VO前會先有Tech以及BQ interview。Tech interview的面試官體驗是我遇過最好的,人nice題目也問得很清楚有水準,整個過程挺愉快。通知pass之後安排了一個random manager的BQ,跟manager聊的也算愉快,還跟我說幫我內推的manager有先跟他打過招呼XD 不過在他問了我手上有哪些offer後明顯態度變得不像前面那麼熱情,果然之後就說不move forward了…這裡奉勸大家還是在確定拿到offer後再透漏手上其他offer,算是學到一個教訓。

4. Microsoft

在Linkedin找到一個recruiter獲得hiring event的機會,因為預設要去Redmond office所以我其實一開始就沒打算要去,只是想當綠卡保底。HE之前要先完成一個OA,題目很簡單。HE似乎每個月都有對應的org,我們其實是無法預先知道的,所以我個人認為不太適合跳槽的朋友走HE的方式。

當天會有連續四關的VO,每一關幾乎都包含BQ/coding/system design,我個人認為整體都算偏簡單,system design一點都不刁難,基本上你能自圓其說就給過。有趣的是當天面完我自己給自己的評價是有可能fail的,因為早上精神狀態不太好。沒想到隔天HR就恭喜我過了,而且還是61(sde2) level的offer! match到的是Bing,但因為他給的deadline只有一周和薪水都不是太吸引人我到最後一天還是把他拒掉了,HR臉看起來非常臭XD

5. Nvidia

請一畝上的人幫忙refer AI infra sde role,感覺起來比較像是devops的活。但因為跟manager聊過覺得組還蠻彈性且有自駕車相關的project能做所以就決定面看看。

面試分了兩天,第一天4個VO,其中兩關專門問past experience和一些CI/CD concept,另外兩關專門問coding。整體難度也算簡單,尤其是coding,我甚至5分鐘不到就解了他3題,面試官直接投降說你太強了我們來聊聊天吧XD 面試過程中我發現這個組一定很chill,有一個面試官一開始先道歉說他還在jet lag所以恍神請見諒,另一個綁著安全帶晃來晃去,很明顯在副駕的位置上…

第二天只有一個VO,這關很不像是面試,比較像一個調查你有哪些技能。反正他就問問問,我就yes/no連答,我還以為在做questionaire lol。面完後我覺得應該會上,然而之後被recruiter連續ghost了一個月…我每周都會發信詢問進度,recruiter就各種四兩撥千金。最後我實在不想等,直接嗆我對你們的hiring process感到很失望,要跟你們manager setup一個meeting要求一個交代,他的回覆依然很敷衍。在我打這篇文的時候總算收到reject了= = 恭喜Nvidia榮登我今年跳槽體驗最差公司,有夠浪費我時間。

6. Uber

被Linkedin上的recruiter主動reach out的一個backend risk sde2的職位,quick chat後覺得處理large scale data然後分析pattern這種算是我蠻喜歡的類型,不過傻眼的是recruiter都主動reach out我了竟然還要我完成一個OA才能繼續(? 就在我以為能來面VO後,又說要先一關tech interview,剛好考了一題我做過的hard所以10分鐘就解決後面的follow up了,剩下就聊天(賺

完成OA後recruiter告訴我原本的職位已經被fill,所以把我介紹給另一個做data pipeline/kafka的sde2,面試包含四關的VO,設計上我覺得很有門檻。他是BQ+coding+harder coding+system design,system design明確先說前半段是past experience任一project後半段是面試官出的題目。

coding方面其實跟每個公司都差不多,但harder coding部分的面試官屬於比較追根究柢的,我有一部分不小心口誤把dfs講成bfs後他就要求我來用兩種方式解題,但我當時的確對那題用bfs解的寫法比較雜亂,寫到有點沒心態XD 被面試官hint了很多才把最後的測資跑完pass,這裡我都想給自己一個no hire了…

system design因為有一半是能事先準備的,前半段算是交流的蠻順利,後半段他給的題目我沒做過,所以我就拿出grokking的萬用模板,畫畫diagram,定定api,RMDB vs NoSQL,Sharding和load balancer都拿出來討論後時間就差不多了,他問的一些trade off/optimization問題我答了後他看起來也還算滿意。

面完後recruiter約了一天說要給decision,這裡要讚揚一下Uber的對candidate的售後服務,一般公司只會告訴你congrat or reject,但Uber詳細跟我講解了我每一關的feedback和面試官建議我能加強的方向,讓我能知道我到底是哪一部分做得不好。跟我想的一樣果然是harder coding這關爆了,而讓我意外的是我system design的feedback還蠻好的,給了我一點信心。唯一讓我比較不喜歡的點是他們的interview是真back to back,每關一小時(一般是45mins)且關跟關之間完全沒有buffer,常常會重疊,越後面我的精神就越差…

7. Amazon

Amazon其實一直在我的印象中不是很好,先不提各大論壇和周圍朋友對他的負評,我自己以前面過他的intern就遇過最後一關BQ的面試官no show後不是幫我reschedule,而是直接reject我的傻眼事蹟。畢業後有一個recruiter找我面sde1結果我寫完OA後(全對)直接ghost我,隔了一年同一個人又找我面sde2= =我直接嗆他你會不會又ghost我。但剛好這時有個在palo alto的ads組找我面sde2,地點/組/level剛好我都蠻喜歡的所以就還是答應了!

一開始recruiter跟我聊了經歷後本來還跟我說我們sde2要四年以上經驗喔~建議我改走sde1流程(那你一開始找我面sde2幹嘛= =),但這時候我因為已經有Google/MSFT offer,他馬上態度180大轉變說ok我們可以試試sde2,看來recruiter的嘴真的是騙人的鬼。這裡也是要先完成OA,其中有一題其實還蠻難通過全部testcases的,我一直到最後五分鐘才終於全pass,事後查這題的解法發現網友留的解法都沒比我的更optimized…

他們家的VO有四關,coding*2+system design+OOD,每一關都還有額外的BQ。coding都算是蠻簡單的,其中一關也是10分鐘解他兩題+follow up。而system design那關有配兩個面試官(for shadowing),而其中一個(菜的)竟然又no show了(我怎麼每次都在amazon遇到這種事),等了五分鐘後面試官就不等他我們直接開始吧。

被老手面的結果就是....我面爆了XD 類似要我給出一個能log n解決db traffic的方法,但我當下只想得出linear的方法。經過他給了非常多hint後他才總算放過我。面完後我感覺沒什麼救,摸摸鼻子就回頭簽了Google的offer。他們果然給了我降級sde1的offer,initial package甚至比我現職的還低lol。 但當我跟他說其他家開給我的offer後他竟然同意幫我申請pay band exception到多30%的TC!算是當下我拿到最多$$的offer了,當下十分後悔,後悔的是不該這麼早簽Google,不然可以compete到更多XD

後記

統整一下這些拿到的3個offer~

Google優點: 綠卡、culture

Microsoft優點: job level

Amazon優點: $$

這裡也算是我煩惱蠻久的地方,可能很多人會覺得已經工作了一年又從new grad level開始蠻可惜,但我覺得工作對我來說是一個可能會要做10年的事情,還是選擇自己喜歡、舒服的工作環境才是上策。三間公司除了Google以外的manager/recruiter真的都看起來很沒熱情、壓力很大,再加上我不想面臨要L1去國外的情況,最終還是選了Google,接下來因為要走綠卡所以應該近兩年不會再跳了…(?

Take Away

恭喜大家看到最後啦!我來列舉幾點一下tips和我希望當初就知道的事,我的教訓,你的寶藏?

別唬爛好嗎
  1. 一定要好好準備面試,不要僥倖覺得多投幾家就能裸面靠賽,多花四周也許就能影響你日後四年的薪水與level。
  2. 有工作經驗後請多善用LinkedIn reach out to recruiters/managers,海投與內推效率太低了。
  3. 多找戰友一起交流!很多消息都是網路上不會有人分享出來的,例如不到一年面sde2、什麼公司能batch process綠卡without H1B、offer pay band、不同組的文化/升遷難度都是我本來不知道的。當然交流也是互相的,不要一昧的只想從別人那邊獲取答案。
  4. 薪水永遠都可以negotiate! 千萬不要被recruiter唬住,什麼這是top band、這是我們能給出最高的offer,你只要拿得出compete offer什麼exception都能為你開出來。周圍有兩個朋友甚至連job level都compete成功…
  5. 保持一個正面的態度,不要因為一次的失利影響其他面試的表現。每個人大概一開始前3次的面試都是最糟的,趕快讓自己過度掉這個時期!

祝大家都能找到自己喜歡的工作!也記得求職之餘也要好好放鬆!

--

--