Skip to content

Java 后端面试题

高频优先刷题顺序

P0 必刷

  • Spring 和 Spring Boot
  • Spring 事务
  • @Transactional 失效场景
  • MySQL 索引 / B+ 树
  • Redis 为什么快
  • MQ 解决什么问题
  • Java 为什么适合企业级后端
  • 模型调用网关设计

P1 高频

  • JVM 内存结构
  • Full GC 排查
  • 线程池
  • synchronized 和 ReentrantLock
  • IoC 和 AOP

P2 扩展

  • 垃圾回收算法
  • CAS
  • 乐观锁和悲观锁
  • 微服务治理细节

面试前 1 小时只看这些

  1. Spring / 事务 / @Transactional
  2. MySQL / Redis / MQ
  3. JVM 和线程池
  4. 模型网关和知识库后台设计

前端转 AI 全栈开发工程师,除了 Node.js,很多岗位也会要求理解 Java 后端体系,尤其是中后台、企业服务、平台类和 AI 基础设施类岗位。

这份内容不讲 Java 语法细节,重点从面试视角整理 Java 后端高频问题。

Java 为什么适合做后端?

参考答案

Details

Java 在后端领域长期稳定,核心优势主要有:

  1. 生态成熟,Spring / Spring Boot / Spring Cloud 体系完善。
  2. JVM 稳定,适合高并发、长生命周期服务。
  3. 多线程、并发工具链完整,适合复杂业务系统。
  4. 企业级开发规范成熟,适合大型团队协作。
  5. 数据库、中间件、监控、微服务配套丰富。

对 AI 全栈岗位而言,Java 常用于:

  • 用户系统、订单系统、权限系统
  • 企业级后台管理平台
  • 模型调用网关
  • 任务调度平台
  • 知识库管理后台

面试官最爱追问

  • 为什么很多企业级系统仍然偏爱 Java?
  • Java 和 Node.js 在后端能力上的核心差异是什么?
  • AI 平台型项目为什么常见 Java 栈?

JVM 是什么?为什么重要?

参考答案

Details

JVM 是 Java 虚拟机,Java 程序先编译成字节码,再由 JVM 在不同平台执行。

JVM 重要,是因为它直接影响:

  • 内存分配
  • 垃圾回收
  • 性能调优
  • 服务稳定性

面试高频会问:

  1. JVM 内存结构
  • 程序计数器
  • 虚拟机栈
  • 本地方法栈
  • 方法区 / 元空间
  1. 堆里主要放对象实例,栈里主要放局部变量、方法调用帧。

  2. Full GC 频繁通常意味着:

  • 对象创建过多
  • 内存泄漏
  • 堆配置不合理
  • 大对象过多

面试官最爱追问

  • 堆和栈最容易答错的点是什么?
  • Full GC 频繁时你会怎么排查?
  • 为什么 JVM 问题常常会影响线上稳定性?

Java 垃圾回收机制 GC

参考答案

Details

GC 的核心目标是自动回收不再使用的对象,避免手动内存管理。

常见面试点:

  1. 如何判断对象可回收?
  • 引用计数法
  • 可达性分析

Java 主要使用可达性分析。

  1. 常见垃圾回收算法:
  • 标记清除
  • 标记整理
  • 复制算法
  1. 分代回收思想:
  • 新生代
  • 老年代

因为大部分对象“朝生夕死”,所以分代回收效率更高。

  1. 为什么会发生 STW?

GC 时为了保证对象引用关系一致,某些阶段需要暂停用户线程,这就是 Stop The World。

Java 线程和线程池

参考答案

Details

Java 是多线程模型,可以更充分利用多核 CPU。常见问题:

  1. 为什么不建议频繁创建线程?
  • 创建和销毁开销大
  • 线程太多会导致上下文切换严重
  • 难以统一控制资源
  1. 为什么使用线程池?
  • 复用线程
  • 控制最大并发数
  • 支持任务队列
  • 方便监控和拒绝策略
  1. 线程池核心参数:
  • corePoolSize
  • maximumPoolSize
  • keepAliveTime
  • workQueue
  • rejectedExecutionHandler
  1. 常见拒绝策略:
  • AbortPolicy
  • CallerRunsPolicy
  • DiscardPolicy
  • DiscardOldestPolicy

synchronized 和 ReentrantLock 的区别

参考答案

Details

二者都可以实现互斥同步,但侧重点不同:

  1. synchronized 是 JVM 层关键字,语法简单。
  2. ReentrantLock 是 JUC 包中的显示锁,功能更灵活。

常见区别:

  • ReentrantLock 可手动加锁 / 解锁
  • 支持公平锁 / 非公平锁
  • 支持可中断锁等待
  • 支持条件变量 Condition

面试里一般会继续追问:

  • 死锁如何排查?
  • 乐观锁和悲观锁的区别?
  • CAS 是什么?

Spring 和 Spring Boot 的区别

参考答案

Details
  1. Spring 是一个大生态,核心能力包括 IoC、AOP、事务管理等。
  2. Spring Boot 是在 Spring 基础上做自动配置和快速启动,减少大量样板代码。

简单说:

  • Spring 解决“如何组织企业级应用”
  • Spring Boot 解决“如何更快地把 Spring 应用跑起来”

Spring Boot 常见优势:

  • 自动配置
  • starter 依赖简化
  • 内嵌 Tomcat
  • 开箱即用的监控和配置能力

什么是 IoC 和 AOP?

参考答案

Details

IoC 是控制反转,把对象创建和依赖管理交给容器。

AOP 是面向切面编程,把日志、鉴权、事务等横切逻辑从业务代码中抽离出来。

常见使用场景:

  • 统一日志
  • 事务管理
  • 参数校验
  • 权限控制
  • 接口耗时统计

Spring 事务是怎么实现的?

参考答案

Details

Spring 事务通常基于 AOP 实现,在方法执行前后统一开启、提交或回滚事务。

高频面试点:

  1. @Transactional 什么时候会失效?
  • 方法不是 public
  • 同类内部调用
  • 异常被吞掉
  • 数据源或事务管理器配置不正确
  1. 事务隔离级别有哪些?
  • 读未提交
  • 读已提交
  • 可重复读
  • 串行化
  1. MySQL 默认隔离级别通常是“可重复读”。

面试官最爱追问

  • 为什么 @Transactional 会失效?
  • 同类内部调用为什么事务可能不生效?
  • 事务隔离级别和数据库锁之间是什么关系?

MySQL 高频面试题

参考答案

Details

Java 后端几乎一定会问 MySQL。

高频点:

  1. 索引为什么能加速查询?
  2. B+ 树和 B 树的区别?
  3. 什么情况下索引会失效?
  4. 覆盖索引、回表是什么意思?
  5. 为什么要最左前缀匹配?
  6. 慢查询如何排查?
  7. 事务四大特性 ACID 是什么?
  8. MVCC 是什么?

对 AI 系统来说,MySQL 常用于:

  • 用户与权限
  • 对话记录元数据
  • 任务状态
  • 账单与配额

面试官最爱追问

  • B+ 树为什么更适合数据库索引?
  • 联合索引为什么要看最左前缀?
  • 慢查询到底是怎么一步步定位出来的?

Redis 高频面试题

参考答案

Details

Redis 常用于缓存、分布式锁、会话、排行榜、限流。

高频点:

  1. Redis 为什么快?
  2. 常见数据结构有哪些?
  3. 缓存穿透、击穿、雪崩分别是什么?
  4. 如何设计分布式锁?
  5. Redis 持久化方式有哪些?
  6. 如果缓存和数据库不一致怎么办?

AI 系统中典型用法:

  • 热门问答缓存
  • token / session 缓存
  • 对话上下文短期缓存
  • 限流计数器

MQ 为什么重要?

参考答案

Details

消息队列主要解决:

  • 异步解耦
  • 削峰填谷
  • 失败重试
  • 延迟任务

AI 应用里常见的异步任务:

  • 文档解析
  • embedding 构建
  • 向量入库
  • 批量生成摘要
  • 长任务回调

常见追问:

  • 如何保证消息不丢失?
  • 如何保证消费者幂等?
  • 如何处理重复消费?

微服务基础会问什么?

参考答案

Details

不是所有岗位都会问微服务,但中高级岗位常问。

高频问题:

  • 为什么拆微服务?
  • 微服务带来了什么问题?
  • 服务注册发现是什么?
  • 网关负责什么?
  • 如何做链路追踪和日志聚合?
  • 如何做接口限流和熔断?

对 AI 平台类项目,也常会拆成:

  • 用户服务
  • 模型网关服务
  • 知识库服务
  • 对话服务
  • 任务调度服务

AI 全栈方向的 Java 高频场景题

设计一个模型调用网关

面试官关注:

  • 多模型路由
  • 鉴权
  • 限流
  • 超时重试
  • 熔断降级
  • 调用日志和成本统计

设计一个知识库问答后台

面试官关注:

  • 文档上传
  • 文本切片
  • 向量化任务
  • 检索链路
  • 多租户隔离
  • 权限控制

设计一个 AI 长任务系统

例如:

  • 文件解析
  • 批量生成
  • 训练 / 微调任务编排

会重点问:

  • 如何异步化?
  • 如何查询进度?
  • 如何重试?
  • 如何防止重复提交?

面试准备建议

Java 后端必刷模块

  • JVM
  • 并发与线程池
  • Spring / Spring Boot
  • MySQL
  • Redis
  • MQ
  • 系统设计

前端转 Java 的表达建议

如果你原来是前端,不要强装“多年 Java 专家”,而要清晰表达:

  • 你能理解后端核心链路
  • 你能独立完成 CRUD 之外的真实业务
  • 你理解缓存、鉴权、异步、监控
  • 你能把 AI 应用接入到后端系统里

这会比空谈底层源码更有效。

面试前一天速记 30 问

  • Java 为什么适合做后端?
  • JVM 内存结构有哪些?
  • 堆和栈有什么区别?
  • Full GC 频繁说明什么?
  • 如何判断对象是否可回收?
  • 常见 GC 算法有哪些?
  • 为什么要分代回收?
  • 线程池为什么比频繁创建线程更好?
  • 线程池核心参数有哪些?
  • 常见拒绝策略有哪些?
  • synchronized 和 ReentrantLock 区别是什么?
  • 什么是 CAS?
  • 什么是死锁?如何排查?
  • Spring 和 Spring Boot 的区别是什么?
  • 什么是 IoC?
  • 什么是 AOP?
  • Spring 事务是怎么实现的?
  • @Transactional 为什么会失效?
  • MySQL 索引为什么能提速?
  • B+ 树为什么适合数据库索引?
  • 联合索引为什么要看最左前缀?
  • 什么是覆盖索引?
  • Redis 为什么快?
  • 缓存穿透、击穿、雪崩分别是什么?
  • 分布式锁怎么设计?
  • MQ 解决什么问题?
  • 如何保证消息幂等?
  • 微服务为什么会带来治理问题?
  • 如何设计一个模型调用网关?
  • 如何设计一个知识库后台?