数据类型与包装类
问题:Java中基本数据类型与包装类的区别是什么?自动装箱与拆箱的底层原理?
答案:
基本数据类型(如int
、double
)直接存储值,包装类(如Integer
、Double
)是对象,具备方法和属性。自动装箱由Integer.valueOf()
实现,拆箱调用intValue()
,频繁装箱可能触发缓存(如Integer
缓存-128~127)。
Integer a = 100; // 装箱:Integer.valueOf(100)
int b = a; // 拆箱:a.intValue()
String、StringBuffer、StringBuilder区别
问题:对比三者的性能及适用场景。
答案:
String
不可变,每次修改生成新对象;StringBuffer
线程安全,使用synchronized
;StringBuilder
非线程安全,性能更高。
String str = "a" + "b"; // 编译期优化为"ab"
StringBuffer sb = new StringBuffer().append("a").append("b");
final关键字作用场景
问题:final修饰变量、方法、类分别有什么作用?
答案:
- 变量:基本类型值不可变,引用类型指向不可变(对象内容可变)。
- 方法:禁止子类重写。
- 类:禁止继承。
final List<String> list = new ArrayList<>();
list.add("item"); // 合法,修改对象内容
多态的实现机制
问题:Java多态如何通过JVM实现?
答案:
基于虚方法表(vtable)动态绑定,运行时确定实际调用的方法。父类引用调用子类重写方法时,JVM通过对象实际类型查找方法表。
单例的七种写法
问题:列举线程安全的单例实现方式。
答案:
- 双重检查锁(推荐)
public class Singleton {
private static volatile Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
- 静态内部类(懒加载)
- 枚举(防反射破坏)
JVM类加载机制
问题:描述类加载的双亲委派模型及其打破场景。
答案:
加载流程:Bootstrap ClassLoader
→ Extension ClassLoader
→ Application ClassLoader
。打破场景:如JDBC驱动使用ServiceLoader
,或自定义类加载器重写loadClass
方法。
AQS实现原理
问题:AQS如何管理线程同步状态?
答案:
通过volatile int state
和CLH队列实现。ReentrantLock
调用acquire()
时,CAS修改state,失败则入队阻塞。
Spring事务传播机制
问题:PROPAGATION_REQUIRES_NEW和PROPAGATION_NESTED的区别?
答案:
REQUIRES_NEW
:新建独立事务,原事务挂起。NESTED
:嵌套事务,回滚到保存点而非全事务。
Kafka高可用设计
问题:Kafka如何保证分区消息不丢失?
答案:
- 生产者:
acks=all
确保ISR副本写入。 - Broker:多副本同步+Leader选举。
- 消费者:手动提交偏移量。
短链服务设计
问题:设计一个高并发短链系统,如何生成唯一ID?
答案:
- ID生成:Snowflake算法或自增ID+Base62编码。
- 映射存储:Redis缓存短码到原URL,数据库持久化。
// Base62示例
String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
String shortUrl = encode(longUrl.hashCode(), chars);
Java21虚拟线程
问题:虚拟线程相比平台线程有哪些优势?
答案:
轻量级线程,由JVM调度,无需操作系统线程切换。适合IO密集型任务,显著提升吞吐量。
Thread.startVirtualThread(() -> System.out.println("Virtual Thread"));
CAP理论公式
分布式系统只能满足其中两项:
一致性(C) + 可用性(A) + 分区容错性(P) ≤ 2
其他技术点可参照类似格式展开,如需深入某个主题可进一步细化。