面試質量非常高。。。。非常高。。。高。。。
一面
- 自我介紹
- 看過hotspot哪些模塊,模板解釋器工作說一下,生成的native code放在哪,怎么處理safepoint的
- 說項目,實現了哪些字節碼指令;monitorenter monitorexit怎么實現的;GC;new Thread怎么實現的;synchronized怎么實現的,對象鎖是每個對象都有嗎,怎么確定是否給對象分配對鎖;怎么進行對象分配的,STW之后用戶線程還能繼續嗎so on
- 算法題,無向圖的復制;不消耗額外空間重寫一個;如果多線程怎么做,說一下
- lookupswitch和tableswitch區別
- 學校開過哪些課,編譯原理自己學的嗎
- Collections.sort(),歸並快排區別,為什么jawa老版本用歸並不用快排
- HashMap說一下,cpp的map和jawa的HashMap區別,hash沖突有哪些解決方法,unordered_map怎么解決hash沖突的
- GC新生代復制怎么解決對象指針改變(移動)的問題的,CMS寫屏障,三色標記
- 調試方法有哪些,條件斷點打過嗎
- 有什么要問的
二面
- C++和jawa區別,確定性gc非確定性gc區別
- JMM 看過哪些,volatile重排序,sfence lfence mfence
- X86/x64 加不加volatile原子性與否,如果用jawa你會怎么做
- 口述引用計數智能指針實現
- C++ RAII, jawa能實現RAII嗎
- C++怎么做一個內存檢測,那種可以看內存分布情況的
- C++怎么做一個內存泄漏檢測工具,類似valgrind
- 如果讓你給C++加一個gc怎么做
- 參加過哪些開源社區,提交的請求為什么沒有merge;成績怎么樣,實習滿分是什么概念,英語怎么樣,翻譯的effective modern cpp是幫老師翻譯的嗎etc
- 標量替換,逃逸分析,標量是什么
- 你的JVM怎么處理safepoint,這種實現有什么問題,如果for循環很久到不了safe point就內存溢出怎么辦,回邊有了解嗎
- 有什么要問的
三面
三面問了一個宇宙。。。
- HotSpot的oop是什么,簡單說一下
- JVM的偏向鎖,輕量級鎖,重量級鎖。偏向鎖怎么做的,輕量級怎么膨脹到重量級。
- JVM新生代划分,TLAB
- CMS詳細階段以及做的事情
- C++的RAII,lock_guard,有什么好處
- C++的shared_ptr和unique_ptr
- Full GC是什么,在什么時候發生,這個正常嗎,解決方案
- Safepoint知道嗎,如果在JNI方法里面走到JNI的safepoint,hotspot大概是怎么實現safepoint的
- G1GC用過嗎,用戶能控制吞吐量嗎,CMS和G1GC各有什么好處,什么場景用什么
- 一個程序的編譯流程,詞法分析語法分析,中間IR,代碼生成
- MySQL分庫分表,思路就行 (!)
- 分布式鎖怎么實現 (!)
- 如果一個問題你實在解決不了怎么辦,就是gdb coredump,文檔都搞不定的情況
- 如果項目很急,另一個同事非常不給力,你怎么辦
- SpringBoot用過嗎,相對於傳統spring有什么好處 (!)
- MVC是什么,分別說一下,你覺得VUE做MVC和后端做有什么不同 (!)
- Go語言用過嗎,協程說一下,和線程比較一下
- Maven可以做什么,能自動管理依賴嗎,git rebase,git merge區別
- 持續集成用過嗎,是什么東西,為什么要用它,交叉編譯不也是可以嗎
- CAS在底層做了,lock cmpxchg怎么做的
- SIMD知道嗎,說一下 (!)
- JVMTI說一下 (!)
- 算法,二叉樹的分層遍歷
四面
- 自我介紹
- 創建線程的方式有哪些,Java線程模型;1:1和N:M優缺點
- 線程死鎖怎么排查;jps jmap分別用於什么,如果上述方案排查不到怎么辦
- 怎么查看Java線程對應的OS線程PID
- synchronized和ReentrantLock
- 線程池工作原理,怎么處理IDLE線程的,代碼上說一下
- ConcurrentHashmap和JDK8之前有什么區別;size是怎么求的
- 對象的hashCode底層有哪幾種方法;
- 快排原理,非遞歸怎么實現;堆排序原理
- MySQL隔離級別,臟讀幻讀是什么,會在哪一級發生
- 索引的底層在InnoDB和MyISAM上的不同
- 參加過什么開源社區;生活學習比賽etc;
- 有什么要問的
HR面
人生境遇追求
