Java面试高频核心内容
文章目录
- 一、Java面试题
- 1、Java基础面试题与答案
- 数据类型与包装类
- String相关
- 2、集合框架面试题与答案
- HashMap原理
- 3、并发编程面试题与答案
- synchronized优化
- ThreadLocal
- 4、JVM面试题与答案
- GC算法
- 5、数据库面试题与答案
- MySQL索引
- 6、分布式面试题与答案
- Redis持久化
- 系统设计
- 二、Java相关知识
- 1、Java基础
- 2、集合框架
- 3、并发编程
- 4、JVM原理
- 5、数据库与缓存
- 6、分布式架构
- 7、系统设计
一、Java面试题
1、Java基础面试题与答案
数据类型与包装类
问题: 解释Integer的缓存机制及其范围
答案:
Integer类在-128到127之间预先缓存对象,通过IntegerCache静态内部类实现,避免重复创建小数值对象。超出范围则新建实例。
Integer a = 127; // 使用缓存
Integer b = 127; // 同一对象
System.out.println(a == b); // true
String相关
问题: String为何设计为不可变?
答案:
安全性(如哈希值计算)、线程安全、字符串池优化。修改String实际创建新对象,原对象不变。StringBuffer和StringBuilder适用于频繁修改场景,后者线程不安全但性能更高。
2、集合框架面试题与答案
HashMap原理
问题: HashMap如何解决哈希冲突?
答案:
链表+红黑树(JDK8)。冲突时链表存储,链表长度≥8且数组长度≥64时转为红黑树。扩容时重新计算索引,负载因子默认0.75。
// 扰动函数示例
static final int hash(Object key) {int h;return (key == null) ? 0 : (h