今天我們不聊paper,換一個(gè)輕松一點(diǎn)的話題,聊一聊如何準(zhǔn)備算法工程師的面試。
關(guān)于我
今年是我作為算法工程師工作的第七個(gè)年頭,期間拿到過(guò)hulu,阿里巴巴,騰訊,美團(tuán)以及一些startup的算法工程師o(wú)ffer,也作為面試官面試過(guò)清北,海外,北郵,以及一些二本學(xué)校等不同背景的百余位candidates,作為面試者和面試官的經(jīng)驗(yàn)還比較豐富。
所以希望自己的經(jīng)驗(yàn)?zāi)軐?duì)你有所幫助,也非常歡迎其他面試官能夠多留言探討自己的面試經(jīng)驗(yàn)。
面試要具備的技能
那我們直入主題,到底什么技能才是一名合格的算法工程師應(yīng)該具備的技能呢?面試官又會(huì)如何驗(yàn)證你的這些技能呢?
雖然每個(gè)一個(gè)崗位都有JD,但拋開(kāi)具體的崗位要求,從稍高的角度角度看待這個(gè)問(wèn)題,一名算法工程師的技術(shù)素質(zhì)基本可以拆解成下面四個(gè)方面:知識(shí)、工具、邏輯、業(yè)務(wù)。當(dāng)然廣義來(lái)講,這四項(xiàng)素質(zhì)也適用于所有IT工程師。
我非常喜歡用雷達(dá)圖來(lái)表示一個(gè)人的能力范圍,可能小時(shí)候看圣斗士看多了,當(dāng)時(shí)研究官方出的黃金圣斗士能力雷達(dá)圖研究了半天,現(xiàn)在也沒(méi)好到哪去,只不過(guò)變成了喜歡研究候選人的能力雷達(dá)圖了。
下面畫(huà)出了大數(shù)據(jù)行業(yè)幾個(gè)相關(guān)職位的能力雷達(dá)圖,大家可以初步體會(huì)一下。
不同崗位的技能雷達(dá)圖
簡(jiǎn)單來(lái)說(shuō),任何工程師都應(yīng)該滿足四項(xiàng)技能的最小要求,比如我曾經(jīng)面試過(guò)一位計(jì)算廣告算法工程師candidate,這位同學(xué)發(fā)過(guò)一些計(jì)算廣告相關(guān)的paper和專利,從research的角度是不錯(cuò)的人選,但當(dāng)我想稍微驗(yàn)證一下他coding的能力時(shí),他明確告訴我說(shuō)他不愿意寫(xiě)代碼。這就是不滿足“工具”這項(xiàng)技能的最小要求,自然是不能通過(guò)面試的。
在最小要求的基礎(chǔ)上,算法工程師的能力要求是相對(duì)全面的。其實(shí)所謂算法工程師,就是因?yàn)槟悴粌H應(yīng)該是一位合格的“工程師”,還應(yīng)該再次基礎(chǔ)上有算法的改進(jìn)和實(shí)現(xiàn)的能力。除此之外,大數(shù)據(jù)工程師更注重大數(shù)據(jù)工具和平臺(tái)的改進(jìn),研究員則在知識(shí)和邏輯層面相對(duì)突出。有些臨時(shí)抱佛腳的同學(xué)喜歡惡補(bǔ)知識(shí),不注重理解業(yè)務(wù)和模型本身的內(nèi)在邏輯,是我經(jīng)常見(jiàn)到的面試“悲劇”情況。
當(dāng)然,只用四個(gè)詞描述四個(gè)方面的能力還是過(guò)于形而上了,這里我們用一些具體的內(nèi)容來(lái)描述一下算法工程師的四個(gè)技能點(diǎn):
知識(shí):主要是指你對(duì)machine learning相關(guān)知識(shí)和理論的儲(chǔ)備
工具:將你的machine learning知識(shí)應(yīng)用于實(shí)際業(yè)務(wù)的工具
邏輯:你的舉一反三的能力,你解決問(wèn)題的條理性,你發(fā)散思維的能力,你的聰明程度
業(yè)務(wù):深入理解所在行業(yè)的商業(yè)模式,從業(yè)務(wù)中發(fā)現(xiàn)motivation并進(jìn)而改進(jìn)模型算法的能力
也許還不夠具體,那我們?cè)購(gòu)囊粋€(gè)實(shí)際例子中體會(huì)一下,比如我去面試“計(jì)算廣告算法工程師”的職位,上面四項(xiàng)對(duì)應(yīng)著哪些具體的能力呢?
知識(shí):主流CTR模型以及預(yù)算控制,流量預(yù)估,bidding策略等模型算法的原理和技術(shù)細(xì)節(jié)
工具:coding能力,spark、flink、tensorflow、ps-lite等模型訓(xùn)練、serving相關(guān)工具
邏輯:算法題,模型之間的演化關(guān)系
業(yè)務(wù):展示廣告和搜索廣告在構(gòu)建模型時(shí)的區(qū)別聯(lián)系,如何根據(jù)公司的business model制定模型的objective
當(dāng)然,上面只是讓大家體會(huì)一下什么是這四項(xiàng)素質(zhì),真實(shí)的計(jì)算廣告算法工程師面試中,你不一定要都掌握,也不一定局限于這些內(nèi)容。如果你遇到一位資深的面試官,他不會(huì)預(yù)設(shè)一個(gè)框架往面試者身上套,而會(huì)從面試者簡(jiǎn)歷出發(fā)檢驗(yàn)面試者能不能達(dá)到這四項(xiàng)素質(zhì)的標(biāo)準(zhǔn)。
面試時(shí)如何限時(shí)考察
那么問(wèn)題又來(lái)了,面試官會(huì)如何在"限定的時(shí)間內(nèi)"檢驗(yàn)?zāi)氵@四項(xiàng)素質(zhì)能不能達(dá)到"技術(shù)合格"的標(biāo)準(zhǔn)呢?
既然是限定的時(shí)間,面試官就不可能拿出一本西瓜書(shū),從頭問(wèn)到尾,也不可能拿出一本葫蘆書(shū)(《白面機(jī)器學(xué)習(xí)》),從100道面試題中抽出50道給你來(lái)個(gè)馬拉松問(wèn)答。面試官要做的是在1個(gè)小時(shí)的時(shí)間內(nèi)確認(rèn)你能力的"深度"和"廣度"。 所以在這里面試官就像一個(gè)采樣算法,要從你腦子里采幾個(gè)點(diǎn),把你的能力雷達(dá)圖描繪出來(lái)。
重點(diǎn)再重復(fù)一邊,
面試官會(huì)從“深度”和“廣度”兩個(gè)維度構(gòu)建你的能力雷達(dá)圖。
對(duì)于"深度"方面,有經(jīng)驗(yàn)的面試官會(huì)從你已經(jīng)做過(guò)的項(xiàng)目中挑出你最擅長(zhǎng)的部分做層次式的遞進(jìn)。比如我在之前的知乎回答“如何準(zhǔn)備機(jī)器學(xué)習(xí)工程師的面試 ?”中舉過(guò)的例子,
一位面試同學(xué)介紹自己實(shí)習(xí)時(shí)候用過(guò)XGBoost預(yù)測(cè)股票漲跌,那面試官可能會(huì)由淺入深依次考察下列問(wèn)題:
GBDT的原理(知識(shí))
決策樹(shù)節(jié)點(diǎn)分裂時(shí)是如何選擇特征的?(知識(shí))
寫(xiě)出Gini Index和Information Gain的公式并舉例說(shuō)明(知識(shí))
分類樹(shù)和回歸樹(shù)的區(qū)別是什么?(知識(shí))
與Random Forest作比較,并以此介紹什么是模型的Bias和Variance(知識(shí))
XGBoost的參數(shù)調(diào)優(yōu)有哪些經(jīng)驗(yàn)(工具)
XGBoost的正則化是如何實(shí)現(xiàn)的(工具)
XGBoost的并行化部分是如何實(shí)現(xiàn)的(工具)
為什么預(yù)測(cè)股票漲跌一般都會(huì)出現(xiàn)嚴(yán)重的過(guò)擬合現(xiàn)象(業(yè)務(wù))
如果選用一種其他的模型替代XGBoost或者改進(jìn)XGBoost你會(huì)怎么做,為什么?(業(yè)務(wù)+邏輯+知識(shí))
這是一條由簡(jiǎn)歷出發(fā),由“知識(shí)”為切入點(diǎn),不僅考察了“知識(shí)”的深度,而且還考察了“工具”、“業(yè)務(wù)”、“邏輯”深度的面試路徑。
當(dāng)然,如果你介紹的項(xiàng)目是實(shí)現(xiàn)了一種類似阿里DIN的CTR預(yù)估模型。那么問(wèn)題路徑可能是這樣的:
softmax函數(shù)的定義是什么?(知識(shí))
神經(jīng)網(wǎng)絡(luò)為什么會(huì)產(chǎn)生梯度消失現(xiàn)象?(知識(shí))
常見(jiàn)的激活函數(shù)有哪些?都有什么特點(diǎn)?(知識(shí))
挑一種激活函數(shù)推導(dǎo)梯度下降的過(guò)程。(知識(shí)+邏輯)
Attention機(jī)制什么?(知識(shí))
阿里是如何將attention機(jī)制引入推薦模型的?(知識(shí)+業(yè)務(wù))
DIN是基于什么業(yè)務(wù)邏輯引入attention機(jī)制的?(業(yè)務(wù))
DIN中將用戶和商品進(jìn)行了embedding,請(qǐng)講清楚兩項(xiàng)你知道的embedding方法。(知識(shí))
你如何serving類似DIN這樣的深度學(xué)習(xí)模型(工具+業(yè)務(wù))
這條路徑側(cè)重于考查“知識(shí)”深度的路徑。為了彌補(bǔ)其他方向考察的不足,面試官肯定還會(huì)問(wèn)一個(gè)從工具或者業(yè)務(wù)出發(fā)的問(wèn)題來(lái)確定你其他方面的深度。
因?yàn)槊嬖嚬龠x擇的是你最熟悉的領(lǐng)域深入下去,我們可以假設(shè),如果一位面試者在最擅長(zhǎng)的項(xiàng)目中都答不上一些細(xì)節(jié)性的問(wèn)題,那幾乎可以肯定你在任何其他領(lǐng)域的鉆研都不夠深入,你的技能雷達(dá)圖的面積肯定是一個(gè)很小的面積。也有像我之前所提到的一些臨時(shí)抱佛腳的面試者,也許知識(shí)方面達(dá)到了要求,但經(jīng)不起面試官對(duì)“工具”和“邏輯”的考察,這也毫無(wú)疑問(wèn)會(huì)“悲劇”。
如果面試者的能力深度達(dá)到了最低的要求,下一步面試官會(huì)確定你能力的廣度,對(duì)于任何算法工程師,我都會(huì)隨機(jī)check以下幾個(gè)知識(shí)點(diǎn):
NN,RNN,個(gè)別聚類算法,模型評(píng)估等知識(shí)的理解程度
spark的調(diào)優(yōu)經(jīng)驗(yàn),model serving的主要方法,parameter server的原理
GAN,LSTM,online learning的基本理解
embedding方法,attention機(jī)制,multi task,reinforcement learning,online learning的基本理解
對(duì)于廣度的檢查是比較隨意的,個(gè)別答不上來(lái)無(wú)傷大雅,但如果超過(guò)一半以上的知識(shí)點(diǎn)都miss了,可能有點(diǎn)說(shuō)不過(guò)去。因?yàn)槲乙滥闶且粋€(gè)關(guān)注前沿,喜歡學(xué)習(xí)的人,試想除了你自己做過(guò)的項(xiàng)目,其他知識(shí)了了,那我可以肯定你不是一個(gè)對(duì)技術(shù)有熱情的人。很多面試官很看重“熱情”這個(gè)屬性,因?yàn)檎菍?duì)技術(shù)的熱情支撐你今后的學(xué)習(xí),有些問(wèn)題你可能不知道,你也要盡量用自己的理解去推導(dǎo),去討論。
好了,關(guān)于算法工程師面試中的能力雷達(dá)圖講完了,如果你嫌我太啰嗦,沒(méi)關(guān)系,甩給你一張思維框圖,你發(fā)給任何沒(méi)看過(guò)這篇文章的人,也都會(huì)對(duì)我說(shuō)的內(nèi)容一目了然。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4779瀏覽量
101040 -
算法
+關(guān)注
關(guān)注
23文章
4629瀏覽量
93192 -
CTR
+關(guān)注
關(guān)注
0文章
37瀏覽量
14139
原文標(biāo)題:算法工程師必須要知道的面試技能雷達(dá)圖
文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛(ài)好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論