Skip to content

高频面试题

本章节整理 Java 后端高频面试题及参考答案。

Java 基础

Q: HashMap 和 ConcurrentHashMap 的区别?

特性HashMapConcurrentHashMap
线程安全
锁机制JDK8 CAS + synchronized(桶级锁)
null 键值允许不允许
性能高(单线程)高(多线程)

Q: JVM 内存结构?

  • 堆(Heap):对象实例,GC 主要区域
  • 方法区(MetaSpace):类信息、常量池
  • 虚拟机栈:方法调用栈帧
  • 本地方法栈:Native 方法
  • 程序计数器:当前线程执行位置

Spring

Q: Spring Bean 的生命周期?

实例化 → 属性注入 → BeanNameAware → BeanFactoryAware →
postProcessBeforeInitialization → @PostConstruct/InitializingBean →
postProcessAfterInitialization → 使用 → @PreDestroy/DisposableBean → 销毁

Q: @Transactional 失效场景?

  1. 方法非 public
  2. 同类内部调用(绕过代理)
  3. 异常被 catch 吞掉
  4. 数据库不支持事务(MyISAM)
  5. 传播机制设置不当

数据库

Q: MySQL 索引失效场景?

  • 对索引列使用函数或运算
  • 隐式类型转换(字符串字段用数字查询)
  • 联合索引不满足最左前缀
  • LIKE '%xxx' 左模糊查询
  • OR 条件中有非索引字段

分布式

Q: CAP 理论?

  • Consistency(一致性):所有节点数据一致
  • Availability(可用性):每次请求都有响应
  • Partition tolerance(分区容忍):网络分区时系统仍运行

分布式系统必须满足 P,因此只能在 CP 或 AP 中选择。

基于 VitePress 构建