北美Data Scientist求職心得:McKinsey QuantumBlack、TikTok、AE Offer

Gene Su
19 min readJul 4, 2021

--

背景:UMN MSBA 2021、國泰金控Data Scientist(以下簡稱DS) 3.5yoe,負責ML/DL/NLP相關技術、業務場景應用。

從2020/9來美國唸書,到2021/6終於在求職這條路上告一段落,沒意外McKinsey-QuantumBlack(以下簡稱QB)@New York 就是下一站了,我一路上受到非常多貴人幫助,因此希望能透過這篇造福未來北美求職DS的朋友們。

由於我幾乎都是申請DS職缺,本篇主要分享其中三個最終有拿到DS Offer的公司及面試內容:

  1. TikTok (2020/12)
  2. American Express (2021/6)
  3. McKinsey- QB (2021/6)

前言

以下僅就MSBA Program、北美求職做不負責任心得分享。

我是 2020/9入學,預計2021/8畢業,如果能重來,我會說一年的 MSBA Program,等到畢業前4–5個月再開始瘋狂找工作就好,當初周遭出國唸書的朋友多是1.5–2年 MSBA Program,所以剛進去就瘋狂找實習,我就有錯誤認知一進來就要瘋狂找工作,接著就被一些公司回絕說還太早了,但也因此誤打誤撞發現TikTok DS 在招2021畢業生的機會。

簡言之,除非是campus recruitment,例如我是遇到TikTok 校招,所以才很幸運的在2020/12就拿到Offer,如果是社招基本上是不可能這麼早的,我第二個Offer是在2021/4月拿到,也就是畢業前4個月,但更多公司、Dream 公司都是在畢業前3–4個月才開始有聯繫,所以畢業前4–5個月開始申請應該是個合理的時間線。我的建議是早丟不會有壞處,早點體驗被拒絕的感覺,對訓練心智也是很有幫助。

Data Scientist 考什麼

以下Leetcode指的是Data Structure and Algorithm,Leetcode的SQL就是SQL。

DS涵蓋的面向太廣,基本上DS就包含了DA+BIE+BA所有要會的技能,有些公司的DS偏向DA,如Facebook、Robinhood,多為加州互聯網,接著會更加詳述,有些則是真的很Modeling,我覺得金融、顧問業都滿Modeling的,像是JPMorgan、CapitalOne、McKinsey都問我滿多Modeling問題,取向不同面試準備方向自然不同。DE是資料工程,技能點像是Java、Scala、Kafka、Spark Streaming等等,MLE更像是DS+SWE,本篇只討論DS。

DS面試常見的組合如下:

  1. Product、A/B Testing(少數公司需要到Causal Inference的等級)、SQL、ML、統計、Visualization、BQ
  2. ML、統計、DL/NLP、Leetcode(Data Structure and Algorithm)、其他、BQ

通常是這兩種分類,不同公司有客製化準備的方式,有些公司考得項目更少,當然也不排除1+2(多為Asian Companies),例如Tiktok,我印象很深刻當時TikTok面試官說,因為現在是草創階段,所以想找什麼都要會的Full-Stack DS。

Leetcode部分:DS Coding到底應不應該要會Leetcode這件事,我覺得沒有標準答案,加州互聯網基本上是組合1,普遍不考Leetcode,而更偏向SQL、Python資料處理,其他就看公司、組別喜好。有一說是Amazon DS不考Leetcode,但很不巧我Coding就遇到考了Bubble sort/Merge sort等,其他像是Facebook、Google(我是面BA)等應該是不需要的(只是這兩間我面到一半就決定去McKinsey了,所以不保證後面幾輪沒有),但也不排除以後會不同,尤其是大家常說DS有越來越卷的趨勢。

我的結論是Leetcode會了很加分,不會也不見得影響太多,面試前刷個numpy、pandas100可能更有用,雖然我發現本篇主要分享的3個DS offer都是有考Leetcode的。這幾年也確實是越來越多公司DS開始考Leetcode,常見題型就是Array/DP/String/BFS/DFS,實際遇到考的有TikTok/Shopee/Twitter/Amazon/American Express/Walmart/McKinsey-QB,所以我個人還是滿建議行有餘力刷Top100/Liked Interview Questions這兩類的easy、medium高頻題,刷完還是滿有幫助的!

ML/DL部分:一畝三分地已經很多資料,這邊就列舉幾個我實際遇到的:Gradient Descent、線性模型(超級重要,考點族繁不及備載)、Distribution(KS/KL)、Normalization、L1/L2/Elastic Net、PCA/T-SNE、Kmeans、Bagging/Boosting、Decision tree/ Random Forest/ XGBoost/ LightGbm、Feature Importance怎麼計算、BackPropagation、Gradient Vanishing、Word2Vec等等,我的建議是背後數學公式都要知道如何推導,因為面試常常當下你能講得越多都是越加分的。

Product+A/B Testing部分:必推Product 40篇大鼻Product課程Udacity A/B TestingStellar Peers也滿推的,行有餘力可以看Lean Analytics+ Cracking PM Interview,基本上就是AARRR弄熟,A/B Testing就是怎麼把實驗、Biz goal結合,Clustering測試,DID,Novelty effect,Short term vs Long term effect權衡,透過Alpha、Beta、MDE決定測試人數、單日流量決定天數,Multiple Testing (Bonferroni Correction)等等。此外,我很推薦好豪筆記(112財金轉碼的高材生)、Uber/Netflix Technology Blog,背後滿滿的causal inference干貨。

SQL部分:就是Leetcode SQL刷爆,刷了多次後我有整理一份by function的題型,要複習的時候可以單純鎖定不熟的function看就好,舉例來說 case when題、window function題等等。

統計部分:基本上都是高中數學不會很難,熟悉P-value、confidence interval、t-test、anova、F-test、chi-square、R²、Adjusted R²、最重要的Hypothesis Testing等等,需要時再刷面經就好。

BQ部分:個人背景故事,不管是領導、衝突、說服等等,故事越多越好,剩下就是優化、背熟。

其他部分:Github團隊合作(branch/pull/merge等)、模型上線部署和後續追蹤、Cloud Computing等。

優先順序:Product=A/B Testing=SQL=ML=BQ=統計 > DL=其他=Leetcode

推薦清單

網路已經非常多資料,特別是Medium/知乎/Stackoverflow真的很多干貨,這邊私心推薦必須刷爆的平台/書/課程:

  1. Leetcode(SQL/ Algorithm)
  2. 一畝三分地 (內推資訊、面經真的超級有用!)
  3. Stellar Peers
  4. A collection of Data Science Take Home Challenges Product 40題
  5. Udacity A/B Testing
  6. 大鼻Product課程
  7. The Elements of Statistical Learning (Optional)
  8. Kaggle Competition Discussion
  9. Uber/Netflix Technology Medium
  10. 好豪筆記

其他有想到我再補充。

此外,一畝三分地真的是干貨滿點的地方,就像PTT,越早熟悉越能發現各種有用信息,越早培養每天登入領取大米的習慣,就越能下載各種有用的面經,特別是內推、面經非常有效,而且我非常建議把面經內容作成筆記,像是我的筆記就有ML、DL、Product/AB Testing、SQL等多本,透過不停的研究面經,你也會整理出公司多半是考什麼題目、自己值得加強的地方,很多人會分享整理的Product套路、討論答案,我覺得都是非常有幫助的,最重要的當然是平常沒事、面試你就只要唸筆記就好。

不得不說,面試實際遇到的知識和題目很多是學校不會教的,學校考的面試也不會考,所以花時間投資在面經、整理筆記我認為是非常甚至是最有意義的,也是我這一年沒日沒夜最努力準備的東西,以下就按照Offer 時間軸分享準備TikTok → American Express →Mckinsey QB的心得。

TikTok DS

TikTok DS共4輪,偏向組合1+2,流程約1.5個月:

  1. OA: 4題Leetcode (DP、BFS/DSF等等)
  2. ML + SQL + Product
  3. Product + A/B Testing
  4. A/B Testing + Leetcode

TikTok OA的Leetcode是我DS面試中遇過最難的題目,不得不說TikTok對Leetcode的要求有時候甚至到了hard等級,實際遇到的時候我選擇死亡,OA我記得我只對了接近3題/共4題,但最終有通過OA,目前一畝看到的通常是寫過2.5–3題基本上就會Pass。

第二、三輪沒什麼補充:就是問ML、Live Coding寫SQL、問Product怎麼優化、A/B Testing相關知識。

Final Round當初面完覺得涼了,想說都最後一關了,題目應該不會太難,結果考了兩題,當下直接傻眼,一題A/B Testing,一題Leetcode KD Tree,還記得面試官直接說我沒做過A/B Testing,那一定答不出來,但我事後覺得這題應該做過也不見得能答出來。題目大概是在XX產業,通常金流都是少數玩家貢獻的,如果要做A/B Testing應該怎麼做,我當初有回答A/A Testing找區間,但面試官說這種方式也有隨機性問題,最後我想他要考的概念是Pareto distribution of monetization、Bayesian A/B Testing,有興趣的可以再自行研究,但我相信這題應該是A/B Testing面試中難度相當高的一題了; Leetcode考了在某個Location,要如何對N人Mapping到N間最近商家,所以最暴力解就是O(N²),他當然不是要這個答案,我不是很確定這題他要什麼答案,但我最終用了類似KD Tree去優化,雖然也不曉得對不對就是XD

American Express NLP DS

American Express NLP DS共3輪,偏向組合2,流程約1個月:

  1. HM:聊過去專案、ML/DL技術
  2. Technical、Product
  3. Leetcode (3 sum)+DL +奧匹機率題

這個職缺是專做Chatbot的NLP DS,當然也有很多其他業務場景,總之NLP技術是非常重要的,我過去工作有一段時間在研究NLP、發表過2篇相關Paper,所以就想說試看看。

第一輪沒什麼要補充。

第二輪: Technical 關全部都在聊我過去發表的NLP Paper (SesameBERT),技術要介紹到很深,面試官人也很Nice,Product關基本上就是閒聊、Chatbot應用等等。

第三輪: Leetcode被考了3 Sum,DL則是問RNN、LSTM的差別,這大概是所有面試中DL被問到最深的,我把Rnn/Lstm公式全部講出來、解釋Hidden Memory、Cell Memory的差異後才過關,因為時間有剩,就考了一題奧匹機率題作為Bonus,大致如下,The expected payoff of a dice game,有興趣可以參考。

McKinsey- QB DS

McKinsey真的是很有效率的公司,通常工作日三天內就有結果,HR人也很nice每輪都會給feedback,告訴你表現好、待加強的部分。

McKinsey- QB DS共5輪,偏向組合2,流程約2個月:

  1. OA: 2題Leetcode (有點類似DP、String)+ 1題ML預測(Time Series)
  2. HR: background project interview
  3. 30min ML/DL知識,但幾乎都是ML(linear model/tree居多)
  4. 1hr Data Case
  5. 4關:PEI *2 with Partner + Presentation 1hr (30min &30min QA) + TEI 1hr

McKinsey有分McKinsey- QuantumBlack DS、McKinsey DS,前者是McKinsey 2015年併購的公司,專做Advanced Analytics顧問,類似BCG Gamma,後者比較像專精於某產業的DS,技術含量少一些。此外,McKinsey- QB DS更Tech-driven,Model最終都要走 pipeline、 production; McKinsey DS會偏向POC,可能一季run一次就好。2020開始,北美已經有近8成McKinsey DS逐漸併入到McKinsey- QB底下,據聞這兩者遲早會合併起來。

目前我觀察到兩者面試差別是,Mckinsey- QB DS偏Data Case,McKinsey DS更偏Biz Case,不變的都是解決商業問題、都要飛去客戶端,但面試切入角度略有不同,單就前者而言,我的心得是多玩Kaggle更有幫助; 後者可能準備case interview secrets /Victor Cheng LOMS/case in point 較好。

前兩輪就不補充了,比較麻煩的是,多數公司基本上OA過了就過了,但McKinsey全過了不代表會有下一輪,也就是會白嫖OA的公司,Twitter也是其一,我推測是等到OA過了才會審履歷決定是否進入第二輪HR關,但貌似也不是所有人都會收到OA,所以我也不確定背後的標準是什麼。

第三輪考ML的知識廣度,短短30min問了大概20題有,會很多follow up question,有些都滿深的,但聽說只要有回答到點就可以,私心認為還是講得越深越好,畢竟不知道面試官喜好是什麼。

第四輪是Data Case,就是給一個實際McKinsey曾經幫客戶做過的專案,我遇到的是客戶希望我們幫忙解決足球隊中球員受傷的風險,所以整個流程大致是這樣,先定義商業問題,如何連接到資料科學問題,像是binary/multiclass classification等等,需要哪些資料、假設,unit analysis是什麼,做哪些feature,用什麼model,優缺點,怎麼evaluate等等,其實這關比起看case interview secrets/ case in point,我認為多研究kaggle比賽是更有幫助的,會幫助你的structure更加清楚,並且用系統性的方式去回答問題,私心認為顧問業還是偏好以下這種回答方式,像是我認為有3種方法,第1種blablabla等等。

Flow不外乎就是:定義商業問題 →連接到資料科學問題 →收集資料 →特徵工程 →建立模型 →模型評估 →(模型部署) →帶來商業價值

Final Round我覺得比較像是在考面試者對自己過去的了解,首先是PEI關,McKinsey官網說明看重的3大能力:1. Inclusive leadership 2. Personal impact 3. Entrepreneurial drive。值得一提的是Inclusive 這個詞,根據HR的說法是,McKinsey更想看到你怎麼和其他人建立關係、讓他們involved、grow,而不是說自己領導能力多強; Personal impact 通常就是問衝突、說服、Tight Deadline等; Entrepreneurial drive 我猜是要看面試者是否大膽嘗試創新。常見問法就是Tell me about a time (when you delivered result under a tight schedule and made impact) 諸如此類,我在這兩關PEI遇到的是 1. Inclusive leadership 2. Personal impact。

總的來說,PEI其實就是BQ,只是聽說McKinsey的PEI很惡名昭彰,真的會問到非常深,像是我就被問到衝突的當下情形是怎樣,當初如何和客戶溝通、說服,遇到哪些衝突等,其實在準備期間,思考這些過去種種也是很棒的一件事,我遇到的兩個Partner都很忙(或者說Partner本來就超忙),表定半小時面試大概都15–20分鐘就結束了,剩下都是QA。我回答的方式是先用3–5句作為整個故事總結,接著會說If you’re happy with this example, I can talk through it,如果面試官滿意了,我才會繼續講整個故事。

相較BCG、Bain,PEI 是McKinsey非常看重的一環,據聞評分是和Case一樣比例的,所以一定要多花時間去優化整個故事和準備。

Presentation關則是請你事先做一份簡報,通常是報一個過去做過的專案,我分享的是在國泰時,如何幫助客服中心解決成本問題的專案,大致內容可以參考我這篇Paper:ET-USB,當然實際報告的時候做了很多修改,簡報基本上就是參考第四輪的流程,從商業問題到資料科學問題再到如何解決,最終帶來什麼商業價值。

TEI關就是挑過去的專案、Paper問1–2個然後鑽深,畢竟是技術關,會問到非常細的技術,最常問的就是你為什麼用這個模型,優缺點是什麼等等。但我認為如果能過前面幾輪,又對自己做過的專案很了解,這關應該不會是太大問題?!

從McKinsey QB給我的Feedback中,得到的結論是McKinsey QB想找的人不僅技術要強,重點要能跟商業結合,畢竟McKinsey QB的DS是Consultant性質,需要幫客戶解決問題,工作內容可以想成是白天管顧+晚上Coding,也是週一到週四在客戶端,週五回公司,所以從待解決的商業問題到最後技術所能創造的商業價值是非常重要的,千萬不要只顧著講酷炫的技術而忽略商業價值了。

結語

我想謝謝一路上幫助我的人,特別是我最敬仰的Apple大哥Roger、睿紳、Linda,當我有各種Leetcode、資料工程、Case甚至是BQ的困難,都能給我非常好甚至是最好的建議; 桓維、鄧亙、以晴、澤恩、Slackers夥伴們整天陪我苟且抒發心情屁話讓這段日子更加快樂; 介紹我自學踏入AI 領域的104–1梯預官們和國泰的恩師:采襄、大師、RC,身為一個如此自我隨性的人,謝謝你們給我空間在專案中自由揮灑和研究技術; 學霸室友 Peter Lin 幫我解決許多學校作業; 內推幫我很多忙的KaiPin、Ellie、Yi-hsuan、恭弘哥、Eric,當然還有我最親愛的媽媽、妹妹、家人們一路上都是我的心靈支柱,還有很多很多人這邊就先不一一道謝了。

除了知識外,我認為最重要的還是運氣,決定面試會不會上的因素很多,可能是天時地利人和甚至是你overqualified,所以無論如何就是保持自信,有時候不是自己不好,可能就只是不對Tone,如果覺得自己哪邊不足就再補強就好,如果覺得自己很棒那就檢討公司就好。多年前有位去哈佛唸書的醫師朋友沅叡告訴我要有Creed 信念,這條路上總會有很多流言蜚語、各種皺摺、各種浪費時間的學校作業考試報告開不完的會議影響你準備面試、唸書的時間,但只要知道自己想去哪裡,知道自己能走到哪裡,照著自己的目標走,堅持到底就對了。

身為一個極度愛講幹話的人,整天和大學死黨們講幹話最愛講沒差、無所謂,講久了就變成我很愛的一句話:

無所謂就能無所畏懼

我覺得這句屁話在這一年帶給我心靈有非常大的扶持,不管是在學業或是求職。

首先是學業,成績很爛的時候我都抱持無所謂心態,每個人念碩士的目的不同,對我而言,這趟碩士之旅的目的就是求職,不需要在意這種學校成績,能畢業就好,反正考不好的題目,面試也不會考,只要快樂學習,吸收那些認為重要的東西就可以了,也沒必要去跟同學比較成績,只要專注在今天的我是不是又比昨天的我更進步一些,以及哪方面有待提升就好。不能否認有了相關工作經驗,會知道面試的時候什麼東西比較重要,所以我就是一直唸面試相關的筆記,也就是上面提到的LeetCode、ML/DL、Product+A/B Testing、SQL、統計、BQ等,然後不停的優化筆記,光是這些東西都讀不完了還要瘋狂刷題,讀完就再重複讀到滾瓜爛熟,刷一遍不夠就刷到滿意為止,因此,基本上學業相關就是放推,即使教授允許我們帶事先手寫好的小抄來面對考試,我也懶得花時間做小抄,更不用說花時間念期中期末考了,概念就是學業相關時間最小化,面經筆記時間最大化,因為一天只有24小時,不太可能我全都要,而且無法預測什麼時候有適合自己的工作機會或是下一輪面試,所以平常能做的就是準備好自己,然後隨時能上戰場。

再來是求職,還記得McKinsey我是拖到截止日才申請,本來甚至想說算了,履歷關都不知道會不會過,申請的時候也沒覺得非要不可,那時候更想去Facebook,即便後來過了OA關,在HR關被問到想去哪個地點的辦公室,我都說等之後萬一錄取了再決定,那時根本沒想過能走到最後一關,即便McKinsey多年前曾經是我的夢想,但多年後,我其實不再對這間公司有太多想法和渴望,就想說一關一關來,結果運氣非常好的就一關一關過,直到6月底收到offer,我覺得我就是一直抱持著無所謂心態,但是全力以赴的心情準備,面試的時候都是把面試官當作是朋友一般交流技術,對於所有面試都抱持這種心態,既來之則安之沒什麼好怕,我想這也是當下能盡量無壓力好好發揮的原因,希望這句屁話也能帶給大家幫助。

寫在最後,我這一年的心得,不見得適用所有人,如果不是過去就有DS相關經驗、對這領域的技術已經有一定程度的了解,我可能也沒辦法開學一個月就直接應付TikTok的面試、只靠面經做筆記就有辦法準備面試; 只是如果你也具備一定基礎,然後是找工作導向,確實可以參考我的心得,重點還是找到屬於自己的方法,然後做出最好的選擇,如果還有其他問題歡迎聯繫!

最後的最後,送給大家我最愛的幾句話:

心存善念,盡力而為,念念不忘,必有迴響

--

--