前言
遲來的flag兌現(xiàn),就在11月7號凌晨,EDG勇奪冠軍,在這里還想喊一聲“EDG牛逼”,作為一名忠實粉絲,曾經(jīng)立下的flag,也該實現(xiàn)了!
為大家分享的這份Java八股文總分為14個技術(shù)專題
- Java基礎(chǔ)
- 多線程并發(fā)
- Spring底層
- Spring MVC+Spring Boot
- Mybatis
- MySQL+數(shù)據(jù)庫
- Redis緩存
- 分布式+消息隊列+微服務(wù)
- 消息中間件
- 力扣算法
- 網(wǎng)絡(luò)通信
- JVM調(diào)優(yōu)
- 搜索引擎
- 安全驗證
小編在社區(qū)里看見不少小伙伴都在背Java八股文,為此在這里統(tǒng)一的做一次總結(jié)歸類,也算是給粉絲們劃重點了。
1、Java基礎(chǔ)
1、Java 中的 final 關(guān)鍵字有哪些用法?
2、GC如何判斷對象可以被回收
3、Java類加載器
4、什么是B/S架構(gòu)?什么是C/S架構(gòu)
5、Java中的繼承是單繼承還是多繼承
6、ArrayList和LinkedList區(qū)別
7、如何實現(xiàn)對象克隆?
8、什么是字節(jié)碼?采用字節(jié)碼的好處是什么?
9、標識符的命名規(guī)則。
10、String 是最基本的數(shù)據(jù)類型嗎?
11、排序都有哪幾種方法?請列舉
12、雙親委托模型
13、java中有沒有指針?
14、Java中的異常體系
15、String、StringBuffer、StringBuilder有什么區(qū)別?
16、equals與==的區(qū)別
17、什么是JDK?什么是JRE?
18、hashCode與equals
19、面向?qū)ο蠛兔嫦蜻^程的區(qū)別
2、多線程并發(fā)
1、Thread、Runable的區(qū)別
2、JAVA線程鎖機制是怎樣的?偏向鎖、輕量級鎖、重量級鎖有什么區(qū)別?鎖機制是如何升級的?
3、 Volatile和Synchronized有什么區(qū)別?Volatile能不能保證線程安全?DCL(Double Check Lock)單例為什么要加Volatile?
4、線程池中線程復(fù)用原理
5、并發(fā)的三大特性
6、ThreadLocal內(nèi)存泄露原因,如何避免
7、線程的生命周期?線程有幾種狀態(tài)
8、有A,B,C三個線程,如何保證三個線程同時執(zhí)行?如何在并發(fā)情況下保證三個線程依次執(zhí)行?如何保證三個線程有序交錯進行?
9、談?wù)勀銓QS的理解。AQS如何實現(xiàn)可重入鎖?
10、并發(fā)、并行、串行的區(qū)別
11、JAVA如何開啟線程?怎么保證線程安全?
12、對線程安全的理解
13、什么是volatile?
14、sleep()、wait()、join()、yield()的區(qū)別
15、對守護線程的理解
16、簡述線程池處理流程
17、線程池中阻塞隊列的作用?為什么是先添加列隊而不是先創(chuàng)建最大線程?
18、為什么用線程池?解釋下線程池參數(shù)?
19、ThreadLocal的原理和使用場景
20、如何對一個字符串快速進行排序?
2021Java八股文答案共享地址:Java八股文真題解析
3、Spring底層
1、描述一下Spring Bean的生命周期?
2、Spring事務(wù)的實現(xiàn)方式和原理以及隔離級別?
3、什么是Spring?談?wù)勀銓OC和AOP的理解。
4、什么是bean的自動裝配,有哪些方式?
5、Spring容器的啟動流程是怎么樣的?
6、Spring 框架中都用到了哪些設(shè)計模式?
7、談?wù)勀銓OP的理解
8、Spring框架中Bean的創(chuàng)建過程是怎樣的?
9、spring是什么?
10、BeanFactory和ApplicationContext有什么區(qū)別?
11、Spring框架中的Bean是線程安全的嗎?如果線程不安全,要如何處理?
12、Spring如何處理事務(wù)?
13、spring事務(wù)什么時候會失效?
14、Spring如何處理循環(huán)依賴問題?
15、spring事務(wù)傳播機制
16、談?wù)勀銓OC的理解
17、SpringMVC中的控制器是不是單例模式?如果是,如何保證線程安全?
18、如何實現(xiàn)一個IOC容器
19、解釋下Spring支持的幾種bean的作用域。
4、Spring MVC+Spring Boot
1、介紹一下 WebApplicationContext:
2、SpringBoot的缺點
3、SpringBoot異常處理相關(guān)注解?
4、如何解決POST請求中文亂碼問題,GET的又如何處理呢?
5、您使用了哪些 starter maven 依賴項?
6、Spring Boot 自動配置原理?
7、描述一下 DispatcherServlet 的工作流程
8、Spring MVC的主要組件?
9、什么是嵌入式服務(wù)器?為什么要使用嵌入式服務(wù)器?
10、SpringBoot配置途徑?
11、SpringBoot多數(shù)據(jù)源事務(wù)如何管理
12、什么是 Spring Profiles?
13、SpringBoot自動配置原理?
14、SpringMVC 工作流程
15、Spring Boot、Spring MVC 和 Spring 有什么區(qū)別
16、Spring MVC里面攔截器是怎么寫的?
17、如果想在攔截的方法里面得到從前臺傳入的參數(shù),怎么得到?
18、SpringBoot支持配置文件的格式?
19、Spring MVC怎么樣設(shè)定重定向和轉(zhuǎn)發(fā)的?
20、我們?nèi)绾伪O(jiān)視所有 Spring Boot 微服務(wù)?
21、如果在攔截請求中,我想攔截get方式提交的方法,怎么配置
22、Spring MVC用什么對象從后臺向前臺傳遞數(shù)據(jù)的?
23、SpringBoot事物的使用
24、你如何理解 Spring Boot 配置加載順序?
25、Spring Boot 支持哪些日志框架?推薦和默認的日志框架是哪個?
26、SpringBoot熱部署方式?
27、關(guān)閉應(yīng)用程序訪問哪個端點?
28、SpringBoot與SpringCloud 區(qū)別
29、如何實現(xiàn) Spring Boot 應(yīng)用程序的安全性?
30、Spring Boot 是否可以使用 XML 配置 ?
31、MVC設(shè)計模式的好處有哪些
32、如何理解 Spring Boot 中的 Starter
33、簡單介紹下你對Spring MVC的理解?
34、SpingMvc中的控制器的注解一般用哪個,有沒有別的注解可以替代?
35、什么是SpringBoot?
36、編寫測試用例的注解?
37、SpringBoot如何實現(xiàn)打包
38、什么是SpringProfiles?
39、Spring Boot 中的監(jiān)視器是什么?
5、Mybatis
1、Mybatis如何執(zhí)行批量操作
2、講下 MyBatis 的緩存
3、JDBC編程有哪些不足之處,MyBatis是如何解決的?
4、MyBatis編程步驟是什么樣的?
5、Mybatis中如何指定使用哪一種Executor執(zhí)行器?
6、mybatis的優(yōu)缺點
7、#{}和${}的區(qū)別是什么?
8、使用MyBatis的mapper接口調(diào)用時有哪些要求?
9、Mybatis是如何將sql執(zhí)行結(jié)果封裝為目標對象并返回的?
10、Mybatis是否可以映射Enum枚舉類?
11、MyBatis和Hibernate的適用場景?
12、簡述 Mybatis 的插件運行原理,如何編寫一個插件。
6、MySQL+數(shù)據(jù)庫
1、分表后非sharding_key的查詢怎么處理,分表后的排序?
2、讀寫分離是怎么做的?
3、索引設(shè)計的原則?
4、分庫分表的方式和分片策略由哪些?
5、MySQL有哪幾種數(shù)據(jù)存儲引擎?有什么區(qū)別?
6、事務(wù)的基本特性和隔離級別有哪些?
7、mysql主從同步原理
8、聚簇索引和非聚簇索引又是什么?
9、關(guān)心過業(yè)務(wù)系統(tǒng)里面的sql耗時嗎?統(tǒng)計過慢查詢嗎?對慢查詢都怎么優(yōu)化過?
10、簡述mysql中索引類型及對數(shù)據(jù)庫的性能的影響
11、MySQL的集群是如何搭建的?
12、mysql索引的數(shù)據(jù)結(jié)構(gòu),各自優(yōu)劣
13、鎖的類型有哪些
14、MySQL的鎖有哪些?什么是間隙鎖?
15、MySQL的索引結(jié)構(gòu)是什么樣的?
16、什么是最左前綴原則?什么是最左匹配原則
17、索引的基本原理
18、談?wù)勅绾螌ySQL進行分庫分表?
19、多大數(shù)據(jù)量需要進行分庫分表?
20、事務(wù)的基本特性和隔離級別
21、分庫分表后,SQL語句的執(zhí)行流程是怎樣的?
22、mysql執(zhí)行計劃怎么看
23、ACID靠什么保證的?
24、簡述MyISAM和InnoDB的區(qū)別
25、InnoDB存儲引擎的鎖的算法
26、什么是臟讀、幻讀、不可重復(fù)讀?要怎么處理?
27、什么是MVCC
7、Redis緩存
1、Redis 是單線程的,如何提高多核 CPU 的利用率?
2、Redis 集群方案什么情況下會導(dǎo)致整個集群不可用?
3、Redis 是單進程單線程的?
4、什么是 Redis?
5、簡述Redis事務(wù)實現(xiàn)
6、Redis 的持久化機制是什么?各自的優(yōu)缺點?
7、Redis 提供了哪幾種持久化方式?
8、怎么理解 Redis 事務(wù)?
9、Redis線程模型、單線程快的原因
10、Redis的過期鍵的刪除策略
11、RDB 和 AOF 機制
12、Redis 集群會有寫操作丟失嗎?為什么?
13、redis 主從復(fù)制的核心原理
14、redis集群方案
15、Redis 的同步機制了解么?
16、Redis 事務(wù)相關(guān)的命令有哪幾個?
17、修改配置不重啟 Redis 會實時生效嗎?
18、如何實現(xiàn)集群中的 session 共享存儲?
19、Redis 的內(nèi)存用完了會發(fā)生什么?
20、緩存雪崩、緩存穿透、緩存擊穿
21、使用 Redis 有哪些好處?
8、分布式+消息隊列+微服務(wù)
1、分布式鎖解決方案
2、怎么保證事務(wù)一致性?
3、zk和eureka的區(qū)別
4、負載均衡算法、類型
5、CAP理論,BASE理論
6、SpringCloud和SpringCloudAlibaba都有哪些組件?都解決了什么問題?
7、zk的數(shù)據(jù)模型和節(jié)點類型
8、什么是中臺?
9、怎么拆分微服務(wù)?
10、分布式事務(wù)解決方案
11、怎樣設(shè)計出高內(nèi)聚、低耦合的微服務(wù)?
12、講下Zookeeper watch機制
13、有沒有了解過DDD領(lǐng)域驅(qū)動設(shè)計?
14、springcloud核心組件及其作用
15、Dubbo 的整體架構(gòu)設(shè)計及分層
16、中臺和微服務(wù)有什么關(guān)系?
17、分布式架構(gòu)下,Session 共享有什么方案
18、Spring Cloud和Dubbo的區(qū)別
19、如何實現(xiàn)接口的冪等性
20、微服務(wù)的鏈路追蹤、持續(xù)集成、AB發(fā)布要怎么做?
21、簡述你對RPC、RMI的理解
22、分布式id生成方案
23、什么是Hystrix?簡述實現(xiàn)機制
24、談?wù)勀銓ξ⒎?wù)的理解,微服務(wù)有哪些優(yōu)缺點?
25、分布式事務(wù)如何處理?
26、你的項目中是怎么保證微服務(wù)敏捷開發(fā)的?
27、簡述zk的命名服務(wù)、配置管理、集群管理
28、簡述ZAB 協(xié)議
9、消息中間件
1、kafka怎么處理消息順序、重復(fù)發(fā)送、重復(fù)消費、消息丟失?
2、如何保證消息消費的冪等性?
3、Kafka中zk的作用?
4、如何保證消息不丟失?
5、RabbitMQ事務(wù)消息?
6、簡述kafka的rebalance機制
7、如何保證消息的順序?
8、MQ有什么用?有哪些具體的使用場景?
9、如何保證消息的高效讀寫?
10、Kafka的性能好在什么地方?
11、Kafka在什么情況下會出現(xiàn)消息丟失及解決方案?
12、讓你設(shè)計一個MQ,你會如何設(shè)計?
13、RabbitMQ鏡像隊列機制
14、如何進行產(chǎn)品選型?
15、Kafka是pull?push?優(yōu)劣勢分析
16、簡述kafka架構(gòu)設(shè)計
17、RabbitMQ如何確保消息發(fā)送 ? 消息接收?
18、簡述RabbitMQ的架構(gòu)設(shè)計
19、使用MQ如何保證分布式事務(wù)的最終一致性?
20、解釋什么是RabbitMQ死信隊列、延時隊列?
10、力扣算法
1、x的平方根
2、刪除排序數(shù)組中的重復(fù)項
3、斐波那契數(shù)列
4、環(huán)形鏈表
5、二叉樹遍歷
6、合并兩個有序數(shù)組
7、Dota2參議院
8、尋找數(shù)組的中心索引
9、二叉樹的最小深度
10、反轉(zhuǎn)鏈表
11、預(yù)測贏家
12、井字游戲
13、優(yōu)勢洗牌
14、子數(shù)組最大平均數(shù)
15、三個數(shù)的最大乘積
16、冒泡排序
17、插入排序
18、希爾排序
19、歸并排序
11、網(wǎng)絡(luò)通信
1、線程池解決多線程BIO編程會出現(xiàn)的問題
2、TCP和UDP有什么區(qū)別?
3、描述下HTTP和HTTPS的區(qū)別?
4、怎么使用Netty實現(xiàn)網(wǎng)絡(luò)通信?
5、BIO編程會出現(xiàn)什么問題?
6、JAVA有哪幾種IO模型?有什么區(qū)別?
7、IO的常用類和方法,以及如何使用
8、如何使用NIO實現(xiàn)網(wǎng)絡(luò)通信?
9、select,poll和epoll有什么區(qū)別?
10、五種IO模型分別是哪些?
11、網(wǎng)絡(luò)操作IO講解
12、ava中流類的超類主要有那些?
13、JAVA NIO的幾個核心組件是什么?分別有什么作用?
14、為什么圖片、視頻、音樂、文件等 都是要字節(jié)流來讀取?
15、TCP為什么是三次握手,而不是兩次?
12、JVM調(diào)優(yōu)
1、說一說JVM的內(nèi)存模型:
2、什么是類加載器,類加載器有哪些?
3、什么是STW?他都發(fā)生在哪些階段?
4、一個對象從加載到JVM,再到被GC清除,都經(jīng)歷了什么過程?
5、什么是GC Root?
6、怎么確定一個對象到底是不是垃圾?
7、如果一個java程序每次運行一段時間后,就變得非常卡頓,你準備如何對他進行優(yōu)化?
8、JAVA類加載的全過程是怎樣的?
9、如何解決錯標記和漏標記的問題?
10、怎么查看一個JAVA進程的JVM參數(shù)?
11、JVM參數(shù)有哪些?
12、內(nèi)存模型以及分區(qū),需要詳細到每個區(qū)放什么。
13、什么是雙親委派機制?有什么作用?
14、什么是三色標記?
15、談?wù)勀懔私獾腏VM參數(shù):
16、JVM有哪些垃圾回收器?他們都是怎么工作的?
17、什么情況下會發(fā)生棧內(nèi)存溢出。
18、簡述 java 內(nèi)存分配與回收策率以及 Minor GC 和 Major GC
19、為什么要設(shè)計這么多的垃圾回收器?
20、JVM有哪些垃圾回收算法?
21、如何進行JVM調(diào)優(yōu)?
13、搜索引擎
1、elasticsearch 的倒排索引是什么
2、用過哪些分詞器?
3、Elasticsearch 對于大數(shù)據(jù)量(上億量級)的聚合如何實現(xiàn)?
4、Elasticsearch 是如何實現(xiàn) Master 選舉的?
5、介紹一下你們的個性化搜索方案?
6、詳細描述一下 Elasticsearch 索引文檔的過程
7、如何進行中文分詞?
8、Elasticsearch 是一個分布式的 RESTful 風(fēng)格的搜索和數(shù)據(jù)分析引擎。
9、ES查詢數(shù)據(jù)的工作原理是什么?
10、lucence 內(nèi)部結(jié)構(gòu)是什么?
11、什么是倒排索引?有什么好處?
12、ES部署時,要如何進行優(yōu)化?
13、說說你們公司的ES集群架構(gòu)。
14、在 Elasticsearch 中,是怎么根據(jù)一個詞找到對應(yīng)的倒排索引的?
15、ES寫入數(shù)據(jù)的工作原理是什么?
16、ES了解多少?
17、拼寫糾錯是如何實現(xiàn)的?
14、安全驗證
1、如何設(shè)計一個開放授權(quán)平臺?
2、如何設(shè)計一個權(quán)限認證框架?
3、什么是CSRF攻擊?如何防止?
4、什么是JWT令牌?和普通令牌有什么區(qū)別?
5、如果沒有Cookie,Session還能進行身份驗證嗎?
6、Cookie和Session有什么區(qū)別?
7、什么是認證和授權(quán)?
8、什么是OAuth2.0協(xié)議?有哪幾種認證方式?
9、什么是SSO?與OAuth2.0有什么關(guān)系?
2021Java八股文答案共享地址:Java八股文真題解析
總結(jié)
所有的面試題目都不是一成不變的,現(xiàn)在面試都在背八股文,雖然是為了應(yīng)付面試官,但是最重要的還是看自己技術(shù)底層是否鞏固,這樣才能逐步的提升自己的技術(shù)能力,為以后的技術(shù)生涯打下牢固的基礎(chǔ),這樣才不會那么容易被擊潰!