經過小半年漫長又折磨人的求職過程,終於在收到EAD卡的當天上岸了。
背景:應用數學博士New Grad + 一段DA實習經歷 + 一段遠程DS實習經歷
漂流時間:2020八月 - 2020十月 (2020一月-二月找了一陣,但是因為接了個感興趣的實習,後來又畢業答辯就耽擱了)
一句話總結上岸秘訣:要勇於在戰爭中學習戰爭。
疫情期間找工作有多不易我不想贅述了。我開始找工作的時候剛好是各公司剛裁員的時候,那時真是每天目送著無數的努力和希望石沉大海。最近市場漸漸回暖了,筆者也終於乘著小風劃著小槳上了岸。最開心的是在這種情況依然堅持了初心,選擇冒險去拼一把喜歡的公司和職位。過程很漫長,崩潰很經常,結果很美滿,希望我的經歷可以小小地幫助到你。
一、面試情況篇~
我這次的面試情況:
海投+內推:> 100家
店面:粉家(過),狗家(過),果家(過),富國(過),唯一理我的start up是Root家(過),臉家(掛),屁家(掛),軟家(還沒出結果)
Homework:粉車(過),Root(沒出結果)
Onsite:粉車(五輪過),果家(十輪feedback positive,要求加一輪HW,我拒絕),狗家(五輪掛),富國(忘了幾輪了,掛),戴森(因為公司離得近直接給了昂賽,掛),實習公司的嵌入式軟體開發組拋橄欖枝(不合適,掛)
註:其中除了果家和屁家是MLE職位,實習的公司是Embedded SWE職位,其他都是DS職位,有的是NG職位有的不是。
再註:富國和戴森是年初1-2月面的,其他是在8-10月之間。
總結:
1. NG申小廠真的不吃香。小廠更喜歡有經驗的
2. 我只有粉家狗家和臉家是內推,所以只要簡歷寫得好,海投還是會有結果的。
3. 地裡位置有時也很重要,比如戴森直接給我昂賽,比如唯一理我的start up在我隔壁州。
二、面試準備篇~~
即使職位都叫Data Scientist,但其實具體內容可以有N個不同的方向。每個方向要考察的內容也不同。最好的情況當然是認準一個方向準備,可以通過看JD,和recruiter溝通,或者在第一輪面試結尾和面試官溝通來判斷職位是否適合你。
But,由於疫情的影響,這段時間真的沒有那麼多坑可以選擇,所以我面試時其實是來者不拒的,從偏向AB testing的,到偏向Algorithm的,到SWE、MLE只要有機會我都上。雖然多準備了一些東西(比如刷題可能要Python一遍C++一遍),但這樣可以幫助保持一個好的面試狀態,並且磨鍊BQ的面試經驗。
根據面試流程說一些我認為在準備面試時比較重要的地方。
1. 簡歷一定要突出你和職位的match程度,不相關的成果獎項都沒必要放,相關的一定要往細了往多了寫。我的簡歷也不是一開始就好使,也是一點點慢慢改。然後一旦開始收到interview了,我就不再花時間在簡歷上了。
2. 對簡歷上的每一個字都最好能講上一分鐘。既然公司是通過你的簡歷決定給你面試機會的,這時你所需要做的其實就是證明你正如你簡歷上描述得一樣」優秀「。相反地,如果被簡歷上的內容問住了,或表現得不熟悉,將會是一個非常極其特別減分的點。
3. 多學習其他人的面試經驗
4. 有一些公司在面試前會有很詳細的guide,有一些沒有,還有一些會故意告你錯的方向。我的建議是如果是general hiring並且有很正式的prep doc,就按照要求好好準備,如果是組招或者是從recruiter嘴裡問出來的,自己多加斟酌。
5. 昂賽很累,前後兩天能不安排重要的事就別安排。但昂賽前兩三天可以安排幾個店面帶帶節奏。
6. 昂賽時面一輪忘一輪,千萬別想之前的表現,影響了後面的表現。
7. 每一輪面完都要及時復盤,直視面試中的錯誤和尷尬。等你發現你寫下來的條目越來越少,最後只剩下這次都還不錯的時候,offer就離你不遠了。
8. 面完昂賽不要數花瓣,就當它掛了,好好準備下一個面試。
還有一個眾所周知的技巧就是把想去的公司排在最後。但是由於疫情的原因(那會兒只有狗家active)我第一個昂賽就是狗家。雖然很遺憾,但也在短時間內學到了非常多的東西,讓我對之後的面試有了更多的信心。所以如果你也一上來就接到了dream company的面試,不要怕,面就完事。面完記得好好總結。
三、面試內容篇~~~
DS一般可以分為側重模型和側重分析兩個方向, 當然不同公司還會有更多更細緻的方向。我自己是主攻模型方向,但在面試過程中也會被問道很多分析方向的知識,比如AB testing和case study。雖然佔比不大,但也是絕對不能忽視的。
說一下我最了解的DS模型方向一個大概的準備內容和方式。
1. ML基礎知識
這個必須紮實。你也許會看到prep doc上寫著,建議你回去讀讀你的ML101 textbook。但其實,你應該去讀讀《ML 101問》。當然了,並不真的存在這麼一本書,我的意思是,在準備ML基礎知識時,要以回答問題的形式來準備。比如,如果問題是How to deal with imbalanced data?你要從何講起,怎麼講。再比如要你解釋NN的原理,你第一句說什麼。諸如此類。谷歌machine learning interview questions既可。
2. 概率基礎知識
這個就真的要看textbook了,還要多做做textbook上的題。我在學校用的書是《A first course in probability》,這本書也是狗家在他們的unofficial DS blog裡推薦的面試複習用書,對自己概率沒信心的必看,看完秒殺概率輪。
3. Coding能力。
就是刷Leetcode。如果你不面engineer職位就不用想我一樣刷兩種語言了。Python足以走天下,包括MLE職位。我面過的公司裡只有狗家對DS沒有算法要求,其他則要求是LC medium的水平。MLE會要求Medium-Hard水平。
關於刷題的方法我一度受到某些前輩影響選擇直接看答案,但後來發現這個方法也許適合他,但絕不適合我。我現在堅持看到新題一定要自己認真寫一遍,再去看hint,再自己優化,最後看答案。
還有一個我經常做的事就是開著攝像頭(比如Zoom)做題,這樣就很有面試的感覺,注意力也更集中。
刷題的時候經常看的是花花醬的視頻和博客:https://zxi.mytechroad.com/blog/
還有一個是Grandyang的博客,他用的程式語言好像只有C++,但他的思路描述都寫得比較逗:https://www.cnblogs.com/grandyang/
4. A/B Testing知識
我相信udacity的課你們都看過了把。看完Udacity,該有的知識你就都有了,但Udacity沒教面試時該怎麼回答問題。
對於面試裡的A/B testing,我覺得比知識更重要的是答題的思路。這個真的只有多面幾次,多復盤幾次,才能在面試的氣氛中做出正確的反應,問出正確的問題,不然很容易jump into conclusion。
我的辦法和建議是找個朋友,懂AB的更好,讓他幫你mock幾次,形成固定的答題思路。這樣在正式的面試中才更能專注於題目本身,而不是分心去想該問哪一類問題了。
A/B題裡絕不會缺席的一個部分就是找metric。我一般會在StellarPeers上搜索公司名字或相似業務來找靈感。https://stellarpeers.com/blog/
5. Case Study
有一些公司會非常在意candidate的business sense,包括A/B testing其實也可以被歸類為一種Case study。
這些題通常都是open ended,所以此時你的答題的思路的重要性會大於你最終答案的重要性。(如果你聽過喜馬拉雅上那個LOMS Consulting Case Interview,你就知道思路這件事的重要性)
關於具體的答題套路我也不是專家,但有幾個點你一定不能miss掉。第一是上來一定要問business goal,不然後面全白搭;第二是答案一定要organized,不要東一句西一句讓人摸不著頭腦,最好在開頭把你的答題框架說出;第三是從一個點講到下一個點的時候一定要有銜接,讓人知道你思路的連貫性和因果關係。做到這三點,再加一個總結,你這輪就穩了一半。
準備Case的時候我在亞馬遜上買了好幾本書,後來他們都寄丟了。。。所以我只看了《Cracking the PM interview》聽了 LOMS Consulting Case Interview,感覺前者對BQ幫助更大,後者才真的讓我的Case提高了一個層次。
6. BQ
BQ就是用眾所周知的STAR格式講故事。建議至少準備6個例子,兩個關於衝突的,兩個關於失敗的,兩個關於leadership的。其他的當然多多益善。上面提到的《Cracking the PM interview》會對梳理和準備例子很有幫助。
7. SQL
我準備了,但是沒被考到過。
準備方式就是刷SQLZOO刷Leetcode刷HackerRank。
雖然沒考,但SQL絕對是DS的基本技能。實際上,會SQL不只是為了面試,更是為了日後的工作效率。本來30分鐘能讀完的數據,小白的寫法就是能給讀成50小時。你說重不重要。
8. 簡歷上的項目
據我粗略的統計,每一輪面試都有大約0.5的概率被問到簡歷上的項目。所以一定要把它們講得滾瓜爛熟,聲情並茂,繪聲繪色,不明覺厲……。當然還是要給面試官講明白來龍去脈,並且強調impact,比如有多少多少人現在正在用你做的東西就是一個很抓人的點。
如果沒有impact很大的項目,就努力打一個出色的Kaggle排名,也會讓你在面試官面前散發光芒。
面試內容大概就是這些了,嗯~
四、面試心態篇~~~~
就像我在開頭說的,找工作的過程是漫長的,崩潰是經常的。據我老公觀察記錄,我在每個面試前24小時都會有一次或大到哭著打滾,或小到喋喋不休的焦慮舉動。此舉動會在面試結束後自然消失。但崩潰,它也是會進化的。我在面狗家昂賽前,感覺複習不完了,是躺在沙發上哇哇哭了半小時。直到準備粉車面試的時候,是一邊坐在電腦前準備的BQ答案,一邊就哭完了,啥也沒耽誤。
所以朋友們,有壓力不怕,崩潰也不怕,崩潰說明你在突破自我,崩的都是困住你的銅牆鐵壁,我們就是要使勁崩它,崩飛它。
關於心態還有一點想說的就是,不要害怕面對能力以外的挑戰,不要輕易放棄任何一個機會。我年初剛開始找工作的時候,拒絕了三四個面試機會,因為我覺得我的能力還達不到,怕尷尬,怕出醜。但後來我覺得這樣不行,越是困難我越要上,要在戰爭中學習戰爭!於是投了很多MLE的職位來鍛鍊自己的Coding技巧。屁家我面了兩次,都很尷尬,但每次面完我都感覺自己進步了一大截。可以說不在屁家丟臉,我絕不可能在果家MLE走到那麼後面。
早點犯錯就可以早點集齊缺點,改正不足。所以就勇敢地面吧,面好了當時爽,面不好下次爽。
本文源自一畝三分地