算法工程師面試筆記

@AUTHOR:Jiawei Li
@DATE : 09/29/2019
本文全文約8600字,閱讀估計需要25分鐘

前言

最近趁着秋招的熱度投了一波簡歷,本着開源的精神,整理了一下各個廠的面試問題,歡迎大家評論交流~

雲恩科技

面試次數:1(現場面)

面試主要內容:計算機視覺,OCR,人體識別

面試時間:約90min

具體內容:

  • 項目介紹
  • 簡要描述OD(Object Detection,物體識別)方向的通用框架
  • OD方向的general和非general在實現時有哪些可選擇的框架?爲什麼選擇這些框架?框架的優缺點?
  • 有沒有做過OCR?對於非規則的OCR怎麼做?解釋下Text-RCNN原理?
  • 如何做船員是否穿救生服的判別方案的落地?
  • 瞭解雙目攝像頭嗎?講述一下工作原理?
  • 模型現場部署需要注意哪些?
  • 對於目前在做的人工智能藍海產業(渡口非法船舶/船舶牌照識別)有什麼看法?

總體感受:面試問題比較宏觀,大多數都是從框架設計/應用具體落地層面來問的,對於新人不太友好。可能是英文公司規模比較小,而且做的方向還比較藍海,所以希望招一個比較全棧的技術人員負責算法落地,也情有可原。面試官一共兩位,分別是業務經理和CTO(公司一共七人左右),態度非常友善。不過還是要吐槽一下辦公地點,是在西麗的大學生創業小鎮,我從南山過去要換乘地鐵,路程還是挺長的…(不過現在據說換地方了,感興趣的同學可以過去看看)。


星雲智匯(4fun)

面試次數:2

一面(電話面)

面試主要內容:機器學習基礎,強化學習,推薦系統,深度學習相關(主要是RNN)

面試時間:約90min

具體內容:

  • 自我介紹/項目介紹
  • 強化學習的基本框架(我在項目裏提到了強化學習)?強化學習與有監督學習/無監督學習的關係?
  • 強化學習model可以做online嗎?爲什麼?
  • AC網絡結構的思想是什麼?
  • XGB和GBDT的實現區別是什麼?原理區別是什麼?
  • 推薦系統的三大組成要素?召回和精排在實現上有何區別?
  • LSTM的原理?和RNN的區別?有了解過GRU嗎?它們三者的區別?

二面(現場面)

面試主要內容:推薦系統工程化,A/B Test

面試時間:約120min

具體內容:

  • 請設計一個你認爲能夠處理百萬日活的推薦系統框架?(包括算法和工程落地方案)
  • 之前做的推薦系統可以達到實時嗎?你認爲怎樣的推薦系統能夠達到實時?(日活百萬)
  • 模型在部署時如何做A/B Test?A/B Test篩選線上模型的標準有哪些?
  • 給出一個標準三層結構(召回,粗排,過濾),每個結構上有10個待上線算法,日活百萬,如何解決每個算法上訓練時數據量不足的問題?(提示:用流量正交)
  • XGB, GBDT, LGBM的關係?如何應用在工程上?
  • 對於在線端,近線端和離線端的理解?

總體感受:這是一家做短視頻應用的公司(對標抖音和快手,不過面向國家是印度),總部在珠海。深圳的算法組剛成立不久。辦公室是租的Beeplus,整體感覺非常不錯,有點像在咖啡廳裏辦公。不過最得我心的還是他們有專門的午休太空艙,可以完美解決午休問題。兩面的面試官都是同一位,態度很好,而且一看就是經驗豐富的大佬,問我的問題都很實際,不是浮於表面地問問原理就完事那種。而且他最後還說剛畢業的年輕人都是這樣的,問啥原理都懂,但是就是動手落地能力差,希望之後我入職之後可以多跟他交流,這樣更加有助於我的成長,把我感動的一塌糊塗,真的非常少見這樣的能在還沒入職的時候就答應給你鋪好成長道路的面試官了。面試整體的節奏偏快,而且都是實際工程問題,對於像我這種工程能力不足的候選人非常有益。


無覓

面試次數:2

一面(電話面)

面試主要內容:推薦系統實現與評測,機器學習基礎,深度學習,強化學習

面試時間:約120min

具體內容:

  • 自我介紹/項目介紹
  • 請推導一下LR,並說一下L1和L2的區別,如何在模型裏協調L1和L2(哪種情況下用哪個方法?有什麼好處?)
  • 用過SVM嗎?說說SVM原理?有哪些核函數?
  • 強化學習的基本框架(我在項目裏提到了強化學習)?
  • boosting,bagging和stacking的區別?優缺點?應用場景?
  • XGB實現原理?每一棵tree的wieght和gain有什麼區別?防止過擬合的方法?
  • 簡述梯度下降?Adam和SGD的使用場景?
  • 網絡參數初始化怎麼設置?簡述Xavier的實現方案?
  • loss下不來可能是什麼原因?梯度下降能夠通過什麼方案提速?
  • 怎麼確定一個推薦系統的可落地性?怎麼評價推薦系統效果的好壞?

二面(現場面)

面試主要內容:機器學習原理推導,神經網絡原理推導,算法題

面試時間:約120min

具體內容

  • 自我介紹/項目介紹
  • CNN的反向傳播是如何做的?爲何在反向傳播時kernel要轉置?
  • 給你一個具體的dataset,請在紙上描述GBDT訓練過程,並用公式表示
  • LSTM三個門的作用?畫出LSTM的基本結構?有什麼更好的改進方案?
  • 如何切分train/validation/test dataset的規模?依據是什麼?
  • FM和FFM的原理?應用?推導?
  • 算法題(具體忘記是啥了,只記得是一個遞歸相關的題,難度大概是leetcode medium左右,他規定十分鐘寫完,我用了
    五分鐘,但是後來改進優化用了十分鐘…還需要講述算法的時空複雜度)

總體感受:我面試的部門是做英語教學APP的(對標扇貝),不是他們的主線業務,但是面試的標準卻絲毫沒有減。兩次面試的面試官是同一位,所以二面相當於是一面的加深版本。面試官挺nice的,會認真聽完你的敘述不會打斷你,但是總體感覺和麪試官的交互還是比較少(也有可能是我比較能說…)。辦公地點公共空間很大,很舒服,就是總部大樓不太好打車哈哈哈。總體感覺還算OK,但是因爲第三面是算法負責人面,需要用電腦,但是我當時前後幾天都沒法用電腦,後來就不了了之了…


聯想(深圳機器智能中心)

面試次數:4

一面(電話)

這次面試有點小插曲,因爲約定使用skype進行面試,但是不知道是啥原因一直沒打通,後來找了同學加了組內同學的微信,直接聯繫了面試官。但是因爲信號不好等等不可抗因素…本來約定的半小時的面試延長到了45min,然後面試官跟我說希望可以約一個下個周的面試,因爲他後邊還有候選人的面試,不想耽誤別人的時間。於是這次面試就草草收場了,主要內容還是做了個自我介紹和項目簡介(雖然我也不知道面試官姐姐聽清楚了沒…)

二面(電話)

面試主要內容:機器學習基礎,強化學習,時序分析

面試時間:大約60min

具體內容:

  • 樹模型主要有哪些?XGB和GBDT的區別?
  • 如何構建從raw data到模型input/output的過程?(主要考察數據提取/清洗/預處理的過程)
  • 如何做數據EDA?有哪些工具?
  • 簡述以下DIN的原理?DIN中的Attention是如何具體實現的?DICE函數有哪些優缺點?你覺得應該如何改進?
  • 你所做的RL和RS相結合的部分對比起現有的架構有哪些優勢?
  • 簡述以下arima的建模過程?爲什麼用arima?優缺點分析?
  • 你所說的模型線pipeline並行融合是在模型上做融合還是在結果上做voting?爲什麼這麼做?有多少提升?
  • 項目職責分工是怎麼樣的?模型部署上線時碰到了哪些坑?你是怎麼解決的?

三面(現場)

面試主要內容:機器學習基礎,神經網絡基礎,後端開發, 算法題

面試時間:大約60min

具體內容:

  • 項目介紹
  • 你用於訓練模型的數據劃分依據是什麼?(train/test dataset的比例),如何在不重複training的情況下確定最優值?
  • 模型的hyperparameters如何探索?如何做離線評測?
  • 數據的scale有哪幾種方法?分別用於哪些場景?
  • 平臺使用什麼語言開發?會用Django或者flask嗎?兩者的對比說說看?
  • 所以說Django的內置組件有哪些?分別承擔哪些職責?
  • 如何上線?用過nginx或者Apache嗎?踩過那些坑?怎麼解決?
  • csrf機制是啥?
  • 用過ORM逆向嗎,django裏怎麼實現的?
  • 算法題(一共三個題目,第一個比較簡單忘記了,好像是斐波那契數列的變體,第二個題是在不增加額外空間足夠多的情況下旋轉方陣,第三個題是用遞歸做大數乘法)

四面(現場)

面試主要內容:機器學習基礎,神經網絡基礎,算法題

面試時間:約60min

具體內容:

  • 項目介紹
  • 項目過程中遇到哪些坑?如何解決?項目如何分工?你擔當的職責有哪些?
  • 傳統LR/樹模型/神經網絡模型這三個模型分別是如何解決過擬合的?
  • 你是如何調參數的?如何知道需不需要引入額外參數?
  • 你認爲業務重要還是技術重要?爲什麼?
  • 算法題(給你N個蘋果,分別編號爲1,2,…,N。並且給你一些tuple的集合,比如(1,3),(2,4)等,tuple(a,b)的含義是你在拿a之前必須先拿b,請判斷在給定的tuple的集合下能否拿玩全部的蘋果,並給出拿的順序。挺有意思的圖論算法題。)

總體感受:聯想本來是我把握比較大的一家,畢竟面試完了面試官小姐姐都讓我回家等hr通知了…沒想到最後還是等到了一個好人卡。不過之前聽同學說裏邊的hc確實挺緊張的,加上我這次面試的時間真的是不太好,所以也只能怪自己沒考慮周全。base在深圳的研發中心(TCL樓旁邊),大廳很寬敞很舒服,三面和四面現場面都是兩位面試官,人都非常nice,以至於有時候聊着聊着就跑題了哈哈。面試的氛圍很輕鬆愉快,問題的側重點也很清晰。我個人是特別喜歡和麪試官進行交互的,因爲這樣不僅能夠讓面試官更瞭解你的閃光點,而且從面試官給你的回答或者評價也可以更好地發現自己的不足。總體來說,雖然很遺憾沒有拿到offer,但是卻是一次非常愉快的體驗。(話說我還在想能不能把車費給我報一下,畢竟來回兩趟車費挺貴的…)


博智林(碧桂園旗下)

面試次數:1(電話面)

面試時長:大約60min

面試主要內容:路徑規劃,神經網絡基礎

具體內容:

  • 自我介紹/項目介紹
  • OD框架描述一下?每一步演進有哪些改進?如果給你一個場景你怎麼選擇?
  • 路徑規劃的基本方法?如何把路徑規劃做到線上?
  • 訓練模型時訓練數據不足怎麼破?什麼是遷移學習?遷移學習在控制場景下是怎麼工作的?
  • 做過項目的分工?你怎麼看待你在該項目裏的貢獻?
  • 瞭解NLP嗎?不怎麼了解沒事,說說情感分析怎麼做的?(我總覺得這個問題賊尷尬…)

總體感受:哈哈哈你沒有看錯,就是搞房地產的那一家碧桂園,我投的部門是他們的全資子公司,叫博智林機器人,主要還是做機器控制智能相關的業務。面試時間安排在晚上九點,是技術總監和hr同時對我進行的面試。問的問題感覺不是非常難,但是有種挺尷尬的感覺(不知道爲啥)。有一點不太好的地方是面試官向我提出問題之後,我做了回答,她好像不太滿意,所以我她所以這個問題您怎麼看,但是她沒有回答就直接轉到下一話題了。交互感不是非常強(也許面試官在心裏來了個大佬三連哈哈哈)。


追一科技

面試次數:3

一面(電話)

面試時長:大約70min

面試主要內容:機器學習基礎,神經網絡基礎,強化學習,spark,算法題

具體內容:

  • 自我介紹/項目介紹
  • XGB和GBDT區別?XGB中如何做減枝?每棵樹葉子結點的gain和weight有啥區別?
  • softmax是啥?怎麼實現的?softmax在LR中是怎麼應用的?
  • 列舉你熟悉的分類器和迴歸器,並進行優缺點分析
  • DQN原理?Sarsa原理?off-policy和on-policy有啥區別?
  • 簡述生成DQN訓練數據的OU隨機過程?還有什麼其他的隨機過程?優缺點分析?
  • Xavier和He神經網絡初始化方法分別是什麼原理?
  • 如何解決工程中的數據傾斜問題?
  • 算法題(如何實現二分排序,並給出時空複雜度分析…我強烈懷疑是爲了湊夠時間出的這個題)

二面(電話)

面試時長:大約60min

面試主要內容:機器學習基礎,量化相關,神經網絡基礎, 推薦系統架構, 強化學習

具體內容:

  • 說說你的RL和RS結合的創新點?爲什麼這麼做?提升多少?
  • 做過量化嗎?有哪些方法?能落地嗎?能的話怎麼評測效果?如何解決反饋期過長的問題?
  • CNN經典架構有哪些?爲什麼每一層的kernel的size是逐步減小而個數是逐漸增大的?pooling如何選擇使用?
  • 推薦系統的召回策略有哪些?用過L2R嗎?L2R有哪幾類?代表方法是什麼?

三面(電話)

面試時長:大約75min

面試主要內容:機器學習基礎,神經網絡基礎,算法題

具體內容:

  • 自我介紹/項目介紹
  • 你做的神經網絡模型需要保持結果的有序性,但是這是無法在網絡結構設計上實現的,怎麼解決這個問題?
  • 在RL過程中,你的Q網絡和target網絡是如何交互協作的?
  • 模型上線時有用到分佈式的參數服務器一類的服務容器嗎?還是僅支持單機?對這方面有了解嗎?
  • 樹模型如何處理迴歸問題?除了加法模型還有什麼別的實現手段嗎?
  • 算法題(給定一個字符串str和一系列tuple字符歸屬集合,判定該字符串屬於哪個集合,Leetcode medium難度)

總體感受:追一是國內NLP的獨角獸,很年輕很有活力的一家公司,聽說從二樓到一樓是滑梯下來的(但是我過去面試的時候好像給拆了還沒換新的,遺憾)。整體辦公環境很優雅簡潔,就像他們的管理方式一樣(追求扁平化,CEO辦公室就在辦公區旁邊,隨時可以進去找CEO聊人生那種)。面試的節奏很明快但是又不是非常緊湊,非常適合應屆生或許工作經驗不是非常多的候選者,非常非常棒的面試體驗!


字節跳動

面試次數:1(視頻面)

面試時長:大約60min

面試主要內容:機器學習基礎,算法題, 數學題

具體內容:

  • 自我介紹/項目介紹
  • XGB如何實現,與GBDT區別
  • softmax在數值計算上可能會出現的上溢和下溢的問題
  • 減少過擬合的方法
  • 數學題(給定一枚不均勻硬幣,拋出正面的概率爲P,求拋2K+1至多有K次出現正面的概率)
  • 算法題(給定一組數字,求數字大序數減去小序數的最大值。如給定N個數)

總體感受:這是我這段時間來經歷的最憋屈的一場面試。首先,面試官在面試過程中我感覺一直在…冷笑?可能是我對之前做的項目的解釋他不太滿意,之後在詢問技術細節的時候我感覺他的態度一直是帶着一些輕蔑的…拋去這些不談,在"減少過擬合的方法"這個問題時,我回答“可以考慮用L1權重衰減方法”,結果面試官反問“我說的是減少過擬合?你有沒有聽清”,我愣了一下,也說“我說的也是減少過擬合…”,結果他就不說話了,就用那種很輕蔑的眼神看着我…我也不知道該說啥(當時我還以爲我說錯了),然後我問他“您覺得L1不能解決這個問題嗎”,他好像很輕地哼了一聲,然後就跳到下一個問題了…我事後翻了一些資料,也跟同學交流過,還是不知道自己錯在哪了…總之,這場面試60分鐘大概有二十分鐘是沉默的,非常尷尬。或許是我真的太菜了吧哈哈哈哈。(對這個問題有見解的大佬歡迎在評論區跟我交流下,能得指教不勝感激~)


阿里(LAZADA)

面試次數:3

一面(電話):

面試時長:大約70min

面試主要內容:機器學習基礎,推薦系統,深度學習,強化學習

具體內容:

  • 自我介紹/項目介紹
  • 推導一下LR,然後描述一下極大似然在推導過程中起到的作用
  • sigmoid函數的推導
  • 分類器模型中常用的loss有哪些?簡要描述一下log loss和hinge loss的思想區別
  • 推薦系統三大組成要素?知道哪些常見的排序模型?簡要描述一下point-wise,pair-wise和list-wise三類L2R模型在輸入空間和輸出空間上的異同?
  • 描述一下之前做過的強化學習與推薦系統結合的框架?有哪些創新點?如何評價其與所服務業務的契合度?
  • 特徵工程怎麼做?好與不好的評價標準有哪些?

二面(電話)

面試時間:大約60min

面試主要內容:機器學習基礎,推薦系統,大數據套件基礎

具體內容:

  • 自我介紹/項目介紹
  • 強化學習模型能不能部署到在線端或者近線端?如果在離線端該如何進行數據流的實時傳送?
  • 以hdfs爲基礎數據存儲平臺怎麼連接在線端?數據流如何輸入?用戶點擊反饋如何對模型進行fine tune?
  • flink,storm和spark的原理?你認爲spark在訓練模型的瓶頸在哪裏?
  • 會用kafka嗎,簡要描述一下kafka中topic的概念
  • 數據傾斜怎麼搞?

三面(電話)

面試時間:大約60min

面試主要內容:機器學習基礎,推薦系統,深度學習,運籌優化

具體內容:

  • 自我介紹/項目介紹
  • 說一下W&D模型?實現時需要注意哪些問題?
  • list-wise的L2R模型有哪些?說一下Lambda MART?它跟Lambda Rank最大的區別在哪?
  • 說一下NDCG?知道是怎麼推出來的嗎?
  • 如何去除Position Bias的問題?
  • 冷啓動怎麼解決?
  • 你用來訓練LSTM的數據有多少?計算一下時空複雜度?你認爲LSTM Unit的個數和數據量存在關係嗎?爲什麼?
  • 凸優化了解嗎?在不確定一個多目標優化問題是否有解的情況下能否直接上SGD?

總體感受:阿里畢竟是互聯網一線大廠,在對待面試者時既展示了大廠的豐富底蘊,又保留了謙謙有禮的態度。整體面試感覺非常舒服,並且面完之後有一種知道了原來自己不知道的感覺,這是比直接告訴答案更加讓我豁然開朗的趕腳。面試官的態度都非常謙虛,完全沒有架子,而且面試結束之後面試官還會對你今後還待加強的方向進行建議,真的是感覺賺到了。結果面完之後我對阿里的崇拜之情又增加了幾分哈哈哈。


騰訊

面試次數:3

一面(電話):

面試時間:大約60min

面試主要內容:機器學習基礎,深度學習基礎,強化學習,推薦系統

具體內容:

  • 自我介紹/項目介紹
  • 說一下你做過的強化學習結合推薦系統的框架?爲什麼用AC網絡?AC是如何結合DQN進行Q值估計的?Critic網絡的梯度如何與DQN的梯度進行交互?什麼是soft update?
  • 說一下產生初始訓練數據的OU過程是怎麼樣的?replay buffer的大小如何確定?會做sliding嗎?
  • LSTM怎麼工作的?與普通的RNN的區別在哪?layer的層數如何確定?Unit的個數如何確定?
  • 數據EDA是怎麼做的?舉一個你在做項目的過程中做過的EDA對於結果有幫助的例子看看?
  • CNN的超參數是怎麼定的?你有哪些調參經驗?
  • 說一下FM和FFM?瞭解過DeepFM嗎?瞭解的話說一下原理?
  • 你做過的推薦系統的流量分配策略是什麼?如何處理流量非正交的問題?
  • 如何解決Position bias?
  • 如何評價推薦系統性能好壞?

二面(現場):

面試時間:大約100min

面試主要內容:機器學習基礎,深度學習基礎,強化學習,推薦系統,大數據套件,算法題

具體內容:

  • 自我介紹/項目介紹
  • 畫一下你的強化學習模型的框圖?對比一下市面上其他的模型,你們的模型有哪些優劣?
  • 你的AC網絡涉及了多網絡梯度傳遞,你是如何確定這樣做是否合理?有沒有做容災措施?是如何做的?
  • 你在設計的前期爲什麼能夠確定用DIN作爲backbone?爲什麼attention機制適合你的業務場景?
  • 說一下attention的實現和實現方式
  • 會在分佈式上用XGB嗎?有沒有讀過XGB源碼?說一下XGB4J是怎麼用的?
  • 你認爲在實時推薦系統三大模塊中,最快達到性能瓶頸的是哪一個模塊?爲什麼?怎麼解決?
  • 會用Streaming嗎?有沒有用過flink?spark在submit時的必選和可選參數有哪些?
  • 算法題(N個人圍成一個圓圈,而且每個人都有編號(0,1,…,N-1)從0號報數,數到K時,報K的人出列,剩下的人接着依次報數直到所有人出列,求出列號碼順序),leetcode easy難度
  • 算法題(abcd * 4 = dcba,求abcd),leetcode easy難度

三面(電話)

面試時間:約40min

面試主要內容:推薦系統架構

具體內容:

  • 自我介紹/項目介紹
  • 你在之前的項目中分別充當了什麼角色?解決了哪些問題?
  • 如果現在讓你設計一個日活百萬的推薦系統架構,請從在線端和離線端兩個角度描述你的設計方案
  • 你會如何設計A/B Test系統?如何保證流量正交?
  • 知道流量分桶嗎?如何保證流量分桶唯一?

總體感受:我面的是深圳的鵝廠,主要是做信息流這一塊的。感覺面試官很專業(能用縮寫絕不說全稱哈哈哈),不過這樣也提高了面試效率(畢竟懂的一聽都懂,不懂的就完全不懂了)。整體面下來也不會覺得很累,而且收穫滿滿。而且不僅是面試官,hr人也特別好,我在面試過程中由於自己的不夠謹慎而給他們造成了很多麻煩,他們也付出了很多額外的心力來幫助我,這點是讓我很感動的~筆芯鵝廠哈哈哈。

* 寫在後邊的話

這一階段的面試告一段落了,感覺自己經過這一年的工作,成長是有的,但是還不盡人意,總感覺自己離理想的狀態還是有挺大的差距的。從跟面試官的交流過程中,就很明顯地感覺到自己的不足。希望自己可以在下一個階段的過程中繼續努力,與大家共勉。另外如果大家需要參考的答案的話我有空會陸續整理上來的,歡迎評論留言~

最後祝大家國慶快樂!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章