java“金九銀十”秋招面試旺季就要來了,你準‘背’好了嗎?
如果還沒有的話,那這份面試寶典我想你值得擁有?。。。?/strong>

第一部分 Java相關
1.1 JAVA基礎
面向對象和面向過程的區(qū)別
Java 語言有哪些特點
關于 JVM JDK 和 JRE 最詳細通俗的解答
Oracle JDK 和 OpenJDK 的對比
List 和 Set 的區(qū)別
什么是 Java 程序的主類 應用程序和小程序的主類有何不同
Java 應用程序與小程序之間有那些差別
字符型常量和字符串常量的區(qū)別
Java 面向對象編程三大特性: 封裝 繼承 多態(tài)
構造器 Constructor 是否可被 override
Arrays.sort 實現原理和 Collection 實現原理
重載和重寫的區(qū)別
String StringBuffer 和 StringBuilder 的區(qū)別是什么? String 為什么是不可變的?
在一個靜態(tài)方法內調用一個非靜態(tài)成員為什么是非法的?
在 Java 中定義一個不做事且沒有參數的構造方法的作用
import java 和 和 javax 有什么區(qū)別?
創(chuàng)建一個對象用什么運算符? 對象實體與對象引用有何不同?
HashMap 1.7 與 1.8 的 區(qū)別,說明 1.8 做了哪些優(yōu)化,如何優(yōu)化的?
接口和抽象類的區(qū)別是什么?
成員變量與局部變量的區(qū)別有那些?
一個類的構造方法的作用是什么若一個類沒有聲明構造方法, 該程序能正確執(zhí)行嗎 ? 為什么?
構造方法有哪些特性?
靜態(tài)方法和實例方法有何不同
對象的相等與指向他們的引用相等,兩者有什么不同?
在調用子類構造方法之前會先調用父類沒有參數的構造方法,其目的是?
== 與 equals(重要)
hashCode 與 equals (重要)
為什么 Java 中只有值傳遞?
簡述線程,程序、進程的基本概念。以及他們之間關系是什么?
線程有哪些基本狀態(tài)?
Java 中的異常處理?
異常分類以及處理機制
final finally finalize
強引用 、軟引用、 弱引用、虛引用
Java 序列化中如果有些字段不想進行序列化 怎么辦?
獲取用鍵盤輸入常用的的兩種方法?
1.2 JAVA并發(fā)
Synchronized 用 過 嗎 , 其 原 理 是 什 么 ?
你 剛 才 提 到 獲 取 對 象 的 鎖,這 個 “鎖”到 底 是 什 么 ? 如 何 確 定對 象 的 鎖 ?
什 么 是 可 重 入 性 , 為 什 么 說 Synchronized 是 可 重 入 鎖 ?
JVM 對 Java 的 原 生 鎖 做 了 哪 些 優(yōu) 化 ?
為 什 么 說 Synchronized 是 非 公 平 鎖 ?
什 么 是 鎖 消 除 和 鎖 粗 化 ?
為 什 么 說 Synchronized 是 一 個 悲 觀 鎖 ? 樂 觀 鎖 的 實 現 原 理
又 是 什 么 ? 什 么 是 CAS, 它 有 什 么 特 性 ?
既 然 提 到 可 以 通 過 配 置 不 同 參 數 創(chuàng) 建 出 不 同 的 線 程 池 , 那 么Java 中 默 認 實 現 好 的 線 程 池 又 有 哪 些 呢 ? 請 比 較 它 們 的 異 同 。
如 何 在 Java 線 程 池 中 提 交 線 程 ?
什 么 是 Java 的 內 存 模 型,Java 中 各 個 線 程 是 怎 么 彼 此 看 到對 方 的 變 量 的 ?
請 談 談 volatile 有 什 么 特 點 , 為 什 么 它 能 保 證 變 量 對 所 有 線程 的 可 見 性 ?
既 然 volatile 能 夠 保 證 線 程 間 的 變 量 可 見 性 , 是 不 是 就 意 味著 基 于 volatile 變 量 的 運 算 就 是 并 發(fā) 安 全 的 ?
請 對 比 下 volatile 對 比 Synchronized 的 異 同 。
很 多 人 都 說 要 慎 用 ThreadLocal, 談 談 你 的 理 解 , 使 用
樂 觀 鎖 一 定 就 是 好 的 嗎 ?
跟 Synchronized 相 比 , 可 重 入 鎖 ReentrantLock 其 實 現原 理 有 什 么 不 同 ?
那 么 請 談 談 AQS 框 架 是 怎 么 回 事 兒 ?
請 盡 可 能 詳 盡 地 對 比 下 Synchronized 和 ReentrantLock的 異 同 。
ReentrantLock 是 如 何 實 現 可 重 入 性 的 ?
除 了 ReetrantLock, 你 還 接 觸 過 JUC 中 的 哪 些 并 發(fā) 工 具 ?
請 談 談 ReadWriteLock 和 StampedLock。
如 何 讓 Java 的 線 程 彼 此 同 步 ? 你 了 解 過 哪 些 同 步 器 ? 請 分 別介 紹 下 。
CyclicBarrier 和 CountDownLatch 看 起 來 很 相 似 , 請 對 比下 呢 ?
Java 中 的 線 程 池 是 如 何 實 現 的 ?
創(chuàng) 建 線 程 池 的 幾 個 核 心 構 造 參 數 ?
線 程 池 中 的 線 程 是 怎 么 創(chuàng) 建 的 ? 是 一 開 始 就 隨 著 線 程 池 的 啟 動創(chuàng) 建 好 的 嗎 ?
第二部分 Spring相關
1.1 Spring
什么是 Spring 框架?Spring 框架有哪些主要模塊?
使用 Spring 框架能帶來哪些好處?
Spring 框架中有哪些不同類型的事件?
Spring 框架中都用到了哪些設計模式?
什么是控制反轉(IOC)?
請解釋下 Spring 框架中的 IoC ?
BeanFactory 和 和 ApplicationContext 有什么區(qū)別?
Spring 有幾種配置方式?
如何用基于 XML 配置的方式配置 Spring ?
如何用基于 Java 配置的方式配置 Spring ?
怎樣用注解的方式配置 Spring ?
請解釋 Spring Bean 的生命周期?
Spring Bean 的作用域之間有什么區(qū)別?
什么是 Spring inner beans ?
Spring 框架中的單例 Beans 是線程安全的么?
請舉例說明如何在 Spring 中注入一個 Java Collection ?
如何向 Spring Bean 中注入一個 Java.util.Properties ?
請解釋 Spring Bean 的自動裝配?
請解釋自動裝配模式的區(qū)別?
如何開啟基于注解的自動裝配
請舉例解釋@Required 注解?
請舉例解釋@Autowired 注解?
請舉例說明@Qualifier 注解?
構造方法注入和設值注入有什么區(qū)別?
FileSystemResource 和 和 ClassPathResource 有何區(qū)別?
BeanFactory 和 FactoryBean
Spring IOC 的理解,其初始化過程?
BeanFactory 和 ApplicationContext?
Spring Bean 的生命周期,如何被管理的?Spring Bean 的加載過程是怎樣的?
如果要你實現Spring AOP,請問怎么實現?
如果要你實現Spring IOC,你會注意哪些問題?
Spring 是如何管理事務的,事務管理機制?
Spring 的不同事務傳播行為有哪些,干什么用的?
Spring 中用到了那些設計模式?
Spring MVC 的工作原理?
Spring 循環(huán)注入的原理?
Spring 如何保證 Controller 并發(fā)的安全?
2.2 Spring Boot
什么是 Spring Boot?
Spring Boot 有哪些優(yōu)點?
什么是 JavaConfig?
如何重新加載 Spring Boot 上的更改,而無需重新啟動服務器?
Spring Boot 中的監(jiān)視器是什么?
如何在 Spring Boot 中禁用 Actuator 端點安全性?
如何在自定義端口上運行 Spring Boot 應用程序?
什么是 YAML?
什么是 Spring Profiles?
什么是 Spring Batch?
如何集成 Spring Boot 和 ActiveMQ?
如何使用 Spring Boot 實現分頁和排序?
什么是 Swagger?你用 Spring Boot 實現了它嗎?
什么是 FreeMarker 模板?
如何使用 Spring Boot 實現異常處理?
您使用了哪些 starter maven 依賴項?
什么是 CSRF 攻擊?
什么是 WebSockets?
什么是 AOP?
什么是 Apache Kafka?
我們如何監(jiān)視所有 Spring Boot 微服務?
2.3 Spring MVC
什么是 SpringMvc?
Spring MVC 的優(yōu)點:
SpringMVC 工作原理?
SpringMVC 流程?
SpringMvc 的控制器是不是單例模式,如果是,有什么問題,怎么解決?
如果你也用過 struts2.簡單介紹下 springMVC 和 struts2 的區(qū)別有哪些?
SpingMvc 中的控制器的注解一般用那個,有沒有別的注解可以替代?
@RequestMapping 注解用在類上面有什么作用?
怎么樣把某個請求映射到特定的方法上面?
如果在攔截請求中,我想攔截 get 方式提交的方法,怎么配置?
怎么樣在方法里面得到 Request,或者 Session?
我想在攔截的方法里面得到從前臺傳入的參數,怎么得到?
如果前臺有很多個參數傳入,并且這些參數都是一個對象的,那么怎么樣快速得到這個對象?
SpringMvc 中函數的返回值是什么?
SpringMVC 怎么樣設定重定向和轉發(fā)的?
SpringMvc 用什么對象從后臺向前臺傳遞數據的?
SpringMvc 中有個類把視圖和數據都合并的一起的,叫什么?
怎么樣把 ModelMap 里面的數據放入 Session 里面?
SpringMvc 怎么和 AJAX 相互調用的?
講下 SpringMvc 的執(zhí)行流程
SpringMvc 里面攔截器是怎么寫的?
當一個方法向 AJAX 返回特殊對象,譬如 Object,List 等,需要做什么處理?
2.4 Spring Cloud
什么是 Spring Cloud?
使用 Spring Cloud 有什么優(yōu)勢?
服務注冊和發(fā)現是什么意思?Spring Cloud 如何實現?
負載平衡的意義什么?
什么是 Hystrix?它如何實現容錯?
什么是 Hystrix 斷路器?我們需要它嗎?
什么是 Spring Cloud Bus?我們需要它嗎?
什么是 Netflix Feign?它的優(yōu)點是什么?
第三部分 數據庫相關
3.1 MySQL高頻面試知識點
事務四大特性(ACID)原子性、一致性、隔離性、持久性?
事務的并發(fā)?事務隔離級別,每個級別會引發(fā)什么問題,MySQL默認是哪個級別?
MySQL常見的三種存儲引擎(InnoDB、MyISAM、MEMORY)的區(qū)別?
MySQL的MyISAM與InnoDB兩種存儲引擎在,事務、鎖級別,各自的適用場景?
查詢語句不同元素(where、jion、limit、group by、having等等)執(zhí)行先后順序?
什么是臨時表,臨時表什么時候刪除?
MySQL B+Tree索引和Hash索引的區(qū)別?
sql查詢語句確定創(chuàng)建哪種類型的索引?如何優(yōu)化查詢?
聚集索引和非聚集索引區(qū)別?
有哪些鎖(樂觀鎖悲觀鎖),select 時怎么加排它鎖?
非關系型數據庫和關系型數據庫區(qū)別,優(yōu)勢比較?
數據庫三范式,根據某個場景設計數據表?
數據庫的讀寫分離、主從復制,主從復制分析的 7 個問題?
使用explain優(yōu)化sql和索引?
MySQL慢查詢怎么解決?
什么是 內連接、外連接、交叉連接、笛卡爾積等?
mysql都有什么鎖,死鎖判定原理和具體場景,死鎖怎么解決?
varchar和char的使用場景?
mysql 高并發(fā)環(huán)境解決方案?
數據庫崩潰時事務的恢復機制(REDO日志和UNDO日志)?
3.2 MySQL性能調優(yōu)實踐
為查詢緩存優(yōu)化你的查詢
EXPLAIN你的SELECT查詢
當只要一行數據時使用LIMIT 1
為搜索字段建索引
在Join表的時候使用相當類型的例,并將其索引
千萬不要 ORDER BY RAND()
避免 SELECT *
永遠為每張表設置一個 ID
使用 ENUM 而不是 VARCHAR
從 PROCEDURE ANALYSE() 取得建議
盡可能的使用 NOT NULL
Prepared Statements
無緩沖的查詢
把 IP 地址存成 UNSIGNED INT
固定長度的表會更快
垂直分割
拆分大的 DELETE 或 INSERT 語句
越小的列會越快
選擇正確的存儲引擎
使用一個對象關系映射器(Object Relational Mapper)
小心“永久鏈接”
為查詢緩存優(yōu)化你的查詢
EXPLAIN你的SELECT查詢
當只要一行數據時使用LIMIT 1
為搜索字段建索引
在Join表的時候使用相當類型的例,并將其索引
千萬不要 ORDER BY RAND()
避免 SELECT *
永遠為每張表設置一個 ID
使用 ENUM 而不是 VARCHAR
從 PROCEDURE ANALYSE() 取得建議
盡可能的使用 NOT NULL
Prepared Statements
無緩沖的查詢
把 IP 地址存成 UNSIGNED INT
固定長度的表會更快
垂直分割
拆分大的 DELETE 或 INSERT 語句
越小的列會越快
選擇正確的存儲引擎
使用一個對象關系映射器(Object Relational Mapper)
小心“永久鏈接”
第四部分 Redis
redis 簡介
為什么要用 redis /為什么要用緩存(高性能、高并發(fā))
為什么要用 redis 而不用 map/guava 做緩存?
redis 和 memcached 的區(qū)別
redis 常見數據結構以及使用場景分析(String、Hash、List、Set、Sorted Set)
redis 設置過期時間
redis 內存淘汰機制(MySQL里有2000w數據,Redis中只存20w的數據,如何保證Redis中的數據都是熱點數據?)
redis 持久化機制(怎么保證 redis 掛掉之后再重啟數據可以進行恢復)
redis 事務
Redis 常見異常及解決方案(緩存穿透、緩存雪崩、緩存預熱、緩存降級)
分布式環(huán)境下常見的應用場景(分布式鎖、分布式自增 ID)
Redis 集群模式(主從模式、哨兵模式、Cluster 集群模式)
如何解決 Redis 的并發(fā)競爭 Key 問題
如何保證緩存與數據庫雙寫時的數據一致性?
第五部分 分布式相關
Dubbo的底層實現原理和機制
描述一個服務從發(fā)布到被消費的詳細過程
分布式系統怎么做服務治理
接口的冪等性的概念
消息中間件如何解決消息丟失問題
Dubbo的服務請求失敗怎么處理
重連機制會不會造成錯誤
對分布式事務的理解
如何實現負載均衡,有哪些算法可以實現?
Zookeeper的用途,選舉的原理是什么?
數據的垂直拆分水平拆分。
zookeeper原理和適用場景
zookeeper watch機制
redis/zk節(jié)點宕機如何處理
分布式集群下如何做到唯一序列號
如何做一個分布式鎖
用過哪些MQ,怎么用的,和其他mq比較有什么優(yōu)缺點,MQ的連接是線程安全的嗎
MQ系統的數據如何保證不丟失
列舉出你能想到的數據庫分庫分表策略;分庫分表后,如何解決全表查詢的問題
zookeeper的選舉策略
第六部分 JVM
JVM 內存結構
HotSpot 虛擬機對象探秘
垃圾收集策略與算法
HotSpot 垃圾收集器
內存分配與回收策略
JVM 性能調優(yōu)
類文件結構
類加載的時機
類加載的過程
類加載器
第七部分 算法
編程技巧
線性表
字符串
棧和隊列
樹
排序
查找
暴力枚舉法
廣度優(yōu)先搜素
深度優(yōu)先搜素
分治法
貪心法
動態(tài)規(guī)劃
圖
細節(jié)實現題
除了分享上面的面試題外,還收集了各方面的,當前公司的,還有自己收集總結的面試題,下面的圖片截取的有pdf,有如果有需要的自取.
各大公司面試題集合:

簡歷模板:

鏈接: https://pan.baidu.com/s/1DO6XGkbmak7KIt6Y7JQqyw
提取碼:fgj6
不知道會不會失效,如果失效點擊(778490892)或者掃描下面二維碼,進群獲取,鏈接補發(fā)不過來,謝謝。

最后
歡迎大家評論區(qū)一起交流,相互提升;整理資料不易,如果喜歡文章記得點個贊哈,感謝大家支持?。?!