前言
2021金三銀四,準備跳槽的小伙伴注意了,小編在這里為你們準備了Java后端必備的35個專題面試技術棧!都是小編在各個大廠總結出來的面試真題,小編這次分享涵蓋了Java后端面試必問的35個技術點:JVM、Linux、MyBatista、Spring Boot、Spring、SQL優化、Tomcat、Zookeeper、消息中間件、Dubbo、MongoDB、MySQL、RabbitMQ、Redis、Spring Cloud、并發編程、開源框架、ActiveMQ、等35個專題技術棧分享給到大家,希望年后能助大家一臂之力,挺進一線互聯網大廠,沖刺年薪百萬!
小編這篇分享篇幅可能有點長,觀看的朋友可以先了解一下目錄
- JVM面試專題
- Linux面試專題
- MyBatis面試專題
- SpringBoot面試專題
- Spring面試專題
- SQL優化面試專題
- Tomcat面試專題
- zookeeper面試專題
- 消息中間件面試專題
- Dubbo面試(上)
- Dubbo面試專題(下)
- MongoDB面試專題
- mysql面試專題
- RabbitMQ消息中間件面試專題
- redis面試題(上)
- Redis面試專題(下)
- SpringCloud面試專題
- 并發編程(上)
- 并發編程面試專題(下)
- 開源框架面試專題
- ActiveMQ消息中間件面試專題
- Java基礎面試題
- Kafka面試專題
- memcached面試專題
- ElasticSearch面試題
- MySQL性能優化的21個最佳實踐
- SpringMVC面試專題
- 面試必備之樂觀鎖與悲觀鎖
- 設計模式面試專題
- java后端面試題
- Netty面試專題
- Nginx面試專題
- 多線程面試專題
- 數據庫面試專題
- 微服務面試專題
一、JVM面試專題
- 內存模型以及分區,需要詳細到每個區放什么?
- 什么情況下會發生棧內存溢出?
- 詳解JVM內存模型
- JVM內存為什么要分成新生代,老年代,持久代。新生代中為什么
- 要分為Eden和Survivor
- 堆里面的分區:Eden,survival (from+ to),老年代,各自的特點。
- GC 的兩種判定方法:
- SafePoint 是什么
- GC 的三種收集方法:標記清除、標記整理、復制算法的原理與特點,分別用在什么地方,如果讓你優化收集方法,有什么思路?
- GC 的三種收集方法:標記清除、標記整理、復制算法的原理與特點,分別用在什么地方,如果讓你優化收集方法,有什么思路?
- 類加載的幾個過程:
- JVM 內存分哪幾個區,每個區的作用是什么?
- 如何判斷一個對象是否存活?(或者 GC 對象的判定方法)
- 簡述 java 垃圾回收機制?
- java 內存模型
- 類加載器雙親委派模型機制?
- 垃圾收集器相關
- 怎么打出線程棧信息
- 強引用、軟引用、弱引用、虛引用的區別?
- 什么是類加載器,類加載器有哪些?
- 內存屏障
- 說一下 JVM由那些部分組成,運行流程是什么?
- 說一下 JVM 運行時數據區
- 詳細的介紹下程序計數器?(重點理解)
- 你能給我詳細的介紹Java堆嗎?
- 能不能解釋一下方法區
- 什么是JVM字節碼執行引擎
- 堆棧的區別是什么?
- Java會存在內存泄漏嗎?請說明為什么?
- 垃圾回收器的原理是什么?有什么辦法手動進行垃圾回收?
- 簡單說說你了解的類加載器,可以打破雙親委派么,怎么打破。
- 為什么需要雙親委派模型?
- 說說你知道的幾種主要的JVM參數
- 簡述 java 內存分配與回收策率以及 Minor GC 和Major GC
- 對象優先在堆的 Eden 區分配。
- 大對象直接進入老年代.
- 長期存活的對象將直接進入老年代.
當 Eden 區沒有足夠的空間進行分配時,虛擬機會執行一次 Minor GC.Minor Gc 通
常發生在新生代的 Eden 區,在這個區的對象生存期短,往往發生 Gc 的頻率較高,
回收速度比較快;Full Gc/Major GC 發生在老年代,一般情況下,觸發老年代 GC
的時候不會觸發 Minor GC,但是通過配置,可以在 Full GC 之前進行一次 Minor
GC 這樣可以加快老年代的回收速度。
**由于篇幅有限,獲取完整面試題和答案解析添加小助理vx:mxzFAFAFA即可!!**
35.Jdk和Jre和JVM的區別
二、Linux面試專題
- Linux 中主要有哪幾種內核鎖?
- 怎樣申請大塊內核內存?
- 通過伙伴系統申請內核內存的函數有哪些?
- 如何加載、卸載一個模塊?
- Linux 中的浮點運算由應用程序實現還是內核實現?
- 模塊程序能否使用可鏈接的庫函數?
- 字符設備驅動程序的關鍵數據結構是哪個?
- 如何唯一標識一個設備?
- 什么是Linux
- Unix和Linux有什么區別?
- Linux的基本組件是什么?
- BASH和DOS之間的基本區別是什么?
- Linux 開機啟動過程?
- Linux 使用的進程間通信方式?
- Linux系統安裝多個桌面環境有幫助嗎?
- 什么是BASH?
- 什么是GUI?
- GNU項目的重要性是什么?
- 簡單 Linux 文件系統?
- 什么是硬鏈接和軟鏈接?
- 一臺 Linux 系統初始化環境后需要做一些什么安全工作?
- 什么是網站數據庫注入?
- 如何選擇 Linux 操作系統版本?
- 請問當用戶反饋網站訪問慢,你會如何處理?
- Linux 性能調優都有哪幾種方法?
- 基本命令:cd、pwd、ls、ll、touch、mkdir、cat、more、less、tail
三、MyBatis面試專題
1、什么是 MyBatis?
答:MyBatis 是一個可以自定義 SQL、存儲過程和高級映射的持久層框架。
2、講下 MyBatis 的緩存
答:MyBatis 的緩存分為一級緩存和二級緩存,一級緩存放在 session 里面,默認就有,二級緩
存放在它的命名空間里,默認是不打開的,使用二級緩存屬性類需要實現 Serializable 序列化
接口(可用來保存對象的狀態),可在它的映射文件中配置<cache/>
3、Mybatis 是如何進行分頁的?分頁插件的原理是什么?
4、簡述 Mybatis 的插件運行原理,以及如何編寫一個插件?
5、Mybatis 動態 sql 是做什么的?都有哪些動態 sql?能簡述一下動態 sql 的執行原理不?
6、為什么說 Mybatis 是半自動 ORM 映射工具?它與全自動的區別在哪里?
答:Hibernate 屬于全自動 ORM 映射工具,使用 Hibernate 查詢關聯對象或者關聯集合對象時,可以根據對象關系模型直接獲取,所以它是全自動的。而 Mybatis 在查詢關聯對象或關聯集合對象時,需要手動編寫 sql 來完成,所以,稱之為半自動 ORM 映射工具。
7、MyBatis 與 Hibernate 有哪些不同?
8、MyBatis 的好處是什么?
9、MyBatis 實現一對一有幾種方式?具體怎么操作的?
10、Mybatis 能執行一對一、一對多的關聯查詢嗎?都有哪些實現方式,以及它們之間的區
別?
11、MyBatis 里面的動態 Sql 是怎么設定的?用什么語法?
12、Mybatis 是如何將 sql 執行結果封裝為目標對象并返回的?都有哪些映射形式?
13、Xml 映射文件中,除了常見的 select|insert|updae|delete 標簽之外,還有哪些標簽?
14、當實體類中的屬性名和表中的字段名不一樣,如果將查詢的結果封裝到指定 pojo?
15、Mybatis 映射文件中,如果 A 標簽通過 include 引用了 B 標簽的內容,請問,B 標簽能否定義在 A 標簽的后面,還是說必須定義在 A 標簽的前面?
16、Mybatis 中如何執行批處理?
17、Mybatis 都有哪些 Executor 執行器?它們之間的區別是什么?
18、Mybatis 執行批量插入,能返回數據庫主鍵列表嗎?
19、Mybatis 是否可以映射 Enum 枚舉類?
20、如何獲取自動生成的(主)鍵值?
21、使用 MyBatis 的 mapper 接口調用時有哪些要求?
22、IBatis 和 MyBatis 在核心處理類分別叫什么?
23、Mybatis 是如何進行分頁的?分頁插件的原理是什么?
24、簡述 Mybatis 的插件運行原理,以及如何編寫一個插件
25、一級、二級緩存
26、簡述 Mybatis 的 Xml 映射文件和 Mybatis 內部數據結構之間的映射關系?
27、Mapper 編寫有哪幾種方式?
28、什么是MyBatis的接口綁定?有哪些實現方式?
29、使用MyBatis的mapper接口調用時有哪些要求?
30、這個Dao接口的工作原理是什么?Dao接口里的方法,參數不同時,方法能重載嗎
31、簡述Mybatis的Xml映射文件和Mybatis內部數據結構之間的映射關系?Xml映射文件中,除了常見的select|insert|updae|delete標簽之外,還有哪些標簽?
32、Mybatis能執行一對多,一對一的聯系查詢嗎,有哪些實現方法
33、Mybatis是否可以映射Enum枚舉類?
34、簡述Mybatis的插件運行原理,以及如何編寫一個插件。
四、SpringBoot面試專題
1、什么是 Spring Boot?
2、SpringBoot與SpringCloud 區別?
3、Spring Boot 有哪些優點?
4、推薦和默認的日志框架是哪個?
5、它主要由哪幾個注解組成的?
6、Spring Boot 的核心注解是哪個?
7、Spring Boot 支持哪些日志框架?
8、SpringBoot的缺點
9、與 1.X 有什么區別?
10、SpringBoot Starter的工作原理
11、Spring Boot 2.X 有什么新特性?
12、SpringBoot支持什么前端模板?
13、Spring Boot 需要獨立的容器運行嗎?
14、SpringBoot的自動配置原理是什么?
15、SpringBoot 實現熱部署有哪幾種方式?
16、如何在 Spring Boot 啟動的時候運行一些特定的代碼?
17、什么是 JavaConfifig?
18、Spring Boot 是否可以使用 XML 配置 ?
19、什么是 YAML?
20、、bootstrap.properties 和application.properties 有何區別 ?
21SpringBoot多數據源拆分的思路
22、spring boot 核心配置文件是什么?b
23、Async異步調用方法:
24、保護 Spring Boot 應用有哪些方法?
25、比較一下 Spring Security 和 Shiro 各自的優缺點 ?
26、Spring Boot 中如何解決跨域問題 ?
27、Spring Boot 中的監視器是什么?
28、SpringBoot性能如何優化?
29、如何重新加載 Spring Boot 上的更改,而無需重新啟動服務器?
30、Spring Boot項目如何熱部署?
31、SpringBoot的特征?
32、如何快速構建一個SpringBoot項目?
33、SpringBoot支持配置文件的格式?
34、SpringBoot啟動方式?
五、Spring面試專題
- 什么是 Spring 框架?
- Spring 框架有哪些主要模塊?
- 使用 Spring 框架能帶來哪些好處?
- 什么是依賴注入?
- 什么是控制反轉(IOC)?
- 請解釋下 Spring 框架中的 IoC?
- 核心容器(應用上下文) 模塊
- XMLBeanFactory
- Spring的優缺點是什么?
- Spring框架的設計目標,設計理念,和核心是什么?
- Spring 框架中都用到了哪些設計模式?
- 解釋 JDBC 抽象和 DAO 模塊
- 解釋對象/關系映射集成模塊
- 什么是 Spring IOC 容器?
- BeanFactory 和 ApplicationContext有什么區別?
- Spring 如何設計容器的,BeanFactory和ApplicationContext的關系詳解:
- 有哪些不同類型的依賴注入實現方式?
- Spring 有幾種配置方式?
- 如何用基于 Java 配置的方式配置 Spring?
- 怎樣用注解的方式配置 Spring?
六、SQL優化面試專題
- Mysql 的技術特點是什么?
- MySQL 中有哪幾種鎖?
- 唯一索引比普通索引快嗎, 為什么?
- Heap 表是什么?
- MySQL 中有哪些不同的表格?
- MySQL由哪些部分組成, 分別用來做什么?
- 與 Oracle 相比,Mysql 有什么優勢?
- 簡述在MySQL 數據庫中 MyISAM 和InnoDB 的區別?
- MySQL查詢緩存有什么弊端, 應該什么情況下使用, 8.0版本對查詢緩存有什么變更?
- 如何區分 FLOAT 和 DOUBLE?
- 區分 CHAR_LENGTH 和 LENGTH?
- MySQL 中InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?SQL 標準定義的四個隔離級別為?
- MyISAM和InnoDB的區別有哪些?
- MySQL怎么恢復半個月前的數據
- 如果一個表有一列定義為TIMESTAMP,將發生什么?
- 你怎么看到為表格定義的所有索引?
- 做過哪些MySQL索引相關優化?
- 一千萬條數據的表, 如何分頁查詢
- MySQL_fetch_array 和MySQL_fetch_object 的區別是什么?
- MySQL 如何優化DISTINCT?
- 可以使用多少列創建索引?
- 訂單表數據量越來越大導致查詢緩慢, 如何處理
- 如果一個表有一列定義為 TIMESTAMP,將發生什么?
- 怎樣才能找出最后一次插入時分配了哪個自動增量?
- 如何在 Unix 和 Mysql 時間戳之間進行轉換?
- mysql_fetch_array 和 mysql_fetch_object 的區別是什么?
- 什么是通用 SQL 函數?
- MySQL 里記錄貨幣用什么字段類型好
- MySQL 有關權限的表都有哪幾個?
- MySQL 數據庫作發布系統的存儲,一天五萬條以上的增量, 預計運維三年,怎么優化?
七、Tomcat面試專題
- tomcat 有哪幾種Connector 運行模式(優化)?
- Tomcat有幾種部署方式?
- Tomcat的缺省端口是多少,怎么修改?
- tomcat 如何優化?
- tomcat容器是如何創建servlet類實例?用到了什么原理?
- 垃圾回收策略調優
- 共享session處理
- 內存調優
- 專業點的分析工具有
- 添加JMS遠程監控
- 打印類的加載情況及對象的回收情況
- 關于Tomcat的session數目
- 監視Tomcat的內存使用情況
- .Tomcat工作模式?
- get方式和post方式有何區別
- Servlet相關 API
- 什么是cookie?Session和cookie有什么區別?
八、zookeeper面試專題
- ZooKeeper和dubbo的區別?
- ZooKeeper是什么?
- ZooKeeper 提供了什么?
- 說說Zookeeper 文件系統:
- Zookeeper的java客戶端都有哪些?
- 說說ZAB協議?
- 四種類型的數據節點 Znode
- Zookeeper Watcher 機制 -- 數據變更通知
- Zookeeper節點宕機如何處理?
- Zookeeper的典型應用場景?
- 服務端處理 Watcher 實現
- ACL 權限控制機制
- 客戶端回調 Watcher
- 服務器角色
- 說一下Zookeeper Watcher機制
- 服務端處理Watcher的流程?
- 客戶端回調 Watcher流程?
- 客戶端注冊Watcher的流程?
- 說說ACL權限控制機制?
- Zookeeper 下 Server 工作狀態
- zookeeper 是如何保證事務的順序一致性的?
- 分布式集群中為什么會有 Master?
- 集群最少要幾臺機器,集群規則是怎樣的?
- 集群支持動態添加機器嗎?
- chubby 是什么,和 zookeeper 比你怎么看?
- ZAB 和 Paxos 算法的聯系與區別?
由于篇幅有限,獲取完整面試題和答案解析添加小助理vx:mxzFAFAFA即可!!**
九、消息中間件面試專題
- activemq 如果數據提交不成功怎么辦?
- activemq 的幾種通信方式:
- 如何解決消息重復問題
- activeMQ 發送消息的方式有哪些?
- 大量的消息每頁被消費,能否發生 oom 異常?
- 消息通信的基本方式有哪兩種?分別是哪些?
- 什么是死信隊列?
- activeMQ 如何調優
- Basic.Reject 的用法是什么?
- 為什么不應該對所有的 message 都使用持久化機制?
- 向不存在的 exchange 發 publish 消息會發生什么?
- 為什么 heavy RPC 的使用場景下不建議采用 disk node ?
- 向不存在的exchange 發 publish 消息會發生什么?
- queue 執行 consume 動作會發生什么?
- 什么情況下 producer 不主動創建 queue 是安全的?
- “dead letter”queue 的用途?
十、Dubbo面試(上)
1、Dubbo 支持哪些協議,每種協議的應用場景,優缺點?
- dubbo:
- rmi:
- webservice:
- http:
- hessian:
- memcache:
- redis:
2、Dubbo 超時時間怎樣設置?有幾種設計方式?
3、Dubbo 集群的負載均衡有哪些策略 ?
4、Dubbo 提供了哪些常見的集群策略實現?
5、Dubbo 是什么?
6、Dubbo 的主要應用場景?
7、Dubbo 的核心功能?
8、Dubbo 的架構設計?
9、Dubbo 框架設計一共劃分了 10 個層,每個對應的作用是?
- 服務接口層(Service)
- 配置層(Config)
- 服務代理層(Proxy)
- 服務注冊層(Registry)
- 集群層(Cluster)
- 監控層(Monitor)
- 遠程調用層(Protocol)
- 信息交換層(Exchange)
- 網絡傳輸層(Transport)
十一、Dubbo面試專題(下)
- dubbo 服務負載均衡策略?
- Dubbo 中 zookeeper 做注冊中心,如果注冊中心集群都掛掉,發布者和訂閱者之間還能通信么?
- dubbo 連接注冊中心和直連的區別?
- dubbo 服務集群配置(集群容錯模式)
- Dubbo 在安全機制方面是如何解決的
- dubbo 通信協議 dubbo 協議為什么要消費者比提供者個數多:
- dubbo 通信協議 dubbo 協議為什么不能傳大包:
- . RMI 協議
- dubbo 通信協議 dubbo 協議為什么采用異步單一長連接:
- dubbo 通信協議 dubbo 協議適用范圍和適用場景
- Hessian 協議
- Webservice
- Thrif
十二、MongoDB面試專題
- MySQL 與 MongoDB 之間最基本的差別是什么?
- NoSQL 數據庫有哪些類型?
- 為什么要使用和不使用NoSQL 數據庫?
- 說一說 NoSQL 數據庫的幾個優點?
- 你說的 NoSQL 數據庫是什么意思?
- NoSQL 與 RDBMS 直接有什么區別?
- 你怎么比較 MongoDB、CouchDB 及 CouchBase?
- 32 位系統上有什么細微差別?
- MongoDB 成為最好 NoSQL 數據庫的原因是什么?
- 如果用戶移除對象的屬性,該屬性是否從存儲層中刪除?
- 允許空值 null 嗎?
- 分析器在 MongoDB 中的作用是什么?
- 更新操作立刻 fsync 到磁盤?
- 為什么我的數據文件如此龐大?
- 如何執行事務/加鎖?
- 啟用備份故障恢復需要多久?
- 我必須調用 getLastError 來確保寫操作生效了么?
- 分片(sharding)和復制(replication)是怎樣工作的?
- 數據在什么時候才會擴展到多個分片(shard)里?
- 我可以把 moveChunk 目錄里的舊文件刪除嗎?
十三、mysql面試專題
- MySQL由哪些部分組成, 分別用來做什么?
- MySQL查詢緩存有什么弊端, 應該什么情況下使用?
- 8.0版本對查詢緩存有什么變更?
- 做過哪些MySQL索引相關優化
- MySQL事務的隔離級別, 分別有什么特點?
- MyISAM和InnoDB的區別有哪些?
- 一千萬條數據的表, 如何分頁查詢?
- 做過哪些MySQL索引相關優化?
- 訂單表數據量越來越大導致查詢緩慢, 如何處理?
十四、RabbitMQ消息中間件面試專題
1、RocketMq是什么?
2、RocketMq有什么功能?
3、RoctetMq的架構有哪些組成?對應的功能是哪些?
- NameServer
- Broker
- Producer生產者
- Consumer消費者
4、消息的可用性
5、負載均衡
6、解耦、異步、削峰是什么?
7、消息隊列有什么缺點
8、Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么優缺點?
9、MQ 有哪些常見問題?如何解決這些問題?
10、RabbitMQ基本概念
11、RabbitMQ的工作模式
12、如何保證RabbitMQ消息的順序性?
13、如何保證RabbitMQ消息的可靠傳輸?
十五、Redis面試題(上)
- 什么是 Redis?
- 簡述它的優缺點?
- Redis 與 memcached 相比有哪些優勢?
- Redis 的數據類型?
- Redis 相比Memcached 有哪些優勢?
- Redis 有哪些適合的場景?
- Redis 支持的 Java 客戶端都有哪些?官方推薦用哪個?
- Redis 集群最大節點個數是多少?
- 一個字符串類型的值能存儲最大容量是多少?
- Redis 常見性能問題和解決方案:
- Redis 的回收策略
- redis 過期鍵的刪除策略?
- Redis 的同步機制了解么?
- 是否使用過 Redis 集群,集群的原理是什么?
- Redis 集群方案什么情況下會導致整個集群不可用?
- Redis 如何設置密碼及驗證密碼?
- Redis 集群會有寫操作丟失嗎?為什么?
- 怎么理解 Redis 事務?
- Redis 如何做內存優化?
- 都有哪些辦法可以降低 Redis 的內存使用情況呢?
- 一個 Redis 實例最多能存放多少的 keys?List、Set、SortedSet 他們最多能存放多少元素?
- Redis 最適合的場景?
十六、Redis面試專題(下)
- Redis 的全稱是什么?
- Redis 主要消耗什么物理資源?
- Redis 有哪幾種數據淘汰策略?
- 為什么 Redis 需要把所有數據放到內存中?
- Redis 集群方案什么情況下會導致整個集群不可用?
- Redis 和 Redisson 有什么關系?
- 說說 Redis 哈希槽的概念?
- Redis 集群的主從復制模型是怎樣的?
- Redis 集群之間是如何復制的?
- Redis 集群會有寫操作丟失嗎?為什么?
- 怎么測試 Redis 的連通性?
- Redis 事務相關的命令有哪幾個?
- Redis 回收進程如何工作的?
- 為什么要做 Redis 分區?
- 你知道有哪些 Redis 分區實現方案?
- Redis 持久化數據和緩存怎么做擴容?
- Twemproxy 是什么?
- Redis 的內存占用情況怎么樣?
- 查看 Redis 使用情況及狀態信息用什么命令?
- Redis 是單線程的,如何提高多核 CPU 的利用率?
十七、SpringCloud面試專題
- 為什么需要學習Spring Cloud
- 什么是微服務架構?
- 使用 Spring Cloud 有什么優勢?
- Spring Cloud 如何實現?
- 服務注冊和發現是什么意思?
- 什么是 Hystrix?它如何實現容錯?
- 負載平衡的意義什么?
- SpringCloud的缺點?
- SpringBoot和SpringCloud的區別?
- Spring Cloud和SpringBoot版本對應關系
- 使用 Spring Boot 開發分布式微服務時,我們面臨什么問題?
- 什么是Eureka
- Eureka和ZooKeeper都可以提供服務注冊與發現的功能,請說說兩個的區別!
- 既然Nginx可以實現網關?為什么還需要使用Zuul框架?
- 什么是 Netflix Feign?它的優點是什么?
- 什么是 Spring Cloud Bus?我們需要它嗎?
- Ribbon是什么?
- Nginx與Ribbon的區別?
- 什么是斷路器
- 談談服務雪崩效應
- 服務雪崩效應產生的原因
- 談談服務降級、熔斷、服務隔離
- 什么是 Spring Cloud Bus?
- 分布式配置中心的作用?
十九、并發編程面試專題
- 什么是Synchronized?
- 你用過Synchronized嗎?原理是什么?
- 如確定對 象的鎖 ?
- 現在有 T1、T2、T3 三個線程,你怎樣保證 T2 在 T1 執行完后執行,T3 在 T2 執行完后執行?
- 在 java 中 wait 和 sleep 方法的不同?
- 用 Java 寫代碼來解決生產者——消費者問題。
- 什么是原子操作,Java 中的原子操作是什么?
- JVM 對 Java 的 原 生 鎖 做 了 哪 些 優 化 ?
- 為 什 么 說 Synchronized 是 一 個 悲 觀 鎖 ?
- 為 什 么 說 Synchronized 是 非 公 平 鎖 ?
- 什 么 是 鎖 消 除 和 鎖 粗 化 ?
- 樂 觀 鎖 的 實 現 原 理由 是 什 么 ? 什 么 是 CAS, 它 有 什 么 特 性 ?
- 跟 Synchronized 相 比 , 可 重 入 鎖 ReentrantLock 其 實 現原 理 有 什 么 不 同 ?
- 那 么 請 談 談 AQS 框 架:
- Synchronized 和 ReentrantLock的 異 同?
- 除 了 ReetrantLock, 你 還 接 觸 過 JUC 中 的 哪 些 并 發 工 具 ?
- 如 何 讓 Java 的 線 程 彼 此 同 步 ? 你 了 解 過 哪 些 同 步 器 ? 請 分 別介 紹 下 !
- Java 中 的 線 程 池 是 如 何 實 現 的 ?
- 什么是競爭條件?你怎樣發現和解決競爭?
- Java 中你怎樣喚醒一個阻塞的線程?
- 你在多線程環境中遇到的常見的問題是什么?你是怎么解決它的?
由于篇幅有限,獲取完整面試題和答案解析添加小助理vx:mxzFAFAFA即可!!**
二十、開源框架面試專題
- Spring Bean 的生命周期
- Spring IOC 如何實現?
- BeanFactory 和 ApplicationContext 有什么區別?
- 動態代理(cglib 與 JDK)
- Spring AOP 實現原理
- Spring 事務實現方式
- 說說 Spring AOP
- 如何自定義注解實現功能
- Spring MVC 啟動流程
- Spring 框架中用到了哪些設計模式
- 原生的 NIO 在 JDK 1.7 版本存在 epoll bug
- Netty 線程模型
- Netty 內部執行流程
二十一、ActiveMQ消息中間件面試專題
- 你用過ActiveMQ消息中間件嗎?
- ActiveMQ的原理是什么?
- ActiveMQ 服務器宕機怎么辦?
- 丟消息了怎么辦?
- 解釋一下什么叫死信隊列
- 持久化消息非常慢怎么辦?
- 消息的不均勻消費
- ActiveMQ 中的消息重發時間間隔和重發次數嗎?
二十二、Java基礎面試題
- Java 語言有哪些特點?
- 什么是Java?
- 何為編程?
- Jdk和Jre和JVM的區別
- 什么是字節碼?
- 采用字節碼的最大好處是什么?
- 應用程序和小程序的主類有何不同?
- 什么是Java程序的主類?
- Java和C++的區別?
- Java應用程序與小程序之間有那些差別?
- Java有哪些數據類型
- Oracle JDK 和 OpenJDK 的對比
- 用最有效率的方法計算 2 乘以 8:
- Java語言采用何種編碼方案?有何特點?
- &和&&的區別?
- Java 有沒有 goto?
- fifinal fifinally fifinalize區別?
- this與super的區別
- super關鍵字的用法
- static的獨特之處
- static存在的主要意義
- static注意事項
- 在 Java 中,如何跳出當前的多重嵌套循環
- 面向對象三大特性?
- 面向對象五大基本原則是什么?
- 抽象類和接口的對比:
27、普通類和抽象類有哪些區別?
28、成員變量與局部變量的區別有哪些?分別有哪些特點?
- 作用域
- 存儲位置
- 生命周期
- 初始值
29、構造方法有哪些特性?
30、靜態變量和實例變量區別
二十三、Kafka面試專題
1、kafka集群架構圖
2、kafka的基礎概念是?
3、Partition (分區)有什么用?
4、分片規則
5、Rebalance
6、Rebalace 流程
7、如何避免 Rebalance
8、高性能, 高吞吐、分區的原因?
9、Kafka 的設計時什么樣的呢?
10、Kafka 判斷一個節點是否還活著有那兩個條件?
11、數據傳輸的事物定義有哪三種?
12、producer 是否直接將數據發送到 broker 的 leader(主節點)?
13、Kafka 消息是采用 Pull 模式,還是 Push 模式?
14、Kafa consumer 是否可以消費指定分區消息?
15、Kafka 與傳統消息系統之間有三個關鍵區別
16、Kafka 高效文件存儲設計特點:
17、Kafka 的消費者如何消費數據
18、消費者負載均衡策略
19、kafaka 生產數據時數據的分組策略
二十四、memcached面試專題
- 什么是memcached?
- memcached 是怎么工作的?
- memcached優勢是啥?
- memcached 和 MySQL 的 query cache 相比,有什么優缺點?
- memcached 和服務器的 local cache(比如 PHP 的 APC、mmap 文件等)相比,有什么優缺點?
- memcached 如何實現冗余機制?
- memcached 的 cache 機制是怎樣的?
- 如何將 memcached 中 item 批量導入導出?
- memcached 如何處理容錯的?
- 我需要把 memcached 中的 item 批量導出導入,怎么辦?
- memcached 對 item 的過期時間有什么限制?
- memcached 能接受的 key 的最大長度是多少?
- 為什么單個 item 的大小被限制在 1M byte 之內?
二十五、ElasticSearch面試題
- 說說你對ElasticSearch的理解
- 說說你們公司 es 的集群架構,索引數據大小,分片有多少,以及一些調優手段
- 查詢調優
- 設計階段調優
- elasticsearch 的倒排索引是什么
- 動態索引層面
- elasticsearch 索引數據多了怎么辦,如何調優,部署?
- 部署層面
- 詳細描述一下 Elasticsearch 索引文檔的過程
- elasticsearch 是如何實現 master 選舉的
- 詳細描述一下 Elasticsearch 搜索的過程?
- lucence 內部結構是什么?
- Elasticsearch 在部署時,對 Linux 的設置有哪些優化方法?
- 詳細描述一下 Elasticsearch 索引文檔的過程。
- Elasticsearch是一個高度可伸縮的開源全文搜索和分析引擎。它
- 是否了解字典樹?
- 詳細描述一下 Elasticsearch 搜索的過程:
- Elasticsearch 在部署時,對 Linux 的設置有哪些優化方法?
二十六、MySQL性能優化的21個最佳實踐
- 如何為了查詢緩存而優化你的查詢?
- 當只要一行數據時使用 LIMIT 1的時候
- EXPLAIN 你的 SELECT 查詢
- 為搜索字段建索引
- 千萬不要 ORDER BY RAND()
- 在 Join 表的時候使用相當類型的例,并將其索引
- 永遠為每張表設置一個 ID
- 使用 ENUM 而不是 VARCHAR
- 避免 SELECT *
- 盡可能的使用 NOT NULL
- 從 PROCEDURE ANALYSE() 取得建議
- 如何做到無緩沖的查詢?
- 垂直分割
- 拆分大的 DELETE 或 INSERT 語句
- Heap 表是什么?
- Mysql 的技術特點是什么?
- 與 Oracle 相比,Mysql 有什么優勢?
- Mysql 服務器默認端口是什么?
- 在 Mysql 中 ENUM 的用法是什么?
- TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 數據類型上做什么?
- 如何使用 Unix shell 登錄 Mysql?
- MYSQL 數據庫服務器性能分析的方法命令有哪些?
- MyISAM Static 和 MyISAM Dynamic 有什么區別?
- 一張表,里面有 ID 自增主鍵,當 insert 了 17 條記錄之后,刪除了第 15,16,17 條記錄,
再把 Mysql 重啟,再 insert 一條記錄,這條記錄的 ID 是 18 還是 15 ?
(1)如果表的類型是 MyISAM,那么是 18
因為 MyISAM 表會把自增主鍵的最大 ID 記錄到數據文件里,重啟 MySQL 自增主鍵的最大
ID 也不會丟失
(2)如果表的類型是 InnoDB,那么是 15
InnoDB 表只是把自增主鍵的最大 ID 記錄到內存中,所以重啟數據庫或者是對表進行
OPTIMIZE 操作,都會導致最大 ID 丟失
由于篇幅有限,獲取完整面試題和答案解析點擊傳送門 即可!!
二十七、SpringMVC面試專題
- 簡單介紹下你對Spring MVC的理解?
- Spring MVC的缺點
- Spring MVC 的優點:
- SpringMVC 流程?
- 什么是DispatcherServlet
- 什么是Spring MVC框架的控制器?
- SpringMvc 中函數的返回值是什么?
- SpringMvc 用什么對象從后臺向前臺傳遞數據的?
- SpringMvc 怎么和 AJAX 相互調用的?
- 當一個方法向 AJAX 返回特殊對象,譬如 Object,List 等,需要做什么處理?
- 講下 SpringMvc 的執行流程
- MVC是什么?
- 注解原理是什么
- MVC設計模式的好處有哪些
- SpingMvc中的控制器的注解一般用哪個,有沒有別的注解可以替代?
- Spring MVC常用的注解有哪些?
- @ResponseBody注解的作用
- @PathVariable和@RequestParam的區別
- Spring MVC與Struts2區別
- 如何解決POST請求中文亂碼問題,GET的又如何處理呢?
二十八、面試必備之樂觀鎖與悲觀鎖
- 什么是樂觀鎖與悲觀鎖?
- 樂觀鎖與悲觀鎖分別是用在哪的?
- 兩種鎖的使用場景是哪些?
- 樂觀鎖與悲觀鎖兩種實現方式是?
- CAS 算法
- 樂觀鎖的優缺點?
- CAS 與 synchronized 的使用情景
- DelayQueue 實例應用
二十九、設計模式面試專題
- 你了解過設計模式嗎?
- 你為什么要學習設計模式?
- 設計模式的分類有哪些?
- 你是否在你的代碼里面使用過任何設計模式?
- 在 Java 中,什么叫觀察者設計模式?
- 舉一個用 Java 實現的裝飾模式(decorator design pattern)?它是作用于對象層次還是類層次?
- 設計一個 ATM 機,請說出你的設計思路?
- 舉例說明什么情況下會更傾向于使用抽象類而不是接口?
- 設計模式的六大原則是什么?分別有哪些思想?優點有哪些?
- 什么是單例?
- 單例模式的優缺點有哪些?
- 單例模式使用注意事項:
- 單例創建方式?主要使用哪些?
三十、java后端面試題
- HashSet 是如何保證不重復的?
- HashMap 是線程安全的嗎,為什么不是線程安全的?
- List 和 Set 的區別?
- HashMap 1.7 與 1.8 的 區別,說明 1.8 做了哪些優化,如何優化的?
- HashMap 的擴容過程,詳細說說!
- 對象的四種引用:
- Java反射機制
- Java獲取反射的三種方法,分別是哪些?
- LinkedHashMap 的應用
- wait 和 sleep 的區別?
- 數組在內存中如何分配?
三十一、Netty面試專題
- 說說你對Netty的理解?
- BIO的優點是?
- 什么是IO模式?
- I/O 模型有幾種?
- 阻塞IO和非阻塞IO的區別是什么?
- IO 多路復用
- Netty 線程模型和 Reactor 模式
- Reactor 多線程模型
- Reactor 單線程模型
- Reactor 主從線程模型
- EventLoop和EventLoopGroup的區別?
- ChannelHandler和ChannelPipeline的區別?
- Netty解碼器 Decoder
- Netty 組合編解碼器 Codec
- Netty 的特點?
- NIO 的組成?
三十二、Nginx面試專題
- 說出你對Nginx 的理解
- 說說你為什么要使用Nginx呢?
- 為什么Nginx性能這么高?
- 請列舉 Nginx 的一些特性:
- 請列舉 Nginx 和 Apache 之間的不同點
- Nginx怎么處理請求的?
- 使用“反向代理服務器的優點是什么?
- 什么是正向代理和反向代理?
- 在 Nginx 中,如何使用未定義的服務器名稱來阻止處理請求?
- 請解釋 Nginx 服務器上的 Master 和 Worker 進程分別是什么?
- 請解釋 ngx_http_upstream_module 的作用是什么?
- 解釋如何在 Nginx 中獲得當前的時間?
- 解釋如何在 Nginx 服務器上添加模塊?
- Nginx的優缺點?
- Nginx應用場景?
- Nginx靜態資源?
- Nginx虛擬主機怎么配置?
- 如何用Nginx解決前端跨域問題?
- 基于虛擬主機配置域名
- 基于端口的虛擬主機
三十三、多線程面試專題
- 說說你對多線程的理解?
- 多線程有什么作用呢?
- 線程和進程的區別是什么?
- 啟動線程方法 start()和 run()有什么區別?
- Java 實現線程有哪幾種方式?
- 線程中的 wait()和 sleep()方法有什么區別?
- 怎么終止一個線程?如何優雅地終止線程?
- .一個線程的生命周期有哪幾種狀態?它們之間如何流轉的?
- 如何用 Java 實現阻塞隊列
- 用 Java 編程一個會導致死鎖的程序,你將怎么解決?
- 用 Java 寫代碼來解決生產者——消費者問題。
- 什么是原子操作,Java 中的原子操作是什么?
- 什么是競爭條件?你怎樣發現和解決競爭?
- Java 中你怎樣喚醒一個阻塞的線程?
- 多線程同步有哪幾種方法?
- 線程怎樣拿到返回結果?
- 什么是死鎖?如何避免死鎖?
- 怎么控制同一時間只有 3 個線程運行?
- 常用的幾種線程池并講講其中的工作原理
- CyclicBarrier 和 CountDownLatch 的區別?
- 線程池啟動線程 submit()和 execute()方法有什么不同?
- 什么是活鎖、饑餓、無鎖、死鎖?
三十四、數據庫面試專題
- 請簡潔描述 MySQL 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?
- 在 MySQL 中 ENUM 的用法是什么?
- CHAR 和 VARCHAR 的區別?
- SQL 標準定義的四個隔離級別為?
- MySQL 中使用什么存儲引擎?
- TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 數據類型上做什么?
- 主鍵和候選鍵有什么區別?
- 數據庫的三范式?
- 在 MySQL 表中允許有幾個觸發器?
- MySQL 表中允許有多少個 TRIGGERS?
- Redis 實現原理或機制
- Redis 有兩種類型分區
三十五、微服務面試專題
- 微服務有哪些框架?
- 前后端分離是如何做的?
- 說說 Dubbo 的實現原理:
- 說說 RPC 的實現原理:
- 微服務架構有哪些優勢?
- 微服務有什么特點?
- 什么是凝聚力?
- 什么是 REST / RESTful 以及它的用途是什么?
- 什么是 Idempotence 以及它在哪里使用?
- PACT 在微服務架構中的用途是什么?
- 您對微服務架構中的語義監控有何了解?
- 我們如何進行跨功能測試?
- Mock 或 Stub 有什么區別?
- Docker 的目的是什么?
- 什么是持續集成(CI)?
- 什么是微服務中的反應性擴展?
以上就是小編分享的35個Java技術棧,分享給到大家,年后沖刺年薪百萬!由于篇幅有限,每個專題面試題只有部分的面試題,下面是整理的合集,分享給到你們。
**該資料獲取方式:添加小助理vx:mxzFAFAFA即可!!
最后
篇幅有限,其他內容就不在這里一一展示了,2021金三銀四,Java后端必備的【35個專題面試技術棧】,有想要獲取完整面試題和答案解析添加小助理vx:mxzFAFAFA即可!!