一份過冬存糧:算法工程師必備的面試技能雷達圖

2020-12-17 新智元

新智元推薦

來源:知乎專欄- 王喆的機器學習筆記

作者:王喆,矽谷高級機器學習工程師

【新智元導讀】合格的算法工程師真正應該具備什麼技能?在面試時,面試官又會如何驗證你具備這些技能?拿下阿里、騰訊、美團等offer且面試過百餘位candidates的矽谷高級機器學習工程師王喆,繪製了一幅面試技能雷達圖——寒冬再冷,高級人才永遠不愁找不到工作。

今年是我作為算法工程師工作的第七個年頭,期間拿到過hulu,阿里巴巴,騰訊,美團以及一些startup的算法工程師offer,也作為面試官面試過清北,海外,北郵,以及一些二本學校等不同背景的百餘位candidates,作為面試者和面試官的經驗還比較豐富。所以希望自己的經驗能對你有所幫助,也非常歡迎其他面試官能夠多留言探討自己的面試經驗。

那我們直入主題,到底什麼技能才是一名合格的算法工程師應該具備的技能呢?面試官又會如何驗證你的這些技能呢?

雖然每個一個崗位都有JD,但拋開具體的崗位要求,從稍高的角度角度看待這個問題,一名算法工程師的技術素質基本可以拆解成下面四個方面:知識、工具、邏輯、業務。當然廣義來講,這四項素質也適用於所有IT工程師。

我非常喜歡用雷達圖來表示一個人的能力範圍,可能小時候看聖鬥士看多了,當時研究官方出的黃金聖鬥士能力雷達圖研究了半天,現在也沒好到哪去,只不過變成了喜歡研究候選人的能力雷達圖了。下面畫出了大數據行業幾個相關職位的能力雷達圖,大家可以初步體會一下。

不同崗位的技能雷達圖

簡單來說,任何工程師都應該滿足四項技能的最小要求,比如我曾經面試過一位計算廣告算法工程師candidate,這位同學發過一些計算廣告相關的paper和專利,從research的角度是不錯的人選,但當我想稍微驗證一下他coding的能力時,他明確告訴我說他不願意寫代碼。這就是不滿足「工具」這項技能的最小要求,自然是不能通過面試的。

在最小要求的基礎上,算法工程師的能力要求是相對全面的。其實所謂算法工程師,就是因為你不僅應該是一位合格的「工程師」,還應該再次基礎上有算法的改進和實現的能力。除此之外,大數據工程師更注重大數據工具和平臺的改進,研究員則在知識和邏輯層面相對突出。有些臨時抱佛腳的同學喜歡惡補知識,不注重理解業務和模型本身的內在邏輯,是我經常見到的面試「悲劇」情況。

當然,只用四個詞描述四個方面的能力還是過於形而上了,這裡我們用一些具體的內容來描述一下算法工程師的四個技能點

知識:主要是指你對machine learning相關知識和理論的儲備工具:將你的machine learning知識應用於實際業務的工具邏輯:你的舉一反三的能力,你解決問題的條理性,你發散思維的能力,你的聰明程度業務:深入理解所在行業的商業模式,從業務中發現motivation並進而改進模型算法的能力

也許還不夠具體,那我們再從一個實際例子中體會一下,比如我去面試「計算廣告算法工程師」的職位,上面四項對應著哪些具體的能力呢?

知識:主流CTR模型以及預算控制,流量預估,bidding策略等模型算法的原理和技術細節工具:coding能力,spark、flink、tensorflow、ps-lite等模型訓練、serving相關工具邏輯:算法題,模型之間的演化關係業務:展示廣告和搜索廣告在構建模型時的區別聯繫,如何根據公司的business model制定模型的objective

當然,上面只是讓大家體會一下什麼是這四項素質,真實的計算廣告算法工程師面試中,你不一定要都掌握,也不一定局限於這些內容。如果你遇到一位資深的面試官,他不會預設一個框架往面試者身上套,而會從面試者簡歷出發檢驗面試者能不能達到這四項素質的標準。

那麼問題又來了,面試官會如何在"限定的時間內"檢驗你這四項素質能不能達到"技術合格"的標準呢?

既然是限定的時間,面試官就不可能拿出一本西瓜書,從頭問到尾,也不可能拿出一本葫蘆書,從100道面試題中抽出50道給你來個馬拉松問答。面試官要做的是在1個小時的時間內確認你能力的"深度"和"廣度"。 所以在這裡面試官就像一個採樣算法,要從你腦子裡採幾個點,把你的能力雷達圖描繪出來。

重點再重複一邊,面試官會從「深度」和「廣度」兩個維度構建你的能力雷達圖

對於"深度"方面,有經驗的面試官會從你已經做過的項目中挑出你最擅長的部分做層次式的遞進。比如我在之前的回答中舉過的例子:

一位面試同學介紹自己實習時候用過XGBoost預測股票漲跌,那面試官可能會由淺入深依次考察下列問題:

GBDT的原理(知識)決策樹節點分裂時是如何選擇特徵的?(知識)寫出Gini Index和Information Gain的公式並舉例說明(知識)分類樹和回歸樹的區別是什麼?(知識)與Random Forest作比較,並以此介紹什麼是模型的Bias和Variance(知識)XGBoost的參數調優有哪些經驗(工具)XGBoost的正則化是如何實現的(工具)XGBoost的並行化部分是如何實現的(工具)為什麼預測股票漲跌一般都會出現嚴重的過擬合現象(業務)如果選用一種其他的模型替代XGBoost或者改進XGBoost你會怎麼做,為什麼?(業務+邏輯+知識)這是一條由簡歷出發,由「知識」為切入點,不僅考察了「知識」的深度,而且還考察了「工具」、「業務」、「邏輯」深度的面試路徑。

當然,如果你介紹的項目是實現了一種類似阿里DIN的CTR預估模型。那麼問題路徑可能是這樣的:

softmax函數的定義是什麼?(知識)神經網絡為什麼會產生梯度消失現象?(知識)常見的激活函數有哪些?都有什麼特點?(知識)挑一種激活函數推導梯度下降的過程。(知識+邏輯)Attention機制什麼?(知識)阿里是如何將attention機制引入推薦模型的?(知識+業務)DIN是基於什麼業務邏輯引入attention機制的?(業務)DIN中將用戶和商品進行了embedding,請講清楚兩項你知道的embedding方法。(知識)你如何serving類似DIN這樣的深度學習模型(工具+業務)

這條路徑側重於考查「知識」深度的路徑。為了彌補其他方向考察的不足,面試官肯定還會問一個從工具或者業務出發的問題來確定你其他方面的深度。

因為面試官選擇的是你最熟悉的領域深入下去,我們可以假設,如果一位面試者在最擅長的項目中都答不上一些細節性的問題,那幾乎可以肯定你在任何其他領域的鑽研都不夠深入,你的技能雷達圖的面積肯定是一個很小的面積。也有像我之前所提到的一些臨時抱佛腳的面試者,也許知識方面達到了要求,但經不起面試官對「工具」和「邏輯」的考察,這也毫無疑問會「悲劇」。

如果面試者的能力深度達到了最低的要求,下一步面試官會確定你能力的廣度,對於任何算法工程師,我都會隨機check以下幾個知識點:

NN,RNN,個別聚類算法,模型評估等知識的理解程度spark的調優經驗,model serving的主要方法,parameter server的原理GAN,LSTM,online learning的基本理解embedding方法,attention機制,multi task,reinforcement learning,online learning的基本理解

對於廣度的檢查是比較隨意的,個別答不上來無傷大雅,但如果超過一半以上的知識點都miss了,可能有點說不過去。因為我要知道你是一個關注前沿,喜歡學習的人,試想除了你自己做過的項目,其他知識了了,那我可以肯定你不是一個對技術有熱情的人。很多面試官很看重「熱情」這個屬性,因為正是對技術的熱情支撐你今後的學習,有些問題你可能不知道,你也要儘量用自己的理解去推導,去討論。

好了,關於算法工程師面試中的能力雷達圖講完了,如果你嫌我太囉嗦,沒關係,甩給你一張思維框圖,你發給任何沒看過這篇文章的人,也都會對我說的內容一目了然。

俗話說,面試是一門玄學,這句話有沒有道理?面試到底「玄」在哪裡?為什麼「強」如作者(臉皮太厚了。。)參加了10餘場大中小公司面試,也有一場沒拿到offer,原因是什麼,是因為玄學嗎?有時間再給大家分解分解。

北京的這個冬天有點「冷」,在文章結束之前給身在寒冬的同學幾點建議:

寒冬就應該廣積糧,緩稱王,猛攻自己的技能弱點,讓自己更有實力迎接春天;中高端職位永遠不缺,真正合格的算法工程師永遠是稀有物種,努力做金字塔中上部的那塊磚;好的offer永遠是為平時注重積累的人準備的,突擊準備也許會增加你的知識廣度,但增加各方面技能的深度需要你無時無刻的積累和鑽研,遇到問題多問為什麼,多注重問題的細節。

相關焦點

  • 算法工程師必須要知道的面試技能雷達圖
    今年是我作為算法工程師工作的第七個年頭,期間拿到過hulu,阿里巴巴,騰訊,美團以及一些startup的算法工程師offer,也作為面試官面試過清北、海外、北郵以及一些二本學校等不同背景的百餘位candidates,作為面試者和面試官的經驗還比較豐富。所以希望自己的經驗能對你有所幫助,也非常歡迎其他面試官能夠多留言探討自己的面試經驗。
  • 算法工程師研發技能表
    Learning Lab    由於算法工程師這個崗位根據不同的業務場景和應用方向,各自的工作差異相對較大。所以很難有一個一概而論的算法工程師技術棧。比如說做圖像方向的有機器視覺算法崗、做文本方向的有自然語言處理算法崗、做語音的又有語音識別算法崗。本文僅對算法工程師常用的、基礎的、必備的研發技能進行梳理。也就是說,不論你是做哪個業務場景下的算法工作,這些基礎研發技能都是必知必會的。這組技能清單主要包括兩大類型,一類是理論技術,另一類是程式語言和工具類。
  • 2020軟體工程師必備的11項技能
    其中程式語言包括C++、Java,必需的計算機概念包括數據結構、算法和計算機網絡概念,工具包括Git、Docker、Kubernetes和容器,雲計算概念和平臺包括AWS、GCP、Microsoft Azure,常青樹技能包括SQL和UNIX,編輯器包括Eclipse、Visual Studio,文本編輯器包括VIM和NotePad++等。
  • 資源│機器學習、深度學習、算法工程師等 AI 相關崗位面試需要知識
    Github算法工程師面試https://github.com/PPshrimpGo/AIinterview2019 屆秋招面經集合https://github.com/zslomo/2019-Autumn-recruitment-experience技術面試必備基礎知識https://github.com
  • NLP、CV、語音相關AI算法工程師面試問題、代碼、簡歷模板、知識點等資源整理分享
    本資源整理了機器學習、深度學習、算法工程師等AI相關崗位面試需要知識點,常見代碼實戰(分為C/C++和python版本)、常見問題,簡歷模板、比賽/競賽相關的資源,分享給需要的朋友。    算法工程師    1.
  • 軟體工程師如何應對面試的可怕「反烏託邦世界」?
    我不僅僅是想要「一份工作」而已,我想要的是「對的那份工作」。接下來面了一家自動駕駛公司。提交申請後我很快就得到了回復,並被安排了代碼面試。面試時,面試官怒氣衝衝地用很重的口音告訴我,讓我編寫一個非常複雜的圖像過濾算法。我寫完了,並要求對方給予反饋。他說:「看起來非常好!」結果第二天,我收到了一封官話版本的拒絕電子郵件。然後是一家分析公司,讓我把一道題帶回家去做。
  • 求職|一份理想的數據科學家簡歷中要包括哪些技能?
    機器學習工程師需要從頭開始實現算法,並在大數據環境中部署ML模型,因此C ++和Scala等相關語言也很重要。總的來說,機器學習工程師使用的語言更加多樣化。機器學習工程師必備語言排名為:Python、Scala、Java、C ++、Lua、SQL、Javascript、Matlab、CSS和C#。
  • 小米、搜狗、TW等機器學習算法工程師面試總結
    以下機器學習算法工程師的面試題目,出自曉文學習筆記,閱讀更多文章,歡迎加入曉文的公眾號:一面:1、問項目
  • 看看高薪,算法工程師面試,讓你懷疑人生
    簡單介紹一下,北郵本碩,要找的崗位主要是算法工程師(機器學習方向)。算法工程師找實習的時候,最終的結果是找到了四家:亞馬遜、京東、滴滴、騰訊地圖。找工作的時候,主要有百度sp、滴滴sp、美團sp、新浪sp、搜狗sp、小米(沒談薪資直接拒了)等。總體而言,今年找工作相對以往還是很順利的,各大公司都很缺人,各家開出的工資相對於去年都非常誘人,找工作的情況也出乎了我們很多人的意料。
  • 一份來自亞馬遜工程師的Google面試指南,GitHub收穫9.8萬星,已翻譯...
    關注前沿科技 量子位曉查 發自 凹非寺量子位 報導 | 公眾號 QbitAI一位從1997年就入行的Web工程師,立志要成為Google軟體工程師,3年前寫下了一篇超完整學習和面試教程,以此作為自己的奮鬥計劃。
  • 算法與算法工程師,技術與技術人員
    (註:標題裡的算法,指機器學習算法,或者說「算法工程師」這個職位名稱裡的「算法」,不是「算法與數據結構」裡的那個算法。誰能告訴我有沒有什麼更好的名字來區別這它們,或許是「機器學習算法」與「傳統算法」?)算法與算法工程師先來一段我在知乎裡回答「做算法工程師是一種怎樣的體驗?」
  • 備戰跳槽季:大廠面試官總結 16 大常考算法知識點
    在如今的環境下,想要換一份理想的工作更是需要「找準時機,抓住機會」,當然在面試前的準備是必不可少的。極客大學邀請了算法訓練營的助教,請他們分享一下作為面試官喜歡考察候選人哪些能力、他們有哪些「 精選算法面試題 」。我們的助教們來自美團、百度或海外的一線網際網路公司,希望他們分享的經驗可以幫助到你。
  • 我是如何從中芯國際的數據建模工程師,轉行去做算法工程師的?
    面試達觀數據一共經過了四輪面試:首先是HR電話面試,其次是主管面試,再次是CTO面試,最後是CEO面試(因為我是博士,所以要CEO面試,一般是到CTO)。主管的面試題目是:從一個無序數組中找到最長連續子序列,還問了PCA和SVD降維。CTO的題目是:把一個字符串中的連續的多個空格字符變成一個空格字符。
  • 經典算法題:猜數(360軟體測試工程師筆試題)
    來自:2015奇虎360軟體測試工程師筆試題又假設學生A和B的結論是正確的,則這兩個數字是:()經典算法題:《算法題 :貪心算法(大眾點評筆試題)》《算法題 :所有String2的字母在String1裡是否存在(大眾點評筆試題)》《算法題 :順序表插入新元素(迅雷筆試題)》《算法題 :迅雷2016研發工程師5道筆試題
  • 算法工程師好學麼 聽聽從達內教育走出的算法工程師怎麼說
    目前,中國Python人才缺口高達40萬,由於人才稀缺度較高,工程師的薪資普遍更高,待遇漲幅也會超過其他崗位,python工資按工作經驗統計,1-2年平均工資1.2-1.5萬元,3-5年1.5-2萬,8-10年2.5-3萬元,10年以上工資3.5-6萬元。
  • 面試軟體工程師,這些準備工作你做了嗎?
    作為一名軟體工程師來說,能否通過技術面試對於自己的職業發展至關重要,但是求職者往往很難知道具體怎樣去為面試做準備。因為不同的軟體公司採用不同的方式對工程師進行評估,而在這種壓力很大、同時又很重要的場合,毫無防備的前去面試似乎是最糟糕的一種狀態。幸運的一點是,這些技術面試通常可以分為兩大類:特定領域知識面試和計算機科學基礎知識面試。
  • 軟體工程師崗位面試技能解讀
    編輯的話:做為軟體工程師,在入職一個企業之前,技術面試是必不可少的一個環節。面試官通過對應聘者進行提問交流,考察應聘者的技術能力。但是往往技術面試問題考察的並不單是應聘者對問題技術本身的考察,更多的是基於對面試問題背後的學員的思考能力、設計能力、邏輯思維能力甚至團隊協作能力的考察。
  • Linux運維工程師必備的技能有哪些?
    很多企業想要招聘專業的Linux運維工程師,Linux運維工程師必備的技能有哪些?千鋒帶你一起了解。1、Linux系統基礎:包括Linux的基礎知識內容和命令使用,以及用戶和權限等核心知識點,同時你還需要了解Linux進程、資源、任務、文件、軟體包、磁碟等管理方法。
  • 一份數據工程師必備的學習資源,乾貨滿滿
    每一個數據驅動的業務都需要一個適用於數據科學管道的框架,否則就是失敗的配置。大多數人懷揣著成為數據科學家的夢想進入數據科學世界,但卻沒有意識到數據工程師是做什麼的,或者這個角色需要具備什麼能力。數據工程師是數據科學項目的重要組成部分,以至於在當今數據豐富的環境裡,產業對他們的需求正在指數式地上漲。目前,沒有統一的或者正式的學習路線可供數據工程師使用。
  • 九章算法班 | 贏秋招免費內推, 一個月搞定面試算法!
    簡直太坑爹為了應對最新的面試九章算法全面搜集最新面經研究最新面試套路升級推出《九章算法班V5.0》文末可獲取《2018最新面試熱點、套路總結》PPT算法題目千千萬《九章算法V5.0》配套最新 LintCode OJ 題庫。根據最新的面經對配套作業題進行了大換血,在面試中遇到原題的概率更高了。