前幾天通過boss投遞了騰訊的崗位,之后就收到短信定了一個面試時間,面試的平臺是騰訊自己的平臺——面唄,在線視頻面試,上面有個oj可以在線做題,類似??途W(wǎng)的在線面試。
到了約定時間,提前調(diào)好了麥克風(fēng),開始面試。
首先是簡單的自我介紹。介紹完后,進入正題。
接著面試官看你的簡歷上的項目,說介紹下你做過的最大型的項目吧。我就蒙蔽了,說最大型的那個是我兩年前做的,能不能介紹我最近最熟悉的項目,面試官說可以。然后我就說了業(yè)務(wù)流程,我做的是類似電商的系統(tǒng),就是普通的下單、生成訂單這種流程。
介紹完后,面試官說,那你說說你們項目系統(tǒng)架構(gòu)。說了業(yè)務(wù)架構(gòu),還有部署架構(gòu),業(yè)務(wù)架構(gòu)就說分成了幾個微服務(wù),部署架構(gòu)就是用的阿里云,SLB,K8S,Redis,RocketMQ,MySQL之類的。
接著問了,你們業(yè)務(wù)不大的話RocketMQ用來做什么,我說延時任務(wù)和異步,然后面試官問了RocketMQ延時任務(wù)底層怎么實現(xiàn)的?你們生產(chǎn)RocketMQ怎么部署的?怎么保證RocketMQ的高可用?RocketMQ有哪些角色?
接著問,你們下單,是怎么保證不重復(fù)提交?如果同一時間并發(fā)兩個相同的請求,怎么去重?如果客戶確實要下兩個訂單呢?
你們系統(tǒng)有沒有對賬?對賬有什么用嗎?如果有人手工改數(shù)導(dǎo)致了對賬失敗,怎么處理?怎么防止運維手工改數(shù)?怎么知道這個數(shù)據(jù)是手工改過的?
接著,直接上八股文。
簡歷寫了熟悉java基礎(chǔ),那java的基本類型都幾個字節(jié)?一個最小的類空間占用多大?cas是什么?cas底層怎么實現(xiàn)的?Java的動態(tài)代理了解嗎?底層是怎么做的?Spring的動態(tài)代理又是怎么做的?Spring怎么解決循環(huán)依賴的問題?
簡歷寫了熟悉多線程編程,并發(fā)包的ReentrantLock底層怎么實現(xiàn)?AQS的同步隊列有什么用?公平鎖非公平鎖的區(qū)別?并發(fā)包里有多個線程同步工具,具體有哪些?為什么需要這么多,ReentranctLock不夠用嗎?線程池熟悉嗎,說一下線程池是怎么工作的?如果線程池一個任務(wù)需要處理1ms,每2ms進來一個任務(wù),線程數(shù)會達到coreSize嗎?
簡歷寫熟悉Redis,redis的數(shù)據(jù)類型底層的數(shù)據(jù)結(jié)構(gòu)有哪些?你們生產(chǎn)是怎么部署的?怎么保證高可用?選主是誰選出來的?redis有什么持久化方式?分布式鎖是怎么實現(xiàn)的?簡歷寫了RedLock,那說說RedLock實現(xiàn)原理?
簡歷寫熟悉MySQL,一個update語句的整個流程說一下?mysql所以為什么使用b+樹,他和b樹有什么區(qū)別?你們生產(chǎn)的MySQL用的什么隔離級別?RC和RR隔離級別有什么區(qū)別?什么是臟讀什么是幻讀?MySQL怎么解決幻讀的呢?MVCC底層是怎么實現(xiàn)的?
寫一道簡單的算法題吧。一道easy題,不過是改版的,這里需要找出所有的下標(biāo)位置,還需要運行出正確結(jié)果。leetcode 28題的變種
好的,你的情況我了解了,有什么要問我的嗎?好好準備一下項目的描述,很快有二面的面試官聯(lián)系你。
以上,就是整個面試流程了。