1. JVM 与内存管理
1.1. 解释垃圾回收机制(GC)的工作原理。
垃圾回收器负责自动回收不再使用的对象内存。主要算法包括:
- 标记-清除:标记所有存活对象,然后清除未标记的对象。
- 复制算法:将活跃对象复制到新空间,释放旧空间。
- 分代回收:将堆内存分为新生代和老年代,新生代对象频繁回收,老年代对象较少回收。
1.2. 描述 Java 中的内存泄漏。
内存泄漏是指由于程序错误,某些对象无法被 GC 回收,导致内存持续占用。常见原因包括:
- 长时间持有对对象的引用。
- 不正确的静态变量使用。
- 监听器未正确移除。
2. 高并发编程
2.1. Callable
和 Runnable
有什么区别?
Runnable
:无返回值,不能抛出检查性异常。Callable
:可以返回值,并且允许抛出检查性异常。
Callable<Integer> task = () -> {
return 123;
};
Future<Integer> future = executor.submit(task);
2.2. 什么是并发包中的 CountDownLatch
和 CyclicBarrier
?
CountDownLatch
:允许一个或多个线程等待,直到一组操作完成。适用于一个线程等待其他多个线程的场景。CyclicBarrier
:让一组线程等待彼此,直到所有线程都达到屏障点,适用于多个线程彼此等待的场景。
3. 分布式系统
3.1. 什么是分布式事务?如何保证分布式事务的一致性?
分布式事务涉及多个不同的数据库或服务,需要确保所有操作要么全部成功,要么全部失败。常用方案包括:
- 两阶段提交协议(2PC)。
- 基于消息队列的最终一致性方案。
- TCC(Try-Confirm-Cancel)模式。
3.2. 如何设计高并发系统的限流机制?
限流常用的算法有:
- 漏桶算法:流出速度恒定,流量超过容量则丢弃。
- 令牌桶算法:按照固定速率生成令牌,只有持有令牌的请求才能通过,适合突发流量。
想要更大提升,点击使用小奈AI,免费创造无限可能