三年半Java后端面试经历
轉(zhuǎn)載自??三年半Java后端面試經(jīng)歷
經(jīng)過半年的沉淀,加上對MySQL,redis和分布式這塊的補(bǔ)齊,終于開始重拾面試信心,再次出征。
鵝廠
面試職位:go后端開發(fā)工程師,接受從Java轉(zhuǎn)語言
都知道鵝廠是cpp的主戰(zhàn)場,而以cpp為背景的工程師大都對os,network這塊要求特別高,不像是Java這種偏重業(yè)務(wù)層的語言,之前面試Java的公司側(cè)重還是在數(shù)據(jù)結(jié)構(gòu)、網(wǎng)絡(luò)、框架、數(shù)據(jù)庫和分布式。所以O(shè)S這塊吃的虧比較大
一面基礎(chǔ)技術(shù)面
電話面試,隨便問了些技術(shù)問題,最后還問了個LeetCode里面medium級別的算法題,偏簡單
自己的回答情況,redis這塊沒啥問題,具體rehash有印象是漸進(jìn)式的,但是具體原理可能答的有點(diǎn)出入。tcp的time_wait這塊答的不是很好,之前沒有了解過quic機(jī)制的實現(xiàn),所以問可靠性udp的時候,基本上腦子里就照著tcp的實現(xiàn)在說。https這塊沒啥說的,之前項目里面有用到類似的東西,研究的比較清楚了。raft算法這個因為剛好在刷6.824(才刷到lab2。。。),答的也湊合,不過paxos和zab算法確實不熟悉,直接說不會。MySQL這塊很熟了,包括索引,鎖,事務(wù)機(jī)制以及mvcc等等,沒啥說的,都已經(jīng)補(bǔ)齊了。協(xié)程和線程,主要說了go程和Java線程的區(qū)別以及go程的調(diào)度模型。面試官提示沒有提到線程的有內(nèi)核態(tài)的切換,go程只在用戶態(tài)調(diào)度。最后一個算法題,首先說使用HashMap來做,說空間復(fù)雜度能不能降到O(1),后面想了大概5min才想出來原地置換的思路。
二面項目技術(shù)面
基本都沒有啥問題,除了面試官說項目經(jīng)驗稍弱之外,其余還不錯。
三面綜合技術(shù)面
這面面的是陣腳大亂,面試官采用刨根問底的方式提問,終究是面試經(jīng)驗不夠,導(dǎo)致面試的節(jié)奏有點(diǎn)亂。 舉個例子:
其中有個題是go程和線程有什么區(qū)別?答:1 起一個go程大概只需要4kb的內(nèi)存,起一個Java線程需要1.5MB的內(nèi)存;go程的調(diào)度在用戶態(tài)非常輕量,Java線程的切換成本比較高。接著問為啥成本比較高?因為Java線程的調(diào)度需要在用戶態(tài)和內(nèi)核態(tài)切換所以成本高?為啥在用戶態(tài)和內(nèi)核態(tài)之間切換調(diào)度成本比較高?簡單說了下內(nèi)核態(tài)和用戶態(tài)的定義。接著問,還是沒有明白為啥成本高?心里瞬間崩潰,沒完沒了了呀,OS這塊依舊是痛呀,支支吾吾半天放棄了。
后面所有的提問都是這種模式,結(jié)果回答的節(jié)奏全無,感覺被套路了。大多度都能回答個一二甚至是一二三,但是再往后或者再深入的OS層面就GG了。
后面問了下項目過程中遇到的最大的挑戰(zhàn),以及時怎么解決的?
后面還問了一個問題定位的問題,服務(wù)器CPU 100%怎么定位?可能是由于平時定位業(yè)務(wù)問題的思維定勢,加之處于蒙蔽狀態(tài),隨口就是:先查看監(jiān)控面板看有無突發(fā)流量異常,接著查看業(yè)務(wù)日志是否有異常,針對CPU100%那個時間段,取一個典型業(yè)務(wù)流程的日志查看。最后才提到使用top命令來監(jiān)控看是哪個進(jìn)程占用到100%。果然陣腳大亂,張口就來,捂臉。。。?
本來正確的思路應(yīng)該是先用top定位出問題的進(jìn)程,再用top定位到出問題的線程,再打印線程堆棧查看運(yùn)行情況,這個流程換平時肯定能答出來,但是,但是沒有但是。還是得好好總結(jié)。
最后問了一個系統(tǒng)設(shè)計題目(朋友圈的設(shè)計),白板上面畫出系統(tǒng)的架構(gòu)圖,主要的表結(jié)構(gòu)和講解主要的業(yè)務(wù)流程,如果用戶變多流量變大,架構(gòu)將怎么擴(kuò)展,怎樣應(yīng)對?
這個答的也有點(diǎn)亂,直接上來自顧自的用了一個通用的架構(gòu),感覺毫無亮點(diǎn)。后面反思應(yīng)該先定位業(yè)務(wù)的特點(diǎn),這個業(yè)務(wù)明顯是讀多寫少,然后和面試官溝通一期剛開始的方案的用戶量,性能要求,單機(jī)目標(biāo)qps是什么等等?在明確系統(tǒng)的特點(diǎn)和約束之后再來設(shè)計,而不是一開始就是用典型互聯(lián)網(wǎng)的那種通用架構(gòu)自顧自己搞自己的方案。
3天后收到短信被拒
總結(jié)
相關(guān)資料補(bǔ)充學(xué)習(xí):
某東南亞互聯(lián)網(wǎng)公司
一面技術(shù)面
先筆試算法題,LeetCode medium難度,然后綜合問了下騰訊一面二面類似的問題+一個最熟悉的項目
二面研發(fā)經(jīng)理綜合面試
綜合聊了下熟悉的技術(shù),遇到了最難的問題,講解一下項目的流程和架構(gòu)
?
總結(jié)
以上是生活随笔為你收集整理的三年半Java后端面试经历的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯面试题:一条SQL语句执行得很慢的原
- 下一篇: 一分钟理解Java公平锁与非公平锁