【面經(jīng)】字節(jié)跳動(dòng)研發(fā)技術(shù)面試實(shí)錄

字節(jié)跳動(dòng)是近幾年發(fā)展特別迅速的互聯(lián)網(wǎng)公司,憑借短視頻平臺(tái)【抖音】和自由創(chuàng)作平臺(tái)【今日頭條】等一系列以內(nèi)容創(chuàng)造價(jià)值的應(yīng)用異軍突起,已經(jīng)成為動(dòng)搖BAT地位的一大狠角色。
同時(shí),字節(jié)跳動(dòng)公司也是出了名的出手闊綽,在校招生薪酬上的投入不菲,是互聯(lián)網(wǎng)行業(yè)高薪資、高福利的代表。因此,字節(jié)跳動(dòng)也成為廣大應(yīng)屆生心中必須爭(zhēng)取的大廠之一。
在去年秋招,我有幸拿到了字節(jié)跳動(dòng)抖音客戶端開發(fā)工程師的offer。現(xiàn)將整個(gè)過程做個(gè)回顧,分享給大家。(面試環(huán)節(jié)對(duì)于個(gè)人項(xiàng)目的提問省去啦~)
?
2019.7月底?提前批簡(jiǎn)歷投遞
字節(jié)跳動(dòng)在秋招提前批就會(huì)開始大批量的簡(jiǎn)歷收集工作,時(shí)間是在每年暑期7、8月份。去年暑期我還在準(zhǔn)備面試基礎(chǔ),因此沒有很早投遞字節(jié)。
?
直到八月初才試著找?guī)熜謨?nèi)推了抖音的C++開發(fā)崗位。但是很不幸的是,簡(jiǎn)歷關(guān)直接被刷了。原因我猜測(cè)是因?yàn)榉强瓢嗟暮?jiǎn)歷不夠突出,加上提前批的大佬太多,沒有對(duì)口的項(xiàng)目和亮點(diǎn),很難獲得面試機(jī)會(huì)。
?
簡(jiǎn)歷被刷之后,心情跌入谷底。天天只想著刷題和復(fù)習(xí),直到正式秋招的來臨。在正式批再次投遞抖音之前,已經(jīng)手握幾個(gè)還不錯(cuò)的offer,因此心里倒是踏實(shí)不少。
?
2019.8.26 正式批簡(jiǎn)歷投遞?崗位:客戶端
由于提前批簡(jiǎn)歷被刷,因此在正式批的時(shí)候有些不太敢去嘗試別的崗位。加上師兄所在的崗位同為客戶端,機(jī)會(huì)會(huì)更大些。所以也沒有太多的考慮,便選擇投遞了抖音客戶端的崗位。在字節(jié)跳動(dòng)的招聘頁面上,具體的崗位名稱為互娛研發(fā)-客戶端開發(fā)。
?
進(jìn)入正式批的環(huán)節(jié),一般來說簡(jiǎn)歷篩選通過后,是需要進(jìn)行筆試環(huán)節(jié)的。字節(jié)的筆試可以參加多次,按照時(shí)間順序大概有4輪,自由選擇參加一輪即可。
?
幸運(yùn)的是,我在簡(jiǎn)歷通過篩選之后,跳過了筆試環(huán)節(jié),直接收到面試邀約。
?
2019.8.27 面試邀約 形式:電話面試
在投遞簡(jiǎn)歷的第二天,便收到了面試邀約的電話和郵件。我自己感覺字節(jié)的HR小姐姐特別好,每次都能先打電話確認(rèn)時(shí)間,再確定具體的面試時(shí)間。并且說話又溫柔體貼,還非常有耐心,還有……咳咳。
?
2019.8.30 電話一面
一面時(shí)間定在簡(jiǎn)歷投遞過后的第四天左右。之前我了解到,字節(jié)的面試環(huán)節(jié)都逃不開手撕代碼,因此收到電話面試的邀請(qǐng),還是有些詫異的。后來才了解到,電話面可相當(dāng)于簡(jiǎn)歷面,是對(duì)候選人基本的篩選,不算在技術(shù)三面里面。并且也不是所有人都會(huì)有簡(jiǎn)歷面這關(guān)。
?
不管怎樣,兵來將擋,火來水掩。當(dāng)天下午四點(diǎn)鐘準(zhǔn)時(shí)接到了面試小哥的電話,小哥的聲音聽起來比較年輕,估計(jì)跟我們年紀(jì)相差在五歲以內(nèi)。小哥的面試問題集中在編程語言基礎(chǔ)、操作系統(tǒng)理解、TCP/IP協(xié)議理解以及設(shè)計(jì)模式上。其中對(duì)C++的語言基礎(chǔ)問的特別詳細(xì),能夠問到很底層甚至源碼實(shí)現(xiàn)的層次。另外對(duì)于HTTPS的加密過程也問的很細(xì),似乎他最近正在做相關(guān)的工作。
?
整個(gè)基礎(chǔ)知識(shí)提問的時(shí)間大概在半個(gè)小時(shí)左右,最后還象征性的讓我口述二叉樹前序遍歷、二分查找基本的代碼實(shí)現(xiàn)。說實(shí)話,如果是手寫其實(shí)是最基本的代碼了,但是如果要邏輯清晰的有語言表達(dá)出來,發(fā)現(xiàn)還是有一些難度。
?
最后反問環(huán)節(jié),我問小哥給我的面試評(píng)價(jià)如何。一般來說,面試官都是會(huì)對(duì)面試評(píng)價(jià)保密的,所以有時(shí)候面試官會(huì)說不方便透露。不過小哥還是簡(jiǎn)單對(duì)我的表現(xiàn)簡(jiǎn)單評(píng)論以下,覺得我的計(jì)算機(jī)基礎(chǔ)還是不錯(cuò),然后讓我等消息。
?
其實(shí)一向聽聞,字節(jié)的面試效率奇高。往往候選人還沒在剛剛的面試中緩過神來,就已經(jīng)收到了感謝信。
所以在面試之后的一兩天里,沒有消息便是最好的消息了。
?
2019.9.2 視頻一面邀約
在電話一面過后的兩天,再次收到了HR小姐姐的電話。告知之前的面試通過,并且將視頻一面的時(shí)間定在了9.6日。視頻一面的時(shí)間與電話一面的時(shí)間相差大概在一周。
?
2019.9.6 視頻一面 牛客網(wǎng)面試平臺(tái)
字節(jié)的面試一向都是一鼓作氣,經(jīng)常技術(shù)三面一天搞定,輪著來。所以在面試之前還是有點(diǎn)緊張的,畢竟中間沒有喘息機(jī)會(huì)。
?
一面的面試官同樣是一個(gè)小哥哥,發(fā)量還很茂盛。提問的問題集中在操作系統(tǒng)相關(guān),大部分問題比較常見,比如線程進(jìn)程、IO復(fù)用模型、僵尸進(jìn)程、孤兒進(jìn)程、虛擬內(nèi)存、頁面置換、進(jìn)程調(diào)度等等;還有穿插一些開放題,在比較廣的維度上考察操作系統(tǒng)原理,比如復(fù)制粘貼的實(shí)現(xiàn)過程等。當(dāng)然C++相關(guān)的語言基礎(chǔ)肯定是必問的。
?
最后手寫了兩道代碼題,一個(gè)是LRU頁面置換。可見文章?面試高頻算法詳解-LRU
另一個(gè)是計(jì)算化學(xué)分子式每個(gè)元素的個(gè)數(shù),如HMg2(H2O(P2S3))3NH3,每個(gè)元素以大寫字母開頭。這道題稍微比較復(fù)雜,采用遞歸的思想處理括號(hào)就行。
?
整個(gè)面試過程我自我感覺比較良好,大部分的基礎(chǔ)問題都是常規(guī)題,沒有非常刁難的問題,只不過有時(shí)候面試官不會(huì)直接問你什么什么原理是什么,而是會(huì)給你一種場(chǎng)景,讓你解釋其中的原理。最后的代碼也不算特別難,只不過由于時(shí)間關(guān)系,第二道題沒有寫完。
?
一面過后,面試官讓我在線等待,不用退出面試房間。我心里就略放松了一點(diǎn),這說明等會(huì)還有二面。
?
2019.9.6 視頻二面 牛客網(wǎng)面試平臺(tái)
一面過后十分鐘,二面面試官上線。這位面試官稍微要嚴(yán)肅一點(diǎn),很快就直接進(jìn)入了面試主題。提問的問題主要針對(duì)于C++語言基礎(chǔ),常見的高頻的問題基本都有問到。每個(gè)問題沒有問的特別細(xì)致,但是開放度很高。
比如問了一個(gè)問題之后,他會(huì)一直問,“還有嗎?”就讓我把所有自己了解到的東西都講述出來,其實(shí)這個(gè)過程還是很過癮的。只不過有時(shí)候還是要注意不要給自己挖坑了。
?
基礎(chǔ)題過后有幾道開放題目,就是考察計(jì)算機(jī)思維的。具體的題目不太記得了,但是回答的過程應(yīng)該還是挺順利的。
?
最后的代碼環(huán)節(jié)也沒有我想象的那么可怕,以為會(huì)比一面難很多。但是沒想到就是一道鏈表操作的題目。面試官說重要是看對(duì)于鏈表指針的操作。
題目不是很難,在有限的時(shí)間內(nèi)還是搞定了,雖然中間有點(diǎn)緊張。
?
面試完之后,面試官同樣也說讓我保持在線。我心中竊喜,嘆了口氣,終于又撐過了一關(guān)。
?
但是幾分鐘后也沒見有動(dòng)靜。然后又接到了HR小姐姐的電話,告知今天三面是主管面,但是主管這個(gè)時(shí)候在開會(huì)沒有時(shí)間。我這才一看時(shí)間,從下午三點(diǎn)已經(jīng)面到了快六點(diǎn)鐘。
?
最終三面的時(shí)間定在了9.9日的晚上。
?
2019.9.9 視頻三面 牛客網(wǎng)面試平臺(tái)
三面是主管面,提前問了下HR姐姐,主管面是問技術(shù)還是人生規(guī)劃。被告知可能都會(huì)有。
懷著忐忑的心情等到主管上線后,感覺面試官是個(gè)比較隨性的人。沒有很嚴(yán)肅,說話聽起來比較隨性。
隨后就是直接開放題上手,從最簡(jiǎn)單的情況到越來越多的約束條件,一一分析可以采取的解決方案。比如
諸如此類。
之后順帶問了些C++的常規(guī)題。在提問的期間,感覺面試官比較注重的是思維能力和分析問題的能力。或許問題本身沒有多大的難度,但是面試官希望看到的是我思考的過程,從理解問題、分析問題到提出解決方案、尋找漏洞、優(yōu)化方案等環(huán)節(jié)上的思考。
最后的代碼題也讓我松了一口氣,同樣是一道鏈表操作題。
這是leetcode 25的原題,雖然是一道困難的題,但是其實(shí)沒有那么難。
我怕時(shí)間不夠,就采取了一種取巧的方法,也是寫出來了。最后有一點(diǎn)點(diǎn)小bug,經(jīng)過面試官的提示還是搞出來了。
?
整體感覺上還是挺順利的,沒有遇到特別讓我無法回答的提問,代碼題也沒有那么嚇人。可能是客戶端的面試稍微要簡(jiǎn)單一點(diǎn)。
?
面試完之后,我嘗試著去問HR姐姐有沒有出結(jié)果,但是HR姐姐說主管去開會(huì)了,并且面試結(jié)果也沒上傳,所以暫時(shí)只能等待了。
?
2019.9.10?11:00 HR面
在面完主管面的晚上,HR小姐姐加了微信,說第二天簡(jiǎn)單聊聊。我問這意味著技術(shù)面通過嗎。她說不一定。
HR面的過程比較簡(jiǎn)單,就是問一問人生規(guī)劃之類的問題,總結(jié)來說就是要有字節(jié)范兒~基本上不會(huì)因?yàn)镠R面掛人。最后HR小姐姐說等待消息就可以了。
這一等就是十天。在等待的期間,招聘系統(tǒng)里面的狀態(tài)變成綠色為底色“面試已結(jié)束”。
?
2019.9.18 收到錄用意向書
經(jīng)過十天的等待,終于等來了意向書。收到的那一刻其實(shí)是有些平靜的,因?yàn)楦杏X面試過程都比較順利,一路上沒有太多的卡頓,但是或許也沒有太多的亮點(diǎn)。一個(gè)詞評(píng)價(jià)的話,就是中規(guī)中矩。
總結(jié)?
抖音作為字節(jié)跳動(dòng)的拳頭產(chǎn)品,是其公司內(nèi)部的核心部門。能夠有幸加入抖音其實(shí)很大一部分也是有運(yùn)氣的成分在的。
字節(jié)跳動(dòng)的招聘十分火熱,基本上全年都是鋪天蓋地的宇宙條的招聘信息。但是其實(shí)錄取率并不高。許多人也認(rèn)為客戶端的難度相較于后端而言,要簡(jiǎn)單不少。但是其實(shí)如果你的基礎(chǔ)扎實(shí),差別也不會(huì)很大。
無論是找后端方向還是其它方向,我相信整個(gè)面試的過程和時(shí)間節(jié)點(diǎn)都能對(duì)你有一定的幫助。字節(jié)跳動(dòng)的面試流程基本上是我面過的公司中最快的,效率最高的。整體上來說,面試的難度與BAT相當(dāng),比較看重計(jì)算機(jī)基礎(chǔ)和代碼能力。如果你已經(jīng)準(zhǔn)備好了簡(jiǎn)歷、項(xiàng)目、算法和基礎(chǔ)知識(shí),不妨盡早投遞試試。
Git 常用命令操作整理匯總
某程序員動(dòng)了公司的祖?zhèn)鞔a“屎山”,半年后怒交辭職報(bào)告!
分享一套學(xué)習(xí)資料
