一線網際網路公司機器學習崗位面試經驗

shuaishuai3409發表於2016-10-21

從9月18號開始投實習簡歷到10月21號,差不多一個月的時間,面了三個網際網路公司,有研發崗和演算法崗,有的拿到了internship, 也有的被慘虐;會有面試通過的驚喜,也有一輪遊的不甘;對結果的無法控制和等待過程中的焦慮,更會有對自身的不自信,相信每個面試的人都經歷過,但無論如何實習這件事算是過去了,希望自己在接下來的路依舊不卑不亢,努力前行。


一、 某度內容推薦平臺架構崗面試總結(拿到internship)
時間:9月18號–9月28號
由於有玩的不錯的同學騰二在這家公司,於是就直接內推了,從投遞簡歷到三面結束共10天,不得不說其效率還是挺高的。其實本想是和騰二一樣做web開發崗,當時面試準備的也是和web開發相關的,但由於之前沒咋做過專案,servlet、session等知識不會,就被轉到推薦平臺架構設計崗了,最終通過面試,也是挺幸運的。下面總結下面試內容:

  • 一面:
    一面是個姐姐,之前聽騰二說它的部門經理是學姐,然後我就以為是她,就一個勁稱呼她學姐,可惜後來才知道不是。她問的比較基礎,建議大家要熟悉考研408的知識,這樣至少不會一輪遊。
    1. 介紹專案
      參加過天池大資料競賽,所以這個問的比較細,這個比賽前前後後被問了有四次。雖然感覺一次比一次表述的好一些,但還是缺乏有力的總結,比如為什麼用RF模型,這個模型比別的好在哪裡,適用場景有哪些,優缺點是啥;特徵工程的時候,為什麼要這樣處理,這樣處理有什麼好處;你自己的創新點在哪裡?總而言之就是細節一定要把握好,多問問自己那塊為什麼這樣做,針對可能會被問到的問題都準備下。
    2. 資料庫知識
      由於自己學過慕課網的資料庫實戰專案課程,對mysql有一定的瞭解,故在簡歷中刻意提到了這些。mysql資料庫的索引優化,sql優化,常用sql語句的書寫也要懂(巢狀的,稍微複雜些的也要會),熟悉下較流行的資料庫,比如memcache,redis等。(主從複製原理也要懂,,多執行緒訪問資料庫)
    3. 網路
      tcp協議三次握手四次揮手,http協議包含哪些請求,tcp對應協議,udp對應協議
    4. 程式語言
      java的hashMap、hashTable等必問題,java虛擬機器的GC回收演算法,和C/C++區別等等
    5. 資料結構
      兩個程式設計題,判斷單連結串列有沒有環,並輸出第一個環節點;找兩個連結串列的公共節點。

總體來說,一面不是很難,這些需要大家有目的性的積累。


  • 二面
    二面是個男的,具體職位不清楚,但感覺比較難,個人面完後覺得要跪。問的網路方面的東西比較多,涉及到的原理性知識也偏多了些。

  1. 專案:

    各種細節吧,每個人關注的點不一樣,所以還是要把專案屢清楚,創新點、邏輯、多問幾個為什麼等等。
    還問了我如何處理負載均衡,我回答的不好。

  2. 網路:

    瀏覽器輸入www.baidu.com會發生什麼?(說的越詳細越好),這個問題可以看出一個人對網路的熟悉程度,根據這個問題,牽扯到了許多,比如常見路由選擇協議及底層原理,ARP/RARP協議,html介面如何返回,servlet /session等等,由於這些我之前不太瞭解,感覺面的很差。

  3. 資料結構:

    就一個,全排列演算法

  4. 程式語言:

java必問的那些,GC演算法,多執行緒(最好有多執行緒專案,會是亮點

二面完個人感覺很差,因為網路那塊的知識感覺被虐慘了,但是資料結構方面問的其實不難,感覺複習的時候複習到樹那塊的知識就足夠了。演算法部分推薦大家看july的《程式設計之法》,不多,很系統。

  • 三面

三面基本上沒有問技術,問了兩個智力題,然後就問了下實習時間,介紹了下他們做的內容,以及自己要去的話會做啥等等。但是由於自己的時間問題,不能滿足他們實習6個月的要求,所以很遺憾,最終沒能去成。




二 、某一線網際網路機器學習崗面試總結(一輪遊)

機器學習崗還是很有挑戰性性的,對機器學習演算法理論要求比較高。這次面試主要圍繞兩個大資料競賽,問了很多比賽中模型的細節,穿插著問了常用的分類、聚類模型原理、適用場景等問題。由於是第一次面演算法崗,理論部分準備的不是特別充分,導致一輪被掛,沒有覺得遺憾。以下是建議:

對常用模型要有熟悉的理解,從理論到應用,從推導公式,到深入理解,一個環節都不能少。要熟悉的理論知識:決策樹、貝葉斯、邏輯迴歸、RF、GBDT、xgboost、KNN、k-means、adboost,甚至正則項L0、L1、L2的作用。


下面說說面試中被問到的:

  • 決策樹:資訊增益、資訊增益率、GINI係數。

    資訊增益用來度量屬性劃分樣本的能力,資訊增益越大,樹的劃分情況越好,越簡潔,高度越低。

    資訊增益率:資訊增益比上分裂資訊熵,為了解決資訊增益作為衡量指標的一個缺點(參考jiawei han那本書)

    gini係數:用來度量分佈不均勻性(不純),總的類別越雜亂,gini指數越大,所以要找最小gini指標。
    貝葉斯:貝葉斯原理,樸素貝葉斯。

    注意若某屬性A是連續值的情況,gini係數和資訊增益都如何處理。

  • 貝葉斯定理:

    樸素貝葉斯: 掌握某屬性是連續值情況如何處理(高斯分佈),遇到0概率值怎麼辦(拉普拉斯校準)。若屬性之間不是相互獨立的怎麼辦?(貝葉斯網路)

  • k-means缺陷,knn如何制定k,kd樹原理。

  • L0、L1、L2正規化
    參照下面兩篇部落格:
    http://blog.csdn.net/zouxy09/article/details/24971995/
    http://blog.csdn.net/vividonly/article/details/50723852

  • 隨機森林
    http://www.36dsj.com/archives/21036

天池大資料競賽大神bryan機器學習崗面試經驗及資料整理




三 、某小公司機器學習崗面試總結(internship)

這家面的是一家小公司,由於不是前兩場電話面試,而是face-to-face,所以問的更具體一些。

主要還是問了天池的競賽,不過又細化到了python下scikit-learn包API如何呼叫、引數如何設定等問題,當然RF等模型原理還是少不了問的,還問了模型的輸入和輸出等。日後我會整理出一篇關於天池競賽思路的部落格,以便下次面試使用。還有C++的多繼承的缺點,java為什麼要有介面。剩下的就是白板面試,現場寫演算法。總而言之,face-to-face問的更細,問的也最久,雖然是小公司,但是面試壓力還是挺大的。


最後,祝願大家能夠不斷努力,證明自己,找到自己喜歡的崗位。

相關文章