news 2026/9/16 7:00:19

2026年9月 Java 面试题整理:200道 Java 高频面试题复习清单

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2026年9月 Java 面试题整理:200道 Java 高频面试题复习清单

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题。

自我介绍与项目深挖

  1. 请用 3 分钟完成一段面向 Java 开发岗位的自我介绍。

  2. 挑一个最能代表你的项目,说明它解决了什么业务问题。

  3. 画出项目的整体架构,并说明一次请求经过了哪些组件。

  4. 你在项目中具体负责什么?如何区分个人贡献和团队成果?

  5. 项目里最难的技术问题是什么?你是如何拆解和解决的?

  6. 项目中遇到过什么线上故障?你如何止损、定位、修复和复盘?

  7. 你做过哪项性能优化?优化前后的数据分别是多少?

  8. 项目如何保证接口幂等?幂等键、状态机和唯一约束如何配合?

Java 基础与现代 Java

  1. JDK、JRE 和 JVM 分别是什么?它们之间是什么关系?

  2. 重载和重写有什么区别?编译期和运行期分别如何选择方法?

  3. 接口和抽象类有什么区别?你会如何做工程选型?

  4. ==、equals 和 hashCode 之间是什么关系?

  5. 为什么 String 被设计为不可变对象?

  6. String、StringBuilder 和 StringBuffer 如何选择?

  7. int 和 Integer 有什么区别?自动装箱、拆箱和缓存有哪些陷阱?

  8. Java 异常体系如何划分?Checked Exception 和 RuntimeException 如何选?

  9. try-with-resources 是如何保证资源关闭的?异常压制是什么?

  10. 泛型解决了什么问题?什么是类型擦除?

  11. Lambda、Stream 和 Optional 分别适合解决什么问题?

  12. Java 参数传递到底是值传递还是引用传递?

  13. Stream 的惰性求值、短路操作和并行流有哪些注意事项?

  14. Record 适合表达什么数据?它与普通不可变类有什么不同?

  15. 从 Java 8 迁移到 Java 17/21/25,需要检查哪些兼容性和依赖风险?

  16. 简单工厂、工厂方法和抽象工厂有什么区别?如何避免过度设计?

  17. 策略、工厂和责任链模式如何组合处理可扩展业务规则?

集合框架与源码

  1. Java 集合框架的主要接口和实现类有哪些?

  2. ArrayList 和 LinkedList 的数据结构、复杂度和真实使用差异是什么?

  3. HashMap 的底层结构、put 流程和 get 流程是什么?

  4. 为什么 HashMap 的容量通常是 2 的幂,默认负载因子是 0.75?

  5. HashMap 在什么条件下树化和退化?为什么使用红黑树?

  6. HashSet 如何保证元素不重复?它与 HashMap 是什么关系?

  7. Iterator 的 fail-fast 是什么?它能否作为并发安全保证?

  8. ConcurrentHashMap 在不同 JDK 版本中如何保证并发安全?

  9. CopyOnWriteArrayList 的原理、成本和适用场景是什么?

  10. TreeMap 和 LinkedHashMap 各自如何维护顺序?

  11. 如何安全地在遍历集合时删除元素?

并发编程与 JMM

  1. Java 线程有哪些状态?状态之间如何转换?

  2. sleep、wait、join、park 有什么区别?

  3. Java 内存模型解决了什么问题?

  4. 原子性、可见性和有序性分别是什么?

  5. volatile 能保证什么,不能保证什么?

  6. happens-before 规则有哪些?如何用它证明代码正确?

  7. synchronized 如何实现?锁升级与优化经历了什么变化?

  8. synchronized 和 ReentrantLock 如何选择?

  9. CAS 的原理是什么?ABA、忙等和高竞争问题如何处理?

  10. ThreadLocal 的实现原理是什么?为什么可能产生内存泄漏?

  11. Java 线程池的核心参数、执行流程和拒绝策略是什么?

  12. 如何根据 CPU 密集、IO 密集和下游容量设置线程池?

  13. AQS 的状态、同步队列和 Condition 队列如何协作?

  14. 如何优雅停止线程和线程池?interrupt 的正确语义是什么?

  15. 如何构造、检测和排查 Java 死锁?

  16. 虚拟线程与平台线程的调度模型有什么不同?

JVM、GC 与性能诊断

  1. JVM 运行时数据区域如何划分?哪些区域是线程私有的?

  2. Java 对象的创建过程是什么?对象一定分配在堆上吗?

  3. 如何判断对象是否可回收?GC Roots 包括哪些对象?

  4. 强、软、弱、虚引用有什么区别?

  5. 标记清除、复制、标记整理和分代收集分别解决什么问题?

  6. 常见垃圾收集器有哪些?G1 的核心设计是什么?

  7. Minor GC、Major GC 和 Full GC 分别意味着什么?

  8. 类加载过程有哪些阶段?加载、链接和初始化分别做什么?

  9. 双亲委派模型解决了什么问题?哪些场景会打破它?

  10. 常见 OOM 类型有哪些?每一种该如何收集证据?

  11. ZGC、Shenandoah 与 G1 的目标和适用场景有什么差异?

  12. 线上 CPU 飙高时,如何把系统线程定位到 Java 方法?

  13. 如何分析内存持续增长、内存泄漏和频繁 Full GC?

Spring、Spring Boot 与安全

  1. 什么是 IoC 和依赖注入?它们解决了什么问题?

  2. Spring Bean 的生命周期有哪些关键阶段和扩展点?

  3. Bean 的作用域有哪些?单例 Bean 一定线程安全吗?

  4. Spring 如何解决常见的单例循环依赖?哪些情况无法解决?

  5. 为什么循环依赖实现中会出现三级缓存?它和 AOP 有什么关系?

  6. 什么是 AOP?Spring AOP 的代理对象如何创建?

  7. JDK 动态代理和 CGLIB 代理如何选择?

  8. Spring 事务是如何通过代理生效的?

  9. 事务传播行为和隔离级别分别解决什么问题?

  10. @Transactional 常见失效场景有哪些?

  11. Spring MVC 一次请求的完整处理流程是什么?

  12. 过滤器、拦截器、ControllerAdvice 和 AOP 如何选择?

  13. Spring Boot 自动配置的核心原理是什么?

  14. Starter、AutoConfiguration 和条件注解如何协作?

  15. Spring Boot 应用从 main 方法到 Web 服务就绪经历了什么?

  16. 配置文件、环境变量、命令行参数和配置中心的优先级如何管理?

  17. Spring Security 的过滤器链和 SecurityContext 如何工作?

  18. 如何为 Spring Boot 服务实现优雅启动、优雅停机和流量摘除?

  19. Spring、Spring Boot 与 Spring Cloud 的职责边界和协作关系是什么?

持久层、MyBatis 与 JPA

  1. JDBC 执行一条查询经历了哪些步骤?

  2. 数据库连接池解决了什么问题?核心参数如何设置?

  3. MyBatis 的 SqlSession、Executor、StatementHandler 分别负责什么?

  4. MyBatis 中 #{} 和 ${} 有什么区别?为什么后者可能导致 SQL 注入?

  5. MyBatis 的一级缓存和二级缓存如何工作?为什么二级缓存使用较少?

  6. MyBatis 动态 SQL 的常用能力和维护风险是什么?

  7. 什么是 N+1 查询?如何通过日志、抓包或指标发现它?

  8. 连接池耗尽时如何判断是慢 SQL、长事务、泄漏还是下游故障?

MySQL、SQL 与数据建模

  1. InnoDB 为什么是 MySQL 的默认存储引擎?它的核心能力是什么?

  2. 一条 SQL 从客户端到返回结果经历了哪些阶段?

  3. 为什么 InnoDB 使用 B+ 树作为主要索引结构?

  4. 聚簇索引和二级索引有什么区别?什么是回表?

  5. 联合索引的最左前缀原则是什么?哪些条件会中断匹配?

  6. 覆盖索引和索引下推分别减少了什么成本?

  7. 什么情况下 MySQL 可能不使用你创建的索引?

  8. 如何读懂 EXPLAIN 中的访问类型、key、rows、filtered 和 Extra?

  9. ACID 分别是什么?InnoDB 如何实现事务?

  10. 脏读、不可重复读和幻读分别是什么?

  11. MySQL 的隔离级别有哪些?InnoDB 的默认行为有什么特点?

  12. MVCC 的 Read View、隐藏列和 undo log 如何协作?

  13. redo log、undo log 和 binlog 分别解决什么问题?

  14. MySQL 中有哪些行锁和间隙锁?它们何时出现?

  15. 如何分析并处理 MySQL 死锁?为什么简单重试还不够?

  16. 如何系统地优化一条慢 SQL,而不是直接加索引?

  17. 如何解决深分页?游标分页有哪些限制?

  18. 分库分表的拆分键如何选择?跨库查询、分页和唯一键如何处理?

Redis 与缓存工程

  1. Redis 常用数据类型、底层编码和典型场景有哪些?

  2. Redis 为什么快?事件循环、内存访问和数据结构分别贡献了什么?

  3. 如何使用 Redis 实现缓存、排行榜、计数器和限流?

  4. 缓存穿透、缓存击穿和缓存雪崩有什么区别?

  5. 缓存与数据库如何保持一致?为什么不存在通用的完美方案?

  6. Redis 的过期删除策略和内存淘汰策略有哪些?

  7. RDB 和 AOF 的流程、持久性和恢复速度如何权衡?

  8. Redis 主从复制的全量同步和增量同步如何工作?

  9. Sentinel 解决了什么问题?故障转移期间会发生什么?

  10. Redis Cluster 如何使用 16384 个槽分片?MOVED 和 ASK 有什么区别?

  11. 使用 SET NX PX 实现分布式锁需要满足哪些条件?

  12. 什么是 Big Key?如何发现、删除和预防?

  13. 什么是 Hot Key?如何识别并分散访问压力?

Kafka、RocketMQ 与 RabbitMQ

  1. 消息队列解决了哪些耦合、削峰和异步问题?它带来了哪些复杂度?

  2. 如何保证消息不丢失?生产者、Broker 和消费者分别做什么?

  3. 消息为什么会重复?消费者如何实现幂等?

  4. 如何保证消息有序?全局顺序和分区顺序有什么代价?

  5. 消息积压时如何止损、扩容、回放和保护下游?

  6. Kafka 的 Topic、Partition、Replica 和 Consumer Group 是什么?

  7. RocketMQ、Kafka 和 RabbitMQ 的定位与典型选型依据是什么?

  8. 死信、重试和延迟消息应如何设计,避免无限循环?

  9. Kafka Producer 的 acks、重试和幂等生产者如何配合?

  10. Kafka Consumer 的位点提交时机如何影响重复和丢失?

  11. RabbitMQ 的 Exchange、Queue、Binding 和路由键如何协作?

  12. 如何设计 Outbox/CDC 模式,保证数据库事务和消息发布一致?

微服务与分布式系统

  1. 单体、模块化单体和微服务分别适合什么阶段?

  2. 如何划分微服务边界?按表拆服务为什么通常是坏主意?

  3. 服务注册与发现的工作流程是什么?客户端发现和服务端发现有何差异?

  4. API 网关承担哪些职责?哪些业务逻辑不应该放在网关?

  5. 什么是超时、重试、熔断、降级、隔离和限流?它们如何组合?

  6. 重试为什么可能放大故障?如何使用退避、抖动和重试预算?

  7. CAP 和 BASE 分别表达什么?常见误解有哪些?

  8. 强一致、顺序一致、因果一致和最终一致有什么区别?

  9. 分布式事务有哪些实现思路?2PC、TCC、Saga 和消息最终一致如何选?

  10. 分布式锁有哪些实现方式?Redis、ZooKeeper 和数据库方案如何取舍?

  11. 全局唯一 ID 有哪些生成方案?时钟回拨和趋势递增如何处理?

  12. 如何保证跨服务调用的幂等和去重?

  13. Nacos 的服务发现、健康检查和配置推送分别如何工作?

  14. Elasticsearch 的倒排索引、mapping、分词器和 doc values 分别解决什么问题?

网络、操作系统与 Linux

  1. 从输入 URL 到页面展示,DNS、TCP、TLS、HTTP 和浏览器分别做了什么?

  2. TCP 和 UDP 的语义、开销和适用场景有什么区别?

  3. TCP 三次握手为什么不能简化为两次?

  4. TCP 四次挥手和 TIME_WAIT 分别解决什么问题?

  5. TCP 如何通过序号、确认、重传和滑动窗口保证可靠传输?

  6. HTTP/1.1、HTTP/2 和 HTTP/3 的核心差异是什么?

  7. HTTPS 握手如何完成身份认证、密钥协商和加密通信?

  8. Cookie、Session、Token 和 JWT 有什么区别?

  9. 进程和线程的地址空间、调度和通信方式有什么差异?

  10. Linux 上如何查看进程、端口、CPU、内存、磁盘和网络状态?

系统设计与业务场景

  1. 面对系统设计题,你会按什么顺序澄清需求、估算容量并展开方案?

  2. 如何设计一个短链接系统?

  3. 如何设计一个秒杀系统,避免超卖并保护数据库?

  4. 如何设计一个实时排行榜?

  5. 如何设计大文件分片上传、断点续传和秒传?

  6. 如何设计订单创建、支付和超时关闭流程?

  7. 如何设计一个可靠的接口幂等组件?

  8. 如何设计库存预占、扣减、释放和对账流程?

  9. 如何设计多租户 SaaS 的租户、权限和数据隔离?

  10. 给定日活、峰值 QPS 和数据保留周期,如何完成容量与成本估算?

工程化、云原生与可观测性

  1. Maven 的生命周期、依赖范围和依赖冲突如何处理?

  2. Docker 镜像与容器是什么关系?容器与虚拟机有什么区别?

  3. Kubernetes 中 Pod、Deployment、Service 和 Ingress 分别负责什么?

  4. 启动、存活和就绪探针有什么区别?错误配置会造成什么故障?

  5. 什么是 CI/CD?一次可靠发布流水线应包含哪些检查和证据?

  6. 日志、指标和链路追踪分别回答什么问题?

  7. 如何实现蓝绿发布、金丝雀发布和功能开关?

  8. 如何设计结构化日志、Trace ID 和敏感字段脱敏?

测试、质量与应用安全

  1. 单元测试、集成测试、契约测试和端到端测试分别验证什么?

  2. SQL 注入、XSS、CSRF、SSRF 分别如何产生和防护?

  3. 密码应如何存储?为什么不能使用可逆加密或普通哈希?

  4. 认证和授权有什么区别?RBAC、ABAC 和数据权限如何组合?

  5. 文件上传接口需要检查哪些扩展名、内容、路径、权限和病毒风险?

  6. JWT 常见的签名、过期、撤销、重放和密钥轮换问题是什么?

数据结构、算法与手写代码

  1. 如何分析时间复杂度和空间复杂度?均摊复杂度是什么?

  2. 手写二分查找,并正确处理左右边界和重复元素。

  3. 手写链表反转,并比较迭代与递归实现。

  4. 如何判断链表是否有环,并找到环的入口?

  5. 如何找出数组中和为目标值的两个数或三个数?

  6. 二叉树的前序、中序、后序和层序遍历如何实现?

  7. 如何实现 LRU 缓存,保证 get 和 put 都是 O(1)?

  8. BFS 和 DFS 如何选择?如何避免图遍历中的重复访问?

  9. 动态规划题如何定义状态、转移、初始化和遍历顺序?

前端基础与全栈协作

  1. 前后端分离项目如何设计统一请求、错误码、登录态和权限?

  2. CORS 为什么由浏览器执行?预检请求和凭证模式如何处理?

  3. 文件上传、下载、SSE 和 WebSocket 的前后端接口应如何设计?

  4. 如何用 OpenAPI 管理接口契约、代码生成、兼容性检查和版本演进?

Java AI 应用与 Spring AI

  1. RAG 的数据加载、切分、向量化、检索和生成流程是什么?

  2. Prompt、结构化输出和 Tool Calling 分别适合解决什么问题?

  3. Spring AI 的 ChatClient、Model API、Advisor 和 VectorStore 各自负责什么?

  4. 如何处理模型幻觉、提示注入和不可信检索内容?

想免费对照答案继续练?

挑出刚才讲不清楚的题,到“我的教室”选择Java后端工程师,免费查看平台参考答案,继续按岗位练习。

网站 mianshiti.net

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 6:59:15

多模态大模型驱动数字孪生:从可视化到智能交互的实战

这几年做数字孪生项目,我最大的感受是:行业里不缺三维可视化能力,缺的是让这个“数字双胞胎”真正会思考、会交流的能力。传统的数字孪生系统,说到底就是把设备状态、传感器数据搬到屏幕上,人去看、去分析、去决策。但…

作者头像 李华
网站建设 2026/9/16 6:58:26

Win10系统安装全攻略:官方ISO与PE安装及UEFI/GPT分区匹配指南

微软原版ISO、PE安装、UEFI与Legacy分区这些关键词,几乎每个装系统的朋友都绕不开。今天这篇就一次性把这些说透,包括官方ISO直装和微PE两种方法,以及UEFIGPT和LegacyMBR这两种分区模式的区别和选择逻辑。如果你正准备自己重装Win10&#xff…

作者头像 李华
网站建设 2026/9/16 6:58:25

校园社团管理系统:SpringBoot+Vue3全栈开发实践

1. 项目概述:校园社团管理系统的技术架构与核心价值校园社团作为学生课外活动的重要载体,其管理效率直接影响着学生参与度和组织活力。传统基于Excel或纸质档案的管理方式存在信息孤岛、流程繁琐、数据易丢失等问题。这套基于Java SpringBootVue3MyBatis…

作者头像 李华
网站建设 2026/9/16 6:58:24

RDMA与GPUDirect:从内存旁路到GPU直接通信的技术解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/16 6:57:14

MatlabPNM:面向岩心CT数据的孔隙网络建模与渗流仿真框架

简介:本资源是一个面向科研人员与工程技术人员的Matlab孔隙网络建模工具包,专为多孔介质中流体流动、扩散传质及化学反应等过程的数值模拟而设计,适用于石油工程、地质学、环境科学和材料科学等领域。包内共33个文件,含14个核心功…

作者头像 李华
网站建设 2026/9/16 6:53:19

基于需求侧响应的配电网供电能力评估与Matlab实现

1. 项目背景与核心价值配电网供电能力评估一直是电力系统规划与运行中的关键课题。传统评估方法往往只考虑供给侧因素,而忽略了需求侧资源的调节潜力。这项研究创新性地将需求侧响应(Demand Side Response, DSR)机制引入评估体系,…

作者头像 李华