卡飞资源网

专业编程技术资源共享平台

Java面试题及答案总结(2025版持续更新)

Java 作为全球最流行的编程语言之一,无论是校招、社招还是跳槽,面试官都会重点考察 Java 核心知识。本文整理了 2025年最新Java面试题,涵盖 基础、集合、多线程、JVM、Spring、数据库、分布式 等核心内容,并提供详细解析,助你高效备战面试!

本文特点:
2025年高频面试题
答案简洁清晰,直击重点
涵盖大厂常考知识点
持续更新,建议收藏!


一、Java 基础

1. Java 8 新特性有哪些?

答案:

  • Lambda 表达式(简化匿名内部类)
  • Stream API(集合操作,支持函数式编程)
  • Optional(优雅处理 NullPointerException)
  • 接口默认方法default 方法)
  • 新的日期时间 APILocalDateLocalTime

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++ 仍需 synchronizedAtomicInteger)。

四、JVM

7. JVM 垃圾回收器有哪些?

答案:

  • 新生代:Serial、ParNew、Parallel Scavenge
  • 老年代:CMS(已废弃)、Serial Old、Parallel Old
  • G1(JDK 9+ 默认):分Region回收,兼顾吞吐和低延迟
  • ZGC(JDK 15+):超低停顿,适合大内存

8. 如何排查 OOM 问题?

答案:

  1. -XX:+HeapDumpOnOutOfMemoryError(自动生成堆转储文件)。
  2. MAT/JVisualVM 分析内存泄漏对象。
  3. 检查代码:无限缓存、未关闭流、大对象等。

五、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面试高频考点,助你系统化备战金三银四、秋招、社招!

建议:

  1. 理解原理,而非死记硬背。
  2. 结合实战,动手写代码验证。
  3. 关注行业动态(如 JDK 21新特性)。

互动话题:

  • 你在面试中遇到过哪些难题?
  • 希望补充哪些技术点的解析?

关注我,获取更多Java技术干货!
持续更新中,建议收藏+转发!

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言