2026年9月 Java 面试题整理200道 Java 高频面试题复习清单这份清单整理了200道Java面试题覆盖Java基础、集合、并发、JVM、Spring、MySQL、Redis、消息队列、分布式、系统设计和算法适合面试前查漏补缺。同时纳入项目深挖、持久层、网络与Linux、工程化、安全测试、全栈协作和Java AI应用。自测时试着回答三个问题结论是什么为什么能举个例子吗把每题标成“能讲清楚 / 讲不完整 / 还不会”优先复习后两类。复习目录自我介绍与项目深挖第1—8题。Java 基础与现代 Java第9—25题。集合框架与源码第26—36题。并发编程与 JMM第37—52题。JVM、GC 与性能诊断第53—65题。Spring、Spring Boot 与安全第66—84题。持久层、MyBatis 与 JPA第85—92题。MySQL、SQL 与数据建模第93—110题。Redis 与缓存工程第111—123题。Kafka、RocketMQ 与 RabbitMQ第124—135题。微服务与分布式系统第136—149题。网络、操作系统与 Linux第150—159题。系统设计与业务场景第160—169题。工程化、云原生与可观测性第170—177题。测试、质量与应用安全第178—183题。数据结构、算法与手写代码第184—192题。前端基础与全栈协作第193—196题。Java AI 应用与 Spring AI第197—200题。自我介绍与项目深挖请用 3 分钟完成一段面向 Java 开发岗位的自我介绍。挑一个最能代表你的项目说明它解决了什么业务问题。画出项目的整体架构并说明一次请求经过了哪些组件。你在项目中具体负责什么如何区分个人贡献和团队成果项目里最难的技术问题是什么你是如何拆解和解决的项目中遇到过什么线上故障你如何止损、定位、修复和复盘你做过哪项性能优化优化前后的数据分别是多少项目如何保证接口幂等幂等键、状态机和唯一约束如何配合Java 基础与现代 JavaJDK、JRE 和 JVM 分别是什么它们之间是什么关系重载和重写有什么区别编译期和运行期分别如何选择方法接口和抽象类有什么区别你会如何做工程选型、equals 和 hashCode 之间是什么关系为什么 String 被设计为不可变对象String、StringBuilder 和 StringBuffer 如何选择int 和 Integer 有什么区别自动装箱、拆箱和缓存有哪些陷阱Java 异常体系如何划分Checked Exception 和 RuntimeException 如何选try-with-resources 是如何保证资源关闭的异常压制是什么泛型解决了什么问题什么是类型擦除Lambda、Stream 和 Optional 分别适合解决什么问题Java 参数传递到底是值传递还是引用传递Stream 的惰性求值、短路操作和并行流有哪些注意事项Record 适合表达什么数据它与普通不可变类有什么不同从 Java 8 迁移到 Java 17/21/25需要检查哪些兼容性和依赖风险简单工厂、工厂方法和抽象工厂有什么区别如何避免过度设计策略、工厂和责任链模式如何组合处理可扩展业务规则集合框架与源码Java 集合框架的主要接口和实现类有哪些ArrayList 和 LinkedList 的数据结构、复杂度和真实使用差异是什么HashMap 的底层结构、put 流程和 get 流程是什么为什么 HashMap 的容量通常是 2 的幂默认负载因子是 0.75HashMap 在什么条件下树化和退化为什么使用红黑树HashSet 如何保证元素不重复它与 HashMap 是什么关系Iterator 的 fail-fast 是什么它能否作为并发安全保证ConcurrentHashMap 在不同 JDK 版本中如何保证并发安全CopyOnWriteArrayList 的原理、成本和适用场景是什么TreeMap 和 LinkedHashMap 各自如何维护顺序如何安全地在遍历集合时删除元素并发编程与 JMMJava 线程有哪些状态状态之间如何转换sleep、wait、join、park 有什么区别Java 内存模型解决了什么问题原子性、可见性和有序性分别是什么volatile 能保证什么不能保证什么happens-before 规则有哪些如何用它证明代码正确synchronized 如何实现锁升级与优化经历了什么变化synchronized 和 ReentrantLock 如何选择CAS 的原理是什么ABA、忙等和高竞争问题如何处理ThreadLocal 的实现原理是什么为什么可能产生内存泄漏Java 线程池的核心参数、执行流程和拒绝策略是什么如何根据 CPU 密集、IO 密集和下游容量设置线程池AQS 的状态、同步队列和 Condition 队列如何协作如何优雅停止线程和线程池interrupt 的正确语义是什么如何构造、检测和排查 Java 死锁虚拟线程与平台线程的调度模型有什么不同JVM、GC 与性能诊断JVM 运行时数据区域如何划分哪些区域是线程私有的Java 对象的创建过程是什么对象一定分配在堆上吗如何判断对象是否可回收GC Roots 包括哪些对象强、软、弱、虚引用有什么区别标记清除、复制、标记整理和分代收集分别解决什么问题常见垃圾收集器有哪些G1 的核心设计是什么Minor GC、Major GC 和 Full GC 分别意味着什么类加载过程有哪些阶段加载、链接和初始化分别做什么双亲委派模型解决了什么问题哪些场景会打破它常见 OOM 类型有哪些每一种该如何收集证据ZGC、Shenandoah 与 G1 的目标和适用场景有什么差异线上 CPU 飙高时如何把系统线程定位到 Java 方法如何分析内存持续增长、内存泄漏和频繁 Full GCSpring、Spring Boot 与安全什么是 IoC 和依赖注入它们解决了什么问题Spring Bean 的生命周期有哪些关键阶段和扩展点Bean 的作用域有哪些单例 Bean 一定线程安全吗Spring 如何解决常见的单例循环依赖哪些情况无法解决为什么循环依赖实现中会出现三级缓存它和 AOP 有什么关系什么是 AOPSpring AOP 的代理对象如何创建JDK 动态代理和 CGLIB 代理如何选择Spring 事务是如何通过代理生效的事务传播行为和隔离级别分别解决什么问题Transactional 常见失效场景有哪些Spring MVC 一次请求的完整处理流程是什么过滤器、拦截器、ControllerAdvice 和 AOP 如何选择Spring Boot 自动配置的核心原理是什么Starter、AutoConfiguration 和条件注解如何协作Spring Boot 应用从 main 方法到 Web 服务就绪经历了什么配置文件、环境变量、命令行参数和配置中心的优先级如何管理Spring Security 的过滤器链和 SecurityContext 如何工作如何为 Spring Boot 服务实现优雅启动、优雅停机和流量摘除Spring、Spring Boot 与 Spring Cloud 的职责边界和协作关系是什么持久层、MyBatis 与 JPAJDBC 执行一条查询经历了哪些步骤数据库连接池解决了什么问题核心参数如何设置MyBatis 的 SqlSession、Executor、StatementHandler 分别负责什么MyBatis 中 #{} 和 ${} 有什么区别为什么后者可能导致 SQL 注入MyBatis 的一级缓存和二级缓存如何工作为什么二级缓存使用较少MyBatis 动态 SQL 的常用能力和维护风险是什么什么是 N1 查询如何通过日志、抓包或指标发现它连接池耗尽时如何判断是慢 SQL、长事务、泄漏还是下游故障MySQL、SQL 与数据建模InnoDB 为什么是 MySQL 的默认存储引擎它的核心能力是什么一条 SQL 从客户端到返回结果经历了哪些阶段为什么 InnoDB 使用 B 树作为主要索引结构聚簇索引和二级索引有什么区别什么是回表联合索引的最左前缀原则是什么哪些条件会中断匹配覆盖索引和索引下推分别减少了什么成本什么情况下 MySQL 可能不使用你创建的索引如何读懂 EXPLAIN 中的访问类型、key、rows、filtered 和 ExtraACID 分别是什么InnoDB 如何实现事务脏读、不可重复读和幻读分别是什么MySQL 的隔离级别有哪些InnoDB 的默认行为有什么特点MVCC 的 Read View、隐藏列和 undo log 如何协作redo log、undo log 和 binlog 分别解决什么问题MySQL 中有哪些行锁和间隙锁它们何时出现如何分析并处理 MySQL 死锁为什么简单重试还不够如何系统地优化一条慢 SQL而不是直接加索引如何解决深分页游标分页有哪些限制分库分表的拆分键如何选择跨库查询、分页和唯一键如何处理Redis 与缓存工程Redis 常用数据类型、底层编码和典型场景有哪些Redis 为什么快事件循环、内存访问和数据结构分别贡献了什么如何使用 Redis 实现缓存、排行榜、计数器和限流缓存穿透、缓存击穿和缓存雪崩有什么区别缓存与数据库如何保持一致为什么不存在通用的完美方案Redis 的过期删除策略和内存淘汰策略有哪些RDB 和 AOF 的流程、持久性和恢复速度如何权衡Redis 主从复制的全量同步和增量同步如何工作Sentinel 解决了什么问题故障转移期间会发生什么Redis Cluster 如何使用 16384 个槽分片MOVED 和 ASK 有什么区别使用 SET NX PX 实现分布式锁需要满足哪些条件什么是 Big Key如何发现、删除和预防什么是 Hot Key如何识别并分散访问压力Kafka、RocketMQ 与 RabbitMQ消息队列解决了哪些耦合、削峰和异步问题它带来了哪些复杂度如何保证消息不丢失生产者、Broker 和消费者分别做什么消息为什么会重复消费者如何实现幂等如何保证消息有序全局顺序和分区顺序有什么代价消息积压时如何止损、扩容、回放和保护下游Kafka 的 Topic、Partition、Replica 和 Consumer Group 是什么RocketMQ、Kafka 和 RabbitMQ 的定位与典型选型依据是什么死信、重试和延迟消息应如何设计避免无限循环Kafka Producer 的 acks、重试和幂等生产者如何配合Kafka Consumer 的位点提交时机如何影响重复和丢失RabbitMQ 的 Exchange、Queue、Binding 和路由键如何协作如何设计 Outbox/CDC 模式保证数据库事务和消息发布一致微服务与分布式系统单体、模块化单体和微服务分别适合什么阶段如何划分微服务边界按表拆服务为什么通常是坏主意服务注册与发现的工作流程是什么客户端发现和服务端发现有何差异API 网关承担哪些职责哪些业务逻辑不应该放在网关什么是超时、重试、熔断、降级、隔离和限流它们如何组合重试为什么可能放大故障如何使用退避、抖动和重试预算CAP 和 BASE 分别表达什么常见误解有哪些强一致、顺序一致、因果一致和最终一致有什么区别分布式事务有哪些实现思路2PC、TCC、Saga 和消息最终一致如何选分布式锁有哪些实现方式Redis、ZooKeeper 和数据库方案如何取舍全局唯一 ID 有哪些生成方案时钟回拨和趋势递增如何处理如何保证跨服务调用的幂等和去重Nacos 的服务发现、健康检查和配置推送分别如何工作Elasticsearch 的倒排索引、mapping、分词器和 doc values 分别解决什么问题网络、操作系统与 Linux从输入 URL 到页面展示DNS、TCP、TLS、HTTP 和浏览器分别做了什么TCP 和 UDP 的语义、开销和适用场景有什么区别TCP 三次握手为什么不能简化为两次TCP 四次挥手和 TIME_WAIT 分别解决什么问题TCP 如何通过序号、确认、重传和滑动窗口保证可靠传输HTTP/1.1、HTTP/2 和 HTTP/3 的核心差异是什么HTTPS 握手如何完成身份认证、密钥协商和加密通信Cookie、Session、Token 和 JWT 有什么区别进程和线程的地址空间、调度和通信方式有什么差异Linux 上如何查看进程、端口、CPU、内存、磁盘和网络状态系统设计与业务场景面对系统设计题你会按什么顺序澄清需求、估算容量并展开方案如何设计一个短链接系统如何设计一个秒杀系统避免超卖并保护数据库如何设计一个实时排行榜如何设计大文件分片上传、断点续传和秒传如何设计订单创建、支付和超时关闭流程如何设计一个可靠的接口幂等组件如何设计库存预占、扣减、释放和对账流程如何设计多租户 SaaS 的租户、权限和数据隔离给定日活、峰值 QPS 和数据保留周期如何完成容量与成本估算工程化、云原生与可观测性Maven 的生命周期、依赖范围和依赖冲突如何处理Docker 镜像与容器是什么关系容器与虚拟机有什么区别Kubernetes 中 Pod、Deployment、Service 和 Ingress 分别负责什么启动、存活和就绪探针有什么区别错误配置会造成什么故障什么是 CI/CD一次可靠发布流水线应包含哪些检查和证据日志、指标和链路追踪分别回答什么问题如何实现蓝绿发布、金丝雀发布和功能开关如何设计结构化日志、Trace ID 和敏感字段脱敏测试、质量与应用安全单元测试、集成测试、契约测试和端到端测试分别验证什么SQL 注入、XSS、CSRF、SSRF 分别如何产生和防护密码应如何存储为什么不能使用可逆加密或普通哈希认证和授权有什么区别RBAC、ABAC 和数据权限如何组合文件上传接口需要检查哪些扩展名、内容、路径、权限和病毒风险JWT 常见的签名、过期、撤销、重放和密钥轮换问题是什么数据结构、算法与手写代码如何分析时间复杂度和空间复杂度均摊复杂度是什么手写二分查找并正确处理左右边界和重复元素。手写链表反转并比较迭代与递归实现。如何判断链表是否有环并找到环的入口如何找出数组中和为目标值的两个数或三个数二叉树的前序、中序、后序和层序遍历如何实现如何实现 LRU 缓存保证 get 和 put 都是 O(1)BFS 和 DFS 如何选择如何避免图遍历中的重复访问动态规划题如何定义状态、转移、初始化和遍历顺序前端基础与全栈协作前后端分离项目如何设计统一请求、错误码、登录态和权限CORS 为什么由浏览器执行预检请求和凭证模式如何处理文件上传、下载、SSE 和 WebSocket 的前后端接口应如何设计如何用 OpenAPI 管理接口契约、代码生成、兼容性检查和版本演进Java AI 应用与 Spring AIRAG 的数据加载、切分、向量化、检索和生成流程是什么Prompt、结构化输出和 Tool Calling 分别适合解决什么问题Spring AI 的 ChatClient、Model API、Advisor 和 VectorStore 各自负责什么如何处理模型幻觉、提示注入和不可信检索内容想免费对照答案继续练挑出刚才讲不清楚的题到“我的教室”选择Java后端工程师免费查看平台参考答案继续按岗位练习。网站 mianshiti.net