雙非渣本逆襲面經(jīng)!歷經(jīng)三個月拿下字節(jié)offer,平凡人也能進大廠!

個人背景介紹

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)等等。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容