[轉]關於」算法工程師/機器學習工程師」的筆試和麪試總結

從16年九月份開始,參加了一些公司的算法工程師/機器學習工程師崗位的校園招聘,作一些總結,但願能夠給你們準備這個職位提供些信息。java

1、須要的基本技能
數據結構知識
掌握一門編程語言,c/c++/Java/Python
機器學習經常使用算法或者某一細分領域(推薦,天然語言處理,圖像識別,語音識別等)的經常使用算法python


2、筆試和麪試內容
大可能是技術筆試而後二到三輪的技術面試linux

技術筆試都是考察基本的計算機知識,機率統計相關題目,智力題,linux經常使用命令和編程/算法能力等c++

計算機知識包括:
主要是數據結構包括數組,增刪鏈表,樹,排序算法等。也可能會有數據庫基本語句,操做系統進程和 線程相關的,計算機網絡的TCP/IP協議部分)
編程能力:
一到三道在線編程題目
算法能力:
給出一個場景,回答使用什麼算法去建模解決
面試問題程序員

機器學習經常使用算法,例如:
決策樹的ID3,C4.5,CART等,決策樹的split原理和剪枝策略
神經網絡如何工做
SVM的原理及公式推導
樸素貝葉斯的公式
Bagging 和 Boosting的區別
GBDT的參數怎麼調
聚類過程
誤差和方差是什麼,高誤差和高方差說明了什麼
怎麼理解損失函數,SVM的損失函數是什麼,寫出公式
過擬合怎麼解決,L1和L2正則化有什麼區別
爲何用最小二乘而不是最小四乘
GB和牛頓法的區別,它們和泰勒公式的關係
PCA的原理面試

數據結構算法知識,手寫代碼,例如:算法

最大子數組和
快速排序
字典排序數據庫


編程能力,考察熟悉的編程語言的相關知識,編程語言掌握一門便可,例如:編程

java:static的做用,hashmap,arraylist和linklist的區別,多線程數組

c/c++:實現strstr(判斷一個字符串是不是另外一個的子串)
python:安裝Python的命令是什麼,用python讀取一個文件,一行一行的輸出(不能用庫函數)

python:安裝Python的命令是什麼,用python讀取一個文件,一行一行的輸出(不能用庫函數),python經常使用庫

大數據開發能力:Hadoop/Hive/Map Reduce開發,例如Map Reduce 寫 word count

 

深度學習知識:

深度學習框架
CNN:什麼是卷積,爲何要padding(根據簡歷的具體項目問
Udacity的機器學習項目P0和P1,若是寫,請想好以下問題:

P0(泰坦尼克號項目):預測這個有啥用?召回率是多少?(題目中並無算)
P1(預測波士頓房價):特徵都是離散的,爲何用決策樹?
(雖然是用的決策迴歸樹,但我也沒想 到更好的回答的方式)。。。
這些面試題目僅供你們參考,各個公司問每一個人的也不同,會根據公司的需求,我的簡歷上的項目問

3、總結:
各個公司的側重點不太同樣,有的公司側重數據分析/數據挖掘(京東,筆試題好多spass),有的公司偏向推薦算法(協同過濾,CTR點擊率預估)(美團,汽車之家也很注重思惟能力),用戶畫像(百度的百家號),有的公司側重大數據開發(要求裏寫了Hadoop/Hive)(中國移動),有的公司更側重算法層面,建模能力(滴滴)

若是是面試天然語言處理(NLP),圖像識別,語音識別之類的公司,基本是要求深度學習知識的。創業公司的話,要求關注最新會議,跟paper,關注領域內最新進展

4、推薦網站和書目
推薦編程刷題網站:牛客網,Leecode
推薦書目《劍指offer》(c++),《程序員代碼面試指南》(java編寫),
《機器學習(周志華著)》(西瓜書),《統計學習方法(李航著)》

五:一些建議:
掌握基本知識後要肯定好本身的目標,機器學習是一個大的方向,還有不少細分,到底是要作文本,推薦,圖像仍是語音識別,差異都很大,人不可能面面俱到,掌握好一個領域的內容就很厲害啦~~

六:數據分析與機器學習的區別
我的的一點理解,具體仍是看崗位要求怎麼寫的
數據分析偏向統計一些,要會SQL/Spass/SAS等數據分析軟件等,更適合數學和統計專業
機器學習要求編程能力較強,即算法實現能力,更適合數學和計算機專業

七:感覺到的現狀
機器學習是一個相對開發來講較新的職位,一些公司也開始增長這些職位,需求仍是有的,要求也較高

機器學習要求編程能力較強,即算法實現能力,更適合數學和計算機專業

以上是一些筆試面試總結,僅供你們參考,歡迎你們補充交流和批評指正

2016年11月

相關文章
相關標籤/搜索