阿里 Java 二面面经
一、项目与场景题
- 介绍一个你最熟悉的项目,主要负责哪些模块?
- 项目中遇到过哪些性能瓶颈?你是如何排查和优化的?
- 系统并发量是多少?你是怎么设计线程池或限流方案的?
- 如果接口响应时间突然变慢,你会如何定位问题?
二、Java 核心与并发
- HashMap 在 JDK 1.7 和 1.8 的底层实现有什么区别?
- ConcurrentHashMap 为什么能保证线程安全?底层用到哪些机制?
- volatile 的作用是什么?能否保证原子性?
- synchronized 和 ReentrantLock 的区别?
- 线程池的核心参数有哪些?拒绝策略怎么选?
- ThreadLocal 的原理和内存泄漏风险?
三、JVM 与内存管理
- JVM 内存结构包括哪些区域?
- Minor GC、Major GC、Full GC 的触发条件?
- CMS 和 G1 收集器的区别?
- 对象进入老年代的条件有哪些?
- 出现内存泄漏时怎么排查?
- 类加载过程和双亲委派机制?
四、数据库与缓存
- MySQL 为什么使用 B+ 树做索引?
- 事务的四大特性(ACID)及隔离级别?
- Redis 常见数据结构及应用场景?
- 如何防止缓存雪崩、穿透、击穿?
- Redis 分布式锁如何实现?
- Redis 的持久化方式 RDB 和 AOF 有何区别?
五、系统设计与分布式
- 如何设计一个高并发秒杀系统?
- 系统 QPS 从 1k 提升到 10k,要做哪些架构优化?
- 分布式系统中如何保证幂等性?
- 微服务间接口调用失败如何处理?
- 分布式事务有哪些实现方案?
六、算法与代码题
- 手写 LRU 缓存实现。
- 实现一个线程安全的单例模式。
- 查找字符串中最长不重复子串长度。
- 反转链表或查找链表倒数第 K 个节点。