Java 在企业级开发中占据主导地位,面试考察点往往贯穿基础至架构层。以下梳理了高频考点及核心解析,涵盖基础、集合、并发、JVM、Spring、数据库及分布式领域。
一、Java 基础
1. Java 的三大特性是什么?
封装:隐藏对象的属性和实现细节,仅对外提供访问方式(getter/setter)。 继承:子类继承父类的属性和方法,提高代码复用性。 多态:同一方法在不同对象上有不同行为(方法重写、接口实现)。
2. == 和 equals() 的区别?
==:比较基本数据类型的值,或引用类型的内存地址。
equals():默认比较对象地址(Object 类),但可被重写(如 String 比较内容)。
3. String、StringBuilder、StringBuffer 的区别?
| 类 | 可变性 | 线程安全 | 适用场景 |
|---|---|---|---|
String | ❌ 不可变 | ✅ 安全(final) | 字符串常量 |
StringBuilder | ✅ 可变 | ❌ 不安全 | 单线程字符串操作 |
StringBuffer | ✅ 可变 | ✅ 安全(synchronized) | 多线程字符串操作 |
二、Java 集合
4. ArrayList 和 LinkedList 的区别?
| 对比项 | ArrayList | LinkedList |
|---|---|---|
| 底层结构 | 动态数组 | 双向链表 |
| 查询效率 | O(1)(随机访问快) | O(n)(需遍历) |
| 增删效率 | O(n)(需移动元素) | O(1)(头尾操作快) |
| 适用场景 | 频繁查询 | 频繁增删 |
5. HashMap 的底层原理?
- JDK 1.7:数组 + 链表(哈希冲突时链表存储)。
- JDK 1.8+:数组 + 链表 + 红黑树(链表长度 ≥8 时转红黑树)。
- 扩容机制:默认容量 16,负载因子 0.75,扩容时容量翻倍。
三、多线程 & 并发
6. 线程的创建方式有哪些?
- 继承 Thread 类(不推荐,单继承限制)。
- 实现 Runnable 接口(推荐,可复用)。
- 实现 Callable 接口(可返回结果,配合 FutureTask)。
- 线程池(ExecutorService)(推荐,管理线程资源)。

