面試題如下
一面(主要是jvm,并發,鎖,數據結構等基礎)
1.自我介紹(說說自己的擅長及拿手的技術)
2.自我介紹(說說自己的擅長及拿手的技術)說說treemap和HashMap的區別?HashMap和ConcurrentHashMap的區別?
3.HashMap底層如何實現(JDK1.8有所改動)?
4.說說Hash的一致算法?
5.你知道的GC算法和回收策略有哪些?GC的機制是什么?
6.垃圾回收器的基本原理?是否可以立即回收內存?怎么樣主動的通知JVM進行垃圾回收?
7.雙親委派模型機制
8.線程池創建的幾個核心構造參數是什么?
9.樂觀鎖和悲觀鎖?可重入鎖和Synchronized?
10.他們都是可重入鎖嗎?哪個效率更高?
11.CountDownLaunch和Cylicbarrior的區別以及分別是在哪樣場景下使用的?
12.Http和Https的區別以及Https加密的方式?
13.以后的職業規劃和想法
二面(主要是數據庫,協議,Spring等)
1.自我介紹,聊下自己認為做得很好的項目!
2.InnoDB支持的四種事務隔離級別名稱是什么?之間的區別是什么?MySQL隔離級別是什么?
3.說說事務的特性?講講對慢查詢的分析?
4.你理解的BTree機制?
5.有哪些MySQL常用的優化方法?
6.Http請求過程,DNS解析的過程?
7.三次握手和四次握手的過程?
8.B+樹索引和Hash索引之間的區別?
9.SpringIOC如何管理Bean之間的依賴關系,怎么樣避免循環依賴?
10.SpringBean創建過程中的設計模式?
11.說說AOP的實現原理?
12.Tomcat的基本架構是什么?
三面(主要是緩存,高并發,分布式)
1.自己項目中的總結的并發經驗
2.說說MySQL的鎖并發?加鎖的機制是什么?
3.高并發場景下如何防止死鎖,保證數據的一致性?
4.集群和負載均衡的算法與實現?
5.說說分庫與分表設計?
6.分庫分表帶來的分布式困境與對應之策有哪些?
7.Redis和Setnx命令使如何實現分布式鎖的?使用Redis怎么進行異步隊列?會有什么缺點?
8.緩存擊穿的概念和解決方案?
9.Redis的數據結構?線程模型?Redis的數據淘汰機制
10.Redis的數據一致性問題
11.MQ底層原理的實現?
12.阻塞隊列不用Java提供的該怎么實現?
13.講講負載均衡的原理?
14.如何實現高并發環境下的削峰、限流?
四面(主要項目入手)
1.講講項目中用到的中間件(Dubbo/MQ/Zookeeper/Redis/Kafka)?
2.什么情況下會造成雪崩?該怎么避免這種情況?
3.高并發架構的設計思路?
4.以前的項目中遇到的問題和解決策略?
5.生活中遇到過哪些挫折?最后怎么解決的?
---------------------