作爲一個灌水混畢業的博士,投的論文最新審稿意見看到但願,看到有工做同窗發了內推的連接,就讓幫忙推了幾家機器學習算法工程師的實習(騰訊阿里網易)。先後大半個月筆試面試好幾場,總結一下面經回饋牛客。 linux
騰訊提早批
女友在廣州又不想換工做的狀況下,微信的機器學習算法工程師是最適合我實習的崗位了,所以最早讓騰訊的同窗內推了一波,在基本沒有準備的狀況下,接到了提早批電話一面二面,毫無心外的掛了。 面試
電話一面
- 聊論文,但多數聽我在說,沒插話什麼問題。最後問我第二篇論文裏RNN實現的時候有什麼trick。
- 問了問凸優化了解嗎?傳統機器學習瞭解嗎?我答機器學習基本知識都學過,凸優化只瞭解和機器學習優化算法相關的。也沒有繼續問細節了。
- 編程題:打印全部子集,我用了迭代,可是寫的比較蠢,好在不用調試運行
電話二面
- 聊論文,最後問了我跟什麼算法作了對比,問我研究的實際意義,產業界如今的水平
- 編程題:打印螺旋矩陣,要我給一個可運行的結果。很簡單的題,我一個符號錯誤調了好久都沒發現,這裏應該就印象不好了。
- linux裏查看端口被佔用的命令,linux不熟,沒答上。
- AUC是什麼?我說了是ROC曲線下面積,可是想不起來ROC是啥。我都是作序列數據,沒作過二分類問題。
- LR和SVM的區別。我說了損失函數不一樣,而後說了SVM經過核技巧能夠更好的應對非線性,可是前面好差,這裏也沒好好組織語言了。
提早批掛的沒什麼話說,就是沒準備,很久沒作過算法題的狀況下,忽然出題作就很不順手。並且機器學習的基礎知識都有點忘了,像AUC這種沒用過的,基本一問就懵逼。 算法
以後跟工做的同窗聊了一下,來牛客刷了刷面經,制定了簡單的複習內容和刷題計劃。花了一週時間,複習了一下西瓜書前11章和deep learning book前11章,刷了leetcode上三四十道medium的題吧(鏈表、字符串、迭代、dfs、堆、樹、動態規劃等天天刷一類題練練手),而且給本身作完2篇論文都準備了面試介紹版,又讓同窗推了阿里和網易,並進入騰訊筆試流程。 編程
騰訊線下面試
筆試沒什麼好說的,機器學習崗考的都是數學,看過樣卷在牛客上隨便刷了刷題回憶了一下知識,統計部分的都忘了也都不會,最後仍是過了。
進入線下面試階段,騰訊線下兩個面試官聊論文會更多更細節。對我來講難度主要是手撕代碼,還問到了兩個leetcode上hard難度的題,不算難其實,可是我確實編程題相對弱,最後面試官也給了編程能力有待提升的評價。 微信
一面
- 聊論文,一些關鍵細節都聊的很深刻了,而且提出了一些合理的質疑,都作了回覆。
- 問了一下我對深度學習的瞭解程度,而後手寫BP算法,要我用僞代碼寫,我就連說帶寫了一個很是僞的僞代碼。
- LR和boost的區別,此次吸收前面的教訓,先是細說了LR是什麼,怎麼推導來的,而後說Boost是什麼,幹什麼用,以Adaboost和GDBT簡單舉例,最後說兩者聯繫和區別。
- 順勢問我,LR/Boost和樸素貝葉斯的區別,就答了生成模型和判別模型的區別。
- 手撕代碼:翻轉列表前k個。翻轉鏈表題很簡單,很快寫完了,注意了頭節點處理別出錯,應該沒問題。
- 覆蓋字符串全部字符的最小子串,只提供思路就行。Leetcode第76題,hard難度裏偏簡單的吧算是。字符串子串問題基本都是滑動窗口,移動頭尾指針複雜度O(n). 不過我當時沒想起滑動窗口來,只提出一個O(n^2)的。
二面
- 聊論文,一樣聊了好久很細節,好像比一面還聊的深刻。基本我每一處設計都有聊到,也都會問有沒有考慮過別的思路,或者換成別的方法會怎樣。
- 手撕代碼:找出0-1矩陣裏,全1組成的最大矩形面積。這題又是Leetcode第85題,hard難度。矩陣上找路徑或者覆蓋,直接上DP,我刷過對應的medium難度最大正方形,順着思路就寫了,可是代碼寫的太醜不簡練。
- 問我有一個地理座標,怎麼從我全部的幾千萬幾百萬個poi中快速查詢到離它最近的幾個。我是想答分治、分層索引之類的,可是面試官實際是在問,怎麼設計數據結構能最快,怎麼把x,y這樣的座標對存成key,沒答上讓他滿意的答案。
- 總以後面兩問讓面試官留下了編程能力有待提升的評語。
HR面
- 聊我作的什麼研究,有什麼用,在微信裏能夠用在什麼地方
- 提到面試官對個人評價,並聊了以前提早批電面掛了的狀況,問我怎麼看,以及怎麼評價剛剛的面試官
- 問我對微信的瞭解程度,微信事業羣的瞭解程度,爲何不夠了解就投了
- 爲何選廣州(由於女友),又問跟女友的簡單狀況,問是否是由於女友在廣州因此選的微信
- 問我還投了哪裏(阿里和網易遊戲),爲何投阿里又不在廣州
- 有什麼優點是契合微信的
- 但願工做環境是什麼樣子
- 問實習時間
最終又等了三天,發了實習offer,微信事業羣,廣州base,算是我理想的實習了。 網絡
阿里電面
除了騰訊,還讓同窗內推了阿里試試,算法工程師-機器學習。到如今電面三輪,還在等後續。 數據結構
一面
- 聊論文,跟騰訊提早批電面過程差很少,主要是我在說,沒深刻太多問題。
- 我主要針對序列數據建模,問了我Markov和RNN的區別。
- 編程題:很簡單的題目,字符串出現第k多的字符,leetcode上原題,寫的挺快,問我複雜度就簡單分析了一下。
感受阿里一面面試官比我還謹慎是爲啥,感受沒聊多少就結束了。二面緊接着次日就來了。 機器學習
二面
- 同樣聽我聊論文,沒深刻太多細節。
- 問我是怎麼訓練論文裏的RNN的,不收斂怎麼辦,答分訓練偏差測試偏差,順便說了欠擬合過擬合的應對方式,以及我模型是怎麼肯定層數和hidden size的,以及用了哪些防過擬合手段。
- 問了一個實際場景,用戶輸入一個座標,怎麼推送給他合適的POI。問題描述的有點不清楚,我理解的也有點懵。先說根據用戶特徵、類似和社交關係等作個性化推送。又說若是訓練數據中用戶信息不是徹底標註好的,就是半監督問題,可先對POI聚類或者embedding等。
- 我提到半監督,又進一步問,在標註POI時候,若是座標信息都是不精確的,離散的,每一個用戶標註的語義也是多種多樣的,怎麼處理。答座標能夠把小範圍彙集在一塊兒的看成一個POI,標註的時候,用戶打的標籤數目有限能夠投票、標註的內容較多分詞後用層次聚類、主題模型之類的辦法,給POI打上類別標籤。
二面這個場景題,我對面試官問題理解可能有誤差,他也講的不夠清楚,我都是邊猜邊答,反正儘量把我知道的都說一下。二面三面隔了一週,中間在MSRA工做的師兄叫我去他那實習,所以我要麼就是能去微信實習在廣州陪女友,要麼就去MSRA實習,阿里基本不考慮了,不過三面來了仍是面了一下。 函數
三面
- 聊論文,此次我聊的比較隨意,面試官就更多的問了一些細節,好比我第一篇文章用到張量分解,問我張量分解具體怎麼作,若是引入更多用戶特徵怎麼處理?張量分解怎麼優化的,收斂慢怎麼辦?我提到二階優化,又問我二階優化在這裏有用嗎?爲何有用?還在講第二個文章的時候問到我word2vec有用過嗎之類的。
- 問了我xgboost和隨機森林瞭解嗎?我不瞭解xgboost,我就說了boost的基本原理,adaboost和gdbt的基本原理,又講了bagging的原理,以及隨機森林。
- 後面好像還問了別的,可是我忘了。。囧
三面後仍是說一週內等下一輪。阿里後兩面都沒有編程,其實對我這種算法題老大難來講,仍是挺友好的。可是流程太拖了,投了簡歷很久才面,一週一面,而後還不知道幾面結束。 post
網易遊戲人工智能研發工程師
由於想去廣州,因此還投了網易遊戲的人工智能工程師,可是內推流程搞錯了,致使沒推上,還去答了個筆試編程題,三道就AC一道,最後竟然也給了面試通知。
HR通知個人時候讓我準備電腦,結果面試又沒有編程題。13號剛面了一面,兩個面試官一塊兒電話面,說等結果,不知道是隻有一面仍是後面還有。
電話一面
- 簡單介紹了本身的研究方向,而後開始聊論文,也是簡單介紹了一下。
- 問我ML和DL哪一個更熟悉,我說DL,而後換了個面試官專門問DL
- 先問第二篇論文裏的RNN怎麼設計的,其中用到的多任務學習結構有什麼好處,多任務的權重怎麼調的
- 網絡效果很差怎麼辦,要不要增長數據量?仍是按欠擬合過擬合答的,欠擬合基本沒有,過擬合可能有用
- 進而問過擬合什麼狀況沒用?答數據仍然不夠,或者跟現有訓練集同樣有偏
- 進而問給你一個過擬合模型,和額外很大量數據,怎麼判斷這些數據有沒有用?想到了採樣,可是一時沒想起來具體怎麼辦,最後面試官說,能夠採樣了用過擬合的模型去跑跑看偏差
- 繼續問還有什麼方法解決過擬合,個人論文裏怎麼解決的過擬合
- 而後換回另外一個面試官,又開始問ML的知識
- 先介紹了一下我論文用到過什麼傳統機器學習內容
- LR和SVM訓練目標的區別,老問題了
- 知道什麼參數範數懲罰?我答L1,L2是主要的,我還在別人的論文裏見過Frobenius作參數軟共享的。進而問我L1和L2的區別。
- 特徵選擇的方法,我說我是直接用樹模型,樹模型自己能夠特徵選擇,還能夠L1,降維,別的不瞭解。
- 文本二分類的場景,問怎麼提取特徵,怎麼設計評價指標,怎麼調節超參數。
網易筆試三道編程,面試反而沒有編程。感受看了好多面經,網易這套問法是最符合面經裏問法的。
總的來講,我作了兩篇論文,因此面試會有不少時間花在聊論文上,而別的東西問的很簡單,而且我編程題常常出情況的狀況下,也都給過了。
若是是碩士本科,可能須要更多準備項目或者比賽來聊吧。而我論文是本身全程作全程寫的,因此跟面試官討論起來並不虛,基本沒在聊論文的時候被問住過。那碩士本科同窗可能要對本身參與的項目和比賽也瞭解很是仔細深刻吧,問的再細也能一條一條回覆過去,應該就問題不大了。
面試技巧方面,最重要的就是主動把本身知道的都說出來(固然要有條理有邏輯),不能面試官問什麼說什麼,尤爲問到不太會的問題,更得從不太會的問題中,儘量展現出聊出本身會的東西(好比問我xgboost我就不太會,因而就從boost的基本思路開始說,並簡單說了adaboost和gdbt)。
最後就是面經仍是很是有用的,雖然這些面試官問的問題和麪試套路可能爲所欲爲,可是出題範圍基本沒超出我在牛客看到的面經內容。
你們都加油,拿到大把offer,找到dream job。
掘金技術徵文連接👉 juejin.im/post/5aaf2a…