數據挖掘工程師的面試問題與答題思路【轉】

機器學習、大數據相關崗位根據業務的不一樣,崗位職責大概分爲:

一、平臺搭建類
  數據計算平臺搭建,基礎算法實現,固然,要求支持大樣本量、高維度數據,因此可能還須要底層開發、並行計算、分佈式計算等方面的知識;

二、算法研究類
  - 文本挖掘,如領域知識圖譜構建、垃圾短信過濾等;
  - 推薦,廣告推薦、APP 推薦、題目推薦、新聞推薦等;
  - 排序,搜索結果排序、廣告排序等;
  - 廣告投放效果分析;
  - 互聯網信用評價;
  - 圖像識別、理解。

三、數據挖掘類
  - 商業智能,如統計報表;
  - 用戶體驗分析,預測流失用戶。
  以上是根據求職季有限的接觸所作的總結。有的應用方向比較成熟,業界有足夠的技術積累,好比搜索、推薦,也有的方向還有不少開放性問題等待探索,好比互聯網金融、互聯網教育。在面試的過程當中,一方面要盡力向企業展示本身的能力,另外一方面也是在增進對行業發展示狀與將來趨勢的理解,特別是能夠從一些剛起步的企業和團隊那裏,瞭解到一些有價值的一手問題。

  面試

如下首先介紹面試中遇到的一些真實問題,而後談一談答題和麪試準備上的建議

算法

面試問題

  一、你在研究/項目/實習經歷中主要用過哪些機器學習/數據挖掘的算法?
  二、你熟悉的機器學習/數據挖掘算法主要有哪些?
  三、你用過哪些機器學習/數據挖掘工具或框架?
  四、基礎知識
1)無監督和有監督算法的區別?
2)SVM 的推導,特性?多分類怎麼處理?
3)LR 的推導,特性?
4)決策樹的特性?
5)SVM、LR、決策樹的對比?
6)GBDT 和 決策森林 的區別?
7)如何判斷函數凸或非凸?
8)解釋對偶的概念。
9)如何進行特徵選擇?
10)爲何會產生過擬合,有哪些方法能夠預防或克服過擬合?
11)介紹卷積神經網絡,和 DBN 有什麼區別?
12)採用 EM 算法求解的模型有哪些,爲何不用牛頓法或梯度降低法?
13)用 EM 算法推導解釋 Kmeans。
14)用過哪些聚類算法,解釋密度聚類算法。
15)聚類算法中的距離度量有哪些?
16)如何進行實體識別?
17)解釋貝葉斯公式和樸素貝葉斯分類。
18)寫一個 Hadoop 版本的 wordcount。
……
  五、開放問題
1)給你公司內部羣組的聊天記錄,怎樣區分出主管和員工?
2)如何評估網站內容的真實性(針對代刷、做弊類)?
3)深度學習在推薦系統上可能有怎樣的發揮?
4)路段平均車速反映了路況,在道路上布控採集車輛速度,如何對路況作出合理估計?採集數據中的異常值如何處理?
5)如何根據語料計算兩個詞詞義的類似度?
6)在百度貼吧裏發佈 APP 廣告,問推薦策略?
7)如何判斷本身實現的 LR、Kmeans 算法是否正確?
8)100億數字,怎麼統計前100大的?
……

網絡

答題思路

一、用過什麼算法?
  最好是在項目/實習的大數據場景裏用過,好比推薦裏用過 CF、LR,分類裏用過 SVM、GBDT;
  通常用法是什麼,是否是本身實現的,有什麼比較知名的實現,使用過程當中踩過哪些坑;
優缺點分析。

二、熟悉的算法有哪些?
  基礎算法要多說,其它算法要挑熟悉程度高的說,不光列舉算法,也適當說說應用場合;
  面試官和你的研究方向可能不匹配,不過在基礎算法上大家仍是有不少共同語言的,你說得過高大上可能效果並很差,一方面面試官仍是要問基礎的,另外一方面一旦面試官突發奇想讓你給他講解高大上的內容,而你只是泛泛的瞭解,那就傻叉了。

三、用過哪些框架/算法包?
  主流的分佈式框架如 Hadoop,Spark,Graphlab,Parameter Server 等擇一或多使用瞭解;
  通用算法包,如 mahout,scikit,weka 等;
  專用算法包,如 opencv,theano,torch7,ICTCLAS 等。

四、基礎知識
  我的感受高頻話題是 SVM、LR、決策樹(決策森林)和聚類算法,要重點準備;
  算法要從如下幾個方面來掌握:
1)產生背景,適用場合(數據規模,特徵維度,是否有 Online 算法,離散/連續特徵處理等角度);
2)原理推導(最大間隔,軟間隔,對偶);
3)求解方法(隨機梯度降低、擬牛頓法等優化算法);
4)優缺點,相關改進;
5)和其餘基本方法的對比;
6)不能停留在能看懂的程度,還要對知識進行結構化整理,好比撰寫本身的 cheet sheet,我以爲面試是在有限時間內向面試官輸出本身知識的過程,若是僅僅是在面試現場纔開始調動知識、組織表達,總仍是不如系統的梳理準備;
7)從面試官的角度多問本身一些問題,經過查找資料總結出全面的解答,好比如何預防或克服過擬合。

五、開放問題
  因爲問題具備綜合性和開放性,因此不只僅考察對算法的瞭解,還須要足夠的實戰經驗做基礎;
  先不要考慮完善性或可實現性,調動你的一切知識儲備和經驗儲備去設計,有多少說多少,想到什麼說什麼,方案都是在你和麪試官討論的過程裏逐步完善的,不過面試官有兩種風格:引導你思考考慮不周之處 or 指責你沒有考慮到某些狀況,遇到後者的話還請注意靈活調整答題策略;
  和同窗朋友開展討論,能夠從上一節列出的問題開始。

架構

準備建議

一、基礎算法複習兩條線
  材料閱讀 包括經典教材(好比 PRML,模式分類)、網上系列博客(好比 研究者July的「結構之法,算法之道」),系統梳理基礎算法知識;
  面試反饋 面試過程當中會讓你發現本身的薄弱環節和知識盲區,把這些問題記錄下來,在下一次面試前搞懂搞透。

二、除算法知識,還應適當掌握一些系統架構方面的知識,能夠從網上分享的阿里、京東、新浪微博等的架構介紹 PPT 入手,也能夠從 Hadoop、Spark 等的設計實現切入。

三、若是真的是以就業爲導向就要在平時注意實戰經驗的積累,在科研項目、實習、比賽(Kaggle,Netflix,天貓大數據競賽等)中摸清算法特性、熟悉相關工具與模塊的使用。

框架

總結

現在,好多機器學習、數據挖掘的知識都逐漸成爲常識,要想在競爭中脫穎而出,就必須作到:
  保持學習熱情,關心熱點;
  深刻學習,會用,也要理解;
  在實戰中歷練總結;
  積極參加學術界、業界的講座分享,向牛人學習,與他人討論。
  最後,但願本身的求職季經驗總結能給你們帶來有益的啓發。機器學習

相關文章
相關標籤/搜索