** 金九銀十的面試旺季即將到來,大家準備的怎么樣了?**
今年的處境大家都挺難的,但是也不要因此而墮落,太閑了,就多刷題、堅持學習總歸是對自己有好處的.
在此,整理了下金九銀十的面試知識點(附答案),分享出來給各位朋友看下,當然這只是部分資料,大家可以稍微借鑒下,即可.

第一部分 Java相關
1.1 JAVA基礎
- 面向物件和面向程序的區別
- Java 語言有哪些特點
- 關于 JVM JDK 和 JRE 最詳細通俗的解答
- Oracle JDK 和 OpenJDK 的對比
- List 和 Set 的區別
- 什么是 Java 程式的主類 應用程式和小程式的主類有何不同
- Java 應用程式與小程式之間有那些差別
- 字符型常量和字串常量的區別
- Java 面向物件編程三大特性: 封裝 繼承 多型
- 構造器 Constructor 是否可被 override
- Arrays.sort 實作原理和 Collection 實作原理
- 多載和重寫的區別
- String StringBuffer 和 StringBuilder 的區別是什么? String 為什么是不可變的?
- 在一個靜態方法內呼叫一個非靜態成員為什么是非法的?
- 在 Java 中定義一個不做事且沒有引數的構造方法的作用
- import java 和 和 javax 有什么區別?
- 創建一個物件用什么運算子? 物件物體與物件參考有何不同?
- HashMap 1.7 與 1.8 的 區別,說明 1.8 做了哪些優化,如何優化的?
- 介面和抽象類的區別是什么?
- 成員變數與區域變數的區別有那些?
- 一個類的構造方法的作用是什么若一個類沒有宣告構造方法, 該程式能正確執行嗎 ? 為什么?
- 構造方法有哪些特性?
- 靜態方法和實體方法有何不同
- 物件的相等與指向他們的參考相等,兩者有什么不同?
- 在呼叫子類構造方法之前會先呼叫父類沒有引數的構造方法,其目的是?
- == 與 equals(重要)
- hashCode 與 equals (重要)
- 為什么 Java 中只有值傳遞?
- 簡述執行緒,程式、行程的基本概念,以及他們之間關系是什么?
- 執行緒有哪些基本狀態?
- Java 中的例外處理?
- 例外分類以及處理機制
- final finally finalize
- 強參考 、軟參考、 弱參考、虛參考
- Java 序列化中如果有些欄位不想進行序列化 怎么辦?
- 獲取用鍵盤輸入常用的的兩種方法?
1.2 JAVA并發
- Synchronized 用 過 嗎 , 其 原 理 是 什 么 ?
- 你 剛 才 提 到 獲 取 對 象 的 鎖,這 個 “鎖”到 底 是 什 么 ? 如 何 確 定對 象 的 鎖 ?
- 什 么 是 可 重 入 性 , 為 什 么 說 Synchronized 是 可 重 入 鎖 ?
- JVM 對 Java 的 原 生 鎖 做 了 哪 些 優 化 ?
- 為 什 么 說 Synchronized 是 非 公 平 鎖 ?
- 什 么 是 鎖 消 除 和 鎖 粗 化 ?
- 為 什 么 說 Synchronized 是 一 個 悲 觀 鎖 ? 樂 觀 鎖 的 實 現 原 理
- 又 是 什 么 ? 什 么 是 CAS, 它 有 什 么 特 性 ?
- 既 然 提 到 可 以 通 過 配 置 不 同 參 數 創 建 出 不 同 的 線 程 池 , 那 么Java 中 默 認 實 現 好 的 線 程 池 又 有 哪 些 呢 ? 請 比 較 它 們 的 異 同 ,
- 如 何 在 Java 線 程 池 中 提 交 線 程 ?
- 什 么 是 Java 的 內 存 模 型,Java 中 各 個 線 程 是 怎 么 彼 此 看 到對 方 的 變 量 的 ?
- 請 談 談 volatile 有 什 么 特 點 , 為 什 么 它 能 保 證 變 量 對 所 有 執行緒 的 可 見 性 ?
- 既 然 volatile 能 夠 保 證 線 程 間 的 變 量 可 見 性 , 是 不 是 就 意 味著 基 于 volatile 變 量 的 運 算 就 是 并 發 安 全 的 ?
- 請 對 比 下 volatile 對 比 Synchronized 的 異 同 ,
- 很 多 人 都 說 要 慎 用 ThreadLocal, 談 談 你 的 理 解 , 使 用
- 樂 觀 鎖 一 定 就 是 好 的 嗎 ?
- 跟 Synchronized 相 比 , 可 重 入 鎖 ReentrantLock 其 實 現原 理 有 什 么 不 同 ?
- 那 么 請 談 談 AQS 框 架 是 怎 么 回 事 兒 ?
- 請 盡 可 能 詳 盡 地 對 比 下 Synchronized 和 ReentrantLock的 異 同 ,
- ReentrantLock 是 如 何 實 現 可 重 入 性 的 ?
- 除 了 ReetrantLock, 你 還 接 觸 過 JUC 中 的 哪 些 并 發 工 具 ?
- 請 談 談 ReadWriteLock 和 StampedLock,
- 如 何 讓 Java 的 線 程 彼 此 同 步 ? 你 了 解 過 哪 些 同 步 器 ? 請 分 別介 紹 下 ,
- CyclicBarrier 和 CountDownLatch 看 起 來 很 相 似 , 請 對 比下 呢 ?
- Java 中 的 線 程 池 是 如 何 實 現 的 ?
- 創 建 線 程 池 的 幾 個 核 心 構 造 參 數 ?
- 線 程 池 中 的 線 程 是 怎 么 創 建 的 ? 是 一 開 始 就 隨 著 線 程 池 的 啟 動創 建 好 的 嗎 ?
JAVA并發:答案

第二部分 Spring相關
1.1 Spring
- 什么是 Spring 框架?Spring 框架有哪些主要模塊?
- 使用 Spring 框架能帶來哪些好處?
- Spring 框架中有哪些不同型別的事件?
- Spring 框架中都用到了哪些設計模式?
- 什么是控制反轉(IOC)?
- 請解釋下 Spring 框架中的 IoC ?
- BeanFactory 和 和 ApplicationContext 有什么區別?
- Spring 有幾種配置方式?
- 如何用基于 XML 配置的方式配置 Spring ?
- 如何用基于 Java 配置的方式配置 Spring ?
- 怎樣用注解的方式配置 Spring ?
- 請解釋 Spring Bean 的生命周期?
- Spring Bean 的作用域之間有什么區別?
- 什么是 Spring inner beans ?
- Spring 框架中的單例 Beans 是執行緒安全的么?
- 請舉例說明如何在 Spring 中注入一個 Java Collection ?
- 如何向 Spring Bean 中注入一個 Java.util.Properties ?
- 請解釋 Spring Bean 的自動裝配?
- 請解釋自動裝配模式的區別?
- 如何開啟基于注解的自動裝配
- 請舉例解釋@Required 注解?
- 請舉例解釋@Autowired 注解?
- 請舉例說明@Qualifier 注解?
- 構造方法注入和設值注入有什么區別?
- FileSystemResource 和 和 ClassPathResource 有何區別?
- BeanFactory 和 FactoryBean
- Spring IOC 的理解,其初始化程序?
- BeanFactory 和 ApplicationContext?
- Spring Bean 的生命周期,如何被管理的?Spring Bean 的加載程序是怎樣的?
- 如果要你實作Spring AOP,請問怎么實作?
- 如果要你實作Spring IOC,你會注意哪些問題?
- Spring 是如何管理事務的,事務管理機制?
- Spring 的不同事務傳播行為有哪些,干什么用的?
- Spring 中用到了那些設計模式?
- Spring MVC 的作業原理?
- Spring 回圈注入的原理?
- Spring 如何保證 Controller 并發的安全?
Spring:答案

2.2 Spring Boot
- 什么是 Spring Boot?
- Spring Boot 有哪些優點?
- 什么是 JavaConfig?
- 如何重新加載 Spring Boot 上的更改,而無需重新啟動服務器?
- Spring Boot 中的監視器是什么?
- 如何在 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?
- 我們如何監視所有 Spring Boot 微服務?
Spring Boot:答案

2.3 Spring MVC
- 什么是 SpringMvc?
- Spring MVC 的優點:
- SpringMVC 作業原理?
- SpringMVC 流程?
- SpringMvc 的控制器是不是單例模式,如果是,有什么問題,怎么解決?
- 如果你也用過 struts2.簡單介紹下 springMVC 和 struts2 的區別有哪些?
- SpingMvc 中的控制器的注解一般用那個,有沒有別的注解可以替代?
- @RequestMapping 注解用在類上面有什么作用?
- 怎么樣把某個請求映射到特定的方法上面?
- 如果在攔截請求中,我想攔截 get 方式提交的方法,怎么配置?
- 怎么樣在方法里面得到 Request,或者 Session?
- 我想在攔截的方法里面得到從前臺傳入的引數,怎么得到?
- 如果前臺有很多個引數傳入,并且這些引數都是一個物件的,那么怎么樣快速得到這個物件?
- SpringMvc 中函式的回傳值是什么?
- SpringMVC 怎么樣設定重定向和轉發的?
- SpringMvc 用什么物件從后臺向前臺傳遞資料的?
- SpringMvc 中有個類把視圖和資料都合并的一起的,叫什么?
- 怎么樣把 ModelMap 里面的資料放入 Session 里面?
- SpringMvc 怎么和 AJAX 相互呼叫的?
- 講下 SpringMvc 的執行流程
- SpringMvc 里面攔截器是怎么寫的?
- 當一個方法向 AJAX 回傳特殊物件,譬如 Object,List 等,需要做什么處理?
Spring MVC:答案

2.4 Spring Cloud
- 什么是 Spring Cloud?
- 使用 Spring Cloud 有什么優勢?
- 服務注冊和發現是什么意思?Spring Cloud 如何實作?
- 負載平衡的意義什么?
- 什么是 Hystrix?它如何實作容錯?
- 什么是 Hystrix 斷路器?我們需要它嗎?
- 什么是 Spring Cloud Bus?我們需要它嗎?
- 什么是 Netflix Feign?它的優點是什么?
Spring Cloud:答案

第三部分 資料庫相關
3.1 MySQL高頻面試知識點
- 事務四大特性(ACID)原子性、一致性、隔離性、持久性?
- 事務的并發?事務隔離級別,每個級別會引發什么問題,MySQL默認是哪個級別?
- MySQL常見的三種存盤引擎(InnoDB、MyISAM、MEMORY)的區別?
- MySQL的MyISAM與InnoDB兩種存盤引擎在,事務、鎖級別,各自的適用場景?
- 查詢陳述句不同元素(where、jion、limit、group by、having等等)執行先后順序?
- 什么是臨時表,臨時表什么時候洗掉?
- MySQL B+Tree索引和Hash索引的區別?
- sql查詢陳述句確定創建哪種型別的索引?如何優化查詢?
- 聚集索引和非聚集索引區別?
- 有哪些鎖(樂觀鎖悲觀鎖),select 時怎么加排它鎖?
- 非關系型資料庫和關系型資料庫區別,優勢比較?
- 資料庫三范式,根據某個場景設計資料表?
- 資料庫的讀寫分離、主從復制,主從復制分析的 7 個問題?
- 使用explain優化sql和索引?
- MySQL慢查詢怎么解決?
- 什么是 內連接、外連接、交叉連接、笛卡爾積等?
- mysql都有什么鎖,死鎖判定原理和具體場景,死鎖怎么解決?
- varchar和char的使用場景?
- mysql 高并發環境解決方案?
- 資料庫崩潰時事務的恢復機制(REDO日志和UNDO日志)?
MySQL高頻面試知識點:答案

3.2 MySQL性能調優實踐
- 為查詢快取優化你的查詢
- 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)
- 小心“永久鏈接”
- 為查詢快取優化你的查詢
- 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)
- 小心“永久鏈接”
MySQL性能調優實踐答案

第四部分 Redis
- redis 簡介
- 為什么要用 redis /為什么要用快取(高性能、高并發)
- 為什么要用 redis 而不用 map/guava 做快取?
- redis 和 memcached 的區別
- redis 常見資料結構以及使用場景分析(String、Hash、List、Set、Sorted Set)
- redis 設定過期時間
- redis 記憶體淘汰機制(MySQL里有2000w資料,Redis中只存20w的資料,如何保證Redis中的資料都是熱點資料?)
- redis 持久化機制(怎么保證 redis 掛掉之后再重啟資料可以進行恢復)
- redis 事務
- Redis 常見例外及解決方案(快取穿透、快取雪崩、快取預熱、快取降級)
- 分布式環境下常見的應用場景(分布式鎖、分布式自增 ID)
- Redis 集群模式(主從模式、哨兵模式、Cluster 集群模式)
- 如何解決 Redis 的并發競爭 Key 問題
- 如何保證快取與資料庫雙寫時的資料一致性?
Redis:答案

第五部分 分布式相關
- Dubbo的底層實作原理和機制
- 描述一個服務從發布到被消費的詳細程序
- 分布式系統怎么做服務治理
- 介面的冪等性的概念
- 訊息中間件如何解決訊息丟失問題
- Dubbo的服務請求失敗怎么處理
- 重連機制會不會造成錯誤
- 對分布式事務的理解
- 如何實作負載均衡,有哪些演算法可以實作?
- Zookeeper的用途,選舉的原理是什么?
- 資料的垂直拆分水平拆分,
- zookeeper原理和適用場景
- zookeeper watch機制
- redis/zk節點宕機如何處理
- 分布式集群下如何做到唯一序列號
- 如何做一個分布式鎖
- 用過哪些MQ,怎么用的,和其他mq比較有什么優缺點,MQ的連接是執行緒安全的嗎
- MQ系統的資料如何保證不丟失
- 列舉出你能想到的資料庫分庫分表策略;分庫分表后,如何解決全表查詢的問題
- zookeeper的選舉策略
第六部分 JVM
- JVM 記憶體結構
- HotSpot 虛擬機物件探秘
- 垃圾收集策略與演算法
- HotSpot 垃圾收集器
- 記憶體分配與回收策略
- JVM 性能調優
- 類檔案結構
- 類加載的時機
- 類加載的程序
- 類加載器
JVM:答案

第七部分 演算法
- 編程技巧
- 線性表
- 字串
- 堆疊和佇列
- 樹
- 排序
- 查找
- 暴力列舉法
- 廣度優先搜素
- 深度優先搜素
- 分治法
- 貪心法
- 動態規劃
- 圖
- 細節實作題
演算法:答案

除了上面的知識點,還準備了一些必問面試題,收集了各方面的,當前公司的,還有自己收集總結的,下面的圖片截取的有pdf,有如果有需要的自取.
各大公司面試題集合:

簡歷模板:

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

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/95074.html
標籤:Java
上一篇:多執行緒相關概念
