Java 面试刷题清单
17 篇、近 700 道题,覆盖 Java 后端面试的高频考点(含 AI 大模型方向)。 每篇结构一致:前面是整理版(带 ★ 评级,可直接背)→ 后面是折叠起来的原始题库(旧题原文,查漏补缺时再展开)。 练习题原理在 Java 笔记目录,两边每篇都做了互链。
怎么用这份清单
- 按篇刷:先看下面的索引,卡在哪一块就回对应的知识点笔记补深,再回来刷题。
- 看星级:★★★ 要能流畅讲两分钟,★★☆ 能说清要点,★☆☆ 有印象即可。
- 面试前一晚:只看各篇文末的「一句话速记」+ 下方 30 题清单。
- 挂钩简历:标了【简历亮点,高频追问】的题,面试官会顺着简历问,别背答案、要背自己的项目口径。
常问等级说明
- ★★★ = 高频必考(几乎每次面试都会问到,务必能流畅作答)
- ★★☆ = 中频常见(多数面试会涉及,建议掌握)
- ★☆☆ = 低频了解(时间有限可快速过一遍,能说个大概即可)
前端转全栈重点:Java 基础里的值传递、final、类初始化顺序、Java 8 新特性、集合选型;多线程的 synchronized 与 Lock 区别、sleep 与 wait 区别;计算机网络里的跨域 CORS。这些是前端背景最容易卡壳、面试官又爱问的。
17 篇索引
| # | 篇 | 题数 | 核心考点 | 配套知识点 |
|---|---|---|---|---|
| 01 | Java 语法与面向对象 | 38 | equals/hashCode、String、泛型擦除、值传递、四种引用、BigDecimal | 01 Java 基础 |
| 02 | Java 集合与泛型 | 19 | ArrayList、HashMap 源码、ConcurrentHashMap、fail-fast、Stream | 02 Java 核心特性 |
| 03 | 异常、IO 与反射 | 20 | 异常体系、try-with-resources、BIO/NIO/AIO、反射、深浅拷贝 | 02 Java 核心特性 |
| 04 | JVM | 41 | 内存区域、GC 与收集器、类加载、JMM、OOM 排查、JIT | JVM 深入 |
| 05 | 多线程与并发 | 74 | 锁升级、AQS、线程池、CAS、ThreadLocal、CompletableFuture | 06 JUC 并发编程 |
| 06 | Spring 全家桶 | 92 | IOC/AOP、事务、SpringBoot、MyBatis、SpringCloud | 04 框架技术栈、MyBatis-Plus |
| 07 | MySQL | 65 | B+ 树索引、索引失效、MVCC、锁、explain、分库分表 | MySQL 深入 |
| 08 | 中间件(Redis / MQ) | 67 | 缓存三兄弟、持久化、集群、分布式锁、消息可靠性 | Redis、消息队列 |
| 09 | Zookeeper 与 RPC | 40 | ZAB 选主、watch、ACL、Dubbo、SPI | Spring Cloud 微服务 |
| 10 | ElasticSearch | 26 | 倒排索引、mapping、refresh/flush、深分页、选主、Canal 同步、向量检索 | Elasticsearch |
| 11 | 计算机网络 | 39 | TCP 握手挥手、HTTP 演进、HTTPS、跨域、DNS | Netty(粘包/拆包) |
| 12 | 分布式与高并发 | 55 | CAP、分布式事务、ID、限流熔断、幂等、场景设计 | Spring Cloud 微服务 |
| 13 | 算法与设计模式 | 23 | 排序、二分、手撕链表/LRU、23 种设计模式 | 设计模式 |
| 14 | 工具运维 | 67 | Git、Maven、Linux、Nginx、Tomcat、安全、线上排查 | Arthas、CI/CD |
| 15 | 软实力与 HR 面试 | 14 | 简历、自我介绍、项目口径、谈薪、反问 | —(无对应知识点,配套看口述稿) |
| 16 | AI 与大模型 | 22 | LLM/幻觉、RAG 进阶、Prompt 注入、流式、成本、MCP、模型路由 | 04 框架技术栈 · 8. Spring AI |
| 17 | Netty | 11 | Reactor 三模式、核心组件、粘包拆包、零拷贝、线程模型 | Netty |
同栏目还有两套独立材料:Java 口述稿(全栈 / 前端)和 AI Agent 专题(15 篇,Agent 原理 / RAG / 工具调用 / 多智能体 / STAR 面试稿)——AI Agent 面试专题。它们都是面试材料,不挂在上面「配套知识点」列里。
面试前一晚:30 题清单
只看这些,能讲清就够。
- [ ]
==与equals、hashCode 契约(01) - [ ] String 不可变、常量池、intern(01)
- [ ] 值传递(前端转全栈必考,01)
- [ ] HashMap 底层原理与扩容(02)
- [ ] ConcurrentHashMap 1.7 与 1.8 的区别(02)
- [ ] JVM 内存区域划分、哪些会 OOM(04)
- [ ] GC 算法与 G1 工作流程(04)
- [ ] 类加载过程与双亲委派(04)
- [ ] JMM 与内存屏障(04)
- [ ] synchronized 原理与锁升级(05)
- [ ] volatile 与 happens-before(05)
- [ ] AQS 原理、ReentrantLock 公平/非公平(05)
- [ ] 线程池七大参数、拒绝策略、为什么不用 Executors(05)
- [ ] ThreadLocal 原理与内存泄漏(05)
- [ ] CAS 与 ABA 问题(05)
- [ ] IOC、DI 与 Bean 生命周期(06)
- [ ] 循环依赖与三级缓存(06)
- [ ] AOP 原理、JDK 代理 vs CGLIB(06)
- [ ]
@Transactional失效场景与传播行为(06) - [ ] SpringBoot 自动配置原理(06)
- [ ]
#{}与${}区别(06) - [ ] B+ 树索引、最左前缀、覆盖索引(07)
- [ ] 索引失效的几种场景(07)
- [ ] MVCC 与隔离级别(07)
- [ ] 行锁、间隙锁、临键锁(07)
- [ ] 缓存穿透、击穿、雪崩(08)
- [ ] Redis 分布式锁与 Redisson 看门狗(08)
- [ ] 消息不丢、不重、不乱序(08)
- [ ] TCP 三次握手、四次挥手(11)
- [ ] 分布式事务方案对比:2PC / TCC / Saga / 本地消息表(12)
附录:常问题清单(旧版 12 类,按主题快速扫题)
下面是拆篇之前的原始归类,适合「扫一眼看看有没有漏」,具体答案以上面 17 篇为准。
一、Java 基础
- 基本数据类型和包装类区别、Integer 缓存机制、自动装箱拆箱 ★★★
- 面向对象三大特性、抽象类和接口区别 ★★★
- String / StringBuilder / StringBuffer 区别;String 不可变原理、常量池、intern() ★★★
- ArrayList / LinkedList 底层实现、扩容机制 ★★★
- HashMap 底层原理,1.7 与 1.8 区别;红黑树转换条件;扰动函数;扩容机制 ★★★
- ConcurrentHashMap 1.7 与 1.8 实现区别 ★★★
- Hashtable 与 HashMap 对比 ★★☆
- 异常体系、受检/非受检异常、try-finally / try-with-resources ★★★
- 泛型原理、泛型擦除;?、? extends、? super 通配符 ★★★
- 反射机制、获取 Class 对象的几种方式、反射优缺点 ★★★
- 注解、元注解、自定义注解 ★★☆
- BIO / NIO / AIO 区别;Buffer、Channel ★★★
- == 与 equals、hashCode 契约 ★★★
- 深拷贝与浅拷贝、序列化 serialVersionUID ★★☆
- BigDecimal 与浮点精度 ★★★
- 四种内部类 ★☆☆
- 枚举原理 ★★☆
- 函数式接口、Lambda、Stream ★★★
- 值传递与引用传递(前端转全栈必考)★★★
- final、finally、finalize 区别 ★★★
- Object 类常用方法 ★★☆
- 类初始化顺序、静态变量/代码块 ★★☆
- Comparable 与 Comparator 区别 ★★☆
- Java 8 新特性汇总、Optional ★★★
- 集合框架选型总结 ★★★
- fail-fast 与 fail-safe ★★☆
- JDK 版本演进 8/11/17/21、虚拟线程 ★★☆
二、JVM
- JVM 内存区域划分、各区域作用、哪些会 OOM ★★★
- 对象创建过程、对象内存布局、对象头 ★★☆
- 如何判断对象是垃圾;四种引用(强/软/弱/虚)★★★
- GC 三大算法:标记清除、复制、标记整理 ★★★
- 常见垃圾收集器:Serial、Parallel、CMS、G1、ZGC ★★★
- 类加载全过程、双亲委派模型、破坏双亲委派 ★★★
- OOM 常见场景、jmap、jstack 工具作用 ★★★
- 逃逸分析、栈上分配 ★★☆
- JVM 常用调优参数 ★★☆
- JMM 与 JVM 内存模型的区别 ★★★
- 元空间 vs 永久代、字符串常量池位置 ★★☆
- 直接内存 ★★☆
- 三色标记、对象进入老年代条件、STW ★★☆
三、多线程并发
- 线程状态、创建线程的几种方式、start() 和 run() 区别 ★★★
- synchronized 底层原理、锁升级过程(偏向锁-轻量级-重量级)★★★
- volatile 作用、可见性/原子性/有序性、happens-before ★★★
- AQS 原理、ReentrantLock 公平/非公平锁、Condition ★★★
- ThreadPoolExecutor 七大参数、四种拒绝策略、为什么不推荐 Executors ★★★
- 线程池参数如何按业务设置、核心线程/空闲线程 ★★★
- CountDownLatch / CyclicBarrier / Semaphore ★★★
- ConcurrentHashMap、CopyOnWriteArrayList 原理 ★★★
- 死锁四个条件、如何避免死锁、活锁、饥饿 ★★★
- 线程安全问题产生原因 ★★☆
- ThreadLocal 原理与内存泄漏 ★★★
- CAS 原理与 ABA 问题 ★★★
- 原子类 AtomicInteger、LongAdder ★★☆
- CompletableFuture 异步编排 ★★★
- JMM 内存屏障、指令重排 ★★☆
- BlockingQueue、线程中断 interrupt ★★☆
- synchronized 与 ReentrantLock 区别(前端转全栈必考)★★★
- sleep() 与 wait() 区别 ★★★
- volatile 与 synchronized 区别 ★★☆
- wait/notify 线程协作机制 ★★☆
四、Spring 全家桶
- IOC 容器原理、Bean 完整生命周期 ★★★
- Bean 作用域、BeanFactory 与 ApplicationContext 区别 ★★★
- AOP 原理:JDK 动态代理、CGLIB、五种通知类型 ★★★
- @Transactional 传播行为、隔离级别、事务失效场景、实现原理 ★★★
- SpringBoot 自动配置原理、条件注解、启动流程 ★★★
- 全局异常处理 ★★★
- @Configuration、@Bean ★★☆
- SpringMVC 请求流程、Filter 与 Interceptor 区别、@RequestParam 与 @RequestBody ★★★
- Nacos/Eureka、Feign、Gateway、Sentinel、分布式事务 ★★★
- @Autowired 与 @Resource 区别 ★★★
- 三级缓存解决循环依赖 ★★★
- AOP 失效场景(同类调用)★★☆
- Spring 用到的设计模式 ★★☆
- Spring Boot Starter 机制、MyBatis #{} 与 ${} ★★★
- Spring、SpringBoot、SpringCloud 区别(前端转全栈必考)★★★
- Spring Security 鉴权链路(JWT 过滤器链)★★★
- MyBatis 一级缓存、二级缓存 ★★★
- MyBatis 执行流程 ★★☆
- MyBatis-Plus 相比 MyBatis 的优势 ★★☆
五、MySQL
- InnoDB 索引 B+ 树结构、聚簇/非聚簇索引 ★★★
- 联合索引最左前缀、索引失效场景 ★★★
- 事务 ACID、四种隔离级别、MVCC ★★★
- redo log、undo log、binlog ★★★
- InnoDB 锁机制:行锁、表锁、意向锁、间隙锁、幻读 ★★★
- explain 字段含义、慢查询优化 ★★★
- 主从复制、读写分离、分库分表 ★★★
- 索引下推 ICP、覆盖索引 ★★☆
- 为什么用 B+ 树不用 B 树/哈希/跳表 ★★☆
- count(*) 优化、深分页 ★★★
- 三大范式、InnoDB vs MyISAM ★★☆
- 隐式类型转换导致索引失效 ★★☆
六、中间件
Redis
- 常用数据结构及使用场景 ★★★
- RDB 与 AOF 持久化对比 ★★★
- 过期淘汰策略 ★★★
- 缓存穿透、缓存击穿、缓存雪崩 ★★★
- 分布式锁实现及问题 ★★★
- 哨兵、集群模式 ★★★
- 底层数据结构(SDS、跳表、listpack 等)★★☆
- 为什么快(单线程、IO 多路复用、内存)★★★
- 大 key、热 key ★★☆
- 缓存一致性(延迟双删、Canal)★★★
- 布隆过滤器、Bitmap/HyperLogLog/GEO ★★☆
- Redis 6.0 多线程 ★★☆
MQ(RabbitMQ / Kafka / RocketMQ)
- 使用消息队列的好处、场景 ★★★
- 消息丢失、重复消费、积压处理 ★★★
- RabbitMQ 交换机类型、Kafka 高可用 ★★★
- 各 MQ 对比选型 ★★☆
- 顺序消息、事务消息、延迟消息、死信队列 ★★☆
七、计算机网络
- HTTP1.1 / HTTP2 / HTTP3 区别 ★★★
- HTTPS 加密原理、TLS 握手 ★★★
- GET 与 POST 区别 ★★★
- Cookie / Session / Token 区别 ★★★
- TCP 三次握手、四次挥手、为什么不能两次握手 ★★★
- TCP 滑动窗口、拥塞控制、TCP 与 UDP 区别 ★★★
- 常见 HTTP 状态码 ★★☆
- OSI 七层 / TCP/IP 四层模型 ★★★
- 输入 URL 到页面展示全流程 ★★★
- DNS 解析、Session 共享、JWT 结构 ★★★
- 跨域 CORS 原理与解决方案(前端转全栈必考)★★★
八、分布式 & 高并发
- CAP、BASE 理论 ★★★
- 分布式事务:2PC、3PC、TCC、SAGA、本地消息表、可靠消息最终一致性 ★★★
- 分布式 ID 生成方案 ★★★
- 接口幂等性设计 ★★★
- 限流、熔断、降级实现方式 ★★★
- 限流算法(计数器/滑动窗口/令牌桶/漏桶)★★★
- 负载均衡算法、一致性哈希 ★★★
- 分布式锁方案对比(Redis/ZK/DB)★★★
- 链路追踪 ★★☆
九、项目实战、算法、设计模式
- 项目中最难技术点、怎么解决 ★★★
- 线上 CPU 飙升、OOM、接口超时排查 ★★★
- 手写单例模式(懒汉、饿汉、双重校验锁)★★★
- 常见设计模式、Spring 用到哪些 ★★☆
- 算法:链表反转、二分查找、两数之和、栈队列 ★★★
- 排序算法 ★★★
- 设计模式六大原则(SOLID、开闭、里氏替换)★★☆
十、工具 & 运维
- Git 常用命令、merge 与 rebase ★★☆
- Maven 依赖冲突 ★★☆
- Docker 基础概念 ★★☆
- Linux 常用命令:进程、日志、端口、内存 CPU ★★★
- XSS、CSRF、密码加密 ★★★
- SQL 注入、越权 ★★★
- 线上排查完整流程、线程 dump 分析 ★★★
- JVM 调优参数、日志框架、监控体系 ★★☆
十一、AI 与大模型
- 大模型基础概念:LLM、Token、上下文窗口、Temperature ★★★
- 大模型幻觉(Hallucination)★★★
- 提示词工程 Prompt Engineering ★★☆
- RAG 检索增强生成原理 ★★★
- 向量数据库(Milvus/pgvector/Redis Vector)★★★
- Function Calling / Tool Use / Agent ★★★
- 模型微调(SFT、LoRA、RLHF)★★☆
- Spring AI 框架 ★★★
- SSE 流式输出(前端转全栈必考)★★★
- Token 计数与成本控制 ★★☆
- 多轮对话记忆管理 ★★☆
- 超时、重试、降级、内容安全 ★★☆
十二、Netty
- Netty 是什么、设计哲学 ★★★
- Netty 相比传统 Java 网络编程(BIO/NIO)的优势 ★★★
- Reactor 模型:单线程、多线程、主从多线程 ★★★
- 核心组件:Channel、EventLoop、ChannelPipeline、ChannelHandler、ByteBuf、Bootstrap ★★★
- ChannelPipeline 作用、入站出站 handler 执行顺序 ★★★
- TCP 粘包/拆包解决 ★★★
- Netty 高性能表现在哪些方面 ★★★
- Netty 零拷贝技术如何实现 ★★★
- Netty 线程模型如何设计 ★★★
- Netty 典型应用场景 ★★☆
Cao Note