寫在開篇
和往年相比,今年的秋招看上去不是那麼順利,但是令我驚訝的是第一家給我面試機會的公司竟然是宇宙條。一開始接到面試通知時,心情特别複雜,緊張又興奮,位元組跳動是出了名的考算法,實際上我算法部分是相對薄弱的。這次面試,一共三輪,共計四個小時左右,這三輪面試對我來說,簡直是靈魂拷問,至于結局,往下看吧!
位元組跳動,三輪面試,四個小時,靈魂拷問,結局我哭了但下次還敢!
第一輪面試: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)要熟悉自己的履歷内容,準确掌握,最好是多閱讀自己的履歷。
如果還是不知道怎麼準備自己的履歷,我這邊可以分享一下我搜集到的履歷模闆,給大家一個參考,希望能夠在給大家一個合格的敲門磚。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CNzQjN4UmMkBjNmlTZzU2NxYzX5MDO1QTMxMzLcBTMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.png)
第二步:複習+總結(點選此處擷取)
離面試期越來越近也越來越焦慮,這個時候更需要去調整好自己的心态,沉入到複習當中,對各個知識點要學會查漏補缺,學着多去做做總結。
關于複習和總結,我自己也整理了不少資料,均是我的收獲,有需要的也可以進行分享。
如:
第三步:刷題
Java築基系列:Tomcat+Mysql+設計模式+并發+Netty+JVM
開源架構系列:Spring+SpringMVC+MyBatis
微服務架構:Dubbo+SpringBoot+SpringCloud
分布式資料庫系列:Memcached+Redis+MongoDB
分布式通訊系列:ActiveMQ+RabbitMQ+Kafka
分布式限流系統:Nginx+zookeeper
一線網際網路大廠曆年真題系列
算法寶典
總結
無論是哪家公司,都很重視基礎,尤其是對于應屆生來說,是以在面試前基礎一定要打紮實。面試是一個雙向選擇的過程,不要抱着畏懼的心态去面試,不利于自己的發揮。同時看中的應該不止薪資,還要看你是不是真的喜歡這家公司,是不是能真的得到鍛煉。其實我寫了這麼多,隻是我自己的總結,并不一定适用于所有人,相信經過一些面試,大家都會有這些感觸。