算法崗面試整理 | 騰訊、字節(jié)、美團(tuán)、阿里
(給機(jī)器學(xué)習(xí)算法與Python實(shí)戰(zhàn)加星標(biāo),提升AI技能)

文末贈(zèng)書福利
寫在前面
三月面試了好幾輪,寫個(gè)帖子記錄一下問過的問題,為接下來的其他公司的面試查漏補(bǔ)缺一下,也給大家一些準(zhǔn)備的方向。
騰訊
一面(涼)
自我介紹 問做過的項(xiàng)目,同時(shí)在過程中穿插用過的模型的問題,比如 word2vec兩個(gè)模型的損失函數(shù)是什么 cbow和skipgram的比較,為什么skipgram會(huì)更好,哪個(gè)的計(jì)算復(fù)雜度高 為什么使用隨機(jī)森林 決策樹的分裂方式是什么,根據(jù)什么變量來決定分裂變量 手撕代碼 給一個(gè)數(shù)N,k,每一輪可以進(jìn)行兩種操作的其中一種:①所有的數(shù)拆分成兩個(gè)更小的數(shù);②所有的數(shù)-1。已知拆分操作只能進(jìn)行k次,問 最少需要多少次把所有數(shù)都消去 給一串?dāng)?shù)列,這串?dāng)?shù)列有正有負(fù),但是總和為0。每個(gè)數(shù)xi代表一個(gè)村莊,正的表示村莊想賣出xi份水果,負(fù)的表示想買入xi份水果。兩相鄰村莊間的距離是相同的,單位距離運(yùn)送一份水果的運(yùn)費(fèi)均相同,每份都是k。問,把每個(gè)村莊的需求和供給都解決掉需要的最少運(yùn)送費(fèi)是多少?
這是第一次面試,涼得很徹底,因?yàn)楹芏嗨惴?xì)節(jié)都沒有好好復(fù)習(xí),而且代碼寫的也不夠整潔快速
字節(jié)tiktok海外版(南亞組?)
一面
一個(gè)很年輕的小哥哥,人也很好
word2vec兩個(gè)模型的損失函數(shù)是什么 cbow和skipgram的比較,為什么skipgram會(huì)更好,哪個(gè)的計(jì)算復(fù)雜度高 開放性問題:在視頻推薦這個(gè)領(lǐng)域能不能用上embedding的思想,如果可以,要怎么構(gòu)建和訓(xùn)練模型。 這個(gè)問題我沒答上來,然后面試官給了提示,說有用戶觀看視頻的一系列記錄和搜索記錄blabla,但我還是沒想出來。正確的打開方式是用word2vec的方法訓(xùn)練出一套視頻的embedding和用戶的embedding,詳情可以搜索一下youtubeNet這篇論文,https://zhuanlan.zhihu.com/p/97365203知乎上也有解釋。看完之后受益匪淺吧 手撕代碼 一個(gè)是二分查找,很簡(jiǎn)單的 一個(gè)是給定一個(gè)數(shù)組,輸出所有他的全排列組合,leetcode原題 permutation
然后小哥讓我回去安靜等消息,一度以為我涼了,過來一周問了hr有二面
字節(jié)二面
感覺面試官對(duì)于要不要實(shí)習(xí)生不太在意(捂臉 可能因?yàn)椴惶比税?二面面試官直接問機(jī)器學(xué)習(xí)問題的
解釋一下過擬合和欠擬合,怎么發(fā)現(xiàn)過擬合問題,怎么解決過擬合 你說到正則化問題,正則化有哪幾種方式 正則化這兩種方式的區(qū)別和公式分別是什么 你說l1會(huì)使得特征系數(shù)稀疏化,為什么呢(嶺回歸和lasso回歸的區(qū)別) 你說到lasso回歸有特征選擇的作用,有哪些特征選擇的方式 有哪些常用的降維方式 手撕代碼 判斷鏈表有沒有環(huán);判斷鏈表的環(huán)的起點(diǎn) 給定n個(gè)區(qū)間[a,b], 找到最小的區(qū)間[x,y],使得n個(gè)區(qū)間都至少包含一個(gè)數(shù)落在這個(gè)[x,y]中(不會(huì)啊救命)
然后面試官就讓我等答復(fù)了(我以為差不多涼了吧,然后三面面試官進(jìn)入聊天室,我只能繼續(xù)了23333。其實(shí)二面有很多答不上來的問題,所以當(dāng)時(shí)真的內(nèi)心是拒絕的,心態(tài)在崩潰邊緣
字節(jié)三面
三面面試官讓你直接開始講講你最熟悉或者最拿手的一個(gè)項(xiàng)目
這個(gè)面試官挺有批判精神的,他會(huì)指出你這個(gè)項(xiàng)目中的實(shí)驗(yàn)設(shè)置的不足,比如你詞向量的優(yōu)劣如果用情感分析的結(jié)果來進(jìn)行評(píng)估的話,情感分析這個(gè)任務(wù)的選擇合適嗎,為什么?用lstm模型來評(píng)估兩個(gè)詞向量的優(yōu)劣時(shí),調(diào)參怎么調(diào)才合理? 詞向量的訓(xùn)練原理和參數(shù)更新的細(xì)節(jié) 詞向量怎么用到神經(jīng)網(wǎng)絡(luò)里面 手撕代碼: 兩個(gè)有序數(shù)組的中位數(shù)(不要用O(N)的暴力算法,要用二分的思想) 找出一個(gè)正整數(shù)數(shù)組中,沒出現(xiàn)過的最小的正整數(shù)(不能先排序,要用比排序時(shí)間復(fù)雜度更優(yōu)的方法)
兩題都沒撕出來,還是太菜了 自此字節(jié)抖音涼了
美團(tuán)
美團(tuán)的筆試還是做的挺差的,五題只做了兩題,兩題都只有27%。。
一面
word2vec 訓(xùn)練過程訓(xùn)練原理 訓(xùn)練的損失函數(shù) 我看到你做多分類情感分析多分類問題的損失函數(shù)是什么 Soft max的計(jì)算公式是什么?為什么使用指數(shù)函數(shù)? LSTM的信息傳遞機(jī)制是什么?他和RNN相比有什么優(yōu)勢(shì)。 Bert 他和普通的Word2Vec模型相比優(yōu)勢(shì)在哪里 他為什么會(huì)有這樣的優(yōu)勢(shì)(優(yōu)勢(shì),指的是他能生成語境化的向量 Bert中的 transformer attention multihead attention 注意力機(jī)制的運(yùn)行過程是什么樣的? 注意力機(jī)制中對(duì)于每一個(gè)詞的分?jǐn)?shù)會(huì)進(jìn)行標(biāo)準(zhǔn)化,請(qǐng)問這一步的目的是什么 你剛剛提到batch normalization BN的作用是什么?它有四個(gè)公式,每一個(gè)公式分別是什么,有什么各自的作用 我對(duì)于每一個(gè)Batch 都計(jì)算出來了他對(duì)應(yīng)的均值跟方差這些,它們相互獨(dú)立的嗎?還是會(huì)相互影響。 我看你大多數(shù)是自然語言處理的事件,你有做過計(jì)算機(jī)視覺相關(guān)的任務(wù)嗎?回答:有機(jī)器學(xué)習(xí)課上嘗試手寫卷積神經(jīng)網(wǎng)絡(luò)的代碼 卷積神經(jīng)網(wǎng)絡(luò)的權(quán)重是怎么更新的,平均池化和最大持化的反向傳播是怎么運(yùn)作的? 沒有手撕代碼,但是讓我直接實(shí)現(xiàn)kmeans的偽代碼,不用編譯
總結(jié)來說,美團(tuán)一面問的都很基礎(chǔ)的深度學(xué)習(xí)問題,都答出來了,因?yàn)闇?zhǔn)備過,所以說的時(shí)候比較有自信,然后挺流暢的。面試官就說覺得我基礎(chǔ)知識(shí)挺扎實(shí)的挺好的(這個(gè)小哥人很nice,也是第一個(gè)這么夸我的面試官,挺受鼓舞的,很謝謝他
二面
大部分問題和一面的很接近,但是面試官好像是一面面試官的老大,會(huì)從更多維度來問你
word2vec訓(xùn)練過程的最后一步有什么辦法可以優(yōu)化softmax的計(jì)算,我沒答上來,他就告訴我說是指數(shù)函數(shù)的計(jì)算會(huì)用查表來近似代替 你大部分用的神經(jīng)網(wǎng)絡(luò)都是比較淺層的,有沒有試過更深的神經(jīng)網(wǎng)絡(luò) 有做過圖像方面的深度學(xué)習(xí)項(xiàng)目嗎 有沒有在實(shí)踐中應(yīng)用過transformer
最后面試官的評(píng)價(jià)是基礎(chǔ)知識(shí)比較好,但是實(shí)踐經(jīng)歷和業(yè)界場(chǎng)景有差距emmm,然后面試才剛剛開始,沒這么快能給你答復(fù)(好的我知道我是備胎了55555 美團(tuán)是我很想去的公司,我面試的部門是做美團(tuán)外賣的推薦廣告業(yè)務(wù)的,在他們場(chǎng)景中會(huì)用到很多的深度學(xué)習(xí)的模型(圖像+nlp)來提取特征和做推薦預(yù)估, 而且關(guān)注了美團(tuán)的技術(shù)博客,他們做的很多東西我都覺得和自己做過的項(xiàng)目很match。
字節(jié)企業(yè)應(yīng)用(EA)團(tuán)隊(duì)
一面:
這個(gè)部門做的業(yè)務(wù)感覺是開發(fā)內(nèi)部應(yīng)用來支持公司內(nèi)部其他團(tuán)隊(duì)的,我記得面試官說的一個(gè)是給法務(wù)部的做一些文本的提取、分類應(yīng)用?
問的問題不是很難,和美團(tuán)的那幾個(gè)問題很類似,都是圍繞word2vec的訓(xùn)練原理,bert的原理和word2vec的區(qū)別,xgb和gbdt的區(qū)別之類的,比較基礎(chǔ)
給了兩道概率題給思路:
1-7的隨機(jī)數(shù)等概率生成器,怎么等概率的生成1-5的整數(shù) 擲色子擲出六個(gè)不同的面的次數(shù)的期望 手撕代碼:-leetcode的hard:最大矩形問題,面試官很仁慈沒有讓我用優(yōu)化的dp或者其他方法做,直接讓我寫暴力解法的代碼,他大概看了一下就說就這樣吧
然后第二天hr就給我打電話約下一輪面試了
二面
面試官很隨和,上來就問了一些general的問題,一個(gè)是可以實(shí)習(xí)的時(shí)長(zhǎng),一個(gè)是以后的職業(yè)規(guī)劃是什么。 然后問簡(jiǎn)歷里面你最拿手/熟悉的項(xiàng)目是哪一個(gè),問了一下那個(gè)項(xiàng)目現(xiàn)在如果要發(fā)論文的方向,我說這個(gè)是一個(gè)應(yīng)用型的項(xiàng)目,沒有發(fā)論文的打算。 問了一下我c++的一個(gè)實(shí)現(xiàn)配對(duì)堆的算法。。。我竟然給忘了。 問了一個(gè)算法題,leetcode編輯距離,很快就寫出來了。共享屏幕在自己的ide上實(shí)現(xiàn)的。問了算法的復(fù)雜度,再問能不能優(yōu)化時(shí)間或者空間復(fù)雜度,我說可以,可以改成一維數(shù)組。 然后問了一道數(shù)學(xué)題,十個(gè)紅球十個(gè)白球,無放回抽出10個(gè)然后紅球互不相鄰的可能性。沒想好,不過具體思想就是一紅一白相間地?cái)[好先,然后再在白球紅球之間插入白球,面試官說時(shí)間關(guān)系就先這樣了,但是很接近了。 最后面試官評(píng)價(jià)說我應(yīng)該平時(shí)刷題刷很多吧(拼命點(diǎn)頭
過了一天半收到了三面通知,是hr面啦
hr面
hr很和善,先問我為什么能五月開始實(shí)習(xí),不用上學(xué)嗎,我說我(美碩)四月底就放假了,所以有四個(gè)多月能回國(guó)實(shí)習(xí)。 然后問我投日常實(shí)習(xí)動(dòng)機(jī)是啥,我說爭(zhēng)取轉(zhuǎn)正offer和積累經(jīng)驗(yàn)。 然后問為啥選頭條捏,我說了一堆很土的理由,什么夢(mèng)寐以求的公司啦,面試官面試表現(xiàn)很專業(yè),崗位很匹配,大公司能有更好的成長(zhǎng)啦blablabla 然后就問我有什么要問的 問了這崗位能不能轉(zhuǎn)正,她說轉(zhuǎn)正概率和校招實(shí)習(xí)是一樣的,會(huì)公平對(duì)待所有實(shí)習(xí)生,主要看你實(shí)習(xí)的產(chǎn)出能不能做出貢獻(xiàn)。而且轉(zhuǎn)正也還需要三輪技術(shù)面+一輪hr面 問了EA部門未來的發(fā)展方向,好像2b業(yè)務(wù)現(xiàn)在是國(guó)內(nèi)互聯(lián)網(wǎng)市場(chǎng)上比較大的一塊地盤,是字節(jié)未來想要攻堅(jiān)的方向blablabla 最后問了后續(xù)流程,周一給答復(fù)
阿里螞蟻
一面
面我的是多方安全團(tuán)隊(duì),問了很久他們做的東西,具體還是不太懂,大概意思就是法規(guī)限制了我們獲取的數(shù)據(jù)規(guī)模和維度,要用有限的數(shù)據(jù)進(jìn)行風(fēng)險(xiǎn)評(píng)估(比如銀行貸款啊之類的)
問了我們碩士是授課型還是論文型,問了我們現(xiàn)在專業(yè)學(xué)習(xí)的東西和機(jī)器學(xué)習(xí)相關(guān)的部分有哪些, 然后問了我做詞向量的項(xiàng)目,問優(yōu)化方向之類的,有沒有根據(jù)文本特征做定制化的算法調(diào)整 然后問了xgboost和randomforest的區(qū)別。什么場(chǎng)景表現(xiàn)會(huì)更好之類的。 然后問了一道邏輯題:兩個(gè)人抽100個(gè)球,你是先手,每次兩個(gè)人只能取1-6個(gè)球,問怎么抽才能使得你是最后一個(gè)把球抽完的 問了一道挺基礎(chǔ)的算法:找出有序數(shù)組中位數(shù),想優(yōu)化時(shí)間復(fù)雜度。 感覺不是很匹配,面試官的意思是想要的是那種潛力型,會(huì)融合很多算法,開發(fā)新算法的人才,我太菜了
福利時(shí)間:

愛學(xué)習(xí)的土豪可以直接買↑↑↑
本次聯(lián)合【電子工業(yè)出版社】為大家?guī)砬鞍⒗锔呒?jí)開發(fā)工程師創(chuàng)作的《機(jī)器學(xué)習(xí)算法框架實(shí)戰(zhàn):Java和Python實(shí)現(xiàn)》,一共2本。
贈(zèng)書方式一:后臺(tái)回復(fù)【888】,抽獎(jiǎng)1本
贈(zèng)書方式二:添加我的微信,朋友圈抽獎(jiǎng)1本
推薦閱讀
(點(diǎn)擊標(biāo)題可跳轉(zhuǎn)閱讀)
集成學(xué)習(xí):一種先進(jìn)的機(jī)器學(xué)習(xí)方法
NumPy庫(kù)入門教程:基礎(chǔ)知識(shí)總結(jié)
老鐵,三連支持一下,好嗎?↓↓↓
