高频面试题
本章节整理 Java 后端高频面试题及参考答案。
Java 基础
Q: HashMap 和 ConcurrentHashMap 的区别?
| 特性 | HashMap | ConcurrentHashMap |
|---|---|---|
| 线程安全 | 否 | 是 |
| 锁机制 | 无 | JDK8 CAS + synchronized(桶级锁) |
| null 键值 | 允许 | 不允许 |
| 性能 | 高(单线程) | 高(多线程) |
Q: JVM 内存结构?
- 堆(Heap):对象实例,GC 主要区域
- 方法区(MetaSpace):类信息、常量池
- 虚拟机栈:方法调用栈帧
- 本地方法栈:Native 方法
- 程序计数器:当前线程执行位置
Spring
Q: Spring Bean 的生命周期?
实例化 → 属性注入 → BeanNameAware → BeanFactoryAware →
postProcessBeforeInitialization → @PostConstruct/InitializingBean →
postProcessAfterInitialization → 使用 → @PreDestroy/DisposableBean → 销毁Q: @Transactional 失效场景?
- 方法非 public
- 同类内部调用(绕过代理)
- 异常被 catch 吞掉
- 数据库不支持事务(MyISAM)
- 传播机制设置不当
数据库
Q: MySQL 索引失效场景?
- 对索引列使用函数或运算
- 隐式类型转换(字符串字段用数字查询)
- 联合索引不满足最左前缀
LIKE '%xxx'左模糊查询OR条件中有非索引字段
分布式
Q: CAP 理论?
- Consistency(一致性):所有节点数据一致
- Availability(可用性):每次请求都有响应
- Partition tolerance(分区容忍):网络分区时系统仍运行
分布式系统必须满足 P,因此只能在 CP 或 AP 中选择。
