四面位元組跳動(高階開發崗):分散式+中介軟體+TCP+JVM+Hashmap+ThreadLocal
阿新 • • 發佈:2020-07-04
位元組跳動的面試官都挺好,面試的內容是我面試那麼多家以來最全面的,問題也沒有特別刁鑽,都比較符合工作場景。
專案很重要,專案是敲門磚也是面試的大頭,如果我沒有簡歷上的兩個專案的話,估計簡歷都很難被撈起來,而且進入到3面。
很多面試題都是從專案角度去提問的,而且回答的時候也可以結合專案回答,這個很加分。
除了專案所用技術之外,也要關注專案的業務以及架構,最好是能融合在一起講清楚。
只有多面試,你才能將原有的「我以為」思維變成「原來是這樣」。
一面
- TCP三次握手和四次握手?為什麼三次握手,TCP 的ack seq是ack次數還是ack位元組數?RST報文指的是什麼報文?
- http2的原理,https的原理,描述一下TSL的握手過程。
- JVM線上引數設定,為什麼這麼設定?能講講jdk的分代蒐集器原理嗎?
- volatile 關鍵字是如何防止指令重排的,synchronized能防止指令重排嗎?
- 那進一步說說synchronized的鎖消除與鎖優化,自旋鎖輕量級鎖與重量級鎖分別都是什麼?
- Innodb引擎一個數據頁的大小為什麼是16KB?20個mysql欄位,都是varchar(10),1000w資料情況下b+樹高度是多少?
- 結合WAL機制和回滾段說一說innodb 事務引擎的MVCC原理?
- Select/Poll/Epoll 三種系統IO的區別?
- Zookeeper做服務的註冊中心,如果服務規模大於1000,會發生羊群效應網路風暴,怎麼優化?
- 說一說你理解的countdownlatch?countdownlatch的底層原理?AQS又是什麼?
- 執行緒池的各個引數,ThreadLocal?怎麼優化?知道FastThreadLocal嗎?
- 裝飾者模式和代理模式挺像的,他們有什麼區別?
- 你們用了SpringCloud,能從原始碼角度講一講Eureka的底層架構與設計原理嗎?
- 13億使用者量的微博plus,如何設計點贊系統才能保證高效能?
- 使用者畫像系統,使用者標籤一直在增加,怎麼設計表結構?
- 手寫一下線段樹程式碼。
二面:
- Hashmap底層原理
- 講講Netty的記憶體池演算法和物件池演算法,什麼情況下會記憶體洩漏?
- 你剛才說Netty使用PooledUnsafeDirectByteBuf。Unsafe是什麼,java裡能直接new嗎?
- 分散式事務兩階段提交如果第二階段超時了怎麼辦?
- 嗯,那tcc的原理能講一下嗎?新出來的Seata 有調研過嗎?
- 分別從NIO層面和netty層面講解一下零拷貝。
- 給你一個oom.hprof,讓分析記憶體洩漏可能的原因。
- 微服務,怎麼拆的,為什麼要那麼拆,
- 老生常談題目,mysql和redis的資料如何保證一致性,就是 cache asigned pattern.
- 老生常談題目:如果保證redis的記憶體裡全都是最熱的資料,考察的是redis的記憶體淘汰策略。LRU。
- redis說到了LRU,讓手寫一個lru演算法。(用LinkedHashMap實現)
- mysql為什麼用b+樹,和b樹區別?
- mysql 從二叉查詢樹說到紅黑樹說到多叉樹再到b到b+,最後讓手寫了一個二叉查詢樹的中序遍歷。
三面:
- 你們用了rocketmq,說一說rocketmq是如何保證訊息寫入的高效能,如何保證訊息不丟失的?
- spring的設計思想。
- cpa定理,redis是cp的還是ap的?為什麼?zookeeper是cp的還是ap的,為什麼?
- 說一說你理解的面向過程,面向物件和函數語言程式設計
- 你的技術職業規劃。
HR面:
- 你的優點。
- 多久能入職。
- 薪資問題。
對於很多Java工程師而言,想要提升技能,往往是自己摸索成長,不成體系的學習效果低效漫長且無助。
整理的這些架構技術希望對Java開發的朋友們有所參考以及少走彎路,本文的重點是你有沒有收穫與成長,其餘的都不重要,希望讀者們能謹記這一點。
合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!
趁年輕,使勁拼,給未來的自己一個交代!!!
收集了各方面的,當前公司的,還有自己收集總結的,下面的圖片擷取的有pdf,有如果有需要的自取.
各大公司面試題集合:
簡歷模板: