2019-暑期实习生-自然语言处理算法岗-面试题
隨著三月初螞蟻金服內(nèi)推開(kāi)啟,整個(gè)暑期實(shí)習(xí)生招聘大幕也正式打開(kāi),這一場(chǎng)從三月初持續(xù)到之后五月的筆試面試過(guò)程,確實(shí)讓筆者真真切切的感受到基礎(chǔ)的重要性,面試和筆試不僅從機(jī)器學(xué)習(xí),自然語(yǔ)言處理,數(shù)據(jù)結(jié)構(gòu)與算法,高數(shù)概率論等方面考察,還包括智力題,邏輯題等。
阿里巴巴
一面:
1. 介紹項(xiàng)目(只針對(duì)自然語(yǔ)言處理項(xiàng)目詢問(wèn),召回率、準(zhǔn)確率如何);
2. 深度學(xué)習(xí)如何提取query特征,如何利用深度學(xué)習(xí)計(jì)算語(yǔ)義相似度;(深度學(xué)習(xí)語(yǔ)義相似度可以參考《淺析文本相似度》)
3. 寫(xiě)二叉樹(shù)的前序遍歷,中序遍歷,統(tǒng)計(jì)二叉樹(shù)所有路徑和;
二面:
1. RNN為什么會(huì)梯度消失,LSTM怎么能解決梯度消失問(wèn)題;(RNN、LSTM有關(guān)梯度消失的問(wèn)題可以參考《理解RNN、LSTM、GRU和Gradient Vanishing》)
2. 優(yōu)化算法介紹并說(shuō)一下特點(diǎn)(介紹了自適應(yīng)率學(xué)習(xí)算法Adagrad和Adam,深度學(xué)習(xí)優(yōu)化算法可以參考《深度學(xué)習(xí)優(yōu)化算法總結(jié)》);
3. Dropout的原理;
4. 交叉熵?fù)p失函數(shù)是什么,在什么地方使用過(guò),介紹一下;
5. 介紹一下Word2vec,CBOW和Skip-gram的區(qū)別是什么;
6. GBDT和Xgboost介紹一下,并說(shuō)一下區(qū)別(關(guān)于XGboost、GBDT和RF的總結(jié)可以參考《RF、GBDT、XGBoost面試級(jí)整理》);
7. 寫(xiě)代碼:現(xiàn)在有詞向量詞典,計(jì)算句子相似度(Consine Similarity)
美團(tuán)
一面:
1. 介紹項(xiàng)目(項(xiàng)目中一些問(wèn)題如何解決的;項(xiàng)目的難點(diǎn)在哪兒;如何解決的;你在里面干了些什么);
2. 介紹一下隨機(jī)森林和Xgboost,有什么區(qū)別(從bagging和boosting角度);
3. 什么是SGD,什么是batch size;
4. 深度學(xué)習(xí)優(yōu)化算法有哪些,隨便介紹一個(gè)(說(shuō)的Adagrad,優(yōu)缺點(diǎn)明顯,進(jìn)退自如);
5. 現(xiàn)有一個(gè)神經(jīng)網(wǎng)絡(luò)和64個(gè)樣本,Batch gradient descent和SGD的時(shí)間復(fù)雜度和效果比較;采用批梯度下降時(shí),神經(jīng)網(wǎng)絡(luò)參數(shù)更新了幾次;
二面:
1. Two Sum問(wèn)題(Leetcode第一題,采用hash map解決);
2. 如何找到10萬(wàn)以內(nèi)的所有質(zhì)數(shù);
3. 邏輯斯蒂回歸的損失函數(shù)怎么來(lái)的,如何進(jìn)行梯度更新;
百度
百度一面:
1. 介紹項(xiàng)目(一些項(xiàng)目細(xì)節(jié);項(xiàng)目的準(zhǔn)確率;召回率如何);
2. 京東項(xiàng)目中Xgboost原理,xgboost有哪些參數(shù),怎么調(diào)整xgboost的參數(shù);
3. 智力題:現(xiàn)在有三枚硬幣,一個(gè)是一正一反,一個(gè)是兩面都是正,一個(gè)是兩面都是反,現(xiàn)在隨機(jī)拋出一枚硬幣是正面,那么這枚硬幣的反面也是正面的概率;(2/3)
4. 代碼實(shí)現(xiàn)海量數(shù)據(jù)處理問(wèn)題:現(xiàn)在有一個(gè)比較小的數(shù)據(jù)表(包括id, score),另外有一個(gè)十分大的(上千萬(wàn)級(jí)別)的數(shù)據(jù)表(包括id, name),現(xiàn)在需要以id為索引將兩張表合并,如何在O(n)時(shí)間復(fù)雜度完成。(hash map解決,海量數(shù)據(jù)處理問(wèn)題參照這篇博客《 十道海量數(shù)據(jù)處理面試題與十個(gè)方法大總結(jié)》)
追一科技
一面
1. 介紹項(xiàng)目(項(xiàng)目準(zhǔn)確率;召回率;特征工程怎么做的;項(xiàng)目難點(diǎn)在什么位置;如何解決的;用了什么深度學(xué)習(xí)的方法);
2. 既然提到對(duì)話系統(tǒng),簡(jiǎn)單介紹一下(非任務(wù)型和任務(wù)型balabala…..),了解非任務(wù)型對(duì)話系統(tǒng)么,介紹一下;(關(guān)于對(duì)話系統(tǒng)可以參考《人機(jī)對(duì)話系統(tǒng)調(diào)研》)
3. 平時(shí)用什么語(yǔ)言寫(xiě)代碼啊,用python么(用),java怎么樣(一般般),c用不用(不怎么用);
4. 看你簡(jiǎn)歷里面沒(méi)寫(xiě)GRU,了解GRU么,和LSTM、RNN的區(qū)別在什么地方(從梯度消失的層面回答);
5. GBDT的損失函數(shù)是什么;
6. 了解紅黑樹(shù)么(–沒(méi)看到這兒來(lái) –那算了,換個(gè)問(wèn)題);
7. 64匹馬,8個(gè)跑道,選出速度最快的4匹馬需要多少次(回答12次,后來(lái)知道最好是11次)
百度度秘
一面:
1. 介紹項(xiàng)目(項(xiàng)目細(xì)節(jié);項(xiàng)目難點(diǎn);有什么方法;你在里面發(fā)揮的作用;這個(gè)系統(tǒng)現(xiàn)在還有什么可以改進(jìn)的地方么);
2. 看你項(xiàng)目中用到了LSTM,介紹一下LSTM(介紹LSTM時(shí)候提到RNN,打斷詢問(wèn)RNN為什么有梯度消失問(wèn)題,給出具體公式);
3. LSTM用什么框架實(shí)現(xiàn)的,能不能介紹一下Word2ver如何使用在其中,使用Word2vec和不使用word2vec的效果如何;
4. 正則化方法有哪些,介紹一下(說(shuō)到L1和L2時(shí),重點(diǎn)問(wèn)了一下為什么梯度稀疏和梯度選擇,用公式推導(dǎo)講了一下,過(guò)擬合問(wèn)題可以參照《深度學(xué)習(xí)相關(guān)總結(jié)》);
5. 看你簡(jiǎn)歷上說(shuō)博客記載了機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘和深度學(xué)習(xí)的內(nèi)容,那你簡(jiǎn)單說(shuō)一下這三者的區(qū)別;
6. 編程題:二叉搜索樹(shù)的插入和搜索;
7. 有序循環(huán)鏈表中(后簡(jiǎn)化為元素從小到大有序循環(huán)鏈表),如何在O(1)時(shí)間內(nèi)完成最大值插入;
騰訊
一面:
1. 寫(xiě)代碼實(shí)現(xiàn)列表 [0,0,6,2,8,0,0] —-> [6,2,8,0,0,0],要求O(n)時(shí)間復(fù)雜度和O(1)空間復(fù)雜度;
2. 寫(xiě)代碼實(shí)現(xiàn) [1,2,3,2,2,3,4,…] —-> [1,2,3](先去重再取top K,這里的K取3),要求in place操作,O(n) 時(shí)間復(fù)雜度和O(1)空間復(fù)雜度;
3. LSTM用來(lái)解決RNN的什么問(wèn)題?如何解決的?既然說(shuō)到forget gate,那么說(shuō)一下forget gate的取值范圍?(sigmoid 取值(0,1))forget gate是具體的值還是向量?(向量),如何理解這個(gè)向量;
4. 深度學(xué)習(xí)用的什么框架,Tensorflow?(Keras),那介紹一下深度學(xué)習(xí)中的過(guò)擬合如何解決?(從數(shù)據(jù)、單模型、模型集成三個(gè)角度回答);
5. 深度學(xué)習(xí)優(yōu)化算法用過(guò)哪些?講講Sgd和gd的區(qū)別?
6. 對(duì)SVM(考慮線性可分情況)、LR和DT熟悉么? 從損失函數(shù)說(shuō)一下區(qū)別,SVM的損失函數(shù)是什么?(合頁(yè)損失函數(shù),寫(xiě)一下講一下)。LR呢?(利用最大似然估計(jì)得出)。又問(wèn)一下SVM線性可分情況下決策邊界不同位置的損失值。DT如何進(jìn)行特征選擇?(ID3信息增益)。介紹一下信息熵?(隨機(jī)變量不確定性,度量系統(tǒng)穩(wěn)定性) [1/3,1/3,1/3]和[1/2,1/4,1/4]哪個(gè)的信息熵大?回歸任務(wù)中如何進(jìn)行特征選擇?(平方損失準(zhǔn)則)
7. 海量數(shù)據(jù)處理。現(xiàn)在有1千萬(wàn)行詞,需要統(tǒng)計(jì)各個(gè)詞出現(xiàn)的次數(shù),目前有一臺(tái)機(jī)器內(nèi)存1G,磁盤(pán)100G?(海量數(shù)據(jù)處理blog的第一題,先利用Hash對(duì)原始文本進(jìn)行分割(hash(word)%2000,分為2000個(gè)文件),再使用hashmap(python中的字典)在各個(gè)文件中分別統(tǒng)計(jì))。
8. Python基礎(chǔ)。現(xiàn)在有一個(gè)列表,需要選擇其中大于0的數(shù)?(列表生成式)
9. LTR(learning to rank)。介紹一下ltr的三種方式?其中pairwise在訓(xùn)練時(shí)怎么做?(轉(zhuǎn)化為二分類)在測(cè)試的時(shí)候怎么做?
10. 文本分類的項(xiàng)目中用到CNN沒(méi)有?介紹一下CNN?那CNN在文本分類任務(wù)中卷積核和一般的圖像任務(wù)中的卷積核有什么區(qū)別?(balabala)
11. 熟悉Attention么,介紹一下?(balabala)
二面:
1. 在你的項(xiàng)目中如何判斷word2vec的效果好壞,如何評(píng)判對(duì)模型和結(jié)果的影響?項(xiàng)目中使用的xgboost是哪個(gè)版本的?誰(shuí)寫(xiě)的(懵了)
2. 如何從概率角度理解AUC?二分類問(wèn)題中,一個(gè)正負(fù)類比是1:1000,一個(gè)是1:100,它們的AUC和ROC有什么區(qū)別?
3. 了解交叉熵?fù)p失函數(shù)么?在哪個(gè)場(chǎng)景使用過(guò)?它和最大似然估計(jì)是什么關(guān)系?
4. 熟悉什么語(yǔ)言?Python么?用過(guò)里面的zip函數(shù)(有點(diǎn)沒(méi)聽(tīng)清)沒(méi)?
騰訊二面前刷的一碗面經(jīng):
1. 覆蓋字符串所有字符的最小字串;(leetcode第76題)利用滑動(dòng)窗口;
2. 反轉(zhuǎn)鏈表的前k個(gè);(變型:按k個(gè)結(jié)點(diǎn)一組來(lái)反轉(zhuǎn)鏈表)
方法:都是利用翻轉(zhuǎn)鏈表的方法,只是局部翻轉(zhuǎn),再添加頭尾結(jié)點(diǎn)。
3. 求二叉樹(shù)最大深度;(遞歸)
4. 序列模型中markov和rnn的區(qū)別;
(rnn和hmm最本質(zhì)的區(qū)別在于rnn沒(méi)有馬爾科夫假設(shè),因此從理論上可以考慮很久的信息;同時(shí)hmm本質(zhì)上是一個(gè)概率模型,而rnn不是;此外rnn具備神經(jīng)網(wǎng)絡(luò)的擬合非線性的能力)。
5. 字符串出現(xiàn)第k多的字符;
(hash map進(jìn)行統(tǒng)計(jì),然后對(duì)dict進(jìn)行排序
6. 一個(gè)過(guò)擬合模型和大量數(shù)據(jù),如何判斷這些數(shù)據(jù)有沒(méi)有用?
(利用采樣的方法,采樣部分?jǐn)?shù)據(jù)然后運(yùn)行過(guò)擬合模型看看效果;)
7. lr和svm的區(qū)別
(從lr的由來(lái)講損失函數(shù),對(duì)于svm講最大間隔。區(qū)別在于損失函數(shù)不同;svm只需要考慮支持向量,而lr需要考慮所有的點(diǎn);svm本質(zhì)上是基于距離的,因此其輸出無(wú)法直接產(chǎn)生概率,lr輸出的是其屬于分類的概率;在非線性的情況下,svm使用核函數(shù)解決,而lr通常不使用核函數(shù);svm自帶正則話,因此是結(jié)構(gòu)風(fēng)險(xiǎn)最小化算法)
8. 特征選擇的方法;
9. AUC是什么?就是ROC曲線下的部分,表示什么?
10. 快速排序;
11. 一個(gè)數(shù)組中超過(guò)一半的數(shù)字;
((1)hashmap直接統(tǒng)計(jì),(2)hashmap間接統(tǒng)計(jì),利用數(shù)組中的一個(gè)數(shù)字和次數(shù),當(dāng)相同的時(shí)候1,不同的時(shí)候1,如果次數(shù)為0則,保留下一個(gè)元素且次數(shù)設(shè)置為1,那么最后留下來(lái)為1的數(shù)字就是次數(shù)最多的;(3)歸并排序選中間元素;)
12. 有一個(gè)能產(chǎn)生1-5的隨機(jī)數(shù)的函數(shù),怎么修改之后能夠產(chǎn)生1-7的隨機(jī)數(shù);
13. 快速排序,歸并排序,深度遍歷和廣度遍歷;
14. 解釋一下lucene原理,怎么進(jìn)行中文分詞,基于什么進(jìn)行分詞;
15. a,…z所有字母組合方式;
16. 輸入一個(gè)數(shù),輸出這個(gè)整數(shù)里面最大的質(zhì)數(shù);
祝大家好運(yùn)~
總結(jié)
以上是生活随笔為你收集整理的2019-暑期实习生-自然语言处理算法岗-面试题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android官方开发文档Trainin
- 下一篇: 手把手教你-如何查询中文期刊是否属于核心