前言
遲來的flag兌現,就在11月7號凌晨,EDG勇奪冠軍,在這里還想喊一聲“EDG牛逼”,作為一名忠實粉絲,曾經立下的flag,也該實作了!

為大家分享的這份Java八股文總分為14個技術專題
- Java基礎
- 多執行緒并發
- Spring底層
- Spring MVC+Spring Boot
- Mybatis
- MySQL+資料庫
- Redis快取
- 分布式+訊息佇列+微服務
- 訊息中間件
- 力扣演算法
- 網路通信
- JVM調優
- 搜索引擎
- 安全驗證
小編在社區里看見不少小伙伴都在背Java八股文,為此在這里統一的做一次總結歸類,也算是給粉絲們劃重點了,

1、Java基礎
1、Java 中的 final 關鍵字有哪些用法?
2、GC如何判斷物件可以被回收
3、Java類加載器
4、什么是B/S架構?什么是C/S架構
5、Java中的繼承是單繼承還是多繼承
6、ArrayList和LinkedList區別
7、如何實作物件克隆?
8、什么是位元組碼?采用位元組碼的好處是什么?
9、識別符號的命名規則,
10、String 是最基本的資料型別嗎?
11、排序都有哪幾種方法?請列舉
12、雙親委托模型
13、java中有沒有指標?
14、Java中的例外體系
15、String、StringBuffer、StringBuilder有什么區別?
16、equals與==的區別
17、什么是JDK?什么是JRE?
18、hashCode與equals
19、面向物件和面向程序的區別
2、多執行緒并發
1、Thread、Runable的區別
2、JAVA執行緒鎖機制是怎樣的?偏向鎖、輕量級鎖、重量級鎖有什么區別?鎖機制是如何升級的?
3、 Volatile和Synchronized有什么區別?Volatile能不能保證執行緒安全?DCL(Double Check Lock)單例為什么要加Volatile?
4、執行緒池中執行緒復用原理
5、并發的三大特性
6、ThreadLocal記憶體泄露原因,如何避免
7、執行緒的生命周期?執行緒有幾種狀態
8、有A,B,C三個執行緒,如何保證三個執行緒同時執行?如何在并發情況下保證三個執行緒依次執行?如何保證三個執行緒有序交錯進行?
9、談談你對AQS的理解,AQS如何實作可重入鎖?
10、并發、并行、串行的區別
11、JAVA如何開啟執行緒?怎么保證執行緒安全?
12、對執行緒安全的理解
13、什么是volatile?
14、sleep()、wait()、join()、yield()的區別
15、對守護執行緒的理解
16、簡述執行緒池處理流程
17、執行緒池中阻塞佇列的作用?為什么是先添加列隊而不是先創建最大執行緒?
18、為什么用執行緒池?解釋下執行緒池引數?
19、ThreadLocal的原理和使用場景
20、如何對一個字串快速進行排序?
答案決議獲取方式在文末

3、Spring底層
1、描述一下Spring Bean的生命周期?
2、Spring事務的實作方式和原理以及隔離級別?
3、什么是Spring?談談你對IOC和AOP的理解,
4、什么是bean的自動裝配,有哪些方式?
5、Spring容器的啟動流程是怎么樣的?
6、Spring 框架中都用到了哪些設計模式?
7、談談你對AOP的理解
8、Spring框架中Bean的創建程序是怎樣的?
9、spring是什么?
10、BeanFactory和ApplicationContext有什么區別?
11、Spring框架中的Bean是執行緒安全的嗎?如果執行緒不安全,要如何處理?
12、Spring如何處理事務?
13、spring事務什么時候會失效?
14、Spring如何處理回圈依賴問題?
15、spring事務傳播機制
16、談談你對IOC的理解
17、SpringMVC中的控制器是不是單例模式?如果是,如何保證執行緒安全?
18、如何實作一個IOC容器
19、解釋下Spring支持的幾種bean的作用域,
4、Spring MVC+Spring Boot

1、介紹一下 WebApplicationContext:
2、SpringBoot的缺點
3、SpringBoot例外處理相關注解?
4、如何解決POST請求中文亂碼問題,GET的又如何處理呢?
5、您使用了哪些 starter maven 依賴項?
6、Spring Boot 自動配置原理?
7、描述一下 DispatcherServlet 的作業流程
8、Spring MVC的主要組件?
9、什么是嵌入式服務器?為什么要使用嵌入式服務器?
10、SpringBoot配置途徑?
11、SpringBoot多資料源事務如何管理
12、什么是 Spring Profiles?
13、SpringBoot自動配置原理?
14、SpringMVC 作業流程
15、Spring Boot、Spring MVC 和 Spring 有什么區別
16、Spring MVC里面攔截器是怎么寫的?
17、如果想在攔截的方法里面得到從前臺傳入的引數,怎么得到?
18、SpringBoot支持組態檔的格式?
19、Spring MVC怎么樣設定重定向和轉發的?
20、我們如何監視所有 Spring Boot 微服務?
21、如果在攔截請求中,我想攔截get方式提交的方法,怎么配置
22、Spring MVC用什么物件從后臺向前臺傳遞資料的?
23、SpringBoot事物的使用
24、你如何理解 Spring Boot 配置加載順序?
25、Spring Boot 支持哪些日志框架?推薦和默認的日志框架是哪個?
26、SpringBoot熱部署方式?
27、關閉應用程式訪問哪個端點?
28、SpringBoot與SpringCloud 區別
29、如何實作 Spring Boot 應用程式的安全性?
30、Spring Boot 是否可以使用 XML 配置 ?
31、MVC設計模式的好處有哪些
32、如何理解 Spring Boot 中的 Starter
33、簡單介紹下你對Spring MVC的理解?
34、SpingMvc中的控制器的注解一般用哪個,有沒有別的注解可以替代?
35、什么是SpringBoot?
36、撰寫測驗用例的注解?
37、SpringBoot如何實作打包
38、什么是SpringProfiles?
39、Spring Boot 中的監視器是什么?
5、Mybatis
1、Mybatis如何執行批量操作
2、講下 MyBatis 的快取
3、JDBC編程有哪些不足之處,MyBatis是如何解決的?
4、MyBatis編程步驟是什么樣的?
5、Mybatis中如何指定使用哪一種Executor執行器?
6、mybatis的優缺點
7、#{}和${}的區別是什么?
8、使用MyBatis的mapper介面呼叫時有哪些要求?
9、Mybatis是如何將sql執行結果封裝為目標物件并回傳的?
10、Mybatis是否可以映射Enum列舉類?
11、MyBatis和Hibernate的適用場景?
12、簡述 Mybatis 的插件運行原理,如何撰寫一個插件,
6、MySQL+資料庫
1、分表后非sharding_key的查詢怎么處理,分表后的排序?
2、讀寫分離是怎么做的?
3、索引設計的原則?
4、分庫分表的方式和分片策略由哪些?
5、MySQL有哪幾種資料存盤引擎?有什么區別?
6、事務的基本特性和隔離級別有哪些?
7、mysql主從同步原理
8、聚簇索引和非聚簇索引又是什么?
9、關心過業務系統里面的sql耗時嗎?統計過慢查詢嗎?對慢查詢都怎么優化過?
10、簡述mysql中索引型別及對資料庫的性能的影響
11、MySQL的集群是如何搭建的?
12、mysql索引的資料結構,各自優劣
13、鎖的型別有哪些
14、MySQL的鎖有哪些?什么是間隙鎖?
15、MySQL的索引結構是什么樣的?
16、什么是最左前綴原則?什么是最左匹配原則
17、索引的基本原理
18、談談如何對MySQL進行分庫分表?
19、多大資料量需要進行分庫分表?
20、事務的基本特性和隔離級別

21、分庫分表后,SQL陳述句的執行流程是怎樣的?
22、mysql執行計劃怎么看
23、ACID靠什么保證的?
24、簡述MyISAM和InnoDB的區別
25、InnoDB存盤引擎的鎖的演算法
26、什么是臟讀、幻讀、不可重復讀?要怎么處理?
27、什么是MVCC
7、Redis快取
1、Redis 是單執行緒的,如何提高多核 CPU 的利用率?
2、Redis 集群方案什么情況下會導致整個集群不可用?
3、Redis 是單行程單執行緒的?
4、什么是 Redis?
5、簡述Redis事務實作
6、Redis 的持久化機制是什么?各自的優缺點?
7、Redis 提供了哪幾種持久化方式?
8、怎么理解 Redis 事務?
9、Redis執行緒模型、單執行緒快的原因
10、Redis的過期鍵的洗掉策略
11、RDB 和 AOF 機制
12、Redis 集群會有寫操作丟失嗎?為什么?
13、redis 主從復制的核心原理
14、redis集群方案
15、Redis 的同步機制了解么?
16、Redis 事務相關的命令有哪幾個?
17、修改配置不重啟 Redis 會實時生效嗎?
18、如何實作集群中的 session 共享存盤?
19、Redis 的記憶體用完了會發生什么?
20、快取雪崩、快取穿透、快取擊穿
21、使用 Redis 有哪些好處?
8、分布式+訊息佇列+微服務
1、分布式鎖解決方案
2、怎么保證事務一致性?
3、zk和eureka的區別
4、負載均衡演算法、型別
5、CAP理論,BASE理論
6、SpringCloud和SpringCloudAlibaba都有哪些組件?都解決了什么問題?
7、zk的資料模型和節點型別
8、什么是中臺?
9、怎么拆分微服務?
10、分布式事務解決方案
11、怎樣設計出高內聚、低耦合的微服務?
12、講下Zookeeper watch機制
13、有沒有了解過DDD領域驅動設計?
14、springcloud核心組件及其作用
15、Dubbo 的整體架構設計及分層
16、中臺和微服務有什么關系?
17、分布式架構下,Session 共享有什么方案
18、Spring Cloud和Dubbo的區別
19、如何實作介面的冪等性
20、微服務的鏈路追蹤、持續集成、AB發布要怎么做?
21、簡述你對RPC、RMI的理解
22、分布式id生成方案
23、什么是Hystrix?簡述實作機制
24、談談你對微服務的理解,微服務有哪些優缺點?
25、分布式事務如何處理?
26、你的專案中是怎么保證微服務敏捷開發的?
27、簡述zk的命名服務、配置管理、集群管理
28、簡述ZAB 協議
9、訊息中間件
1、kafka怎么處理訊息順序、重復發送、重復消費、訊息丟失?
2、如何保證訊息消費的冪等性?
3、Kafka中zk的作用?
4、如何保證訊息不丟失?
5、RabbitMQ事務訊息?
6、簡述kafka的rebalance機制
7、如何保證訊息的順序?
8、MQ有什么用?有哪些具體的使用場景?
9、如何保證訊息的高效讀寫?
10、Kafka的性能好在什么地方?
11、Kafka在什么情況下會出現訊息丟失及解決方案?
12、讓你設計一個MQ,你會如何設計?
13、RabbitMQ鏡像佇列機制
14、如何進行產品選型?
15、Kafka是pull?push?優劣勢分析
16、簡述kafka架構設計
17、RabbitMQ如何確保訊息發送 ? 訊息接收?
18、簡述RabbitMQ的架構設計
19、使用MQ如何保證分布式事務的最終一致性?
20、解釋什么是RabbitMQ死信佇列、延時佇列?
10、力扣演算法
1、x的平方根
2、洗掉排序陣列中的重復項
3、斐波那契數列
4、環形鏈表
5、二叉樹遍歷
6、合并兩個有序陣列
7、Dota2參議院
8、尋找陣列的中心索引
9、二叉樹的最小深度

10、反轉鏈表
11、預測贏家
12、井字游戲
13、優勢洗牌
14、子陣列最大平均數
15、三個數的最大乘積
16、冒泡排序
17、插入排序
18、希爾排序
19、歸并排序
11、網路通信
1、執行緒池解決多執行緒BIO編程會出現的問題
2、TCP和UDP有什么區別?
3、描述下HTTP和HTTPS的區別?
4、怎么使用Netty實作網路通信?
5、BIO編程會出現什么問題?
6、JAVA有哪幾種IO模型?有什么區別?
7、IO的常用類和方法,以及如何使用
8、如何使用NIO實作網路通信?
9、select,poll和epoll有什么區別?
10、五種IO模型分別是哪些?
11、網路操作IO講解
12、ava中流類的超類主要有那些?
13、JAVA NIO的幾個核心組件是什么?分別有什么作用?
14、為什么圖片、視頻、音樂、檔案等 都是要位元組流來讀取?
15、TCP為什么是三次握手,而不是兩次?
12、JVM調優
1、說一說JVM的記憶體模型:
2、什么是類加載器,類加載器有哪些?
3、什么是STW?他都發生在哪些階段?
4、一個物件從加載到JVM,再到被GC清除,都經歷了什么程序?
5、什么是GC Root?
6、怎么確定一個物件到底是不是垃圾?
7、如果一個java程式每次運行一段時間后,就變得非常卡頓,你準備如何對他進行優化?
8、JAVA類加載的全程序是怎樣的?
9、如何解決錯標記和漏標記的問題?
10、怎么查看一個JAVA行程的JVM引數?
11、JVM引數有哪些?
12、記憶體模型以及磁區,需要詳細到每個區放什么,
13、什么是雙親委派機制?有什么作用?
14、什么是三色標記?
15、談談你了解的JVM引數:
16、JVM有哪些垃圾回收器?他們都是怎么作業的?
17、什么情況下會發生堆疊記憶體溢位,
18、簡述 java 記憶體分配與回收策率以及 Minor GC 和 Major GC
19、為什么要設計這么多的垃圾回收器?
20、JVM有哪些垃圾回收演算法?
21、如何進行JVM調優?
13、搜索引擎
1、elasticsearch 的倒排索引是什么
2、用過哪些分詞器?
3、Elasticsearch 對于大資料量(上億量級)的聚合如何實作?
4、Elasticsearch 是如何實作 Master 選舉的?
5、介紹一下你們的個性化搜索方案?
6、詳細描述一下 Elasticsearch 索引檔案的程序
7、如何進行中文分詞?
8、Elasticsearch 是一個分布式的 RESTful 風格的搜索和資料分析引擎,
9、ES查詢資料的作業原理是什么?
10、lucence 內部結構是什么?
11、什么是倒排索引?有什么好處?
12、ES部署時,要如何進行優化?
13、說說你們公司的ES集群架構,
14、在 Elasticsearch 中,是怎么根據一個詞找到對應的倒排索引的?
15、ES寫入資料的作業原理是什么?
16、ES了解多少?
17、拼寫糾錯是如何實作的?
14、安全驗證
1、如何設計一個開放授權平臺?
2、如何設計一個權限認證框架?
3、什么是CSRF攻擊?如何防止?
4、什么是JWT令牌?和普通令牌有什么區別?
5、如果沒有Cookie,Session還能進行身份驗證嗎?
6、Cookie和Session有什么區別?
7、什么是認證和授權?
8、什么是OAuth2.0協議?有哪幾種認證方式?
9、什么是SSO?與OAuth2.0有什么關系?
答案決議獲取方式:![]()

總結
所有的面試題目都不是一成不變的,現在面試都在背八股文,雖然是為了應付面試官,但是最重要的還是看自己技術底層是否鞏固,這樣才能逐步的提升自己的技術能力,為以后的技術生涯打下牢固的基礎,這樣才不會那么容易被擊潰!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/385537.html
標籤:其他
上一篇:hive知識點總結
