《數據挖掘——從入門到求職》php
by ZakeXujava
PS:文中所涉及資料可從如下連接獲取(包括簡歷模版)python
http://pan.baidu.com/s/1o8r0ux0linux
最近秋招也已經慢慢接近尾聲了,從去年8月底開始,前後參加了datacastle,阿里天池,牛客網各自舉辦的數據挖掘比賽(都是top10),今年4月份又前後去百度,騰訊實習,到如今秋招快結束,也將近一年的時間,最終拿到手的比較有份量的offer主要是騰訊,百度,華爲三家企業的offer,都是sp,下面就將過去一年的一些經驗作一下小總結,不必定是最合適的方法,可是當毫無頭緒的時候,能夠參考參考。git
(一)簡介程序員
1.首先介紹企業對該崗位的一些能力需求,直接貼bat在該方向的相應崗位jd:github
(1)百度:機器學習/數據挖掘工程師面試
(2)阿里:算法工程師算法
(3)騰訊:基礎研究sql
2.我的感受數據挖掘是一個比較大的概念,能夠理解爲:
數據挖掘 = 業務知識 + 天然語言處理技術(NLP)+ 計算機視覺技術(CV)+ 機器學習/深度學習(ML/DL)
(1)其中業務知識具體指的是個性化推薦,計算廣告,搜索,互聯網金融等;NLP,CV分別是處理文本,圖像視頻數據的領域技術,能夠理解爲是將非結構化數據提取轉換成結構化數據;最後的ml/dl技術則是屬於模型學習理論;
(2)在選擇崗位時,各個公司都沒有一套標準的稱呼,可是所作的事情無非2個大方向,一種是主要鑽研某個領域的技術,好比天然語言處理工程師,計算機視覺工程師,機器學習工程師等;一種是將各類領域技術應用到業務場景中去解決業務需求,好比數據挖掘工程師,推薦系統工程師等;具體的稱呼不重要,重要的是平時的工做內容;
PS:在互聯網行業,數據挖掘相關技術應用比較成功的主要是推薦以及計算廣告領域,而其中涉及到的數據主要也是文本,因此NLP技術相對來說比較重要,至於CV技術主要仍是在人工智能領域(無人車,人臉識別等)應用較多,本人瞭解有限,相關的描述會較少;
3.根據以前的分析,也能夠看到該崗位所須要的3種基本能力分別是業務經驗,算法能力與工程能力;
(二)入門
1.工程能力
(1)編程基礎:須要掌握一大一小兩門語言,大的指C++或者JAVA,小的指python或者shell腳本;須要掌握基本的數據庫語言;
建議:MySQL + python + C++;語言只是一種工具,看看語法就好;
推薦書籍:《C++ primer plus》
(2)開發平臺:Linux;
建議:掌握常見的命令,掌握Linux下的源碼編譯原理;
推薦書籍:《Linux私房菜》
(3)數據結構與算法分析基礎:掌握常見的數據結構以及操做(線性表,隊,列,字符串,樹,圖等),掌握常見的計算機算法(排序算法,查找算法,動態規劃,遞歸等);
建議:多敲代碼,多上OJ平臺刷題;
推薦書籍:《大話數據結構》《劍指offer》
(4)海量數據處理平臺:hadoop(mr計算模型,java開發)或者spark(rdd計算模型,scala開發),重點推薦後者;
建議:主要是會使用,有精力的話能夠看看源碼瞭解集羣調度機制之類的;
推薦書籍:《大數據spark企業級實戰》
2.算法能力
(1)數學基礎:機率論,數理統計,線性代數,隨機過程,最優化理論
建議:這些是必需要了解的,即便無法作到基礎紮實,起碼也要掌握每門學科的理論體系,涉及到相應知識點時經過查閱資料能夠作到無障礙理解;
(2)機器學習/深度學習:掌握常見的機器學習模型(線性迴歸,邏輯迴歸,SVM,感知機;決策樹,隨機森林,GBDT,XGBoost;貝葉斯, KNN,K-means,EM等);掌握常見的機器學習理論(過擬合問題,交叉驗證問題,模型選擇問題,模型融合問題等);掌握常見的深度學習模型(CNN,RNN等);
建議:這裏的掌握指的是可以熟悉推導公式並能知道模型的適用場景;
推薦書籍:《統計學習方法》《機器學習》《機器學習實戰》《UFLDL》
(3)天然語言處理:掌握常見的方法(tf-idf,word2vec,LDA);
3.業務經驗
(1)瞭解推薦以及計算廣告相關知識;
推薦書籍:《推薦系統實踐》《計算廣告》
(2)經過參加數據挖掘競賽熟悉相關業務場景,常見的比賽有Kaggle,阿里天池,datacastle等;
PS:以上都是一些入門級別的介紹,在長期的學習中,應該多看頂會paper,多讀開源代碼,多學習優秀解決方案;
PS:以上推薦的書籍對應的電子版能夠聯繫本人(Q:1434909067)
PS: 連接:http://pan.baidu.com/s/1o8r0ux0
(三)求職
1.簡歷
(1)格式:我的信息(姓名,聯繫方式,教育背景,求職意向,照片無關緊要)+ 競賽經歷+ 實習經歷 + 項目經歷 + 掌握技能 + 獲獎狀況;
PS:最好寫成一頁;
(2)加分:博客,github,競賽top10,頂會paper;
PS:若是感興趣的話能夠聯繫我要簡歷模板(Q:1434909067)
PS:牛逼的簡歷可讓你有更多的面試機會,更關鍵的是讓面試官在面試時潛意識給你打高分,固然前提是簡歷要真實,因此平時得爲了牛逼的簡歷多作準備工做;
2.海投
(1)國內設有該崗位且還不錯的公司:
百度,騰訊,阿里,網易(互聯網,遊戲,有道),華爲,今日頭條,滴滴研究院,一點諮訊,360,美團等;
(2)若是選擇留在廣東深圳發展,就業的機會比較少,比較好的主要就是百度深研,騰訊總部,華爲深圳,京東好像在深圳也有個作數據挖掘的團隊;(樓主傾向去深圳發展)
(3)我的建議在3月份的時候能夠經過實習生的身份進入相關企業,爭取實習生留用;通常企業給應屆生的hc分配比例大概是實習生留用:校招提早批:校招正式=4:3:3,實習生留用相對比較容易;
(4)通常投遞簡歷時,儘可能聯繫公司內部的師兄師姐或者熟人,幫忙將簡歷直接給到團隊leader手中,這樣作的好處是能夠同時面試同個公司的多個團隊,前提是簡歷在公司校招系統未被鎖定的前提下,具體狀況多諮詢公司內部熟人,在求職過程當中,信息來源很是重要,必定要注意這點,否則會踩不少坑;
(5)加入各類求職交流羣,多認識些人,共享資源;
(6)投簡歷時候儘可能內推,不少公司內推能夠免筆試;
PS:筆試純屬看rp,總之就是多刷題,上牛客網多練練並針對性複習就好;
3.面試
(1)通常該崗位的面試起碼都有3輪,2輪技術面,1面hr面,hr面主要看情商,這裏很少說;2輪技術面的區別就是越到後面面試官的級別越高,因此面試的風格也可能越偏向於技術視野等一些吹水的話題上;
(2)通常技術面有如下一些環節:自我介紹,項目介紹,算法提問(推公式),數據結構提問(寫代碼);
1)自我介紹:通常儘可能簡短,主要講清楚本身的研究方向,所取得成就以及優點所在便可;
2)項目介紹:簡歷上的項目必定要熟悉,介紹時候分三部曲:項目背景,項目方案,項目成果;對項目中涉及到的一些技術點必定要很熟悉;
3)算法提問:通常是問常見機器學習模型原理或者一些機器學習常見問題的解決方案(好比正負樣本不平衡之類的),因此常見的機器學習模型必定要很清楚原理,必須會推公式,能知道工程實現的一些trick的話,那你就離sp不遠了;
4)數據結構提問:常見的數據結構必定要掌握,基礎的代碼必定要會手寫(快排,冒泡,堆排,歸併排序,二分查找,二叉樹的遍歷,二叉樹增刪查改);劍指offer的題目要會;有精力的話能夠刷下leetcode;
(3)面試的時候多準備一些素材,在面試過程當中主動引導面試官提問,好比面試官讓你講解gbdt原理時,這會你能夠跟他說通常提及gbdt,咱們都會跟rf以及xgboost一塊講,而後你就能夠主動地向面試官輸出你的知識;面試並非死板地你問我答,而是一種溝通交流,因此儘量地把面試轉化成聊天式的對話,多輸出本身一些有價值的觀點而不是僅僅爲了回答面試官的問題;
(4)在面試過程當中,除了基礎的東西要掌握,能夠適當地向面試官展現你的一些其餘的亮點,好比跟面試官談論某些最近paper的進展以及一些技術方面的想法等,突出本身的不同凡響;
(5)不一樣公司的面試風格都略有不一樣:
1)百度:技術派,現場面,最大的風格就是寫代碼,2面技術加一面經理面,技術面必寫代碼;
2)阿里:內推能夠電話面,主要是聊項目跟問一些基礎的數據結構方面的知識,看看劍指offer通常能夠應付;
3)騰訊:內推能夠電話面,主要聊項目跟推公式;
4)華爲:主要聊項目,智力題以及聊價值觀之類的東西;
5)滴滴研究院:百度系,面試風格跟百度差很少;
(6)常見面試題(因爲有的面試時間較久,主要靠記憶寫下來)
1)幾種模型(svm,lr,gbdt,em)的原理以及公式推導;
2)rf,gbdt的區別;gbdt,xgboost的區別(爛大街的問題最好從底層原理去分析回答);
3)決策樹處理連續值的方法;
4)特徵選擇的方法;
5)過擬合的解決方法;
6)kmeans的原理,優缺點以及改進;
7)常見分類模型(svm,決策樹,貝葉斯等)的優缺點,適用場景以及如何選型;
8)svm爲啥要引入拉格朗日的優化方法;
9)假設面試官什麼都不懂,詳細解釋CNN的原理;
10)海量的item算文本類似度的優化方法;
11)梯度降低的優缺點;
12)em與kmeans的關係;
13)L1與L2的區別以及如何解決L1求導困難;
14)如何用盡量少的樣本訓練模型同時又保證模型的性能;
15)解釋word2vec的原理以及哈夫曼樹的改進;
16)對推薦算法的將來見解;
17)在模型的訓練迭代中,怎麼評估效果;
18)有幾個G的文本,每行記錄了訪問ip的log,如何快速統計ip出現次數最高的10個ip;若是隻用linux指令又該怎麼解決;
19)一個繩子燒完須要1個小時,假設全部繩子的材質都不同,也不均勻,怎麼取出1小時加15分鐘;
20)假設有個M*N的方格,從最左下方開始往最右上方走,每次只能往右或者往上,問有多少種走法,假設中間有若干個格子不能走,又有多少種走法;
21)實現hmm的狀態轉移代碼;
22)最短路徑代碼;
23)拼車軟件是如何訂價的以及如何優化;
24)100張牌,每次只能抽一張,抽過的牌會丟掉,怎麼選出最大的牌;
25)怎麼預測降雨量;
26)kmeans代碼;
27)mr方案解決矩陣相乘的代碼;
28)sql語句的一些優化技巧;
29)關於集羣調度的一些經驗trick掌握多少;
30)設計一個系統能夠實時統計任意ip在過去一個小時的訪問量;
31)設計LRU系統;
PS:以上的面試題僅供參考,主要是提供一個方向,大概瞭解這個崗位的面試考覈方向,具體還得多刷刷面經(牛客網);
點擊做者姓名與做者大佬交流~
做者:ZakeXu
來源:
牛客網(www.nowcoder.com)
- 互聯網名企筆試真題
- 校招求職筆經&面經
- 程序員/產品/運營求職實習信息
- 程序員/產品/運營學習交流社區