《面經篇》一個深度腦殘的實習面試經歷

最近投了幾個機器學習/深度學習/計算機視覺方向的公司(實習),分享一下自己的經驗,希望對大家有幫助。

背景:雙 211,海南大學+西安電子科技大學;

涉及領域:本科做的是通信工程,研究生階段方向做的是目標檢測和跟蹤,編程用 Python。C++現學現賣。研一下階段有過和公司交流過深度學習在醫學圖像領域相關的經歷。研究生階段選修了計算機視覺,模式識別。旁聽了機器學習(實際講到隨機梯度下降的時候就再也沒去過了,後來了解到了Ng的機器學習視頻和李飛飛的cs231課程,研二上學期有幸參加了幾個比賽,名次不值得提。

面過的公司:騰訊AI Lab,IBM,face++ 和 百度。

寫在前面的話:

這個回答的適用對象主要還是本科和碩士。PhD找工作的套路跟碩士還是很不一樣的,所以這個回答的經驗對於手握幾篇一作頂會的PhD大神並沒啥參考意義。同時內心很崇拜各種本科階段就是ACM,kaggle大神。這樣的人才應該不屑於找工作這件事吧。 不得不說一句現在是AI方向Phd的黃金時代!

----------------分割線-----------------------------------------------------------------------

接下來這幾點建議是 @熊風 前輩寫好了,在這裡小白偷了個懶,前輩總結的很到位了,我所幸就複製了過來。後面被提醒到,以後寫知乎文章會更認真對待!

(一). 整體建議一定要找內推。

內推一般有兩種,第一種力度比較弱,在公司的內推系統上填一下你的名字,加快一下招聘流程;第二種力度比較強,直接把簡歷送到部門負責人手上。

個人比較建議第二種,會省事很多。原因如下:

(1)現在做機器學習的人實在太多了,在不找內推的情況下,流程會特別特別慢。即使你的簡歷比較優秀,也可能淹沒在茫茫大海中,不一定能被懂行的人看到。

(2)現在很多公司的筆試其實挺有難度的,就算是大神也有翻車的可能性。

(3)對於大公司而言,即使通過了簡歷篩選、筆試那一關,你也很難保證你的簡歷被合適的部門挑中。很可能過關斬將後,發現給你安排的面試官並不是太對口。尤其是深度學習這樣比較新的領域,一般部門的面試官多半也是近期自學的,對這個也是一知半解。所以如果是想去BAT這些大公司裡面專門做AI的部門,按照正常校招流程走是不合適的,一定要找到那些部門的員工內推。在我看來,如果是跪在簡歷篩選、筆試這些上面,連面試官都沒見到,就實在太可惜了。為了避免這一點,請認真找內推。最好能聯繫到你想去的公司部門裡的負責人,直接安排面試。(同時小白還想說一句:如果自身實力不是特彆強,內推也挺危險的,一般情況下內推後負責面試你的那個人對你所了解的領域應該是比較熟悉甚至是在那裡面的弄潮兒,可能問你的問題會很深刻和很新穎)

在這裡我忍不住想廣告下 face++ 這家公司,面試官很親近,很上心,職業素養和專業內涵都是贊贊的!3小時之內面了2面,期間還包括中午吃飯的時間。。。內推我的前輩是一名浙大計算機專業的博士師兄,在face++裡面做過research itern。在面完一面後還特意私信了前輩,前輩和我說了下面試打電話給我的是「xxx」,當時怪自己沒咋上心。。。最後面完百度了下xxx,有種悔不當初呀。 xxx大佬很上心,問的也和研究生所做的東西最為密切。一面完,記憶最為深刻的一句話是:我這還有個會,下午我們繼續聊! 然後就是我剛吃完中午飯,沒多久就接到了前輩的二面電話。

face++ 面下來 給人整體的感覺是: 研究生所做的任何項目或者比賽,對方都有比較前沿和深刻的理解。對技術細節也比較關注,在這種大佬面前不要託大,當時被前輩問到代碼復現能里怎麼樣,吹了波自己。結果面完理論來了句;那整個比較基礎的coding 題吧。(OMG!)後面查了下。。。大佬的基礎題我做不出來呀!(這裡痛恨自己的leetcode刷的太少了)

(二). 面試經驗

面試遇到的題目,可以分為幾個大類:

(1)代碼題(leetcode類型),主要考察數據結構和基礎演算法,以及代碼基本功 。

雖然這部分跟機器學習,深度學習關係不大,但也是面試的重中之重。基本每家公司的面試都問了大量的演算法題和代碼題。即便是做深度的face++,面試官(南京 face++研究院主任)面完給我建議是:得搞得了理論,寫的了代碼。代碼基礎要紮實(可憐了我大三划水學的Java,研一學的python,現在划水c++),在這裡特別感謝xxx!

(2)數學題或者"智力"題。

不會涉及特別高深的數學知識,一般就是工科數學(微積分,概率論,線性代數)和一些組合數學的問題。研究生要是學了隨機過程和最優化啥的就更好了。

在這裡我貼幾個遇到過的:

  • 如果一個女生說,她集齊了十二個星座的前男友,我們應該如何估計她前男友的數量?
  • 如果一枚硬幣扔了多次是正面,接下來扔的是正面的概率是多少?
  • 矩陣的特徵值怎麼理解?

(3)機器學習基礎

這部分建議參考周志華老師的《機器學習》,李航的《統計學習方法》。面試中具體問到的題就不po出來了。大範圍的問到知識點為:

  • LR SVM 決策樹(具體的比如針對不同樣本,svm中核函數的選擇)
  • Linear SVM 和 LR 有什麼異同?
  • 隨機森林,GBDT, XGboost, 集成學習 (如 機器學習gbdt和xgboost之間的區別有哪些?)
  • 以及一些data mining 的問題(這個看你面的崗位)

(4)深度學習基礎

推薦《deep learning》lan Goodfellow這本書,工具類的話可以有 《利用python進行數據分析》,以及Ng的視頻。大致問到的知識點有:

  • 卷積神經網路,循環神經網路;
  • 梯度消失與梯度爆炸(具體的如batch normalization的原理 作用 )
  • 激活函數
  • 防止過擬合的方法(如 dropout)
  • 經典的網路框架
  • 具體的某個方向的網路框架(如object detction 中的 RCNN到Faster-RCNN ,SSD,Yolo,Mask-RCNN,R-FPN)

列一兩個比較具有代表性的問題:

  1. 全連接層有什麼作用?
  2. Adam 和SGD 的聯繫和區別?
  3. 。。。

(5)科研項目上的開放性問題

  • 這方面應該沒有太多的套路,貴在積累,厚積才能薄發。多閱讀paper,培養自己的insight 和 intuition
  • 在實驗室做項目的時候盡量勇敢承擔比較難的任務。和老師 師兄們,實驗室小夥伴,室友 多請教多討論,聊天。老師可能會給你一個比較正確的研究方向,師兄們可能會給你些指導思路。實驗室小夥伴則和你並肩作戰,在某些問題上可能會更加深入,理解的思路可以互相借鑒和改進。舍友們大可能地能拓寬你知識的廣度。

列一個被問到與項目有關的開放問題: 你覺得小目標檢測有哪些難度,你們有嘗試過怎麼解決這個問題么?(主要自己目前還沒有了解到小目標檢測,問的問題的開放性指的是針對不同個人的,可能各位大大們覺得這個很好回答) 回過頭思考下,面試官需要的可能是一個在研究領域有不斷理解和探索的人,並不需要太多的論文來標榜自己多牛逼。面試官看到的是你持續地專註力(也有可能是我自己面試的公司專業性不一樣,大家可以選擇性採納)

(6)一些具體的手寫代碼場景

  • 現場白板 手撕代碼,感覺有點高中被老師叫上講台做題的感覺......面試官有的會看著你,有的會打開自己的電腦(具體幹啥我也不知道...)
  • 遠程面試 ,給你一個網址,面試官在對面看著你寫代碼。厲害的大佬基本不用debug,就知道這個是不是bug free 了。

(三)面試前我們需要做什麼?

  • 始終記住這點,自己和公司是一個利益共同體,公司在決定要不要你 主要取決於你讓面試官 覺得值還是不值?沒有必要太緊張,但一定要保持謙遜的態度!
  • 梳理自己以前做過的項目,可以多看看每周或半個月在實驗室彙報的ppt。
  • 多拓展在自己領域的圈子,互相交流。

(四)面試後我們需要做什麼?

  • 失敗乃成功之母。極少數同學能夠一面就成功,而且基本所有同學都會面很多公司。面完一家公司可以從自身開始思考:哪方面沒做好,哪方面可以做的更出色。
  • 總結經驗,對症下藥,投遞的崗位可能不同公司有些許偏差,你可以多和面試官了解。這也是對自己今後職業規劃的一種態度。

最後,想說一句,希望這個東西能夠對別人有些幫助,也算是一種感恩曾經幫助過自己的人。大公司對實習生要求不是特別嚴格,可能基礎和我一樣不怎麼好,但如果足夠自律和好學也是可以的。大公司總不會讓你一個實習生挑大樑吧,所以就像前段時間大大 @羅浩.ZJU 鼓勵說到(在這裡也送給大家):簡歷多投投,被拒了也沒什麼大不了!

多說一句: 知乎真的很有愛,在這裡學到了很多! 謝謝給過幫助的每一位朋友!大家共勉哈


推薦閱讀:

Mask R-CNN源代碼終於來了,還有它背後的物體檢測平台Detectron
【小林的OpenCV基礎課 番外】Spyder下配置OpenCV
【博客存檔】TensorFlow之深入理解VGGResidual Network
YOLO:3 步實時目標檢測安裝運行教程

TAG:机器学习 | 深度学习DeepLearning | 计算机视觉 |