面經 | 如何斬獲字節跳動AI LAB offer?

  • 2020 年 8 月 13 日
  • AI
原文連接://www.nowcoder.com/discuss/408301
已獲得作者destiny1996授權
背景:字節跳動暑期實習,AI lab演算法崗,base深圳,已offer 本科雙非,長沙某985碩士。

本科參加了數學競賽和數學建模競賽,獲省獎以上獎項14次。研究生階段拿了一個大數據競賽一等獎。

和一般的演算法崗面試不一樣,問的基本都是數學,沒有深度學習那些。
事實證明,我是一個運氣選手,如果問深度學習我是過不了的。

當然我面試這些題目也是很基礎,隨便一個非數學專業的大二學生都可以答的比我好,而且我調和級數那裡還沒證明出來。

一面
一面的時候,三個題只寫出了兩個水題,以為掛了,結果上岸了。

題目1:
10個小球,隨機分到12個盒子里,求恰好10個盒子都為空的概率。要求用Python程式模擬十萬次,暴力求出該概率。

看到這題我懵了,讓我蒙特卡洛模擬?偽隨機數也不好近似出概率啊,誤差大的一批。頭一次見不要手推數學公式,特意要求你暴力的數學題。話不多說,動手開始寫,balabala,模擬完了,在牛客網一運行,我懵了,輸出在十萬分之一到十萬分之3之間波動(十萬次只有兩三次恰好10個盒子為空),題目要求一共只能模擬十萬次,我開始懷疑人生,檢查程式碼,並且重新設置了隨機種子,結果還是很小的概率。
一下急了,情急之下列印出來前幾次模擬的結果,確實很難出現恰好10個盒子同時為空。然後就跟面試官說,這個概率太低了,同時模擬十萬次又太少,所以模擬出來的結果很小。

然後面試官沒說啥了,直接下一題。好像他也是隨便選的題目,自己沒做過,只是看到這個題目在題庫里分類是數學,就選了這個。我也不知道這個題目的用意是啥,也不知道自己是不是想錯了。

(PS: 面試之後我直接算概率,C(12,2)*(2^10-2)/(12^10)=1.091e-06,如果我算錯了,歡迎各位指出。)

)7$@A04QIYP472{9GFU{}FG.png

題目2: 
二分查找元素在有序數組中的位置,如果不存在,輸出-1,如果存在,輸出下標(存在多個,輸出下標最小的)。

面試手撕程式碼系列:二分法

水的不能再水的題,但是一開始沒處理好有重複數字的情況,只過了30%用例(面試過程你可以自己提交程式碼,並且可以看到一個錯誤用例,跟牛客網練習模式一樣),比如4,4,5,6,7裡面找4,我的程式碼返回了1,本該返回0。後面處理了一下,AC了,二分都不能一次通過,差點急出一把汗。

8ER(39EZQS%CGLW7R8X[6UW.png


題目3:
給定一個數組,找出數組的最長連續子序列。例:3,3,4,7,5,6,8,最長的連續子序列(這裡的連續是說連續整數,整個子序列是連續整數,我一開始題都沒看明白)應該是(3,4,5,6),需要返回它們的下標(1,2,4,5)。如果存在多種答案,只需給出任意一組下標。

面試官看我不會,讓我先寫一個暴力的方法,我還是不會啊,然後一個小時過完了,涼涼。
第三題暴力其實很簡單,事後再寫,五分鐘寫完了O(n^2)的。

O(n^2)的:

[I@YAEVO5HNGAG9]9EM0X2M.png

O(n)複雜度的(Python的字典查詢是O(1)):

KNYE3[CZK@~S{JQH5OF7PYQ.png

二面

4月7日 二面,牛客網影片面,30分鐘 
跟一面的時候一樣,只問數學題目,不問機器學習相關基礎(這個演算法崗位是做強化學習的,但是也沒問強化學習的基礎知識)。這次面試沒有自我介紹過程,直接問我題。

(1)y=sqrt(x^2) 的可導性。先化簡為絕對值函數。定義域為R。可導要求左導數、右導數存在且相等,所以函數在x等於0處不可導,其餘處可導。
(2)介紹方嚮導數和梯度,方嚮導數和梯度的關係?為什麼梯度在機器學習中的優化方法中有效?梯度是向量,方嚮導數是數量。梯度是各個偏導數組成的一個向量,方嚮導數是各個偏導數與方向餘弦相乘再求和。梯度這個方向的方嚮導數是最大的。

(3)調和級數的斂散性。我這裡比較尷尬,一個方法都沒說出來。我只說了證明級數發散,只需要證明級數的余項的極限不為0。然後我提了一下歐拉常數,但是我不記得歐拉常數與調和級數的關係了。面試官後來還很nice的跟我簡單說了兩個證明調和級數發散的方法。
(4)人群中男人色盲的概率為5%,女人為0.25%。從男女人數相等的人群中隨機選一人,恰好是色盲。求此人是男人的概率。全概率公式一般不會考。面試或者筆試這種一定是考貝葉斯公式。這種題把事件用變數定義好就簡單了,分清哪個是條件概率。設「一個人是男人」是事件A,事件A非為「一個人是女人」。「一個人患色盲」為事件B。需要求的是逆概率P(A|B)。面試官後面問我貝葉斯公式在機器學習里有哪些應用,我只說出了垃圾郵件識別。
(5)在網遊中,野怪被殺死時,有p=0.2的概率掉落一把寶劍。野怪的死亡是獨立事件。玩家持續殺死了10個野怪,求掉落4把寶劍的概率。獨立重複試驗,二項分布。C(10,4)(p^4)((1-p)^6)。
(6)一輛巴士載了25人,路經10個車站。每個乘客以相同的概率在各個車站下車。如果某個車站有乘客要下車,則大巴在該站停車。每個乘客下車的行為是獨立的。記大巴停車次數為X,求X的數學期望(要求通過編程求數學期望)。

根據數學期望的定義進行計算,跟一面一樣,繼續蒙特卡洛模擬。面試官問我,如果乘客變為50人,估計一下數學期望會變為多少,應該是接近10。

8NR]MI_`M2VJ441`8KVNE{B.png


HR面

4月10日 HR面,zoom影片面,20分鐘
HR面之前,我搜了很多關於字節跳動的東西,準備了一頁紙,比如看別人分享的字節跳動實習感受,了解字節跳動的企業文化,把字節跳動的位元組范的內涵背了又背,追求極致,務實敢為,開放謙遜,坦誠清晰,始終創業,多元兼容。然而這些並沒有用上。

1.自我介紹?介紹項目,說一下項目的分工?
2.對前兩輪自己面試表現的評價?我說了一下,感覺這個部門很重視數學基礎,同時也看重編程能力(我看面經,別人的HR面基本都是HR開頭告知應聘者前面的面試評價。只是讓我自己評價自己,HR後面也沒說我前面的面試評價)
3.為什麼要選擇實習?我不讀博,肯定實習呀。簡單說了下自己的職業規劃,想搞技術,同時字節跳動的技術氛圍好,字節跳動不講title。(說到這裡,HR有點意外,問我我怎麼知道不講title的)
4.還面了哪些公司?
5.介紹一下你看過的電影?
6.實習時間?
7.你有什麼要問我的?
4月13日接到offer call,已發正式郵件。

AI研習社開放秋招徵文了,分享面經有機會獲得Kiddle等大禮哦!
以下是已參加作者,名單持續更新中:

譯者:Arthur  
作品:《2020 數據分析崗位報告:數據分析師需要哪些能力?》
//www.yanxishe.com/blogDetail/20533
作者:渣渣的渣渣之路
作品:《萌新指南:堅持學習三步走,邁向職業巔峰?》
//www.yanxishe.com/blogDetail/20573(點擊閱讀原文查看)
面經無數,但我們依然期待獨一無二的你!