0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ML算法工程師面試指南,完整的面試知識點(diǎn)、編程題及題解

電子工程師 ? 來源:lq ? 2019-02-27 13:53 ? 次閱讀

春季到來,春招不久也會開始。在本項(xiàng)目中,作者為大家準(zhǔn)備了 ML 算法工程師面試指南,它提供了完整的面試知識點(diǎn)、編程題及題解、各科技公司的面試題錦等內(nèi)容。目前該 GitHub 項(xiàng)目已經(jīng)有 1 萬+的收藏量,想要跳一跳的同學(xué)快來試試吧。

項(xiàng)目地址:https://github.com/imhuay/Algorithm_Interview_Notes-Chinese

如下所示為整個項(xiàng)目的結(jié)構(gòu),其中從機(jī)器學(xué)習(xí)到數(shù)學(xué)主要提供的是筆記與面試知識點(diǎn),讀者可回顧整體的知識架構(gòu)。后面從算法到筆試面經(jīng)主要提供的是問題及解答方案,根據(jù)它們可以提升整體的解題水平與編程技巧。

面試知識點(diǎn)

面試題多種多樣,但機(jī)器學(xué)習(xí)知識就那么多,那么為了春招或春季跳槽,何不過一遍 ML 核心知識點(diǎn)?在這個 GitHub 項(xiàng)目中,作者前一部分主要介紹了機(jī)器學(xué)習(xí)及各子領(lǐng)域的知識點(diǎn)。其中每一個知識點(diǎn)都只提供最核心的概念,如果讀者遇到不熟悉的算法或者遇到知識漏洞,可以進(jìn)一步閱讀相關(guān)文獻(xiàn)。

項(xiàng)目主要從機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、自然語言處理和數(shù)學(xué)等方面提供詳細(xì)的知識點(diǎn),因?yàn)樽髡弑容^關(guān)注 NLP,所以并沒有提供詳細(xì)的計(jì)算機(jī)視覺筆記。

機(jī)器學(xué)習(xí)

首先對于機(jī)器學(xué)習(xí),項(xiàng)目主要從基礎(chǔ)概念、基本實(shí)踐、基本算法和集成學(xué)習(xí)專題這四個方面概括 ML 的總體情況。其中基礎(chǔ)概念可能是最基本的面試問題,例如「偏差方差怎么權(quán)衡?」、「生成模型和判別模型的差別是什么?」、「先驗(yàn)和后驗(yàn)概率都是什么,它們能轉(zhuǎn)換嗎?」。

這些知識點(diǎn)一般是入門者都需要了解的,而對于 ML 基本實(shí)踐,主要會從如何做好傳統(tǒng) ML 開發(fā)流程的角度提問。例如「你如何選擇超參數(shù),能介紹一些超參數(shù)的基本搜索方法嗎?」、「混淆矩陣、準(zhǔn)確率、精確率、召回率或 F1 值都是什么,如何使用它們度量模型的好壞?」、「你能介紹數(shù)據(jù)清洗和數(shù)據(jù)預(yù)處理的主要流程嗎,舉個例子?」。

這些問題都能在前兩部分的知識點(diǎn)中找到答案。后一部分的基本算法就非常多了,從最簡單的 Logistic 回歸到復(fù)雜的梯度提升樹,這一部分總結(jié)了主流的機(jī)器學(xué)習(xí)算法:

信息論

邏輯斯蒂回歸

支持向量機(jī)

決策樹

集成學(xué)習(xí)

梯度提升決策樹 GBDT

隨機(jī)森林

其中每一種算法都提供了最核心的概念,例如對于決策樹中的 CART 算法,筆記主要引用了李航《統(tǒng)計(jì)學(xué)習(xí)方法》中的描述:

最后機(jī)器學(xué)習(xí)還有一個關(guān)于集成方法的專題。除了支持向量機(jī),集成方法相關(guān)的問題在 ML 中也比較重要,因?yàn)橄?XGboost 和隨機(jī)森林等方法在傳統(tǒng) ML 中效果應(yīng)該是頂尖的,被問到的概率也大得多。

深度學(xué)習(xí)

深度學(xué)習(xí)的內(nèi)容就相對比較多了,目前也有非常多的筆記或資料,但是我們可能會感覺深度學(xué)習(xí)的問題并沒有機(jī)器學(xué)習(xí)難。頂多會讓我們手推一個反向傳播算法,不會像手推支持向量機(jī)那樣讓我們從表達(dá)式推一下卷積網(wǎng)絡(luò)。如果要為深度學(xué)習(xí)打基礎(chǔ),其實(shí)最好的辦法是學(xué)習(xí) Ian Goodfellow 的《Deep Learning》,我們只要閱讀這本書的前兩部分:應(yīng)用數(shù)學(xué)與機(jī)器學(xué)習(xí)基礎(chǔ);深度網(wǎng)絡(luò):現(xiàn)代實(shí)踐。第三部分因?yàn)樯婕按罅壳把匮芯康臇|西,我們暫時可以不急著學(xué)。

該項(xiàng)目主要從以下幾個方面介紹深度學(xué)習(xí)面試知識點(diǎn):

深度學(xué)習(xí)基礎(chǔ)

深度學(xué)習(xí)實(shí)踐

CNN 專題

RNN 專題

優(yōu)化算法專題

序列建模專題

《Deep Learning》整理

前面 6 個專題都是介紹的筆記,每一個專題都有非常多的具體內(nèi)容,其中序列建模專題還引用了機(jī)器之心綜述的從循環(huán)到卷積,探索序列建模的奧秘。如下展示了優(yōu)化算法專題所包含的內(nèi)容:

在最后的《Deep Learning》整理中,項(xiàng)目作者給出了五十多道深度學(xué)習(xí)問題,并根據(jù)這些問題介紹《Deep Learning》中的知識點(diǎn)。如下為問題示例,不同的星號表示問題的難度:

自然語言處理與數(shù)學(xué)

后面的自然語言處理也是最近在重點(diǎn)更新的,目前介紹的方面主要有;

自然語言處理基礎(chǔ)

NLP 發(fā)展趨勢

詞嵌入專題

句嵌入專題

多模態(tài)專題

視覺問答綜述

深度理解查詢

NLP 很多知識點(diǎn)其實(shí)都不算基礎(chǔ)內(nèi)容,這需要根據(jù)我們自己學(xué)習(xí)的領(lǐng)域收集復(fù)習(xí)內(nèi)容。不過像 NLP 基礎(chǔ)或詞嵌入等知識點(diǎn),項(xiàng)目作者介紹得很詳細(xì),它們也是 NLP 面試必備知識。

最后還有一些數(shù)學(xué)知識點(diǎn),它們是算法工程師面試所需要具備的基礎(chǔ)。例如今日頭條算法工程師的實(shí)習(xí)生面試會問:「在圓環(huán)上隨機(jī)選取 3 個點(diǎn),這 3 個點(diǎn)組成銳角三角形的概率?」,或者其它算個積分之類的。項(xiàng)目作者主要為面試準(zhǔn)備了以下幾方面的知識點(diǎn);

概率論

微積分本質(zhì)

深度學(xué)習(xí)核心

其中深度學(xué)習(xí)核心主要包含非線性激活函數(shù)、梯度下降和反向傳播。

算法題和筆試題

對于編程面試,基礎(chǔ)算法是必不可少的,它們一般體現(xiàn)在筆試題上,例如數(shù)據(jù)結(jié)構(gòu)、動態(tài)規(guī)劃或排列組合等。很多開發(fā)者可能感覺筆試解題會很難,因?yàn)轭}目并不會告訴你需要用什么樣的基礎(chǔ)算法來解決,全靠我們自己一步步解析題目。這就要求我們對各種基礎(chǔ)算法都比較熟悉,項(xiàng)目作者提供了以下基本算法專題:

字符串

數(shù)據(jù)結(jié)構(gòu)

高級數(shù)據(jù)結(jié)構(gòu)

動態(tài)規(guī)劃

雙指針

區(qū)間問題

排列組合

數(shù)學(xué)問題

Shuffle、采樣、隨機(jī)數(shù)

大數(shù)運(yùn)算

海量數(shù)據(jù)處理

這些算法題會介紹具體的問題、解題思路以及對應(yīng)的解題代碼。例如在數(shù)據(jù)結(jié)構(gòu)中,我們?nèi)绾闻袛鄻?B 是不是樹 A 的子樹。

如下所示為解題代碼,注意基本上各基礎(chǔ)算法的題解都是用 C++寫的,作者會引用劍指 Offer 題解和 Leetcode 題解等的解決方案。

classSolution{public:boolHasSubtree(TreeNode*p1,TreeNode*p2){if(p1==nullptr||p2==nullptr)//約定空樹不是任意一個樹的子結(jié)構(gòu)returnfalse;returnisSubTree(p1,p2)//判斷子結(jié)構(gòu)是否相同||HasSubtree(p1->left,p2)//遞歸尋找樹A中與樹B根節(jié)點(diǎn)相同的子節(jié)點(diǎn)||HasSubtree(p1->right,p2);}boolisSubTree(TreeNode*p1,TreeNode*p2){if(p2==nullptr)returntrue;//注意這兩個判斷的順序if(p1==nullptr)returnfalse;if(p1->val==p2->val)returnisSubTree(p1->left,p2->left)//遞歸判斷左右子樹&&isSubTree(p1->right,p2->right);elsereturnfalse;}};

此外,該項(xiàng)目還提供了 IO 模板和必備算法模板。作者表示不少筆試不像 LeetCode 那樣可以自動完成 I/O,我們需要手動完成數(shù)據(jù) I/O,而且如果我們沒有 ACM 經(jīng)驗(yàn),很可能會在這上面浪費(fèi)很多時間。因此這里總結(jié)的幾種常見 IO 模板對于編程面試有很大的幫助,另外的算法模板同樣也是。

例如如果我們輸入不定數(shù)量個 Input,且以某個特殊輸入為結(jié)束標(biāo)志,那么用 C 語言實(shí)現(xiàn)的模板為:

//示例1inta,b;while(scanf("%d%d",&a,&b)!=EOF&&(a!=0&&b!=0)){//...}//或者while(scanf("%d%d",&a,&b)!=EOF&&(a||b)){//...}//示例2intn;while(scanf("%d",&n)!=EOF&&n!=0){//...}

用 C++實(shí)現(xiàn)的模板為:

//示例1inta,b;while(cin>>a>>b){if(a==0&&b==0)break;//...}//示例2intn;while(cin>>n&&n!=0){//...}

面試真題

最后,項(xiàng)目作者還收集了十多家科技企業(yè)面試真題,并介紹從一面到三面的內(nèi)容與經(jīng)驗(yàn)。

例如以下是頭條/字節(jié)跳動-深度學(xué)習(xí)/NLP 方向的三面概覽:

具體的面試題也會提供,如下所示為字節(jié)跳動 18 年 8 月的筆試題:積分卡牌游戲。

當(dāng)然給了題目,對應(yīng)的解決方案也會提供:

#輸入處理n=int(input())x,y=[],[]foriinrange(n):_x,_y=list(map(int,input().split()))x.append(_x)y.append(_y)xy=list(zip(x,y))xy=sorted(xy,key=lambdat:t[1])ret=0ifsum(x)%2==0:#如果所有x的和為偶數(shù)print(sum(y))#直接輸出所有y的和else:foriinrange(len(xy)):ifxy[i][0]%2==1:#去掉x中為奇數(shù)的那一項(xiàng)ret=sum([xy[j][1]forjinrange(len(xy))ifj!=i])print(ret)break

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4552

    瀏覽量

    92020
  • ML
    ML
    +關(guān)注

    關(guān)注

    0

    文章

    143

    瀏覽量

    34436
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8306

    瀏覽量

    131841

原文標(biāo)題:春招已近,這份GitHub萬星的ML算法面試大全請收下

文章出處:【微信號:TheBigData1024,微信公眾號:人工智能與大數(shù)據(jù)技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    FPGA工程師面試試題

    FPGA工程師面試試題
    發(fā)表于 03-02 09:36

    數(shù)字IC設(shè)計(jì)工程師筆試面試經(jīng)典100(大部分有答案)

    數(shù)字IC設(shè)計(jì)工程師筆試面試經(jīng)典100(大部分有答案)
    發(fā)表于 08-20 20:25

    硬件工程師面試心得

    硬件工程師面試心得,求
    發(fā)表于 09-14 12:03

    史上最全面Java面試匯總(面試題+答案)精選資料分享

    】Java高級工程師面試(1)Java高級工程師面試(2)Java高級工程師面試(3)BA
    發(fā)表于 07-21 09:39

    PCB布線知識面試題_PCB工程師必備

    本內(nèi)容匯總了近30個PCB布線知識面試題是PCB工程師必備的知識點(diǎn)總結(jié),也是面試者需要的知識。如何處理實(shí)際布線中的一些理論沖突的問題,在高速
    發(fā)表于 11-24 10:00 ?0次下載

    面試官談軟件工程師面試技巧

    我最近一直在進(jìn)行軟件工程師面試。面試開始時,我都會問面試官兩個問題,但至今沒有得到令我滿意的回答:
    的頭像 發(fā)表于 10-25 10:33 ?4392次閱讀

    前端工程師面試技巧

    我在Twitter和Stripe的一部分工作內(nèi)容是面試前端工程師。其實(shí)關(guān)于面試你可能很有自己的一套,這里我想跟你們分享一下我常用的方法。
    的頭像 發(fā)表于 10-15 10:57 ?3487次閱讀

    如何準(zhǔn)備算法工程師面試需要知道哪些知識技能

    今天我們不聊paper,換一個輕松一點(diǎn)的話題,聊一聊如何準(zhǔn)備算法工程師面試。所以希望自己的經(jīng)驗(yàn)?zāi)軐δ阌兴鶐椭?,也非常歡迎其他面試官能夠多留
    的頭像 發(fā)表于 02-03 09:15 ?5457次閱讀

    深信服面算法工程師面試經(jīng)歷

    深信服面的算法工程師,深信服的面試很專業(yè),不愧是重技術(shù)的公司,經(jīng)歷了三面,雖然掛了難免失落,但是還是很慶幸有這次的經(jīng)歷。掛的原因是自己沒有準(zhǔn)備充分,完全是去裸面的。感覺自己掛在了二面,二面面試
    的頭像 發(fā)表于 03-22 14:38 ?3582次閱讀

    算法工程師面試真的是一門玄學(xué)嗎

    經(jīng)常參加面試的同學(xué)肯定有過這種感覺,即使面試過程非常順暢,即使你本身是一個面霸,甚至god like,也經(jīng)常有失手的時候。所以很多同學(xué)把面試歸結(jié)為一門“玄學(xué)”。那么算法
    的頭像 發(fā)表于 07-29 17:29 ?1971次閱讀

    算法工程師面試是一門玄學(xué)嗎

    但經(jīng)常參加面試的同學(xué)肯定有過這種感覺,即使面試過程非常順暢,即使你本身是一個面霸,甚至god like,也經(jīng)常有失手的時候。所以很多同學(xué)把面試歸結(jié)為一門“玄學(xué)”。那么算法
    的頭像 發(fā)表于 08-16 16:40 ?1734次閱讀

    C語言與C++面試知識點(diǎn)總結(jié)

    相對而言,C語言和C++相關(guān)的面試題比較少見,沒有Java方向?qū)懙娜四敲炊?,這是一篇 C 語言與 C++面試知識點(diǎn)總結(jié)的文章,個人感覺非常難得,希望能對大家有所幫助。
    的頭像 發(fā)表于 05-12 14:59 ?1359次閱讀

    C語言與C++面試知識點(diǎn)總結(jié)

    相對而言,C語言和C++相關(guān)的面試題比較少見,沒有Java方向?qū)懙娜四敲炊?,這是一篇 C 語言與 C++面試知識點(diǎn)總結(jié)的文章,個人感覺非常難得,希望能對大家有所幫助。
    的頭像 發(fā)表于 05-13 11:59 ?1751次閱讀

    華為射頻工程師面試經(jīng)驗(yàn)分享

    校園招聘-射頻工程師面試經(jīng)驗(yàn)(上海) - 華為 面試過程: 總共3輪面試,第1,2輪面試面試官都
    的頭像 發(fā)表于 04-14 16:42 ?2265次閱讀

    TCP協(xié)議面試常問知識點(diǎn)總結(jié)

    TCP 作為傳輸層的協(xié)議,是一個IT工程師素養(yǎng)的體現(xiàn),也是面試中經(jīng)常被問到的知識點(diǎn)。在此,我將 TCP 核心的一些問題梳理了一下,希望能幫到各位。
    的頭像 發(fā)表于 12-15 10:38 ?656次閱讀
    TCP協(xié)議<b class='flag-5'>面試</b>常問<b class='flag-5'>知識點(diǎn)</b>總結(jié)