本篇面試專題共包含:ActiveMQ、Dubbo、JVM、Kafka、Linux、memcached、MongoDB、MyBatis、MySQL、Netty、Nginx、RabbitMQ、Redis、Spring Cloud、Spring Boot、Spring MVC、Spring、SQL、Tomcat、zookeeper、并發編程、多執行緒、開源框架、設計模式、微服務共計25類知識點的面試真題
一、ActiveMQ篇
- 1.什么是 ActiveMQ?
- ActiveMQ 服務器宕機怎么辦?
- 丟訊息怎么辦?
- 持久化訊息非常慢
- 訊息的不均勻消費
- 死信佇列
- ActiveMQ 中的訊息重發時間間隔和重發次數嗎?
二、MySQL篇
- 一張表,里面有 ID 自增主鍵,當 insert 了 17 條記錄之后,洗掉了第 15,16,17 條記錄,再把 Mysql 重啟,再 insert 一條記錄,這條記錄的 ID 是 18 還是 15 ?
- Mysql 的技術特點是什么?
- Heap 表是什么?
- Mysql 服務器默認埠是什么?
- 如何區分 FLOAT 和 DOUBLE?
- 區分 CHAR_LENGTH 和 LENGTH
- 請簡潔描述 Mysql 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別
- 在 Mysql 中 ENUM 的用法是什么?
- 如何定義 REGEXP?
- CHAR 和 VARCHAR 的區別?
- 列的字串型別可以是什么?
- 如何獲取當前的 Mysql 版本?
- Mysql 中使用什么存盤引擎?
- Mysql 驅動程式是什么?
- TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 資料型別上做什么?
- 主鍵和候選鍵有什么區別?
- 如何使用 Unix shell 登錄 Mysql?
- myisamchk 是用來做什么的?
- MYSQL 資料庫服務器性能分析的方法命令有哪些?
- 如何做 mysql 的性能優化?
- 如何控制 HEAP 表的最大尺寸?
三、Dubbo篇
- Dubbo 支持哪些協議,每種協議的應用場景,優缺點?
- Dubbo 超時時間怎樣設定?
- Dubbo 有些哪些注冊中心?
- Dubbo 是什么?
- Dubbo 的主要應用場景?
- Dubbo 的核心功能?
- Dubbo 的核心組件?
- Dubbo 服務注冊與發現的流程?
- Dubbo 的架構設計?
- Dubbo 的服務呼叫流程?
- Dubbo 中 zookeeper 做注冊中心,如果注冊中心集群都掛掉,發布者和訂閱者之間還能通信么?
- Dubbo 服務負載均衡策略
- Dubbo 在安全機制方面是如何解決的?
- Dubbo 連接注冊中心和直連的區別
- Dubbo 通信協議 dubbo 協議為什么采用異步單一長連接
- RMI 協議
- Hessian 協議
四、JVM篇
- 說一下 jvm 的主要組成部分?及其作用?
- 說一下 jvm 運行時資料區?
- 說一下堆疊的區別?
- 佇列和堆疊是什么?有什么區別?
- 什么是雙親委派模型?
- 說一下類加載的執行程序?
- 怎么判斷物件是否可以被回收?
- java 中都有哪些參考型別?
- 說一下 jvm 有哪些垃圾回收演算法?
- 說一下 jvm 有哪些垃圾回收器?
- 詳細介紹一下 CMS 垃圾回收器?
- 新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么區別?
- 簡述分代垃圾回收器是怎么作業的?
- 說一下 jvm 調優的工具?
- 常用的 jvm 調優的引數都有哪些?
五、Kafka篇
- kafka 可以脫離 zookeeper 單獨使用嗎?為什么?
- kafka 有幾種資料保留的策略?
- kafka 同時設定了 7 天和 10G 清除資料,到第五天的時候訊息達到了 10G,這個時候 kafka 將如何處理?
- 什么情況會導致 kafka 運行變慢?
- 使用 kafka 集群需要注意什么?
- Kafka 的設計時什么樣的呢?
- Kafka 存盤在硬碟上的訊息格式是什么?
- Kafka 高效檔案存盤設計特點
- kafka 的 ack 機制
六、Linux篇
- Linux 中的用戶模式和內核模式是什么含意?
- 怎樣申請大塊內核記憶體?
- 用戶行程間通信主要哪幾種方式?
- Linux 中主要有哪幾種內核鎖?
- 通過伙伴系統申請內核記憶體的函式有哪些?
- 對檔案或設備的操作函式保存在那個資料結構中?
- 創建行程的系統呼叫有那些?
- 呼叫 schedule()進行行程切換的方式有幾種?
- Linux 調度程式是根據行程的動態優先級還是靜態優先級來調度行程的?
- Linux 中有哪幾種設備?
- 如何唯一標識一個設備?
- Linux 中的浮點運算由應用程式實作還是內核實作?
memcached篇
- memcached 是怎么作業的?
- memcached 最大的優勢是什么?
- memcached 和 MySQL 的 query cache 相比,有什么優缺點?
- memcached 和服務器的 local cache(比如 PHP 的 APC、mmap 檔案等)相比,有什么優點?
- memcached 的 cache 機制是怎樣的?
- memcached 如何實作冗余機制?
- memcached 如何處理容錯的?
- 如何將 memcached 中 item 批量匯入匯出?
- 我需要把 memcached 中的 item 批量匯出匯入,怎么辦?
- memcached 是如何做身份驗證的?
- memcached 的多執行緒是什么?如何使用它們?
- memcached 能接受的 key 的最大長度是多少?
- memcached 對 item 的過期時間有什么限制?
- 為什么單個 item 的大小被限制在 1M byte 之內?
七、MongoDB篇
- 你說的 NoSQL 資料庫是什么意思?NoSQL 與 RDBMS 直接有什么區別?為什么要使用和不使用NoSQL 資料庫?說一說 NoSQL 資料庫的幾個優點?
- NoSQL 資料庫有哪些型別?
- MySQL 與 MongoDB 之間最基本的差別是什么?
- 你怎么比較 MongoDB、CouchDB 及 CouchBase?
- MongoDB 成為最好 NoSQL 資料庫的原因是什么?
- 32 位系統上有什么細微差別?
- journal 回放在條目(entry)不完整時(比如恰巧有一個中途故障了)會遇到問題嗎?
- 分析器在 MongoDB 中的作用是什么?
- 名字空間(namespace)是什么?
- 如何執行事務/加鎖?
- 什么是 master 或 primary?
- 資料在什么時候才會擴展到多個分片(shard)里
八、MyBatis篇
- mybatis 中 #{}和 ${}的區別是什么?
- mybatis 有幾種分頁方式?
- RowBounds 是一次性查詢全部結果嗎?為什么?
- mybatis 邏輯分頁和物理分頁的區別是什么?
- mybatis 是否支持延遲加載?延遲加載的原理是什么?
- 說一下 mybatis 的一級快取和二級快取?
- mybatis 和 hibernate 的區別有哪些?
- mybatis 有哪些執行器(Executor)?
- mybatis 分頁插件的實作原理是什么?
- mybatis 如何撰寫一個自定義插件?
九、Netty篇
- NIO 和 AIO 的區別?
- NIO 的組成?
- Netty 的特點?
- TCP 粘包/拆包的原因及解決方法?
- 了解哪幾種序列化協議?
- 如何選擇序列化協議?
- Netty 的零拷貝實作?
- Netty 的高性能表現在哪些方面?
- NIOEventLoopGroup 原始碼?
十、Nginx篇
- 請解釋一下什么是 Nginx?
- 請列舉 Nginx 的一些特性
- 請列舉 Nginx 和 Apache 之間的不同點
- 請解釋 Nginx 如何處理 HTTP 請求
- 在 Nginx 中,如何使用未定義的服務器名稱來阻止處理請求?
- 使用“反向代理服務器”的優點是什么?
- 請列舉 Nginx 服務器的最佳用途
- 請解釋 Nginx 服務器上的 Master 和 Worker 行程分別是什么?
- 請解釋你如何通過不同于 80 的埠開啟 Nginx?
- 請解釋是否有可能將 Nginx 的錯誤替換為 502 錯誤、503?
- 在 Nginx 中,解釋如何在 URL 中保留雙斜線
- 請解釋 ngx_http_upstream_module 的作用是什么?
- 請解釋什么是 C10K 問題?
- 請陳述 stub_status 和 sub_filter 指令的作用是什么?
- 解釋 Nginx 是否支持將請求壓縮到上游?
- 解釋如何在 Nginx 中獲得當前的時間?
十一、RabbitMQ篇
- rabbitmq 的使用場景有哪些?
- rabbitmq 有哪些重要的角色?
- rabbitmq 有哪些重要的組件?
- rabbitmq 中 vhost 的作用是什么?
- rabbitmq 的訊息是怎么發送的?
- rabbitmq 怎么保證訊息的穩定性?
- rabbitmq 怎么避免訊息丟失?
- 要保證訊息持久化成功的條件有哪些?
- rabbitmq 持久化有什么缺點?
- rabbitmq 有幾種廣播型別?
- rabbitmq 怎么實作延遲訊息佇列?
- rabbitmq 集群有什么用?
- rabbitmq 節點的型別有哪些?
- rabbitmq 每個節點是其他節點的完整拷貝嗎?為什么?
- rabbitmq 集群中唯一一個磁盤節點崩潰了會發生什么情況?
- rabbitmq 對集群節點停止順序有要求嗎?
- rabbitmq 集群搭建需要注意哪些問題?
十二、Redis篇
- redis 是什么?都有哪些使用場景?
- redis 有哪些功能?
- redis 和 memecache 有什么區別?
- redis 為什么是單執行緒的?
- 什么是快取穿透?怎么解決?
- redis 支持的資料型別有哪些?
- redis 和 redisson 有哪些區別?
- 怎么保證快取和資料庫資料的一致性?
- redis 持久化有幾種方式?
- redis 怎么實作分布式鎖?
- redis 分布式鎖有什么缺陷?
- redis 如何做記憶體優化?
- redis 淘汰策略有哪些?
- redis 常見的性能問題有哪些?該如何解決?
十三、Spring Cloud/Boot篇
- 什么是 spring boot?
- 為什么要用 spring boot?
- spring boot 核心組態檔是什么?
- spring boot 組態檔有哪幾種型別?它們有什么區別?
- spring boot 有哪些方式可以實作熱部署?
- jpa 和 hibernate 有什么區別?
- 什么是 spring cloud?
- spring cloud 斷路器的作用是什么?
- spring cloud 的核心組件有哪些?
十四、Spring/Spring MVC篇
- 為什么要使用 spring?
- 解釋一下什么是 aop?
- 解釋一下什么是 ioc?
- spring 有哪些主要模塊?
- spring 常用的注入方式有哪些?
- spring 中的 bean 是執行緒安全的嗎?
- 96.spring 支持幾種 bean 的作用域?
- spring 自動裝配 bean 有哪些方式?
- spring 事務實作方式有哪些?
- 說一下 spring 的事務隔離?
- spring mvc 有哪些組件?
- @RequestMapping 的作用是什么?
- @Autowired 的作用是什么?
十五、SQL篇
- 一張表,里面有 ID 自增主鍵,當 insert 了 17 條記錄之后,洗掉了第 15,16,17 條記錄,再把 Mysql 重啟,再 insert 一條記錄,這條記錄的 ID 是 18 還是 15 ?
- Mysql 的技術特點是什么?
- Heap 表是什么?
- Mysql 服務器默認埠是什么?
- 與 Oracle 相比,Mysql 有什么優勢?
- 如何區分 FLOAT 和 DOUBLE?
- 區分 CHAR_LENGTH 和 LENGTH?
- 請簡潔描述 Mysql 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?
- 在 Mysql 中 ENUM 的用法是什么
- 如何定義 REGEXP?
- CHAR 和 VARCHAR 的區別?
- 列的字串型別可以是什么?
十六、Tomcat篇
- Tomcat 的預設埠是多少,怎么修改?
- Tomcat 有哪幾種 Connector 運行模式(優化)?
- Tomcat 有幾種部署方式?
- Tomcat 容器是如何創建 servlet 類實體?用到了什么原理?
- Tomcat 如何優化?
- 記憶體調優
- 垃圾回收策略調優
- 共享 session 處理
- 添加 JMS 遠程監控
- 關于 Tomcat 的 session 數目
- 監視 Tomcat 的記憶體使用情況
- 列印類的加載情況及物件的回收情況
- Tomcat 一個請求的完整程序
- Tomcat 作業模式
十七、zookeeper篇
- ZooKeeper 是什么?
- ZooKeeper 提供了什么?
- Zookeeper 檔案系統
- 四種型別的 znode
- Zookeeper 通知機制
- Zookeeper 做了什么?
- zk 的命名服務(檔案系統)
- zk 的配置管理(檔案系統、通知機制)
- Zookeeper 集群管理(檔案系統、通知機制)
- Zookeeper 分布式鎖(檔案系統、通知機制)
十八、并發編程篇
- Synchronized用過嗎,其原理是什么 ?
- 你剛才提到獲取物件的鎖,這個“鎖”是什么?如何確定物件的鎖?
- 什么是可重入性?為什么說Synchronized是可重入鎖?
- JVM對Java的原生鎖做了哪些優化?
- 為什么說Synchronized是非公平鎖?
- 什么是鎖消除和鎖粗化?
- 為什么說Synchronized是一個悲觀鎖?樂觀鎖的實作原理又是什么?
- 什么是CAS,它有什么特性?
- 樂觀鎖一定就是好的嗎?
- 跟Synchronized相比,可重入ReentrantLock其實作原理有什么不同?
- 請談談AQS框架是怎么回事
- 請盡可能詳盡地對比下Synchronized和ReentrantLock的異同
- ReentrantLock是如何實作可重入性的?
- 除了ReentrantLock,你還接觸過JUC中的哪些并發工具?
- 請談談ReadWriteLock和StampedLock
- 如何讓Java的執行緒彼此同步?你還了解過哪些同步器?請分別介紹一下
- CyclicBarrier和CountDownLatch看起來很相似,請對比一下
- Java中的執行緒池是如何實作的?
- 創建執行緒池的幾個核心構造引數
- 執行緒池中的執行緒是怎么創建的?是一開始就隨著執行緒池的啟動創建好的嗎?
- 既然提到可以通過配置不同引數創建不同的執行緒池,那么Java中默認實作好的執行緒池又有哪些?請比較它們的異同
- 如何在Java執行緒池中提交執行緒?
- 什么是Java的記憶體模型,Java中各個執行緒是怎么彼此看到對方的變數的?
- 請談談Volatile有什么特點,它為什么能保證變數對所有執行緒的可見性?
- 既然Volatile能保證縣城見的變數可見性,是不是就意味著基于Volatile變數的運算就是并發安全的?
- 請對比下Volatile和Synchronized的異同
- 請談談RhreadLocal是怎么解決并發安全的?
- 很多人都說要慎用TheadLocal,談談你的理解,使用TheadLocal需要注意些什么?
十九、多執行緒篇
- 現在有 T1、T2、T3 三個執行緒,你怎樣保證 T2 在 T1 執行完后執行,T3 在 T2 執行完后執行?
- 用 Java 寫代碼來解決生產者——消費者問題
- 用 Java 編程一個會導致死鎖的程式,你將怎么解決?
- 什么是原子操作,Java 中的原子操作是什么?
- Java 中的 volatile 關鍵是什么作用?怎樣使用它?在 Java 中它跟 synchronized 方法有什么不同?
- 你將如何使用 threaddump?你將如何分析 Thread dump?
- 為什么我們呼叫 start()方法時會執行 run()方法,為什么我們不能直接呼叫 run()方法?
- Java 中你怎樣喚醒一個阻塞的執行緒?
- 在 Java 中 CycliBarriar 和 CountdownLatch 有什么區別?
- 你在多執行緒環境中遇到的常見的問題是什么?你是怎么解決它的?
二十、開源框架篇
- BeanFactory 和 ApplicationContext 有什么區別?
- Spring Bean 的生命周期
- Spring IOC 如何實作?
- 說說 Spring AOP
- Spring AOP 實作原理
- 動態代理(cglib 與 JDK)
- Spring 事務實作方式
- Spring 事務底層原理
- 如何自定義注解實作功能
- Spring MVC 運行流程
- Spring MVC 啟動流程
- Spring 的單例實作原理
- Spring 框架中用到了哪些設計模式
- 為什么選擇 Netty
- 說說業務中,Netty 的使用場景
- 原生的 NIO 在 JDK 1.7 版本存在 epoll bug
- 什么是 TCP 粘包/拆包
- TCP 粘包/拆包的解決辦法
- Netty 執行緒模型
- 說說 Netty 的零拷貝
- Netty 內部執行流程
二十一、設計模式篇
- 請列舉出在 JDK 中幾個常用的設計模式?
- 什么是設計模式?你是否在你的代碼里面使用過任何設計模式?
- Java 中什么叫單例設計模式?請用 Java 寫出執行緒安全的單例模式
- 使用工廠模式最主要的好處是什么?在哪里使用?
- 舉一個用 Java 實作的裝飾模式(decorator design pattern)?它是作用于物件層次還是類層次?
- 在 Java 中,為什么不允許從靜態方法中訪問非靜態變數?
- 設計一個 ATM 機,請說出你的設計思路?
- 在 Java 中,什么時候用多載,什么時候用重寫?
- 舉例說明什么情況下會更傾向于使用抽象類而不是介面?
二十二、微服務篇
- 前后端分離是如何做的
- 微服務哪些框架
- 說說 RPC 的實作原理
- 說說 Dubbo 的實作原理
讀者福利
本文為大家整理了25類面試題,同時還整理了一些學習資料,
如果需要獲取本文面試題答案和學習資料的小伙伴可以關注我之后見下圖

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/136236.html
標籤:Java
