面試之前挺緊張的,覺得自己準備充分,又覺得自己沒準備好。
一面:
首先自我介紹,我簡單說了一下自己的情況以及做過的項目。
1、項目結(jié)構(gòu)
我把麥座系統(tǒng)的結(jié)構(gòu)畫了一遍,包括與大麥網(wǎng)的對接。
2、如何解決數(shù)據(jù)一致性
我說麥座系統(tǒng)是單機服務(wù),不涉及到數(shù)據(jù)一致性,然后說了一下自己對解決方案的理解。
3、多線程的一些問題。
voliate關(guān)鍵字,synchronized關(guān)鍵字,因為仔細研究過,所以答的還不錯,從原子性可見性順序性分析了一通,分析了synchronized鎖的轉(zhuǎn)變。
線程池的結(jié)構(gòu),主要參數(shù),使用的隊列(無界和有界),拒絕策略有哪些(說出三個,有一個忘了。),執(zhí)行的過程(對核心線程,最大線程,阻塞隊列的優(yōu)先級判斷)
ReetrantLock,與synchronized的區(qū)別,從類型,鎖機制上分析一下,兩者怎么選座,我說了一下自己的理解。
ThreadLocal,我說沒用過,說了一下自己的理解,線程局部變量,舉了數(shù)據(jù)庫連接可以用threadlocal。
線程到這就結(jié)束了,這塊之前看的挺多,所以答的還不錯。
4、spring
攔截器,過濾器有什么作用和區(qū)別,以及作用的順序,dispatcherservlet的作用,如何轉(zhuǎn)發(fā)請求。
這塊答的挺差的。
5、數(shù)據(jù)庫
mysql的默認隔離級別,可重復(fù)讀,什么是可重復(fù)讀。
臟讀是什么,幻讀是什么,Mysql使用的鎖。
MVCC是如何實現(xiàn)的
有些記混了,答的感覺還可以。
6、分布式相關(guān)
thrift的結(jié)構(gòu),如何實現(xiàn)遠程調(diào)用,配置中心,
service調(diào)用dao層如何實現(xiàn)短超時時間,
redis如何實現(xiàn)安全的更新-覆蓋。
zk和dubbo我說沒用過就沒問。
7、項目相關(guān)
如何實現(xiàn)搶票,麥座與大麥的數(shù)據(jù)一致性,
同步請求和異步請求的實現(xiàn),我說了支付回調(diào)的實現(xiàn),
對現(xiàn)有系統(tǒng)改造的想法。
項目相關(guān)回答的還可以。
一面聊了一個小時左右,最后我問了一下對我的評價:長短板明顯,對java基礎(chǔ)掌握的很好,儲備性知識懂得比較多,但是對于自己常用的服務(wù)反而理解不深,spring和mysql掌握的不夠好。
二面
二面應(yīng)該是技術(shù)主管。
也是先自我介紹,然后問我如何實現(xiàn)搶票的場景。
如何實現(xiàn)三個線程順序執(zhí)行。一時沒想起來,我說可以使用sleep(其實應(yīng)該用join()),
double-check的安全實現(xiàn),加volatile。
mysql如何實現(xiàn)主從復(fù)制,沒做過說不出來。
為什么要用thrift,為什么可以跨平臺和跨語言,客戶端如何知道服務(wù)端的狀態(tài)。
網(wǎng)絡(luò)七層協(xié)議都是干什么的,http和tcp的三次握手有什么區(qū)別
有沒有看過源碼,我說看過hashmap和concurrentHashmap的。
有沒有看過spring的源碼,沒有(我猜主要是想問這個)
hashmap在jdk1.8的實現(xiàn),數(shù)組+鏈表+紅黑樹,我把put的源碼說了一遍。
二面差一些,很多都答的不夠理想。
最后回去等通知,他們需要討論一下。應(yīng)該是掛了。
總結(jié)
之前的準備中,拼命的看了一些zk,dubbo,hsf的一些東西,結(jié)果面試官一聽沒有實際用過就不問了,反而問thrift的比較多。對java基礎(chǔ)的東西看的較多,但是對自己平常使用的反而關(guān)注太少,比如spring,并沒有研究的特別深。
準備過程中進入了一個誤區(qū),太過于追求廣度,忽略了深度,其實面試官更關(guān)注的是你日常工作中實際用到的東西的掌握情況,沒用過的東西不會也正常,了解一下就行,工作中還可以學(xué)。但是像spring和mysql這些掌握不好的話,基本就沒戲了。
這次面試,自己準備的大部分東西都已經(jīng)表現(xiàn)出來了,但是還是不理想,說明確實是自己的水平不夠,可能比初級和中級好一些,但是要達到高級或者自身,還需要繼續(xù)學(xué)習(xí)。
下次面試前的重點,會放在對spring,mysql,thrift,jpa這些工作中用到的技術(shù)進行深入學(xué)習(xí),其他方面了解即可。