上一篇的同學拿到了bigo和騰訊的offer,這一次的分享來自兩位同學的面試綜合,他們分別拿到了菜鳥、嘀嘀、盒馬的多個offer,由於面試的時間跨度時間太長,且面試的部門太多,只能回憶到具體的面試題,無法再具體區分出幾面了,但是面試真題還是可以拿出來分享一下,且看正文。
菜鳥&嘀嘀
這些來自第一位同學分享的面試題,由於過於優秀,同時面試幾個大廠都已拿到offer,他只能回憶到一些重點的問題。
JVM記憶體溢位排查?
根據他的描述,JVM記憶體溢位的排查是個必問點,基本上每個公司都被問到,要知道怎麼利用jstat、jmap這些命令結合MAT等工具匯出堆疊資訊檢視分析,如果沒有實戰的經驗,最好平時可以自己模擬一下場景,看看具體怎麼處理。
網路程式設計相關的提問
因為大家Java可能做業務相關的需求比較多,如果不是涉及到比如IOT這種和網路程式設計相關的話,確實不是很清楚,對於這塊問題他直接回復不清楚,問題也不大。
併發包相關問題
JUC下的那些常見問題,ConcurrentHashMap、CountDownLatch等等這些都應該要熟悉掌握,面試必考點。
執行緒池原理
基本也是必問點,也比較簡單。
mysql索引,鎖機制,隔離級別
同上,這個比較基礎,必須掌握的點,如果不是很明白,可以去看我的進大廠系列mysql的專題。
Redis連環炮
Redis連環炮,資料型別、快取擊穿、雪崩、穿透、熱key、大key,哨兵、叢集,同步機制都應該瞭然於心,具體可以看我的進大廠系列redis專題。
有一個比較少見的問題,tomcat起兩個war包,怎麼識別哪個請求要給到哪個程式?
這個問題同學沒有回答上。(歡迎你留言給出想法哦)
Linux的命令,比如怎麼檢視給檔案按大小排序,主要是檢視日誌相關的技巧命令
這個在上一篇的快手的面試也有,Linux相關的基本上就是這些了,對於日誌的查詢這塊grep、tail等等這些要用的熟練。
volatie記憶體屏障具體是怎麼實現?
關於JMM記憶體模型相關的知識點,必須要掌握。
JVM啟動引數有哪些,怎麼調優,TLAB是什麼,阻塞佇列對比和選擇
JVM調優,根據實際場景舉例,阻塞佇列的問題上一個同學也碰到了,都是基礎知識,應該掌握,TLAB這個稍微有點不常見。
DDD的理解?
對於阿里來說,很負責任的告訴你,基本上DDD是必問,但是這個基本上只要你有一定的自己的理解就可以了。
Reactor模型
這個問題,至少我在美團、餓了麼、阿里多個面試中碰到過,基本也屬於必問的問題。
第一個總結
第一位同學的面試題記憶深刻的就這些了,雖然不多,但是基本上也都覆蓋到了高頻出現的問題,參考價值還是挺大的。總的來說,DDD、Reactor模型可能大部分同學都不是很清楚,可以專門準備一下。
螞蟻金服
CHM結構,執行緒安全保證,加鎖實現細節
ConcurrentHashMap7和8的區別,實現原理這些常考點。
JVM記憶體結構,垃圾回收原理,GC配合策略,排查過程細節和調優方案
還是一樣的問題,JVM、GC、垃圾收集器,調優的方案。
執行緒安全的本質?
要說到原子性、有序性、可見性的問題。
併發鎖,AQS原理
都不是難點,頻繁問。
ThreadLocal原始碼
多次出現的問題,一定要看書。
mysql 幻讀,怎麼加鎖
同樣的問題,參考我的進大廠mysql系列。
秒殺設計
秒殺從流量過濾、快取、非同步佇列、限流、降級這些方面說說就可以了。關於秒殺我的文章裡面也寫過了。
亮點專案
亮點、難點專案一般也都是一定會問你的,事先準備,如果專案實在沒有亮點,可以從業務價值或者一些開源的專案角度來說說,都沒有,我們就聊技術。
淘寶
介紹下專案,整體架構,主要功能
嗯,還是專案,一般都是第一個問題,從專案入手聊技術。
網路模型,NIO,netty
關於NIO\BIO\AIO必須要了解。
JVM,垃圾回收,調優,排查思路
看到有多麼頻繁的出現了嗎?第幾次了?
Redis為什麼快?使用場景?過期策略?
Redis連環炮,同上。
RocketMQ 場景,如何保證不丟訊息?
面阿里可以多準備下RocketMQ相關的,因為無論是開源的ONS還是其他都是基於RMQ的。關於MQ可以看我的進大廠系列MQ專題。
Spring Bean 生命週期
常考點,可以看我的進大廠系列Spring專題。關於Spring相關的面試題其實很少就這麼幾個。
執行緒池引數,執行順序,場景?
執行緒池原理,牢記。
Mysql 儲存引擎,索引
基本上就說InnoDb和Myisam就行了,區別說清楚。
餓了麼
CHM 和 HashTable
還是老問題,就不說了吧。一般都會說到CHM7和8的區別,實現原理區別。
JVM 垃圾回收的原理,GC 排查步驟
第N次出現。
volatile,synchronize
一樣的問題,這些問題都可以看我的進大廠Java基礎系列。
SQL 優化,事務隔離級別
也是第N次出現了。
MQ的區別以及選型
要記一下,RMQ、Kafka、RabbitMQ這些區別,支撐的吞吐量,支援的功能等等。
Redis 分散式鎖
關於分散式鎖,除了基本實現之外,可能還會涉及到一個可重入的實現的問題。
業務冪等實現
就說自己的業務中冪等是怎麼做的就好了。
分庫分表,MyCat 底層實現原理
MyCat問到原理這個倒是不是很多見,分庫分表的很常見,看我的面試專題系列吧。
監控指標,業務分析,業務指標
根據自己使用的監控系統來說,哪些監控項,為什麼?告警策略是什麼,指標,閾值。
亮點業務,好的專案
準備好自己的專案,必問。
平時怎麼學習的?看什麼書?
如果不看書的話,就別吹,一問就露餡。
場景題設計:銀行,人,卡,充值記錄,怎麼進行系統設計,怎麼支撐高併發?
這個場景題還比較簡單吧,可以參考看看我的百億級流量怎麼處理。
聊專案,聊人生
這是最後一面的最後一個問題,不過當時狀態不佳,回答的不好,估計就是因為這個錯過了P7,淚奔~~o(>_<)o ~~
盒馬
可能知道我其他BU已經到了終面,沒怎麼問基礎,主要問的都是專案亮點,設計,發展之類的。
總結
第二位同學也是拿到了餓了麼、盒馬、淘寶的多個offer,很多人也許看了會說,啊,這很簡單啊,我上我也行,不,我覺得你上你真不一定行,面試題寫出來給你看和當場面試的感受還是不太一樣的,很多細節的問題從羅列出來的知識點是體現不出來的。而且個人狀態、情緒都會對發揮產生影響。
關於這個我突然想到知乎的一個問題“你的程式設計水平從什麼時候開始突飛猛進的?”,我想了很久都沒想好怎麼回答,就是突然回頭發現自己之前怎麼寫的程式碼那麼爛?包括現在都會回頭看我為什麼當時的邏輯是這樣寫的?好像,不管面試還是平時,其實都是靠著水滴石穿的功夫罷了。
對吧,哪有那麼多突飛猛進,歲月靜好,不過是每天都在負重前行罷了。
- END -