Java 作为全球最流行的编程语言之一,无论是校招、社招还是跳槽,面试官都会重点考察 Java 核心知识。本文整理了 2025年最新Java面试题,涵盖 基础、集合、多线程、JVM、Spring、数据库、分布式 等核心内容,并提供详细解析,助你高效备战面试!
本文特点:
2025年高频面试题
答案简洁清晰,直击重点
涵盖大厂常考知识点
持续更新,建议收藏!
一、Java 基础
1. Java 8 新特性有哪些?
答案:
- Lambda 表达式(简化匿名内部类)
- Stream API(集合操作,支持函数式编程)
- Optional(优雅处理 NullPointerException)
- 接口默认方法(default 方法)
- 新的日期时间 API(LocalDate、LocalTime)
2. String 为什么是不可变的?
答案:
- 安全性:防止被篡改(如数据库连接、哈希存储)。
- 线程安全:无需额外同步。
- 缓存优化:字符串常量池(String Pool)可复用。
二、Java 集合
3. HashMap 和 ConcurrentHashMap 的区别?
答案:
对比项 | HashMap | ConcurrentHashMap |
线程安全 | 不安全 | 安全(分段锁/CAS) |
性能 | 高(无锁竞争) | 较高(锁粒度更细) |
Null 键/值 | 允许 | 不允许 |
4. ArrayList 扩容机制?
答案:
- 初始容量:10
- 扩容规则:newCapacity = oldCapacity + (oldCapacity >> 1)(即 1.5 倍)
- 优化建议:预估数据量,初始化时指定容量(new ArrayList<>(100))。
三、多线程 & 并发
5. 线程池的核心参数有哪些?
答案:
java复制
ThreadPoolExecutor(
int corePoolSize, // 核心线程数
int maximumPoolSize, // 最大线程数
long keepAliveTime, // 空闲线程存活时间
TimeUnit unit, // 时间单位
BlockingQueue<Runnable> workQueue, // 任务队列
RejectedExecutionHandler handler // 拒绝策略
)
6. volatile 关键字的作用?
答案:
- 保证可见性:修改后立即同步到主内存。
- 禁止指令重排序(happens-before 原则)。
- 不保证原子性(如 i++ 仍需 synchronized 或 AtomicInteger)。
四、JVM
7. JVM 垃圾回收器有哪些?
答案:
- 新生代:Serial、ParNew、Parallel Scavenge
- 老年代:CMS(已废弃)、Serial Old、Parallel Old
- G1(JDK 9+ 默认):分Region回收,兼顾吞吐和低延迟
- ZGC(JDK 15+):超低停顿,适合大内存
8. 如何排查 OOM 问题?
答案:
- -XX:+HeapDumpOnOutOfMemoryError(自动生成堆转储文件)。
- MAT/JVisualVM 分析内存泄漏对象。
- 检查代码:无限缓存、未关闭流、大对象等。
五、Spring
9. Spring Bean 的作用域?
答案:
- singleton(默认,单例)
- prototype(每次请求新实例)
- request(HTTP 请求级别)
- session(HTTP 会话级别)
10. Spring 事务失效的常见原因?
答案:
- 方法非 public
- 自调用问题(this.method() 不走代理)
- 异常被捕获(默认只回滚 RuntimeException)
- 数据库引擎不支持(如 MyISAM)
六、数据库 & 缓存
11. MySQL 索引优化原则?
答案:
- 最左前缀原则:联合索引按顺序使用。
- 避免索引列计算(如 WHERE age + 1 > 20)。
- 覆盖索引(减少回表)。
- 小表驱动大表(JOIN 优化)。
12. Redis 缓存穿透/雪崩/击穿解决方案?
答案:
问题 | 解决方案 |
缓存穿透 | 布隆过滤器 + 空值缓存 |
缓存雪崩 | 过期时间随机 + 多级缓存 |
缓存击穿 | 互斥锁(Redis SETNX) |
七、分布式
13. 分布式 ID 生成方案?
答案:
- UUID(简单但无序)
- 数据库自增(性能瓶颈)
- Redis INCR(原子性)
- 雪花算法(Snowflake)(推荐,64位ID = 时间戳+机器ID+序列号)
14. 如何保证接口幂等性?
答案:
- Token 机制(提交前先获取 Token)
- 唯一索引(防重复插入)
- 乐观锁(UPDATE ... WHERE version=xxx)
- 状态机(如订单状态不可逆)
总结
本文整理了 2025年Java面试高频考点,助你系统化备战金三银四、秋招、社招!
建议:
- 理解原理,而非死记硬背。
- 结合实战,动手写代码验证。
- 关注行业动态(如 JDK 21新特性)。
互动话题:
- 你在面试中遇到过哪些难题?
- 希望补充哪些技术点的解析?
关注我,获取更多Java技术干货!
持续更新中,建议收藏+转发!