個人背景介紹
2017年畢業(yè)于一所不知名雙非本科大學,畢業(yè)時就有著一顆想進大廠的心,但又想留在成都,不愿意去北上廣,現(xiàn)在其實相當后悔。當年在成都的大廠少之又少,再加上校招時非常努力地玩耍,導致投的幾個大廠面試都全部掛掉。也錯失了進大廠最好的機會,所以我奉勸大三的同學如果對自己的職業(yè)有追求,有進大廠的夢想,在大三的時候一定要好好準備,在校招的時候拿offer。
最后我在成都一家本地科技公司做了Java開發(fā),中間也跳過一次槽,也是做的Java。但這幾年時間里總感覺公司能給的成長太慢,雖然自己也在學習,還是免不了焦慮,特別是像自己這種學歷和公司背景都一般的程序員,要保證自己以后不被淘汰,必須得做點什么。所以在聽到一個前同事被公司裁掉,最后進入大廠這個事情之后,徹底點燃了我心中想進大廠的那把火,我也準備內(nèi)推試試字節(jié)跳動。
自身情況
因為疫情原因,很多企業(yè)生存困難。我也保持了理智,沒有辭職進行面試。而是給自己制定了學習計劃,不得不說,在職的情況下復習確實很難,因為可能加班打亂計劃。于是我把所有能利用的個人時間全部利用了起來,比如早上十點上班,我六點鐘就會起床,刷兩個小時LeetCode,八點鐘洗漱之后去上班。晚上如果有時間就會把早上刷過的題拿出來繼續(xù)復習,花了兩個月的時間,一邊復習(預習)數(shù)據(jù)結(jié)構(gòu),一邊做題,LeetCode上面的高頻題基本都過了一遍?;四敲炊鄷r間刷題,都是因為自己算法太菜,以前沒有進行專門的練習。題做得差不多之后,就開始復習專業(yè)知識了,具體內(nèi)容我都會總結(jié)出來。前前后后準備了三個月,我才敢進行內(nèi)推,經(jīng)歷了八次面試之后,面試時間又持續(xù)三個月,皇天不負有心人,終于在這個月等到了oc。
下面是面試內(nèi)容,時間太久了,可能記得不太全,但基本上包含了所有問題,白天上班,我都是選擇晚上進行面試,哈哈
一面A部門
- 講項目,串起來講,可能遇到的問題,怎么解決,怎么實現(xiàn),講了發(fā)送客服消息
- Spring里面的bean怎么回事
- HashMap和ConcurrentHashMap,HashMap中的紅黑樹,兩者rehash的區(qū)別
- Mysql的一致性是什么,數(shù)據(jù)庫redolog,undo log,MySQL的索引結(jié)構(gòu),為什么二級索引葉子節(jié)點不能直接存儲行數(shù)據(jù)的指針,這樣可以不回表,怎么考慮的?
- redis里面的zset,跳表怎么實現(xiàn),怎么增刪,
- redis是怎么rehash的
- 算法,二叉樹轉(zhuǎn)雙向鏈表
二面A部門
- 自我介紹
- 再一次聊項目,功能,架構(gòu),角色,量級
- Spring里面有哪些設(shè)計模式
- SpringMVC和SpringBoot有什么區(qū)別
- SpringBoot的自動配置是怎么實現(xiàn)的
- 剛剛你說了線程池,你線程池是用的什么,參數(shù)有哪些,為什么這么設(shè)置
- 線程池核心線程滿了怎么辦,里面的阻塞隊列是干什么的
- 說說ThreadLocal是什么
- CAP理論知道嗎,為什么不能同時滿足
- Redis里面的數(shù)據(jù)結(jié)構(gòu)有什么場景
- Redis怎么實現(xiàn)鎖(redis鎖的所有坑都說了一遍)
- 分布式事務知道嗎,有哪些方案(說了2PC,3PC,TCC,MQ)
- 算法題,樹的直徑
- 有什么要問我的
三面A部門
- 介紹項目
- 場景題,設(shè)計一個朋友圈,讀QPS 1000w,寫QPS 10w
- 算法題LFU
- 你有什么問題
- 這個面試官是個leader,比較強勢,很多細節(jié)回答的不是很好,所以臉色一直不好,給人壓力較大,面完就覺得涼了。果然面完之后和前兩次不一樣,HR那里就沒有任何通知了,到這里還是很失落,準備了那么久,因為最后一面沒表現(xiàn)好導致掛掉。之后等了一個月,這一個月沒有任何消息,一個月過后又接到字節(jié)HR的電話,說我之前兩面面評都不錯,讓我試試他們部門,我就同意了。
一面B部門
- 介紹項目,細節(jié)
- 怎么做服務拆分,邊界怎么劃分的
- 分布式之后會遇到什么問題,CAP的各個情況介紹一下
- dubbo調(diào)用過程是怎樣的,PB知道嗎
- thrift了解過嗎
- zk介紹一下,有哪些節(jié)點類型,特點
- 怎么知道項目中接口的重要性,怎么做監(jiān)控,你說的自動化測試是怎么做到的(這個問題回答完,他笑了。。。)
- 你所理解的SLA是什么,要達到什么等級
- 說說你理解的k8s
- nginx的upstream是干什么的
- nginx有哪些負載均衡策略
- 算法題:島嶼數(shù)量
- 你有什么問題要問我
二面B部門
- 介紹項目,細節(jié)
- 鎖有哪些實現(xiàn)方式
- 分布式鎖的實現(xiàn)方式
- JVM的內(nèi)存模型,垃圾回收算法
- MySQL的事務介紹,ACID的實現(xiàn)原理是什么(想問MySQL的日志)
- HashMap的原理,其他線程安全的Map
- Redis的高可用,有哪些持久化方式
- Redis的數(shù)據(jù)結(jié)構(gòu),線程模型
- 用過什么消息隊列,有什么特點
- 怎么保證消息冪等消費
- docker的網(wǎng)絡模式
- 算法題:比較版本號
- 提問
三面B部門(交叉面)
- 介紹項目,細節(jié)
- Linux的內(nèi)存管理
- 瀏覽器打開一個網(wǎng)站的過程中會經(jīng)歷哪些網(wǎng)絡處理,DNS的具體過程是啥
- zk是什么分布式模型(想問的CAP定理),主從怎么做選舉
- zk只有一個主節(jié)點,寫性能不高,zk怎么解決的
- etcd或consul知道嗎
- 多個服務中如何快速排查問題
- Redis中的淘汰方式有哪些,Redis性能高的原因是啥
- docker的實現(xiàn)原理
- 算法題:相交鏈表
四面B部門 (leader面)
- 介紹項目,細節(jié)
- 項目量級多大,QPS最高的接口是怎么做的
- rpc怎么實現(xiàn)服務發(fā)現(xiàn)
- zk中的watch機制是怎么實現(xiàn)的
- 分布式鎖有哪些實現(xiàn),MySQL,zk,Redis都說了一遍,并且分析了各自的優(yōu)缺點,這個問題問的頻率太高了
- 怎么提高數(shù)據(jù)庫讀寫性能
- k8s了解嗎
- servicemesh有做過嗎
五面B部門(HR面)
- 離職原因
- 職業(yè)規(guī)劃
- 期望薪資
基礎(chǔ)知識
- 常用集合、數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)增刪改查操作的原理具體實現(xiàn)、各參數(shù)的含義,以及如何組合使用)
- Java的語法,OO的思想要熟悉,常用設(shè)計模式要知道場景
- JVM內(nèi)存模型,垃圾回收算法,垃圾收集器的區(qū)別,GC調(diào)優(yōu)
- 線程模型
- IO模型(包括操作系統(tǒng)底層IO模型和常見BIO、NIO、AIO、IO多路復用的原理)
- Redis(數(shù)據(jù)結(jié)構(gòu)的內(nèi)部實現(xiàn)、淘汰原理策略、持久化、集群、擴容、數(shù)據(jù)同步、以及一些常見緩存問題的解決方案)
- MySQL(索引原理,查詢優(yōu)化,三大日志)
- 消息隊列(內(nèi)部原理,常見消息問題解決方案)
- 分布式原理、算法、rpc原理(paxos、raft、zookeeper的原理)
- 分布式場景題(高可用,高性能相關(guān))
其他知識
- 位運算
- 大數(shù)據(jù)量操作(在有限時間內(nèi)完成、在有限空間內(nèi)完成)
- 設(shè)計題(看一些常見的分布式ID、分布式計數(shù)服務等等)
算法
- 數(shù)組
- 鏈表
- 位運算
- 二叉樹(dfs,bfs,相當重要,只要會了二叉樹,回溯那些算法也會了)
- 設(shè)計題
- LRU/LFU
- 排序
- 查找
總結(jié)
我給大家的建議就是慢慢來,不管是社招還是校招,制定自己的計劃,一定要有自己的知識體系,針對自己薄弱的地方進行強化復習,不放過任何一個細節(jié)。
簡歷上寫的東西一定要會,一般都是針對簡歷來提問的。如果在預習的過程中感到困難或者吃力,那就對了,等你熬過去了,就是勝利。祝福大家都能拿到滿意的offer。
最后
歡迎關(guān)注公眾號:前程有光,領(lǐng)取一線大廠Java面試題總結(jié)+各知識點學習思維導+一份300頁pdf文檔的Java核心知識點總結(jié)! 這些資料的內(nèi)容都是面試時面試官必問的知識點,篇章包括了很多知識點,其中包括了有基礎(chǔ)知識、Java集合、JVM、多線程并發(fā)、spring原理、微服務、Netty 與RPC 、Kafka、日記、設(shè)計模式、Java算法、數(shù)據(jù)庫、Zookeeper、分布式緩存、數(shù)據(jù)結(jié)構(gòu)等等。