【Java面试】——高频面试题(含追问)

发布时间:2026/7/29 7:08:45

【Java面试】——高频面试题(含追问) Java 高级开发工程师 · 模拟面试题集说明本套题目对标Java 高级开发工程师3-10 年经验涵盖八大核心模块包含基础题、追问链、场景设计题三类。每道题均标注「考察意图」帮助你在准备时精准把握面试官的关注点。题目按模块组织答案将在下一轮回答中逐题给出。模块一Java 基础与集合共 5 题第 1 题基础·HashMap 原理题目请介绍 HashMap 在 JDK 8 中的底层实现。当链表长度超过 8 时为什么转为红黑树红黑树退化为链表的阈值为什么是 6追问 1HashMap 的扩容机制是怎样的为什么容量始终是 2 的 n 次方扩容时如何重新计算元素位置追问 2HashMap 在并发环境下会出现什么问题死循环、数据丢失JDK 8 解决了死循环问题吗追问 3既然 HashMap 线程不安全那ConcurrentHashMap在 JDK 7 和 JDK 8 中分别是如何保证线程安全的为什么要从分段锁改为 CAS synchronized考察意图集合类是 Java 基础的重中之重。高级岗位不满足于背诵“数组链表红黑树”而是要理解为什么这么设计——树化阈值 8 是基于泊松分布的概率统计扩容机制涉及位运算优化并发问题的演进则考察对锁粒度设计的理解。第 2 题基础·ArrayList题目ArrayList 的扩容机制是怎样的默认初始容量是多少为什么扩容倍数是 1.5 倍追问 1ArrayList 和 LinkedList 的区别是什么各自适用什么场景追问 2你在项目中是否遇到过 ArrayList 性能问题如何优化的考察意图考察对日常使用最频繁的集合的深度理解。1.5 倍扩容是空间与时间的折中——既不像 Vector 的 2 倍那样浪费内存也不会因扩容倍数太小导致频繁数组拷贝。场景题则考察是否有关注过性能优化。第 3 题基础·泛型与反射题目Java 的泛型是“伪泛型”吗什么是类型擦除运行时为什么获取不到泛型的真实类型追问 1既然类型擦除了那 Spring 是如何通过反射获取泛型类型的提示ParameterizedType追问 2你项目中有没有遇到过泛型 反射的坑怎么解决的考察意图考察对 Java 泛型底层机制的理解。类型擦除是面试高频点。追问 Spring 的泛型处理是为了看候选人是否能将基础原理与框架源码结合起来思考。第 4 题基础·阻塞队列题目ArrayBlockingQueue和LinkedBlockingQueue的区别是什么各自适用什么场景追问 1DelayQueue是什么如何用它实现订单超时自动取消追问 2你在项目中使用无界队列时踩过什么坑如何解决的考察意图阻塞队列是线程池和异步任务的核心组件。高级工程师需要能根据业务场景选择合适的队列类型而不是死记硬背。第 5 题基础·异常与日志题目Java 中Error和Exception的区别是什么RuntimeException和非受检异常的关系追问 1你们项目的全局异常处理是怎么设计的如何避免在日志中重复记录同一个异常追问 2线上出现OutOfMemoryError时catch 住能恢复吗为什么考察意图异常处理是工程质量的底线。高级工程师必须能设计合理的异常分层和全局处理方案。模块二JVM 与性能调优共 5 题第 6 题基础·内存模型题目请画出 JVM 运行时数据区的结构哪些是线程私有的哪些是线程共享的追问 1JDK 8 中方法区有什么变化为什么要移除永久代改用元空间追问 2元空间内存不足会导致什么后果如何排查和解决考察意图JVM 内存模型是高级岗位必考题。不仅要能画图还要理解每个区域的作用和 OOM 场景。第 7 题基础·垃圾回收题目请介绍 CMS 和 G1 垃圾回收器的核心区别。G1 为什么能做到可预测的停顿时间追问 1CMS 的 Concurrent Mode Failure 是什么什么情况下会发生如何解决追问 2你们的线上服务用的是哪种 GC参数是怎么调的遇到过什么 GC 问题考察意图GC 是 JVM 调优的核心。高级工程师要能对比不同 GC 的优劣并能结合线上经验讲出真实案例。第 8 题场景·OOM 排查题目线上服务突然出现java.lang.OutOfMemoryError: Java heap space请描述你的完整排查流程。追问 1如果 dump 文件有 10GBMAT 打不开怎么办有什么轻量级的排查方法追问 2堆内存没有明显泄漏但 Full GC 依然很频繁可能是什么原因考察意图这是典型的上线排障场景题。高级工程师必须能形成“定位→分析→验证→修复→复盘”的完整闭环。第 9 题场景·CPU 飙升题目线上服务器 CPU 突然飙到 100%你如何定位问题追问 1如果jstack看到大量线程处于WAITING状态可能是什么原因追问 2如果是频繁 Full GC 导致的 CPU 飙升你如何区分是内存泄漏还是内存分配不足考察意图CPU 飙升是线上最紧急的故障之一。考察的是工具链熟练度和问题定位的效率。第 10 题基础·类加载题目什么是双亲委派模型为什么要这样设计如何打破双亲委派追问 1Tomcat 的类加载器是如何打破双亲委派的为什么要这样做追问 2你了解 Java 的热更新吗如何用自定义 ClassLoader 实现考察意图类加载机制是理解 Java 动态性的关键。Tomcat 的隔离类加载和热更新都是高级话题。模块三Java 并发编程共 6 题第 11 题基础·synchronized 与锁升级题目synchronized和ReentrantLock的核心区别是什么什么场景下只能用ReentrantLock追问 1synchronized的锁升级过程是怎样的偏向锁 → 轻量级锁 → 重量级锁各自的触发条件是什么追问 2JDK 15 之后为什么默认关闭了偏向锁考察意图并发是 Java 高级岗位最深、最常考的模块。大厂的考察方式不是列功能对比表而是要能说出“什么场景下只能用 ReentrantLock”以及锁升级的底层条件。第 12 题基础·volatile题目volatile的作用是什么它为什么不能保证原子性追问 1volatile是如何保证可见性的底层的内存屏障Memory Barrier有哪几种追问 2volatile能保证有序性吗i用volatile修饰后还是线程安全的吗为什么考察意图volatile是并发编程的基础但很多人只停留在“可见性”层面。高级岗位要能讲清楚内存屏障和 DCLDouble-Checked Locking中的正确用法。第 13 题基础·AQS题目请介绍 AQSAbstractQueuedSynchronizer的核心设计原理。追问 1AQS 的state变量在ReentrantLock和Semaphore中分别代表什么追问 2如何基于 AQS 实现一个自定义的互斥锁考察意图AQS 是 JUC 包的基石。高级岗位的考察已延伸到“如何基于 AQS 实现自定义锁”。第 14 题基础·线程池题目ThreadPoolExecutor的核心参数有哪些任务提交后线程池的执行流程是怎样的追问 1corePoolSize和maximumPoolSize之间有什么区别什么时候会创建超过核心线程数的线程追问 2你们项目中的线程池是怎么配置的核心参数是如何确定的如果线程池满了你的拒绝策略是什么考察意图线程池是日常开发高频使用的组件。高级工程师不能只背参数要能结合业务场景说明配置依据和拒绝策略的选择。第 15 题场景·ThreadLocal 内存泄漏题目ThreadLocal的原理是什么为什么在线程池中使用ThreadLocal会导致内存泄漏追问 1ThreadLocal的remove()方法为什么必须调用追问 2除了ThreadLocal还有哪些常见的内存泄漏场景你在项目中遇到过吗考察意图ThreadLocal内存泄漏是大厂高频考点。考察的是对弱引用和线程池场景下资源清理的理解。第 16 题场景·死锁题目什么是死锁如何定位和解决线上死锁问题追问 1请写一个会产生死锁的简单代码示例。追问 2MySQL 中的死锁和 Java 中的死锁在排查思路上有什么异同考察意图死锁是并发编程的经典问题。高级工程师要能快速定位并给出解决方案。模块四Spring 全家桶共 4 题第 17 题基础·IOC 与循环依赖题目Spring 是如何解决循环依赖的什么是三级缓存为什么需要三级缓存而不是两级追问 1构造器注入的循环依赖为什么无法解决追问 2如果 Bean 需要 AOP 代理循环依赖的处理流程会发生什么变化考察意图Spring IOC 是必考内容。三级缓存是 Spring 最精妙的设计之一高级工程师必须能讲清楚每一级缓存的作用和 AOP 场景下的特殊处理。第 18 题基础·AOP题目Spring AOP 的实现原理是什么JDK 动态代理和 CGLIB 有什么区别追问 1为什么 CGLIB 不能代理final方法追问 2Spring AOP 和 AspectJ 有什么区别什么时候用 Spring AOP什么时候用 AspectJ考察意图AOP 是 Spring 的核心能力。追问final方法考察对 CGLIB 底层机制生成子类的理解。第 19 题场景·事务失效题目Spring 声明式事务在哪些场景下会失效请列举并说明原因。追问 1同类中方法 A 调用方法 BB 有Transactional事务为什么会失效如何解决追问 2Transactional标注在private方法上为什么无效考察意图事务失效是 Spring 实战中的高频坑。高级工程师必须能说全失效场景并给出解决方案。第 20 题基础·Spring Boot 自动装配题目Spring Boot 的自动装配Auto-Configuration原理是什么追问 1EnableAutoConfiguration注解是如何工作的spring.factories文件的作用是什么追问 2如何实现一个自定义 Starter需要注意什么考察意图自动装配是 Spring Boot 的核心特性。考察的是对Conditional系列注解和SpringFactoriesLoader的理解。模块五MySQL 与数据库共 4 题第 21 题基础·索引与 BTree题目MySQL 为什么使用 BTree 而不是 B-Tree 作为索引结构追问 1什么是聚簇索引和非聚簇索引InnoDB 和 MyISAM 在索引实现上有什么区别追问 2一个表有联合索引(a, b, c)查询条件WHERE a 1 AND b 2能走索引吗为什么考察意图索引是 MySQL 优化的核心。BTree 的优势更低的树高、范围查询高效必须能讲清楚。第 22 题基础·事务隔离与 MVCC题目MySQL 的四种事务隔离级别分别是什么InnoDB 默认是哪种为什么 RR 级别可以避免幻读追问 1MVCC 是如何实现 RR 级别下可重复读的Read View 在 RC 和 RR 中有什么不同追问 2什么是 Next-Key LockGap Lock 在什么情况下会出现考察意图事务隔离和 MVCC 是数据库面试的重中之重。要能讲清楚 Read View 的生成时机和可见性判断规则。第 23 题场景·SQL 优化题目一张订单表有 5000 万数据执行SELECT * FROM orders WHERE user_id 123 AND create_time BETWEEN 2024-01-01 AND 2024-12-31 ORDER BY create_time LIMIT 20耗时 30 秒如何优化追问 1Explain 执行计划中typeALL和ExtraUsing filesort分别意味着什么追问 2什么是覆盖索引什么是索引下推ICP在这个场景中能用上吗考察意图这是典型的 SQL 优化场景题。考察的是执行计划分析、联合索引设计、覆盖索引和 ICP 等综合能力。第 24 题场景·死锁题目线上 MySQL 出现死锁如何定位和解决追问 1RR 隔离级别下SELECT ... FOR UPDATE和UPDATE分别会加什么锁追问 2如何从代码层面预防死锁考察意图死锁是线上高频故障。高级工程师必须掌握SHOW ENGINE INNODB STATUS分析、死锁日志解读和预防策略。模块六Redis共 4 题第 25 题基础·数据结构与底层题目Redis 为什么快请从多个角度分析。追问 1Redis 的底层数据结构有哪些SDS、ziplist、skiplist 等各自的应用场景是什么追问 2Redis 6.0 引入了多线程是为了解决什么问题命令执行还是单线程吗考察意图Redis 快的原因是多方面的——纯内存、IO 多路复用、高效数据结构。要能全面回答。第 26 题场景·三大缓存问题题目什么是缓存穿透、缓存击穿、缓存雪崩分别如何解决追问 1布隆过滤器的原理是什么它有什么缺点误判率、不支持删除追问 2你们项目中使用 Redis 时遇到过这些问题吗当时是怎么处理的考察意图三大缓存问题是 Redis 实战的必修课。追问布隆过滤器考察对原理的深度理解场景追问考察真实经验。第 27 题场景·分布式锁题目如何用 Redis 实现分布式锁需要注意哪些问题追问 1SET key value NX PX 30000这条命令的原子性是如何保证的解锁时为什么必须用 Lua 脚本追问 2Redisson 的 Watchdog看门狗机制是什么解决了什么问题追问 3Redis 分布式锁在主从架构下有什么问题Redlock 算法是如何解决的考察意图分布式锁是 Redis 最核心的应用场景之一。追问链覆盖了从基础实现到高级机制再到分布式一致性是典型的大厂连环炮。第 28 题场景·BigKey 与 HotKey题目什么是 Redis 的 BigKey 和 HotKey各自有什么危害如何发现和解决追问 1如果某个 key 的 QPS 特别高达到了单节点 Redis 的瓶颈你会怎么处理追问 2redis-cli --bigkeys命令的原理是什么它有什么局限性考察意图BigKey 和 HotKey 是线上真实的高频故障。考察的是对 Redis 单线程模型局限性的理解和应对策略。模块七消息队列共 3 题第 29 题基础·Kafka 核心机制题目Kafka 为什么吞吐量极高请从架构和底层机制两个层面分析。追问 1什么是 ISR、HW、LEO它们之间是什么关系追问 2Kafka 生产者配置acksall配合min.insync.replicas2能保证数据绝对不丢失吗考察意图Kafka 的高吞吐是其核心竞争力。ISR/HW/LEO 是理解 Kafka 数据可靠性的核心概念必须能讲清楚。第 30 题场景·消息可靠性与重复消费题目如何保证 Kafka 消息不丢失从生产者、Broker、消费者三个角度分别说明。追问 1消息重复消费的根本原因是什么如何实现消费幂等性追问 2你们项目中有没有遇到过消息积压当时是怎么排查和解决的考察意图消息的可靠性不丢失、不重复是 MQ 使用的核心问题。场景追问考察真实排障能力。第 31 题对比·Kafka vs RocketMQ题目Kafka 和 RocketMQ 在分布式事务支持上有什么区别追问 1RocketMQ 的事务消息是如何实现的半消息Half Message和事务回查Transaction Check是什么追问 2什么场景下选择 Kafka什么场景下选择 RocketMQ考察意图事务消息是 RocketMQ 的核心差异化能力。考察的是技术选型能力——是否能根据业务场景做出合理判断。模块八分布式与系统设计共 4 题第 32 题基础·分布式理论题目什么是 CAP 定理请用实际的中间件举例说明 CP 和 AP 的选择。追问 1BASE 理论是什么和 ACID 有什么关系追问 2你们系统的注册中心用的是 Nacos 还是 Eureka为什么选它AP 还是 CP 模式考察意图CAP 和 BASE 是分布式系统的理论基础。高级工程师必须能结合实际中间件说明权衡。第 33 题场景·分布式事务题目在微服务架构下如何保证订单创建和库存扣减的数据一致性请设计一个方案。追问 1TCC 模式的 Try、Confirm、Cancel 三个阶段分别做什么TCC 的空回滚和悬挂问题如何解决追问 2如果使用 RocketMQ 事务消息流程是怎样的和 TCC 相比有什么优劣考察意图分布式事务是分布式系统最核心的难点。考察的是对多种方案TCC、Saga、本地消息表、MQ 事务消息的掌握和选型能力。第 34 题场景·秒杀系统设计题目设计一个秒杀系统100 万人抢 100 件商品请给出完整的技术方案。追问 1如何防止超卖Redis Lua 脚本的原子性是如何保证的追问 2如何削峰填谷MQ 在秒杀系统中扮演什么角色追问 3如果热点商品库存集中在单个 Redis 节点上如何进一步优化考察意图秒杀是系统设计的高频考题。考察的是从流量入口到数据持久化的全链路设计能力以及削峰、限流、缓存、异步等综合技术手段。第 35 题场景·幂等性设计题目如何保证一个接口的幂等性请列举至少 3 种方案并说明各自适用场景。追问 1数据库唯一键和乐观锁在幂等实现上各有什么优劣追问 2MQ 消费端如何实现幂等如果业务操作不是简单的 INSERT而是复杂的多表操作呢考察意图幂等性是分布式系统的底线保障。高级工程师必须能根据不同的业务场景插入型、更新型、复杂事务选择合适的幂等方案。模块九网络编程与 IO共 2 题第 36 题基础·IO 模型与 Netty题目请对比 BIO、NIO、AIO 的区别。NIO 的 Selector 是如何工作的追问 1Epoll 为什么比 Select/Poll 高效边缘触发ET和水平触发LT有什么区别追问 2Netty 的 Reactor 线程模型是怎样的BossGroup 和 WorkerGroup 各自负责什么考察意图网络编程是理解高性能中间件的基础。Epoll 的高效原理事件驱动、O(1) 复杂度是核心考点。第 37 题场景·TCP 连接问题题目线上服务出现大量CLOSE_WAIT状态的 TCP 连接是什么原因如何排查和解决追问 1TIME_WAIT过多会有什么问题如何优化追问 2Netty 中如何正确关闭 Channel 以避免连接泄漏考察意图TCP 状态异常是线上高频故障。考察的是对 TCP 四次挥手状态机理解和 Netty 资源管理能力。模块十架构与软技能共 3 题第 38 题开放·技术选型题目如果让你从零开始设计一个高并发系统你会如何做技术选型请说明理由。追问 1技术选型中你最重要的考量因素是什么团队能力、生态、性能、成本追问 2如果选型后发现某个中间件不满足需求你会怎么做考察意图技术选型是架构师的核心能力。考察的是全局思维和权衡能力而非堆砌技术名词。第 39 题开放·线上故障题目请分享一次你主导解决的最复杂的线上故障。背景是什么你是如何定位和解决的事后做了哪些改进追问 1故障处理过程中你是如何和团队协作的追问 2故障复盘报告Incident Report你一般怎么写包含哪些要素考察意图这是高级岗位的“必考题”。考察的是真实排障经验、应急响应能力和复盘改进意识。第 40 题开放·技术债务题目你负责的系统目前存在哪些技术债务你计划如何逐步偿还追问 1如何说服产品经理/业务方给你时间做技术改造追问 2重构过程中如何保证业务不中断有什么策略考察意图高级工程师不仅要能写代码还要能管理技术债务、推动架构演进。考察的是工程化思维和沟通推动能力。说明以上 40 道题覆盖了 Java 高级开发工程师面试的八大核心模块。全部题目的详细参考答案将在下一轮回答中给出每道题均包含“答题要点 追问解析 加分项”帮助你建立完整的面试应答体系。

相关新闻