近千道真題面經彙總(內附薪資)
前言
感謝ShawnNg的投稿。
原文開始
我成功拿到了心儀的offer(自然語言演算法工程師),也感覺各位大佬分享的面經,所以想回饋一波。在這期間我找到很多面經資料,自己用程式碼過濾整理了出來。我個人覺得這個資料是十分有用的,我希望也能幫助到各位。祝大家也能夠早日找到心儀的工作!
[圖片上傳中…(image-4c2d62-1510246116379-17)]
目錄
HR常問問題
開放題
機器學習
程式設計題
HR常問問題
為什麼不讀博、對讀博報以什麼態度。
HR常問問題
為什麼選擇百度,谷歌百度都給你offer你選哪個。
為什麼選擇跨專業學計算機?
為什麼選擇阿里
以後可能要學習很多新技術,你怎麼看。
你平時喜歡做什麼?看過哪些書?最近在看什麼書?
你覺得最有挑戰的專案是什麼。
你覺得最難忘的事情是什麼?
你認為你的優(缺)點是什麼。
你還有什麼想問的?
加班怎麼看。
印象最深刻的事?
壓力最大的情況是什麼時候。
在面試過程中覺得自己那些當面有進步
場景分析題,有一個任務給你,要求一個月完成,但是以目前的能力一個月完成不了,現在你知道有一個同事擅長這部分工作,但是他有自己的活,幫助你就可能耽誤他的進度,問你咋辦。
大學令你覺得最不爽的事情是什麼
如何學習的?
如何看待加班。
實習期間專案,在組內擔任的角色,是否熟悉其他組員的工作。
家庭教育觀念?
家裡什麼情況?獨生子女?
將來的職業規劃?
工作地點
工作地點的問題
平時有什麼興趣愛好。
我覺得我會先去專心鑽研技術,到達一定的
最後問了一下我興趣愛好
有什麼問題問我。
有沒其他offer
有沒有想過去創業公司
現在在哪裡實習?實習主要做些什麼?
簡單介紹一下自己
聊聊offer情況,有什麼考慮之類的。
聊聊實驗室生活。
能不能來北京
自己有什麼優點缺點?
自己本科生和研究生相比有哪些進步
要求用兩個字評價大學生涯。
講一下你覺得你突出的地方,有亮點的地方。
評價一下你自己的優點缺點?
詳細介紹專案。
說下你的優缺點
說說你的經歷。
說說你自己的性格。
說說研究生階段最有成就的事,遇到問題具體怎麼解決的。
請你說一下你對應聘該崗位的優勢。
遇到的最大挫折是什麼。
問你的職業規劃,遇到挑戰怎麼處理,有沒有之前和同事發生過較大分歧。
插播福利
最近把各個網際網路領悟的經典技術書和資源整理了一下,涵蓋34個領悟,143家公司的面試真題,以及常見網際網路技術領悟經典書和麵試書和知名網際網路公司校招薪資彙總表。
獲取方式
關注本公眾號,回覆“乾貨”
開放題
2016年每個專案有個上線和下線時間段,統計每天線上的專案數量
一堆問題和答案的pair,算它們的相關性
一面現場面,自我介紹加挑一個專案細講,還有場景題,第一題是QQ新增好友按名稱搜尋時,怎麼區別廣告號,詐騙號;
為什麼之前沒有深度網路出現(資料量不夠+機器效能)
為今日頭條設計一個熱門評論系統,支援實時更新。
從專案中在哪一方面體會最深。
假設一個文件,連續的K個詞,認為是一個時間視窗,一個時間視窗的詞有關係,如何得到所有的時間視窗。
假設你擁有一切搜尋資料,問怎麼在不同場景下進行推薦,具體場景忘了(核心點:共線性、語義相似度、主題聚類等等)
假設有100W個單詞,如何儲存(我答的是trie樹,面試官問每個節點會有很多子節點,每個子節點是一個指標,佔用8個位元組,如何節省空間,我說不知道,面試官提示雙陣列trie樹)
假設要對一場nba球賽進行自動解說,會遇到哪些困難,又該怎麼解決呢?
做過哪些專案?專案中遇到哪些難點,你是怎樣解決的?
關於叢集排程的一些經驗 trick 掌握多少;
分詞時,為了提高效率,怎麼儲存詞典?(鍵樹)如何壓縮儲存?
在微信的場景下,如何判斷使用者的職業?開放問題
場景題如何鑑別淘寶上賣假貨的商家,價格維度可以用什麼策略等
如何做一個新聞推薦
如何在語料中尋找頻繁出現的字串,分析複雜度。
如何用盡可能少的樣本訓練模型同時又保證模型的效能;
如何預測雙十一支付寶的負載峰值。
對推薦演算法的未來看法。
平面上有n個點,讓你設計一個數據結構,能夠返回這個這n個點中距離某特定點最近的一個點。一開始講了下kd樹,然而太複雜面試官不滿意,就講了一個類似GeoHash的方案。
建立一個數據結構,基於此寫一段程式用於儲存sparse vector,同時編寫一個函式實現兩個sparse vector的相加運算
很多單詞,如何計算單詞之間的相似度(或者對單詞進行分類)
怎麼預測降雨量。
我只有一大批實體詞, 如何對他們進行聚類(無監督聚類), 如何找出這些詞中, 哪些詞之間有關係, 是強關係還是弱關係, 具體是什麼關係,(如劉德華和朱麗倩 屬於娛樂分類, 是強關係, 關係為夫妻)
拼車軟體是如何定價的以及如何優化。
推薦演算法(基於使用者的協同過濾,基於內容的協同過濾)
推薦系統的冷啟動問題如何解決
文字挖掘中,分詞演算法?如何選取特徵?如何進行相似度計算,文字聚類結果如何評估?
無給定條件,預測蔬菜價格。
有100W個集合,每個集合中有一些詞,對於每個集合,找出他是哪些集合的真子集。
有一堆已經分好的詞,如何去發現新的詞?
比賽相關問題提特徵特徵選擇等
海量的 item 算文字相似度的優化方法;
特徵工程經驗。
用兩分鐘介紹自己的專案,創新點在哪裡。
使用者給三個item(query),如何給出查詢網頁。
第三題是如何鑑別實施詐騙的QQ使用者;
第二題是微信朋友圈內容的安全鑑別;
第四題是如何做反作弊,例如公眾號的刷閱讀量。
系統設計題,給一個query,如何快速從10億個query中找出和它最相似的 (面試官說可以對每個query找1000個最相似的,存起來,每天離線更新)
線性代數:特徵線性依賴,出現冗餘,會導致什麼問題?
給一堆資料找找到最佳擬合的直線,資料有較多噪聲
給你一個系統(面試官好像是無人車部門的),後臺的邏輯已經實現了,但是前端載入很慢,怎麼檢測。
給你兩個檔案a和b,大小大概100M,兩個檔案每行一個整數,要求找到兩個檔案中相同的整數,存到檔案c裡,問我怎樣儘快的完成這項工作?
給出一個演算法實現如何確定快遞郵件上的地址,要求從國家到省市到縣到鄉鎮的一個識別,要求效率高(有陷阱,比如有的人把縣寫到市的前面,有人喜歡寫地域名稱的省略詞比如安徽省寫成安徽或者皖)。
給定淘寶上同類目同價格範圍的兩個商品A和B,如何利用淘寶已有的使用者、商品資料、搜尋資料、評論資料、使用者行為資料等所有能拿到的資料進行建模,判斷A和B統計平均價效比高低。統計平均價效比的衡量標準是大量曝光,購買者多則高。
給很多單詞,統計某個子串出現次數,我給的方法還是用Trie,只不過一個單詞要分成多個插入到Trie數中就行了。
給很多單詞,要求統計出現某個前綴出現次數。
統計全球會彈鋼琴的人數,我用機器學習的思路答的,面試官還比較滿意
自己專案中有哪些可以遷移到其他領域的東西。
講了講自己在深度學習的認識,問的問題是幾個具體場景的設計,包括怎麼從海量資料中提取熱點問題。
設計 LRU 系統
設計一個合理的電梯排程策略,排程兩個電梯 ,考慮滿足基本的接送需求,滿足能耗最小,滿足使用者等待時間最短
設計一個系統可以實時統計任意ip在過去一個小時的訪問量;
設計一個結構存取稀疏矩陣(面試官最後告訴我了一個極度壓縮的存法,相同行或列存偏差,我當時沒聽懂,還不懂裝懂,最後還是沒記住)
設計實現一個git diff
說一下最能代表你技術水平的專案吧?
專案:具體問了特徵怎麼做的。
(難到我了,我想的方法不好,面試告訴我了他的想法,類似於一個程序排程問題,每一時刻只可能有一個使用者按按鈕,把這條指令接收,判斷當前電梯能否滿足,能滿足就執行,不能滿足則放入一個佇列裡,實際情況還要細化)
機器學習
Boost演算法
CART(迴歸樹用平方誤差最小化準則,分類樹用基尼指數最小化準則)
GBDT與隨機森林比較。
GBDT(利用損失函式的負梯度在當前模型的值作為迴歸問題提升樹演算法中的殘差的近似值,擬合一個迴歸樹)
KKT條件用哪些,完整描述
KNN(分類與迴歸)
L1 與 L2 的區別以及如何解決 L1 求導困難。
L1和L2函式。
L1和L2正則相關問題。
L1和L2正則項,它們間的比較
L1正則為什麼可以把係數壓縮成0,座標下降法的具體實現細節
LR為什麼用sigmoid函式。這個函式有什麼優點和缺點?為什麼不用其他函式?
LR和SVM有什麼區別,libsvm和liblinear有什麼區別。
Logistics與隨機森林比較
Logistics(推導)
Logistic迴歸的推導,怎麼得到objective function。
SVM與隨機森林比較
SVM為什麼要引入拉格朗日的優化方法。
SVM原問題和對偶問題關係?
SVM在哪個地方引入的核函式, 如果用高斯核可以升到多少維。
SVM怎麼防止過擬合
SVM的目標函式。常用的核函式。
SVM的過程,講了推導過程,可能表達不清晰,都是淚
bagging、adaboost、boosting
em 與 kmeans 的關係;
k-means的k怎麼取等等
k-means演算法初始點怎麼選擇?你的專案裡面推薦演算法是怎麼實現的?
kmeans的原理,優缺點以及改進。
k折交叉驗證中k取值多少有什麼關係
l2懲罰項是怎麼減小Overfitting的?l1,l2等範數的通式是什麼?他們之間的區別是什麼?在什麼場景下用什麼範數?l1在0處不可導,怎麼處理?
randomforest,GBDT
rf, gbdt, xgboost的區別。
softmax公式
為什麼要做資料歸一化?
主要問最優化方面的知識,梯度下降法的原理以及各個變種(批量梯度下降,隨機梯度下降法,mini 梯度下降法),以及這幾個方法會不會有區域性最優問題,牛頓法原理和適用場景,有什麼缺點,如何改進(擬牛頓法)
什麼情況下一定會發生過擬合?
什麼是貝葉斯估計
介紹LR、RF、GBDT ,分析它們的優缺點,是否寫過它們的分散式程式碼
介紹SVD、SVD++
會哪些機器學習演算法
資訊熵公式
假設面試官什麼都不懂,詳細解釋 CNN 的原理;
決策樹原理
決策樹處理連續值的方法。
決策樹如何防止過擬合
決策樹過擬合哪些方法,前後剪枝
分類模型可以做迴歸分析嗎?反過來可以嗎?
分類模型和迴歸模型的區別
判別模型,生成模型
各個模型的Loss function,牛頓學習法、SGD如何訓練。
因為面我的總監是做nlp的,所以講了很多rnn、lstm、還有HMM的東西。不算很熟,但是接觸過,以前稍微看過一些相關論文,所以還是勉強能聊的。
在平面內有座標已知的若干個點P0…Pn,再給出一個點P,找到離P點最近的點。
在模型的訓練迭代中,怎麼評估效果。
如何減少引數(權值共享、VGG的感受野、GoogLeNet的inception)
如何防止過擬合(增加資料,減少模型複雜度->正則化)
對於同分布的弱分類器,求分類器均值化之後的分佈的均值跟方差。
對於機器學習你都學了哪些?講一個印象深的。
常見分類模型( svm,決策樹,貝葉斯等)的優缺點,適用場景以及如何選型
歸一化方式
手寫k-means的虛擬碼。
手寫k-means的虛擬碼和程式碼。(Code)
手撕svm硬軟間隔對偶的推導
手撕邏輯迴歸(損失函式及更新方式推導)
接著寫一下資訊增益的公式。
推一下bp演算法等等
改變隨機森林的訓練樣本資料量,是否會影響到隨機森林學習到的模型的複雜度。
資料探勘各種演算法,以及各種場景下的解決方案
是否瞭解mutual infomation、chi-square、LR前後向、樹模型等特徵選擇方式。
是否瞭解線性加權、bagging、boosting、cascade等模型融合方式
有哪些常見的分類器,簡單介紹下原理
機器學習與深度學習的區別
機器學習基礎(線性迴歸與邏輯迴歸區別等)
機器學習:幾種樹模型的原理和對比,樸素貝葉斯分類器原理以及公式,出現估計概率值為 0 怎麼處理(拉普拉斯平滑),缺點; k-means 聚類的原理以及缺點及對應的改進;
梯度下降牛頓擬牛頓原理
梯度下降的優缺點。
深度學習和普通機器學習有什麼不同?
深度學習有很大部分是CNN,給他用通俗的語言解釋下卷積的概念,解釋下CNN中的優勢及原因
啟用函式的選擇(sigmoid->ReLu->LReLU->PReLU)
然後20分鐘內手寫k-means
牛頓法、隨機梯度下降演算法和直接梯度下降演算法的區別?
牛頓法推導
特徵選擇的方法
由資料引申到資料不平衡怎麼處理(10W正例,1W負例,牛客上有原題)
聊聊SVM,這段說了好久,從基本的線性可分到不可分,相關升維,各種核函式,每個是如何實現升。以及出現了XX問題,分析是樣本的原因還是其他原因。針對不同情況,採取什麼解決方案較好。
自己實現過什麼機器學習演算法
解決過擬合的方法有哪些?
解釋 word2vec 的原理以及哈夫曼樹的改進。
解釋一下過擬合和欠擬合,有哪些方法防止過擬合。
讓我一步一步地構造決策樹,怎麼計算資訊熵、資訊增益、然後C4.5 ID3 CART的區別,還說了一下優缺點
詳細討論了樣本取樣和bagging的問題
說一下Adaboost,權值更新公式。當弱分類器是LR時,每個樣本的的權重是w1,w2…,寫出最終的決策公式。
說了一下bagging跟boosting。
說明L1L2正則的效果與為什麼形成這種情況(L1正則稀疏,L2正則平滑,之後說明就是畫圖說明正則化)
過擬合的解決方法;
選個你熟悉的機器學習方法 ,著重介紹一下產生原因,推導公式,背後統計意義什麼等等
邏輯迴歸估計引數時的目標函式,如果加上一個先驗的服從高斯分佈的假設,會是什麼樣。
邏輯迴歸估計引數時的目標函式
邏輯迴歸的值表示概率嗎?
問了會不會RNN,LSTM。
問了很多資料探勘的基礎知識,包括SVM,邏輯迴歸、EM、K-means等,然後給我很多場景問我遇到這些情況我要怎麼來處理資料,怎麼進行建模等等,問得很細
隨機梯度下降,標準梯度
隨機森林和GBDT的區別?LR的引數怎麼求解?有沒有最優解?
隨機森林(Bagging+CART)
程式設計題
1~n這n個數現在去掉兩個,如何找到去掉的兩個數。 假設去掉的兩個數是a和b,那麼通過求和,平方和可以知道a+b和a
2+b
2,然後解方程就行了。
char a[4] = {1, 2, 3, 4}; char *b = a; b[0] = 100; 請問輸出a的結果是什麼?
一個 N*M 的矩陣,從左上走到右下最小需要(N+M)步走完,問一共有多少種走法。
一個嚴格遞增的陣列,將字首取一部分放在後面,在修改後的陣列上找到最小的數。(劍指Offer原題)
一個大寫字串如ABABB(len<1000),代表遊客進遊樂場的順序及從哪個入口進入,要求每個入口(不多於26個入口)從第一個遊客直到該入口的最後一個遊客,檢票員都不能離開,問最少檢票人數K。
一個字元陣列中,每個字元都出現了3次,只有一個出現了2次,如果快速找出這個出現2次的?
一個字元矩陣,只可能是R,G,B三種字元。判斷是否滿足某個條件。這個條件是每種符號連成一個長方體,三個長方體長寬一致,且橫著平行
一個廣告,它有一個id,一個上線時間,一個下線時間,現在我有很多這樣的廣告,如果現在給你一個時間,告訴我有多少個廣告在這個時間線上的
一個數據流中,如何取樣得到100個數,保證取樣得到的100個數是隨機的?
一個數組中某個數出現次數大於一半,最快找出該數。
一個數組只有一個數字是單獨出現,其他出現了三次。
一個數組存著1-1000連續的整數,假如我取出其中一個數,怎麼能快速找到(用類二分查詢)
一個數組存著負數與正數,將正數放在前面,負數放在後面
一個運算序列只有+、*、數字,計算運算序列的結果。(Code)
一堆ip地址區間,不會重疊,來一個新的ip地址,看它在不在,在哪個區間。
一維陣列,swap 其中的幾對數字(每個數字只屬於一次 swap 操作),實現查詢(與二分有關);
一維有序陣列,經過迴圈位移後,最小的數出現在數列中間,如果原陣列嚴格遞增或遞減,如何找這個最小數;
一維有序陣列,經過迴圈位移後,最小的數出現在數列中間,如果原陣列嚴格遞增,如何找這個最小數。
一維有序陣列,經過迴圈位移後,最小的數出現在數列中間,如果原陣列非嚴格遞增或遞減,如何找這個最小數;
一維有序陣列,經過迴圈位移後,最小的數出現在數列中間,陣列可能是遞增、遞減、遞減後遞增、遞增後遞減四種情況,遞增遞減都是非嚴格的,如果有轉折點,返回轉折點的值,否則返回-1;
一道題:給定一個整數陣列,裡面有兩個數相同,其他數都是不同的,如何儘快找到這兩個數(答,用hash表,O(N),有更好的方法麼?)
一題是多位數用連結串列儲存( e.g. 123 用 1->2->3 儲存),實現相加功能函式
不建立臨時產量換兩個數
兩個同樣大小有序陣列求中位數,寫程式碼
兩個大整數相乘。(Code)
兩棵樹相加——對應位置兩棵樹都有值則相加,對應位置只有一棵樹有值則取該值;
中序遍歷二叉樹,利用O(1)空間統計遍歷的每個節點的層次。(Bug Free Code)
中綴表示式轉逆波蘭表示式,逆波蘭表示式求值;
為分析使用者行為,系統常需儲存使用者的一些 query ,但因 query 非常多,故系統不能全存,設系統每天只存 m 個 query ,現設計一個演算法,對使用者請求的 query 進行隨機選擇 m 個,請給一個方案,使得每個 query 被抽中的概率相等,並分析之,注意:不到最後一刻,並不知使用者的總請求量。
二分查詢
二分查詢,查詢target,在區間[start,end]之間,如果有重複元素,返回最後一個下標,其他情況返回-1
二叉樹前序遞迴遍歷演算法(手寫程式碼)
二叉樹的前中後遍歷
二叉樹的檔案儲存,也就是序列化。
二叉樹遍歷,描述下層序遍歷。
二維陣列,每行遞增,每列遞增,任意交換其中的兩數,發現並恢復。
二維陣列,每行遞增,每列遞增,實現查詢。
二維陣列,每行遞增,每列遞增,求第k大的數。
什麼樣的資料結構可以滿足多次插入刪除,取最小數,給出時間複雜度。
介紹二叉樹前序遍歷非遞迴遍歷演算法(手寫程式碼)
介紹大頂堆和小頂堆
從一組數中找出和為sum的三個數(leetcode原題,先sort再找,並且剪枝),寫程式碼,四個數呢?說思路。
假設有個M*N的方格,從最左下方開始往最右上方走,每次只能往右或者往上,問有多少種走法,假設中間有若干個格子不能走,又有多少種走法。
允許兩個元素交換一次的最大連續子序列和。
全排列
全排列。
氣泡排序(手寫程式碼)
寫 find 函式,在目標串中匹配模式串(要考慮中文字元的情況)
寫一個二叉樹的非遞迴的後續遍歷
寫一個簡單的正則匹配表示式(將文字中的123.4匹配出來)
寫個動態規劃,最長公共子序列
判斷一個字串是否為另外一個字串旋轉之後的字串
前k大的數
單鏈表的翻轉
去掉連續的重複數字,輸出新陣列,例如:1,2,2,2,1,3,5——> 3,5。
去除字串S1中的字元使得最終的字串S2不包含’ab’和’c’。(Code)
合法括號匹配
在一個字串中,找出最長的無重複字元的字串
在二叉樹結點結構中加一個指標域,使其指向層次遍歷的下一個結點,特別地,每一層的最後一個結點為空。(Code)
堆排序(手寫程式碼)
堆是怎麼調整的。
複雜連結串列的複製。
如果給出一個二叉搜尋樹的後續能不能建立(可以,因為只要將遍歷結果排序就可以得到中序結果)。
字串反轉(手寫程式碼)
字串移位,給出字串abc##dfg##gh,實現將所有#移至字串串頭。輸出####abcdfggh。
字串轉整數
字串,給一個url,求中間的site
字串,給一個url,求中間的site。
定義滿足$n=x
a+y
bx,y,a,b4 = 2^0 + 3^1,17 = 2^3 + 3
2[l,r]x,y,l,r<=10
{18},x>=2,y>=23\ 5\ 10\ 22[10,22]x=3,y=5[15,22]