天天看點

位元組跳動,三輪面試,四個小時,靈魂拷問,結局我哭了但下次還敢!!!

寫在開篇

和往年相比,今年的秋招看上去不是那麼順利,但是令我驚訝的是第一家給我面試機會的公司竟然是宇宙條。一開始接到面試通知時,心情特别複雜,緊張又興奮,位元組跳動是出了名的考算法,實際上我算法部分是相對薄弱的。這次面試,一共三輪,共計四個小時左右,這三輪面試對我來說,簡直是靈魂拷問,至于結局,往下看吧!

位元組跳動,三輪面試,四個小時,靈魂拷問,結局我哭了但下次還敢!

第一輪面試:1小時28分鐘

自我介紹

資料庫索引的作用是什麼?

段頁式

虛拟記憶體

缺頁中斷

Major/Minor page fault差別

TLB作用

程序/線程和虛拟記憶體的關系

x86相關 沒聽清 直接說不會

講講jvm,記憶體洩漏怎麼了解的

垃圾回收機制,垃圾回收算法講解一下,怎麼判斷是老年代,觸發垃圾回收的時機在什麼時候?

BIO、NIO、AIO

select poll epoll

RMQ算法

無鎖隊列實作細節

資料庫ACID

實驗室項目

vector底層 為什麼擴容是1.5倍

算法部分:

(1)給一個正整數,判斷是否是2的n次幂,他說用最快的方式不要遞歸? 肯定是運算的方式,你能想到的數的運算有哪些,除了加減乘除? 這個地方講了很多,運算太多了,但是感覺不是面試官想要的,我最後把二進制的移位都說了出來,才get到他的點,問還有些什麼,他最後問我怎麼沒提異或,并且出了幾個二進制數讓我異或算結果 (2)給一個數組,數組裡面有rgb三種數,數量和順序完全無序,給一個算法按照他想要的r都在前面,g都在中間,b都在後面,用移動次數最少的算法進行計算,寫算法 這個地方一直叫我優化再優化,我快瘋了,我說我不行要放棄了,他說你履歷不是寫着強烈的好奇心求知欲嘛,沒事再想想,我直接笑噴了才放松了點繼續想,這簡直是心理戰

第二輪面試:1小時11分鐘

問我計算機網絡,作業系統,組成原理,資料結構哪個學的最好?我說計網,因為我實習的時候看了很多計網相關的東西,他叫我把自己最熟悉的東西詳細講解出來

使用https就能保證資料安全嗎?

http協定處于網絡模型哪一層

tcp和udp的本質差別是什麼?這個地方在資料可靠性深挖的比較多

實習過程中用http協定做的事情,http狀态碼解釋

http發起請求的時候,get,post别的還有些啥

用post擷取資料會有什麼問題嗎?get和post的差別有哪些

c和Java的差別,本質差別

面向對象幾大特征?什麼時候該用繼承什麼時候不該用繼承?有沒有遇到過這種使用?為什麼繼承破壞了封裝?

實際項目中運用過多線程嗎?用來幹什麼?

多線程安全問題怎麼解決?實際項目中怎麼解決的,場景和解決方式

多線程協作方式,除了鎖還有什麼嗎?

信号量解釋一下,幹什麼用的?

死鎖怎麼産生的?

發生了死鎖怎麼辦?

銀行家算法了解麼?

(1)有很多紙盒子,每個紙盒裡裡面套着紙盒子,其中有一個有硬币,怎麼把硬币找出來,寫算法 (2)樹的周遊方法有什麼,寫一個二叉樹前序周遊算法

第三輪面試:1小時15分鐘

自我介紹一下

講一件自己做項目最有挑戰的一件事情

比較mysql和mongodb的優劣

mysql用join來做連接配接,mongodb怎麼做的

mongodb備援字段的方式和mysql有啥不同,缺點

資訊變更了,name變了怎麼處理這些備援字段?

mongodb裡面的aggravate使用過嗎,舉一個例子,有什麼用

pipeline運作機制是什麼,假如你來做mongdb執行引擎,自己設計一個方式來設計這個pipeline

這個問題我回答了很久,因為我完全不懂pipeline,硬着頭皮設計。

你覺得docker這個技術能解決什麼問題?為什麼要用docker做部署?有什麼好處

運作在docker裡面的檔案系統,docker怎麼實作檔案系統機制?

在docker裡面根目錄cd,能不能跳出沙箱回到主控端?

問了下我前端知識了解的程度?react 和 jquery有什麼差別?

直接上算法了

(1)尋找最近的父節點,給了兩個例子,差不多leetcode中等難度 (2)開放性的問題,貓抓老鼠,貓在圓型中間,老鼠在圓的周長上,速度相同,問貓能不能抓到老鼠,這個問題我給的回答他不是很滿意,我把關鍵點說到了但是不能用數學解釋出來

結局

結局當然是涼了,沒有第四面的通知,但這次經曆給我的感受還是很不一樣的,也為我下一場面試積攢了經驗。之後打算再投幾家網際網路一線大廠,希望能夠順順利利, 收到好消息吧。

我是如何備戰位元組跳動面試的?

第一步:準備履歷

準備履歷,并不是指可以在網絡上下載下傳一份履歷模闆,然後修修改改就可以使用了。履歷的精心準備,需要注意三個要點:(1)注意區分:了解,熟悉,精通,不要亂寫,面試官很多問題都是根據履歷描述來進行的;(2)專業知識和項目經驗在精不在多,尤其是項目經驗一定要寫自己熟悉的且有内容可說的,不要認為寫得越多越好。(3)要熟悉自己的履歷内容,準确掌握,最好是多閱讀自己的履歷。

如果還是不知道怎麼準備自己的履歷,我這邊可以分享一下我搜集到的履歷模闆,給大家一個參考,希望能夠在給大家一個合格的敲門磚。

位元組跳動,三輪面試,四個小時,靈魂拷問,結局我哭了但下次還敢!!!

第二步:複習+總結(​​點選此處擷取​​)

離面試期越來越近也越來越焦慮,這個時候更需要去調整好自己的心态,沉入到複習當中,對各個知識點要學會查漏補缺,學着多去做做總結。

關于複習和總結,我自己也整理了不少資料,均是我的收獲,有需要的也可以進行分享。

如:

位元組跳動,三輪面試,四個小時,靈魂拷問,結局我哭了但下次還敢!!!
位元組跳動,三輪面試,四個小時,靈魂拷問,結局我哭了但下次還敢!!!
位元組跳動,三輪面試,四個小時,靈魂拷問,結局我哭了但下次還敢!!!

第三步:刷題

Java築基系列:Tomcat+Mysql+設計模式+并發+Netty+JVM

開源架構系列:Spring+SpringMVC+MyBatis

微服務架構:Dubbo+SpringBoot+SpringCloud

分布式資料庫系列:Memcached+Redis+MongoDB

分布式通訊系列:ActiveMQ+RabbitMQ+Kafka

分布式限流系統:Nginx+zookeeper

一線網際網路大廠曆年真題系列

算法寶典

位元組跳動,三輪面試,四個小時,靈魂拷問,結局我哭了但下次還敢!!!

總結

無論是哪家公司,都很重視基礎,尤其是對于應屆生來說,是以在面試前基礎一定要打紮實。面試是一個雙向選擇的過程,不要抱着畏懼的心态去面試,不利于自己的發揮。同時看中的應該不止薪資,還要看你是不是真的喜歡這家公司,是不是能真的得到鍛煉。其實我寫了這麼多,隻是我自己的總結,并不一定适用于所有人,相信經過一些面試,大家都會有這些感觸。