我作Java也十來年了,如今也算是中層管理,每次招聘都須要找一些面試題,乾脆本身整理了一份,這份面試寶典是從我 去年開始收集的,一方面是給公司招聘用,另外一方面也是想用它,來挖掘本身在 Java 技術棧中,還有那些知識點我瞭解的不夠,而後再去複習一遍,以此來提升本身的技術深度,也增長一下本身的技術廣度。java
而後說回面試的事,這份面試寶典原本是隻有咱們內部使用的,可到後來有不少朋友在微信上聯繫到我,讓我幫他們找一些面試方面的資料,並且這些關係也不太好拒絕,到最後我乾脆就有了這麼一個想法,要不要把我整理的這面試寶典,去幫助更多的人。因而我就花了兩天時間把面試寶典從新優化整理了一下放在了下面:mysql
說了這麼多,下面進入咱們本文的主題,咱們這份面試題,包含的內容了十九了模塊:Java 基礎、容器、多線程、反射、對象拷貝、Java Web 模塊、異常、網絡、設計模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。以下圖所示:程序員
適宜閱讀人羣面試
須要面試的初/中/高級 java 程序員redis
想要查漏補缺的人算法
想要不斷完善和擴充本身 java 技術棧的人spring
{ 程序計數器 , 虛擬機棧 ,本地方法棧 , 堆 ,方法區 ,元空間 } // 每一個區域要能介紹一下sql
2. Minor GC 觸發條件 : eden區剩餘內存是否足夠 兩種狀況分開分析設計模式
FULL GC 觸發條件 : Minor GC 平均晉升空間大小 > 老年代連續剩餘空間,則觸發FULL GC緩存
深刻一些,:GC root對象有哪些?爲何選擇他們作GC root對象
4. 垃圾收集算法 : { 標記清除算法 、標記整理算法 、 複製算法、 分代收集算法 }
深刻一些: 各個算法的優勢和適用場景
5. 垃圾收集器 : { serial 、 parallel 、 CMS 、 G1 }
CMS 、G1 重點 , 介紹工做流程和優缺點
6. 內存泄漏
例子: { 單例 , 容器 等等}
緣由 : 長生命週期持有短生命週期引用
7. 引用類型 ; { 強引用、 軟引用、 弱引用 、 虛引用 }
有哪些類加載器 , 可否自定義 Java.Object.String 的類加載器 ?
1. 線程的狀態 : { new ,runnalbe , wait , time-wait , block , terminated }
2. 進程 、 線程 、 協程 的含義和區別 // 我的理解 是一組漸進提出的概念
3. 進程間通訊方式 : { 管道 、FIFO 、 信號量 、 共享內存 、 消息隊列 、 Socket }
4. 如何避免死鎖 ? 死鎖的四個必要條件
5. Sleep和wait的區別
【高頻】Sychronized 和 lock 的區別 ?
8. volatile的做用 : { 指令重拍 、 保證變量的可見性(設計JMM)}
9. ThreadLocal 底層原理
10. 【高頻】 線程池
線程池構造器涉及哪些參數 : { corePoolSize , maximumPoolSzie , timeout , timeUnit , RejectHandler , 等待隊列 , 線程工廠 }
介紹線程池工做過程?
線程池拒絕策略那些?
適用Executor建立線程池的弊端?
11. AQS 框架原理和 源碼理解
1. 【高頻】MyISAM 和 InnoDB的區別 : {是否支持行鎖 、 是否支持十五 、 是否支持 MVCC 、 底層索引結構不一樣 }
2. 事務特性ACID
深刻一些 : 爲何要有一致性 ? AID不是已經保證了一致性了嗎 ?
3. 併發事務帶來的問題 : { 髒讀 、 修改丟失 、 不可重複讀 、 幻影讀 }
5 【高頻】 MVCC機制
6 . 【高頻】索引
爲何索引使用B+樹結構,而不是B樹
爲何索引使用B+樹結構,而不是紅黑樹 : { 磁盤預讀取 、紅黑樹高度 }
7. 聚簇索引和非聚簇索引區別? 主鍵索引和二級索引瞭解嗎?
8 . 爲何不對每一個列建立索引呢?
9 【高頻】SQL語句優化 ,SQL題目(字節要求擼代碼)
10. explain中 rows type key extra字段的含義?
11. count(1) count(*) count(列值)的區別
1.什麼是Redis
2.Redis有哪些優缺點
3.爲何要用 Redis /爲何要用緩存
4.爲何要用 Redis 而不用 map/guava 作緩存?
5.Redis爲何這麼快
6.Redis有哪些數據類型
7.Redis的應用場景
8.什麼是Redis持久化?
9.Redis 的持久化機制是什麼?各自的優缺點?
10.如何選擇合適的持久化方式
11.Redis持久化數據和緩存怎麼作擴容?
12.過時鍵的刪除策略
13.Redis的過時鍵的刪除策略
14.Redis key的過時時間和永久有效分別怎麼設置?
15.咱們知道經過expire來設置key 的過時時間,那麼對過時的數據怎麼處理呢?