前言
2021金三銀四,年假準備跳槽的小夥伴注意了,小編在這裏爲大家準備了Java後端必備的35個專題面試技術棧!都是小編在各個大廠總結出來的面試真題,小編此次分享涵蓋了Java後端面試必問的35個技術點:JVM、Linux、MyBatista、Spring Boot、Spring、SQL優化、Tomcat、Zookeeper、消息中間件、Dubbo、MongoDB、MySQL、RabbitMQ、Redis、Spring Cloud、併發編程、開源框架、ActiveMQ、等35個專題技術棧分享給到你們,但願年後能助你們一臂之力,挺進一線互聯網大廠,衝刺年薪百萬!前端
小編這篇分享篇幅可能有點長,觀看的朋友能夠先了解一下目錄java
- 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面試專題
- 多線程面試專題
- 數據庫面試專題
- 微服務面試專題
1、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 通node
常發生在新生代的 Eden 區,在這個區的對象生存期短,每每發生 Gc 的頻率較高,mysql
回收速度比較快;Full Gc/Major GC 發生在老年代,通常狀況下,觸發老年代 GCweb
的時候不會觸發 Minor GC,可是經過配置,能夠在 Full GC 以前進行一次 Minor面試
GC 這樣能夠加快老年代的回收速度。redis
因爲篇幅有限,獲取完整面試題和答案解析能夠轉發後關注公衆號:麒麟改bug獲取算法
35.Jdk和Jre和JVM的區別spring
2、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
3、MyBatis面試專題
一、什麼是 MyBatis?sql
答:MyBatis 是一個能夠自定義 SQL、存儲過程和高級映射的持久層框架。
二、講下 MyBatis 的緩存
答:MyBatis 的緩存分爲一級緩存和二級緩存,一級緩存放在 session 裏面,默認就有,二級緩
存放在它的命名空間裏,默認是不打開的,使用二級緩存屬性類須要實現 Serializable 序列化
接口(可用來保存對象的狀態),可在它的映射文件中配置<cache/>
三、Mybatis 是如何進行分頁的?分頁插件的原理是什麼?
四、簡述 Mybatis 的插件運行原理,以及如何編寫一個插件?
五、Mybatis 動態 sql 是作什麼的?都有哪些動態 sql?能簡述一下動態 sql 的執行原理不?
六、爲何說 Mybatis 是半自動 ORM 映射工具?它與全自動的區別在哪裏?
答:Hibernate 屬於全自動 ORM 映射工具,使用 Hibernate 查詢關聯對象或者關聯集合對象時,能夠根據對象關係模型直接獲取,因此它是全自動的。而 Mybatis 在查詢關聯對象或關聯集合對象時,須要手動編寫 sql 來完成,因此,稱之爲半自動 ORM 映射工具。
七、MyBatis 與 Hibernate 有哪些不一樣?
八、MyBatis 的好處是什麼?
九、MyBatis 實現一對一有幾種方式?具體怎麼操做的?
十、Mybatis 能執行一對1、一對多的關聯查詢嗎?都有哪些實現方式,以及它們之間的區
別?
十一、MyBatis 裏面的動態 Sql 是怎麼設定的?用什麼語法?
十二、Mybatis 是如何將 sql 執行結果封裝爲目標對象並返回的?都有哪些映射形式?
1三、Xml 映射文件中,除了常見的 select|insert|updae|delete 標籤以外,還有哪些標籤?
1四、當實體類中的屬性名和表中的字段名不同,若是將查詢的結果封裝到指定 pojo?
1五、Mybatis 映射文件中,若是 A 標籤經過 include 引用了 B 標籤的內容,請問,B 標籤可否定義在 A 標籤的後面,仍是說必須定義在 A 標籤的前面?
1六、Mybatis 中如何執行批處理?
1七、Mybatis 都有哪些 Executor 執行器?它們之間的區別是什麼?
1八、Mybatis 執行批量插入,能返回數據庫主鍵列表嗎?
1九、Mybatis 是否能夠映射 Enum 枚舉類?
20、如何獲取自動生成的(主)鍵值?
2一、使用 MyBatis 的 mapper 接口調用時有哪些要求?
2二、IBatis 和 MyBatis 在覈心處理類分別叫什麼?
2三、Mybatis 是如何進行分頁的?分頁插件的原理是什麼?
2四、簡述 Mybatis 的插件運行原理,以及如何編寫一個插件
2五、一級、二級緩存
2六、簡述 Mybatis 的 Xml 映射文件和 Mybatis 內部數據結構之間的映射關係?
2七、Mapper 編寫有哪幾種方式?
2八、什麼是MyBatis的接口綁定?有哪些實現方式?
2九、使用MyBatis的mapper接口調用時有哪些要求?
30、這個Dao接口的工做原理是什麼?Dao接口裏的方法,參數不一樣時,方法能重載嗎
3一、簡述Mybatis的Xml映射文件和Mybatis內部數據結構之間的映射關係?Xml映射文件中,除了常見的select|insert|updae|delete標籤以外,還有哪些標籤?
3二、Mybatis能執行一對多,一對一的聯繫查詢嗎,有哪些實現方法
3三、Mybatis是否能夠映射Enum枚舉類?
3四、簡述Mybatis的插件運行原理,以及如何編寫一個插件。
4、SpringBoot面試專題
一、什麼是 Spring Boot?
二、SpringBoot與SpringCloud 區別?
三、Spring Boot 有哪些優勢?
四、推薦和默認的日誌框架是哪一個?
五、它主要由哪幾個註解組成的?
六、Spring Boot 的核心註解是哪一個?
七、Spring Boot 支持哪些日誌框架?
八、SpringBoot的缺點
九、與 1.X 有什麼區別?
十、SpringBoot Starter的工做原理
十一、Spring Boot 2.X 有什麼新特性?
十二、SpringBoot支持什麼前端模板?
1三、Spring Boot 須要獨立的容器運行嗎?
1四、SpringBoot的自動配置原理是什麼?
1五、SpringBoot 實現熱部署有哪幾種方式?
1六、如何在 Spring Boot 啓動的時候運行一些特定的代碼?
1七、什麼是 JavaConfifig?
1八、Spring Boot 是否可使用 XML 配置 ?
1九、什麼是 YAML?
20、、bootstrap.properties 和application.properties 有何區別 ?
21SpringBoot多數據源拆分的思路
2二、spring boot 核心配置文件是什麼?b
2三、Async異步調用方法:
2四、保護 Spring Boot 應用有哪些方法?
2五、比較一下 Spring Security 和 Shiro 各自的優缺點 ?
2六、Spring Boot 中如何解決跨域問題 ?
2七、Spring Boot 中的監視器是什麼?
2八、SpringBoot性能如何優化?
2九、如何從新加載 Spring Boot 上的更改,而無需從新啓動服務器?
30、Spring Boot項目如何熱部署?
3一、SpringBoot的特徵?
3二、如何快速構建一個SpringBoot項目?
3三、SpringBoot支持配置文件的格式?
3四、SpringBoot啓動方式?
5、Spring面試專題
- 什麼是 Spring 框架?
- Spring 框架有哪些主要模塊?
- 使用 Spring 框架能帶來哪些好處?
- 什麼是依賴注入?
- 什麼是控制反轉(IOC)?
- 請解釋下 Spring 框架中的 IoC?
- 核心容器(應用上下文) 模塊
- XMLBeanFactory
- Spring的優缺點是什麼?
- Spring框架的設計目標,設計理念,和核心是什麼?
- Spring 框架中都用到了哪些設計模式?
- 解釋 JDBC 抽象和 DAO 模塊
- 解釋對象/關係映射集成模塊
- 什麼是 Spring IOC 容器?
- BeanFactory 和 ApplicationContext有什麼區別?
- Spring 如何設計容器的,BeanFactory和ApplicationContext的關係詳解:
- 有哪些不一樣類型的依賴注入實現方式?
- Spring 有幾種配置方式?
- 如何用基於 Java 配置的方式配置 Spring?
- 怎樣用註解的方式配置 Spring?
6、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 數據庫做發佈系統的存儲,一天五萬條以上的增量, 預計運維三年,怎麼優化?
7、Tomcat面試專題
- tomcat 有哪幾種Connector 運行模式(優化)?
- Tomcat有幾種部署方式?
- Tomcat的缺省端口是多少,怎麼修改?
- tomcat 如何優化?
- tomcat容器是如何建立servlet類實例?用到了什麼原理?
- 垃圾回收策略調優
- 共享session處理
- 內存調優
- 專業點的分析工具備
- 添加JMS遠程監控
- 打印類的加載狀況及對象的回收狀況
- 關於Tomcat的session數目
- 監視Tomcat的內存使用狀況
- .Tomcat工做模式?
- get方式和post方式有何區別
- Servlet相關 API
- 什麼是cookie?Session和cookie有什麼區別?
8、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 算法的聯繫與區別?
因爲篇幅有限,獲取完整面試題和答案解析能夠轉發後關注公衆號:麒麟改bug獲取
9、消息中間件面試專題
- activemq 若是數據提交不成功怎麼辦?
- activemq 的幾種通訊方式:
- 如何解決消息重複問題
- activeMQ 發送消息的方式有哪些?
- 大量的消息每頁被消費,可否發生 oom 異常?
- 消息通訊的基本方式有哪兩種?分別是哪些?
- 什麼是死信隊列?
- activeMQ 如何調優
- Basic.Reject 的用法是什麼?
- 爲何不該該對全部的 message 都使用持久化機制?
- 向不存在的 exchange 發 publish 消息會發生什麼?
- 爲何 heavy RPC 的使用場景下不建議採用 disk node ?
- 向不存在的exchange 發 publish 消息會發生什麼?
- queue 執行 consume 動做會發生什麼?
- 什麼狀況下 producer 不主動建立 queue 是安全的?
- 「dead letter」queue 的用途?
10、Dubbo面試(上)
一、Dubbo 支持哪些協議,每種協議的應用場景,優缺點?
- dubbo:
- rmi:
- webservice:
- http:
- hessian:
- memcache:
- redis:
二、Dubbo 超時時間怎樣設置?有幾種設計方式?
三、Dubbo 集羣的負載均衡有哪些策略 ?
四、Dubbo 提供了哪些常見的集羣策略實現?
五、Dubbo 是什麼?
六、Dubbo 的主要應用場景?
七、Dubbo 的核心功能?
八、Dubbo 的架構設計?
九、Dubbo 框架設計一共劃分了 10 個層,每一個對應的做用是?
- 服務接口層(Service)
- 配置層(Config)
- 服務代理層(Proxy)
- 服務註冊層(Registry)
- 集羣層(Cluster)
- 監控層(Monitor)
- 遠程調用層(Protocol)
- 信息交換層(Exchange)
- 網絡傳輸層(Transport)
11、Dubbo面試專題(下)
- dubbo 服務負載均衡策略?
- Dubbo 中 zookeeper 作註冊中心,若是註冊中心集羣都掛掉,發佈者和訂閱者之間還能通訊麼?
- dubbo 鏈接註冊中心和直連的區別?
- dubbo 服務集羣配置(集羣容錯模式)
- Dubbo 在安全機制方面是如何解決的
- dubbo 通訊協議 dubbo 協議爲何要消費者比提供者個數多:
- dubbo 通訊協議 dubbo 協議爲何不能傳大包:
- . RMI 協議
- dubbo 通訊協議 dubbo 協議爲何採用異步單一長鏈接:
- dubbo 通訊協議 dubbo 協議適用範圍和適用場景
- Hessian 協議
- Webservice
- Thrif
12、MongoDB面試專題
- MySQL 與 MongoDB 之間最基本的差異是什麼?
- NoSQL 數據庫有哪些類型?
- 爲何要使用和不使用NoSQL 數據庫?
- 說一說 NoSQL 數據庫的幾個優勢?
- 你說的 NoSQL 數據庫是什麼意思?
- NoSQL 與 RDBMS 直接有什麼區別?
- 你怎麼比較 MongoDB、CouchDB 及 CouchBase?
- 32 位系統上有什麼細微差異?
- MongoDB 成爲最好 NoSQL 數據庫的緣由是什麼?
- 若是用戶移除對象的屬性,該屬性是否從存儲層中刪除?
- 容許空值 null 嗎?
- 分析器在 MongoDB 中的做用是什麼?
- 更新操做馬上 fsync 到磁盤?
- 爲何個人數據文件如此龐大?
- 如何執行事務/加鎖?
- 啓用備份故障恢復須要多久?
- 我必須調用 getLastError 來確保寫操做生效了麼?
- 分片(sharding)和複製(replication)是怎樣工做的?
- 數據在何時纔會擴展到多個分片(shard)裏?
- 我能夠把 moveChunk 目錄裏的舊文件刪除嗎?
十3、mysql面試專題
- MySQL由哪些部分組成, 分別用來作什麼?
- MySQL查詢緩存有什麼弊端, 應該什麼狀況下使用?
- 8.0版本對查詢緩存有什麼變動?
- 作過哪些MySQL索引相關優化
- MySQL事務的隔離級別, 分別有什麼特色?
- MyISAM和InnoDB的區別有哪些?
- 一千萬條數據的表, 如何分頁查詢?
- 作過哪些MySQL索引相關優化?
- 訂單表數據量愈來愈大致使查詢緩慢, 如何處理?
十4、RabbitMQ消息中間件面試專題
一、RocketMq是什麼?
二、RocketMq有什麼功能?
三、RoctetMq的架構有哪些組成?對應的功能是哪些?
- NameServer
- Broker
- Producer生產者
- Consumer消費者
四、消息的可用性
五、負載均衡
六、解耦、異步、削峯是什麼?
七、消息隊列有什麼缺點
八、Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什麼優缺點?
九、MQ 有哪些常見問題?如何解決這些問題?
十、RabbitMQ基本概念
十一、RabbitMQ的工做模式
十二、如何保證RabbitMQ消息的順序性?
1三、如何保證RabbitMQ消息的可靠傳輸?
十5、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 最適合的場景?
十6、Redis面試專題(下)
- Redis 的全稱是什麼?
- Redis 主要消耗什麼物理資源?
- Redis 有哪幾種數據淘汰策略?
- 爲何 Redis 須要把全部數據放到內存中?
- Redis 集羣方案什麼狀況下會致使整個集羣不可用?
- Redis 和 Redisson 有什麼關係?
- 說說 Redis 哈希槽的概念?
- Redis 集羣的主從複製模型是怎樣的?
- Redis 集羣之間是如何複製的?
- Redis 集羣會有寫操做丟失嗎?爲何?
- 怎麼測試 Redis 的連通性?
- Redis 事務相關的命令有哪幾個?
- Redis 回收進程如何工做的?
- 爲何要作 Redis 分區?
- 你知道有哪些 Redis 分區實現方案?
- Redis 持久化數據和緩存怎麼作擴容?
- Twemproxy 是什麼?
- Redis 的內存佔用狀況怎麼樣?
- 查看 Redis 使用狀況及狀態信息用什麼命令?
- Redis 是單線程的,如何提升多核 CPU 的利用率?
十7、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?
- 分佈式配置中心的做用?
十9、併發編程面試專題
- 什麼是Synchronized?
- 你用過Synchronized嗎?原理是什麼?
- 如肯定對 象的鎖 ?
- 如今有 T一、T二、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 中你怎樣喚醒一個阻塞的線程?
- 你在多線程環境中遇到的常見的問題是什麼?你是怎麼解決它的?
因爲篇幅有限,獲取完整面試題和答案解析能夠轉發後關注公衆號:麒麟改bug 獲取。
二10、開源框架面試專題
- Spring Bean 的生命週期
- Spring IOC 如何實現?
- BeanFactory 和 ApplicationContext 有什麼區別?
- 動態代理(cglib 與 JDK)
- Spring AOP 實現原理
- Spring 事務實現方式
- 說說 Spring AOP
- 如何自定義註解實現功能
- Spring MVC 啓動流程
- Spring 框架中用到了哪些設計模式
- 原生的 NIO 在 JDK 1.7 版本存在 epoll bug
- Netty 線程模型
- Netty 內部執行流程
二11、ActiveMQ消息中間件面試專題
- 你用過ActiveMQ消息中間件嗎?
- ActiveMQ的原理是什麼?
- ActiveMQ 服務器宕機怎麼辦?
- 丟消息了怎麼辦?
- 解釋一下什麼叫死信隊列
- 持久化消息很是慢怎麼辦?
- 消息的不均勻消費
- ActiveMQ 中的消息重發時間間隔和重發次數嗎?
二12、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 中,如何跳出當前的多重嵌套循環
- 面向對象三大特性?
- 面向對象五大基本原則是什麼?
- 抽象類和接口的對比:
2七、普通類和抽象類有哪些區別?
2八、成員變量與局部變量的區別有哪些?分別有哪些特色?
2九、構造方法有哪些特性?
30、靜態變量和實例變量區別
二十3、Kafka面試專題
一、kafka集羣架構圖
二、kafka的基礎概念是?
三、Partition (分區)有什麼用?
四、分片規則
五、Rebalance
六、Rebalace 流程
七、如何避免 Rebalance
八、高性能, 高吞吐、分區的緣由?
九、Kafka 的設計時什麼樣的呢?
十、Kafka 判斷一個節點是否還活着有那兩個條件?
十一、數據傳輸的事物定義有哪三種?
十二、producer 是否直接將數據發送到 broker 的 leader(主節點)?
1三、Kafka 消息是採用 Pull 模式,仍是 Push 模式?
1四、Kafa consumer 是否能夠消費指定分區消息?
1五、Kafka 與傳統消息系統之間有三個關鍵區別
1六、Kafka 高效文件存儲設計特色:
1七、Kafka 的消費者如何消費數據
1八、消費者負載均衡策略
1九、kafaka 生產數據時數據的分組策略
二十4、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 以內?
二十5、ElasticSearch面試題
- 說說你對ElasticSearch的理解
- 說說大家公司 es 的集羣架構,索引數據大小,分片有多少,以及一些調優手段
- 查詢調優
- 設計階段調優
- elasticsearch 的倒排索引是什麼
- 動態索引層面
- elasticsearch 索引數據多了怎麼辦,如何調優,部署?
- 部署層面
- 詳細描述一下 Elasticsearch 索引文檔的過程
- elasticsearch 是如何實現 master 選舉的
- 詳細描述一下 Elasticsearch 搜索的過程?
- lucence 內部結構是什麼?
- Elasticsearch 在部署時,對 Linux 的設置有哪些優化方法?
- 詳細描述一下 Elasticsearch 索引文檔的過程。
- Elasticsearch是一個高度可伸縮的開源全文搜索和分析引擎。它
- 是否瞭解字典樹?
- 詳細描述一下 Elasticsearch 搜索的過程:
- Elasticsearch 在部署時,對 Linux 的設置有哪些優化方法?
二十6、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 丟失
因爲篇幅有限,獲取完整面試題和答案解析能夠轉發後關注公衆號:麒麟改bug 獲取。
二十7、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的又如何處理呢?
二十8、面試必備之樂觀鎖與悲觀鎖
- 什麼是樂觀鎖與悲觀鎖?
- 樂觀鎖與悲觀鎖分別是用在哪的?
- 兩種鎖的使用場景是哪些?
- 樂觀鎖與悲觀鎖兩種實現方式是?
- CAS 算法
- 樂觀鎖的優缺點?
- CAS 與 synchronized 的使用情景
- DelayQueue 實例應用
二十9、設計模式面試專題
- 你瞭解過設計模式嗎?
- 你爲何要學習設計模式?
- 設計模式的分類有哪些?
- 你是否在你的代碼裏面使用過任何設計模式?
- 在 Java 中,什麼叫觀察者設計模式?
- 舉一個用 Java 實現的裝飾模式(decorator design pattern)?它是做用於對象層次仍是類層次?
- 設計一個 ATM 機,請說出你的設計思路?
- 舉例說明什麼狀況下會更傾向於使用抽象類而不是接口?
- 設計模式的六大原則是什麼?分別有哪些思想?優勢有哪些?
- 什麼是單例?
- 單例模式的優缺點有哪些?
- 單例模式使用注意事項:
- 單例建立方式?主要使用哪些?
三10、java後端面試題
- HashSet 是如何保證不重複的?
- HashMap 是線程安全的嗎,爲何不是線程安全的?
- List 和 Set 的區別?
- HashMap 1.7 與 1.8 的 區別,說明 1.8 作了哪些優化,如何優化的?
- HashMap 的擴容過程,詳細說說!
- 對象的四種引用:
- Java反射機制
- Java獲取反射的三種方法,分別是哪些?
- LinkedHashMap 的應用
- wait 和 sleep 的區別?
- 數組在內存中如何分配?
三11、Netty面試專題
- 說說你對Netty的理解?
- BIO的優勢是?
- 什麼是IO模式?
- I/O 模型有幾種?
- 阻塞IO和非阻塞IO的區別是什麼?
- IO 多路複用
- Netty 線程模型和 Reactor 模式
- Reactor 多線程模型
- Reactor 單線程模型
- Reactor 主從線程模型
- EventLoop和EventLoopGroup的區別?
- ChannelHandler和ChannelPipeline的區別?
- Netty解碼器 Decoder
- Netty 組合編解碼器 Codec
- Netty 的特色?
- NIO 的組成?
三12、Nginx面試專題
- 說出你對Nginx 的理解
- 說說你爲何要使用Nginx呢?
- 爲何Nginx性能這麼高?
- 請列舉 Nginx 的一些特性:
- 請列舉 Nginx 和 Apache 之間的不一樣點
- Nginx怎麼處理請求的?
- 使用「反向代理服務器的優勢是什麼?
- 什麼是正向代理和反向代理?
- 在 Nginx 中,如何使用未定義的服務器名稱來阻止處理請求?
- 請解釋 Nginx 服務器上的 Master 和 Worker 進程分別是什麼?
- 請解釋 ngx_http_upstream_module 的做用是什麼?
- 解釋如何在 Nginx 中得到當前的時間?
- 解釋如何在 Nginx 服務器上添加模塊?
- Nginx的優缺點?
- Nginx應用場景?
- Nginx靜態資源?
- Nginx虛擬主機怎麼配置?
- 如何用Nginx解決前端跨域問題?
- 基於虛擬主機配置域名
- 基於端口的虛擬主機
三十3、多線程面試專題
- 說說你對多線程的理解?
- 多線程有什麼做用呢?
- 線程和進程的區別是什麼?
- 啓動線程方法 start()和 run()有什麼區別?
- Java 實現線程有哪幾種方式?
- 線程中的 wait()和 sleep()方法有什麼區別?
- 怎麼終止一個線程?如何優雅地終止線程?
- .一個線程的生命週期有哪幾種狀態?它們之間如何流轉的?
- 如何用 Java 實現阻塞隊列
- 用 Java 編程一個會致使死鎖的程序,你將怎麼解決?
- 用 Java 寫代碼來解決生產者——消費者問題。
- 什麼是原子操做,Java 中的原子操做是什麼?
- 什麼是競爭條件?你怎樣發現和解決競爭?
- Java 中你怎樣喚醒一個阻塞的線程?
- 多線程同步有哪幾種方法?
- 線程怎樣拿到返回結果?
- 什麼是死鎖?如何避免死鎖?
- 怎麼控制同一時間只有 3 個線程運行?
- 經常使用的幾種線程池並講講其中的工做原理
- CyclicBarrier 和 CountDownLatch 的區別?
- 線程池啓動線程 submit()和 execute()方法有什麼不一樣?
- 什麼是活鎖、飢餓、無鎖、死鎖?
三十4、數據庫面試專題
- 請簡潔描述 MySQL 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?
- 在 MySQL 中 ENUM 的用法是什麼?
- CHAR 和 VARCHAR 的區別?
- SQL 標準定義的四個隔離級別爲?
- MySQL 中使用什麼存儲引擎?
- TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 數據類型上作什麼?
- 主鍵和候選鍵有什麼區別?
- 數據庫的三範式?
- 在 MySQL 表中容許有幾個觸發器?
- MySQL 表中容許有多少個 TRIGGERS?
- Redis 實現原理或機制
- Redis 有兩種類型分區
三十5、微服務面試專題
- 微服務有哪些框架?
- 先後端分離是如何作的?
- 說說 Dubbo 的實現原理:
- 說說 RPC 的實現原理:
- 微服務架構有哪些優點?
- 微服務有什麼特色?
- 什麼是凝聚力?
- 什麼是 REST / RESTful 以及它的用途是什麼?
- 什麼是 Idempotence 以及它在哪裏使用?
- PACT 在微服務架構中的用途是什麼?
- 您對微服務架構中的語義監控有何瞭解?
- 咱們如何進行跨功能測試?
- Mock 或 Stub 有什麼區別?
- Docker 的目的是什麼?
- 什麼是持續集成(CI)?
- 什麼是微服務中的反應性擴展?
以上就是小編分享的35個Java技術棧,分享給到你們,年後衝刺年薪百萬!因爲篇幅有限,每一個專題面試題只有部分的面試題,下面是整理的合集,分享給到大家。
該資料獲取方式:關注公衆號:麒麟改bug + 轉發後,獲取完整面試題和答案解析
最後
篇幅有限,其餘內容就不在這裏一一展現了,2021金三銀四,Java後端必備的【35個專題面試技術棧】,整理不易,歡迎你們一塊兒交流,喜歡文章記得關注我點贊喲,感謝支持!重要的事情說三遍,轉發+轉發+轉發,必定要記得轉發哦!!!