回復【Data】,獲取24頁Data Scientist面經精華
作者背景:北京交通大學本科,信息與計算科學專業;喬治亞理工大學Master,Computational Science and Engineering專業。
Offer:Yelp, Hulu, ServiceNow, 以及灣區某Startup
近兩個月的時間裡瘋狂地投了200多份簡歷,聊了50多家公司,搞了近百場面試。拿到了ServiceNow, Hulu, Yelp以及灣區一家Startup的Data Scientist offer,最後從了ServiceNow。趁著最近記憶還鮮活,嘮叨一下自己這兩個月面試的心得體會,希望能夠幫助有需要的同學。
Master畢業後在一家Startup做Data Scientist,到今年1月裁員的時候剛好幹滿一年。之前工作主要集中在兩個方面,一是客戶與產品分析(customer conversion / churn analysis, product analysis),二是數據分析產品的研發。這次找工目標是Data Scientist,另外也有面過Machine Learning Engineer, Software Engineer。
面過的公司裡面以High tech公司為主,少部分是傳統行業的公司。Data Scientist面試的基本流程包括:
其中,電話面試主要是聊聊簡歷,問問機器學習概率統計,寫寫代碼。Homework Assignment, 通常是給一個簡化但與實際工作相關的問題,根據給出的數據進行建模、分析、完成報告。Onsite interview裡每一輪面試的側重點都會有所不同,但是基本上是電話面試的擴展版。
由於目前數據行業從業人員背景千差萬別,所以不同背景的面試官關注的點可以能不一樣。有的側重於具體的技術細節,有的更看重Business impact。所以在準備簡歷的時候,最好能保證兩個方面都照顧到。在聊簡歷到過程中,常被問到這些問題:
聊簡歷的終極奧義是引導面試官聊你最熟悉的內容,引導面試官問你想讓他問的問題(能體現你的水平與思考的)。總的來說,簡歷從寫到聊,水很深。但是最基本的要求,必須熟悉簡歷上的每一句話,每一個關鍵字,了解每一個技術點。
機器學習是Data Scientist面試中非常非常重要的一個部分,因為這是Data Scientist看家吃飯的技能,所以機器學習的面試結果會很大程度上左右最終面試結果。一般公司會從廣度、深度、經驗三個角度進行考察。
從廣度上講,應該對機器學習各個方面(Regression, Classification, Clustering, etc.)的算法都有所涉獵。不要求精通,但是至少能夠用幾句話描述出
算法是在怎樣的假設下用怎樣的步驟解決了怎樣的問題,有什麼優缺點。
從深度上講,一方面能完整的掌握幾種機器學習的算法。不僅僅知道算法是幹什麼的,更要知道與之相關的數學推理、技術細節。比如Naive Bayes怎麼利用Naive Assumption簡化,比如AUC為什麼對於數據不平衡問題不敏感等等。另一方面,能夠對算法進行橫向比較。比如什麼情況下Random Forests 比Gradient Boosting好,什麼情況下不如GBM,為什麼會這樣。
從經驗上講,側重的是考察與實際項目有關但是在課堂或教科書裡一般不會涉及的內容。比如,
面試中概率有關的都是一些很經典的問題,比如紅白球取某種球的概率,計算條件概率,根據貝葉斯公式計算概率等。統計相關的概念也經常會被問到,比如什麼是p值、置信區間、最大似然估計、中心極限定理、大數定律等。
如果職位對統計的要求較高,也會涉及一些統計檢驗方法,比如如何判斷兩組數是否來自同一分布。AB test也是一個統計的考察點。
Data Scientist對於算法和coding的要求相對較低,不需要像Software Engineer那樣要求bug free。
與Data相關的題目被問到的機率相對較高,比如find median from data stream, median of two sorted array等。另外,簡化版的k-means,tf-idf等機器學習的算法也有被要求過現場寫代碼。此外,SQL基本是必考內容,從各種不同的Join,再到一些高級技巧都所涉及,基本上過一遍w3school就能解決絕大部分SQL題。
我把開放性問題分為三類,一是實際問題的Case study,二是「之前的經歷中有沒有遇到過xxx問題」,三是Behavior questions。
我個人的回答思路是:
首先明確問題並將其轉換成建模問題
確定需要什麼樣的數據
進行feature的構建及選擇,模型評估方法的選擇,模型的構建與測試評估
最後談一下結果的delivery
「有沒有遇到過xxx問題」也是一類經常被問的問題。這需要注意在工作過程中的積累,平時多思考。如果真的遇到不熟悉的問題也不要慌。這類問題典型的有:
Software Engineer面試中很少會涉及到Behavior questions,大家都上來直接做題過招。但是Data Scientist面試中這是非常常見的,估計是因為Data Scientist工作中經常需要同時與技術和非技術的同事打交道。
除了怎麼進行團隊合作、遇到意見不一致怎麼處理、怎麼進行日常交流等常見Behavior questions之外,諸如「如何向沒有數據背景或者沒有技術背景的同事解釋模型」、「在Business objective不明確或無法實現的情況下如何進行交流溝通」這種與日常工作緊密結合的問題也會被問到。
以上就是我的一些小小經驗分享,希望能夠幫助有需要的同學。最後歸納一點我自己的心得體會:
拿面試看簡歷,拿Onsite看實力,拿Offer看溝通。
作者:qingbinlee
由MintyMentors整理轉載自網絡
【經驗+乾貨才是Offer的雙重保證】
Data Scientist面經 部分預覽
回復Data,領取長達24頁 面經及答案分析!