作者 | 陳以二
整理 | NewBeeNLP
寫在前面
位元組跳動是一直想去實習的公司,3月份的時候覺得自己學的還不夠紮實,暫時沒有投履歷。4月14号在官網投了履歷,4月15号就有小姐姐打電話預約面試時間,今天下午面試。
非本計算機專業出身,在研究所學生階段做過基于機器學習和CNN的目辨別别。沒論文,沒競賽,隻有所裡的公司實習。編碼方面也有些生疏,其實劣勢蠻大的。
一面(約1h)
一面面試官是很親切的小哥哥。在我回答問題的時候一直微笑點頭,讓我也不那麼緊張了。
- 自我介紹:姓名,年齡,大學和碩士學校,專業,相關經曆,來這裡實習的原因。
- 講一下熟悉的模型:說了項目裡用到的RF,從特征建構、特征選擇、模型選擇、到模型調優。
- 為什麼選了RF?:項目裡更關注性能和計算量的平衡,RF相對可控。
- 用的什麼名額進行衡量的?:一開始是acc,但是對于不平衡資料不夠準确,後來基于混淆矩陣計算了一些名額。
- 不平衡應該怎麼做?:過多資料欠采樣,過少資料過采樣,另外還有一些基于模型的方法比如SMOTE方法等。
- RF和GBDT的差別是什麼?:都是內建方法,分别是Bagging和Boosting,并行和串行。
- GBDT可以并行嗎?:原理上是不行的,這也是訓練過程比RF慢的原因。但是XgBoost作為GBDT的一種工程實作方法,在決策樹的建構過程中加入了部分并行技巧,加快了速度。
- GBDT和XgBoost的差別是什麼呢?:XgBoost是GBDT的一個工程實作。1)在樹的建構過程中加入了一些并行技巧;2)GBDT本身是沒有預剪枝等過程的,XgBoost在建構的過程中加入了一些正則,起到了緩解過拟合的作用。
- (因為提到了CNN相關的東西)ResNet的結構特點以及解決的問題是什麼?:ResNet之前,大多認為深度越深,性能越好實際上不是,會出現資訊消逝的情況。ResNet提出了“捷徑”概念,将淺處的輸出牽到深處,形成一個殘差,相當于把資訊又往深了傳遞了一下。
- 了解BN嗎?:為了解決網絡中資料分布變化大,學習過程慢的問題。采用标準化,又引入兩個可學習的參數來重建淺層網絡學到的分布。
- 程式設計題,建構哈夫曼樹:本身不了解哈夫曼樹,但是了解哈夫曼編碼的一些思想,講出來後,小哥哥引導着思路,然後我寫出了代碼。代碼本身還有優化空間,但是小哥哥也說通過了。
- 反問。
讓我稍等下一面。
一面總結:
其實一面裡問到的東西都還是偏基礎的,基本上問題問出來後,一次回答就夠了。面試官會再從回答中牽扯到的知識點問起。主要針對做過的項目提問。
二面(約1h)
二面是個小姐姐面的。難度也确實比一面更難些,問的更細了。
- 自我介紹。同上
- 介紹RF和GBDT:串行并行角度。GBDT是殘差學習角度。
- GBDT具體細節:大緻說了下思路,感覺答的不是很詳細。
- 挑一個熟悉的項目說一下:RF提特征、選特征、調參、評估。
- 有自己手寫代碼實作過RF嗎?:沒有....(得去看看了
- 特征選擇裡提到的互資訊選擇,互資訊的計算公式是什麼?:忘記了..
- 為什麼選擇了RF呢?RF由DT組成,有一定的解釋性,性能和計算量相對可控。
- 對于RF可解釋性這一點,做了什麼相關實驗嗎?:突然想到RF本身引入了随機性,可解釋性沒有很強,就說到對于裡面的樹的路徑可以進行分析得到特征重要性。(這部分有點忘記了,趕緊補充學習)
- DT了解嗎?:知道的有ID3,C4.5,CART樹,分别用資訊增益,資訊增益比,基尼系數作為啟發函數。
- 寫出資訊增益的表達式:直接在代碼編譯器中寫,有點慌了,寫出來的公式不夠清晰,講的時候也講的不是很好...
- 代碼寫一個決策樹,給定資料,啟發函數是資訊增益,假設所有特征的值都是數值類型的:定義節點類、建構節點、選取目前節點的最優劃分特征(計算所有特征的資訊增益)、資料劃分、建構子節點、考慮停止劃分的條件。花了好長時間寫了個代碼架構,然後和面試官講了思路。
- 寫的決策樹是幾叉樹?:暫時考慮的是有多少種不同的取值就有多少個分支,意識到這肯定是不對的,優化的話可以将所有取值進行劃分,比如二劃分就可以改成二叉樹。
- 反問
二面總結:
确實比一面的時候挖的更深了,不僅問原理,還會問“你具體是怎麼做的?”。如果說一面的問題是各種參考書裡熱門的話題的話,二面的問題會在此基礎上深挖,挖到不那麼熱門但是細節上很重要的問題,會強調具體實作。
HR面
小姐姐很溫柔,聊了28分鐘的天,主要涉及到的話題:
- 什麼時候可以來實習?
- 現在可遠端辦公,是否考慮轉為日常實習?
- 是主動官網投遞還是在實習僧等網站投遞?
- 對搜尋部門有了解嗎?
- 聊聊之前實習過程的内容,以及遇到的難點,怎麼解決的?
- 自己的優點和缺點是什麼?優勢是什麼?
- 有什麼職業規劃嗎?
- 為什麼說喜歡位元組呢?有哪些了解?:因為的确挺喜歡的,從氛圍、技術、個人發展、城市這幾個角度說了下。
- 還有别的投遞和Offer嗎?:如實回答了。
總結&反思
位元組面試的整體氛圍還是很棒的,面試官會邊出題邊引導,能緩解緊張情緒;
很多公式記的不牢,還需要了解更深入些,記得更牢些;GBDT相關的細節需要再進步寫;特征選擇因為做的比較久遠,有些忘記了,需要趕緊總結回憶;編碼題沒有要求Bug Free,但是本身編碼上還需要加強。需要學習NPL相關的東西。自己履歷上的東西還需要再更新些。
- END -
投稿或交流學習,備注:昵稱-學校(公司)-方向,進入DL&NLP交流群。
方向有很多:機器學習、深度學習,python,情感分析、意見挖掘、句法分析、機器翻譯、人機對話、知識圖譜、語音識别等。

記得備注呦