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

寫在開篇

和往年相比,今年的春招看上去不是那麼順利,多少都受疫情有所影響,可是令我驚訝的是第一家給我面試機會的公司居然是宇宙條。一開始接到面試通知時,心情特別複雜,緊張又興奮,字節跳動是出了名的考算法,實際上我算法部分是相對薄弱的。此次面試,一共三輪,共計四個小時左右,這三輪面試對我來講,簡直是靈魂拷問,至於結局,往下看吧!前端

話很少說,面試場景具體如何,各位看官捧個場吧。另外,下文中涉及到的面試題答案、複習資料,均有完整PDF版分享,須要的小夥伴,點這裏能夠看到所有內容mysql

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

  • 自我介紹
  • 數據庫索引的做用是什麼?
  • 段頁式
  • 虛擬內存
  • 缺頁中斷
  • Major/Minor page fault區別
  • TLB做用
  • 進程/線程和虛擬內存的關係
  • x86相關 沒聽清 直接說不會
  • 講講jvm,內存泄漏怎麼理解的
  • 垃圾回收機制,垃圾回收算法講解一下,怎麼判斷是老年代,觸發垃圾回收的時機在何時?
  • BIO、NIO、AIO
  • select poll epoll
  • RMQ算法
  • 無鎖隊列實現細節
  • 數據庫ACID
  • 實驗室項目
  • vector底層 爲何擴容是1.5倍
  • 算法部分:

(1)給一個正整數,判斷是不是2的n次冪,他說用最快的方式不要遞歸? 確定是運算的方式,你能想到的數的運算有哪些,除了加減乘除? 這個地方講了不少,運算太多了,可是感受不是面試官想要的,我最後把二進制的移位都說了出來,才get到他的點,問還有些什麼,他最後問我怎麼沒提異或,而且出了幾個二進制數讓我異或算結果react

(2)給一個數組,數組裏面有rgb三種數,數量和順序徹底無序,給一個算法按照他想要的r都在前面,g都在中間,b都在後面,用移動次數最少的算法進行計算,寫算法 這個地方一直叫我優化再優化,我快瘋了,我說我不行要放棄了,他說你簡歷不是寫着強烈的好奇心求知慾嘛,沒事再想一想,我直接笑噴了才放鬆了點繼續想,這簡直是心理戰jquery

第二輪面試: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中等難度sql

(2)開放性的問題,貓抓老鼠,貓在圓型中間,老鼠在圓的周長上,速度相同,問貓能不能抓到老鼠,這個問題我給的回答他不是很滿意,我把關鍵點說到了可是不能用數學解釋出來mongodb

結局

結局固然是涼了,沒有第四面的通知,但此次經歷給個人感覺仍是很不同的,也爲我下一場面試積攢了經驗。以後打算再投幾家互聯網一線大廠,但願可以順順利利, 收到好消息吧。docker

我是如何備戰字節跳動面試的?

第一步:準備簡歷

準備簡歷,並非指能夠在網絡上下載一份簡歷模板,而後修修改改就可使用了。簡歷的精心準備,須要注意三個要點:(1)注意區分:瞭解,熟悉,精通,不要亂寫,面試官不少問題都是根據簡歷描述來進行的;(2)專業知識和項目經驗在精不在多,尤爲是項目經驗必定要寫本身熟悉的且有內容可說的,不要認爲寫得越多越好。(3)要熟悉本身的簡歷內容,準確掌握,最好是多閱讀本身的簡歷。數據庫

若是仍是不知道怎麼準備本身的簡歷,我這邊能夠分享一下我搜集到的簡歷模板,給你們一個參考,但願可以在給你們一個合格的敲門磚。

第二步:複習+總結

離面試期愈來愈近也愈來愈焦慮,這個時候更須要去調整好本身的心態,沉入到複習當中,對各個知識點要學會查漏補缺,學着多去作作總結。

關於複習和總結,我本身也整理了很多資料,均是個人收穫,有須要的也能夠進行分享。

如:

第三步:刷題

  1. Java築基系列:Tomcat+Mysql+設計模式+併發+Netty+JVM
  2. 開源框架系列:Spring+SpringMVC+MyBatis
  3. 微服務架構:Dubbo+SpringBoot+SpringCloud
  4. 分佈式數據庫系列:Memcached+Redis+MongoDB
  5. 分佈式通信系列:ActiveMQ+RabbitMQ+Kafka
  6. 分佈式限流系統:Nginx+zookeeper
  7. 一線互聯網大廠歷年真題系列
  8. 算法寶典

 

總結

不管是哪家公司,都很重視基礎,尤爲是對於應屆生來講,因此在面試前基礎必定要打紮實。面試是一個雙向選擇的過程,不要抱着畏懼的心態去面試,不利於本身的發揮。同時看中的應該不止薪資,還要看你是否是真的喜歡這家公司,是否是能真的獲得鍛鍊。其實我寫了這麼多,只是我本身的總結,並不必定適用於全部人,相信通過一些面試,你們都會有這些感觸。

針對以上面試技術點,我在這裏也作一些資料分享,但願能更好的幫助到你們。

須要的小夥伴,點這裏能夠看到所有內容