文章目录
一、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