1. 程式人生 > >北大數院學長對轉行機器學習/演算法同學的建議(轉自知乎)

北大數院學長對轉行機器學習/演算法同學的建議(轉自知乎)

作者:LionKing資料科學 連結:https://zhuanlan.zhihu.com/p/42157282 來源:知乎 著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。  

北大數院統計專業畢業,之前在某大公司做演算法方面的工作,面試過不少人

有不少學弟學妹找我諮詢過機器學習/演算法方面的求職,其中不乏不是數學、統計、或計算機出身的同學。雖然我們北大的同學在簡歷篩選流程中優勢較大,演算法崗的面試難度著實不小,尤其是對於非科班出身的同學來講。主要有以下方面:

第一,數學基礎欠缺。我和同事在面試的時候都喜歡問一些比較基本(不代表簡單)的機器學習演算法的數學理論,常見的比如:Logistic迴歸的損失函式和梯度分別是多少、SVM的數學推導、GBDT迴歸的梯度代表什麼?一些不需要很強計算能力,但是很考驗功底的概率論小題我的一些同事也非常喜歡問,比如:如何生成概率為pi/4的事件?這些問題普遍都是會的人覺得很簡單,不會的人覺得很難。因此非常建議大家掌握機器學習的演算法的具體原理,最好手動推導過這些演算法的數學部分,而不是走馬觀花地看一遍。相信大家都有體會,看答案總覺得不難,但是自己不一定能想到。當然數學基礎好的同學可以自動忽略這條建議。概率論的話短期提高不容易也不經濟,建議靠刷題,前提是要理解而不是死背。機器學習演算法推薦Andrew Ng在Stanford開的CS229,網上資料都有,比coursera上的入門課要清楚得多。概率論的話可以參考這個我同學寫的網站的題庫:概率論練習

第二,演算法底子薄。大家應該都上過計概和數算吧,但是真正學好的應該是少數。演算法崗對於演算法的要求雖然比不上更加工程的碼農,但是對於基本的資料結構和演算法還是要求要會的。之前看到一個段子是一個面試官對求職者說“雖然你也不算太強,但是我好不容易面到一個會寫動態規劃的,就給你offer了吧”。其實就我個人的面試經歷而言,很多求職者基本不會寫程式,可能只是sklearn、tensorflow、pyspark掉包俠。檢查自己是否夠格的一個rule of thumb就是看自己是不是Leetcode Medium難度的題基本沒問題。像BFS、DFS、DP還有樹、連結串列、陣列的各種常見題都需要掌握,不求深但求廣。如果完全沒有方向就直接掛掉了,但是如果能蹦出個名詞至少面試官還能給你點引導也許就能搞定了。不求Leetcode刷光,但是一定要寫一些程式碼,而不是純看別人程式碼。道理類似數學要自己推導。如果時間非常緊張,建議優先刷高頻題或面經,剩下的題只看想法不寫程式碼。

第三,沒有insight。要知道,在實際工作中,70%靠業務理解,30%靠技術。因此我們在選拔的時候,非常希望求職者能夠對於我們的業務有一些自己的理解,有相關實習經驗更佳。例如我是在廣告組,那麼至少是期待求職者知道CTR是什麼意思的,不然可能準備的關於CTR預測的面試題要先背景介紹了。我認識的搜尋組的同事問演算法題喜歡讓大家寫個intersection of two arrays,但是包裝在inverted index的背景下,如果不瞭解搜尋引擎的基本原理那麼就連題目都看不懂。網上能找到的資料確實比業界落後了不知道幾年,但是依舊是很有價值的。如果對搜尋引擎的原理感興趣可以看一下Stanford開的CS276材料,介紹得還算全面。我同學的網站上也有比較精簡的介紹:搜尋引擎原理介紹

推薦系統也是一個很火的方向,給大家推薦幾個連結:

推薦系統介紹:

Stanford推薦系統材料 :

第四,實際動手能力弱。有一些童鞋可能並沒有特別好的實習經歷,也許只有個應用多元統計的課程專案這種資料量小到誇張,或者是MatLab做的本研之類的。這些專案不能說沒有價值,但是從我們業界角度,確實都是toy project。雖然並沒有期望一個應屆畢業生一入職就能上手,但是還是非常希望有過大資料工具的經驗和一些程式設計經驗。如果實在沒有機會可以做個Kaggle專案,雖然老套,但是有用。SQL、Spark這些至少寫幾個小程式也會很有幫助。我見過很厲害的數院學弟,SQL根本沒寫過,一問三不知。其實這些只是上手的話都一兩天就夠了。SQL推薦一些講解、刷題的地方: 基本SQL

Spark的話比較少,可以看這個教程: Spark教程

還有一個建議就是要對症下藥。要好好準備一個幾乎是必考卻很容易被忽視的問題: “你有什麼問題要問我的嗎?”這個問題如果問得有新意會是很好的加分點。我遇到過的一部分求職者一看就都不知道我們組是幹什麼的,也感覺不到對我們組有特別的興趣。一些負面教材例如,“沒什麼問題”,“你都幾點下班啊”,“你們的新人培養方案是怎樣?”這些問題算是中規中矩,可能確實是會影響你的決定和將來工作體驗的問題。但是站在面試官的角度,這些問題跟我們組沒有太直接的關係,而且其實是過了面試之後適合跟HR討論的問題。最好能體現出強烈的對該組的業務有興趣,可以瞭解一下這個組的業務和需要的技能,問一下這個組有什麼計劃之類的(有一些面試官不喜歡這個問題,而且這個問題比較適合manager round問)。比如明天要去面B的搜尋部門了,那麼多看看搜尋引擎的內容,多看看B的最新面經。臨時抱佛腳往往還是很有用的,因為記憶比較新。當年本科期末考試不也都是這麼過來的哈哈。有一個技巧是在電話面試的時候瞭解這個組的業務,那麼在onsite面試前特意瞭解這個業務的相關業界知識,就解決了之前提到的沒有insight的問題。

希望學長的這些建議對大家有幫助。

我們團隊的微信公眾號WechatID: dscademy

這裡有全面的資料科學知識點總結、面試技巧和論壇。歡迎轉載本文,並向身邊的小夥伴推廣我們的網站。本網站專業的資料科學家團隊還提供簡歷修改、模擬面試、1對1輔導等收費服務。

相信能在大家找工作的道路上給予不小的幫助。