2025年Java架构师基础面试宝典

2025年Java架构师基础面试题

Java核心基础

1. 泛型原理

问题:Java泛型擦除机制如何工作?

答案:

  1. 编译时检查
    • 编译时检查类型安全
    • 运行时擦除为原生类型
  2. 示例代码
List<String> list = new ArrayList<>();
// 运行时实际类型是List

2. NIO模型

问题:对比BIO/NIO/AIO的区别?

答案: | 模型 | 阻塞方式 | 适用场景 | |------|----------|----------| | BIO | 同步阻塞 | 连接数少 | | NIO | 同步非阻塞 | 高并发短连接 | | AIO | 异步非阻塞 | 高并发长连接 |

JVM原理

3. 对象内存布局

问题:Java对象在内存中的结构?

答案:

  1. 组成结构
    • 对象头(8-16字节)
    • 实例数据
    • 对齐填充
  2. 查看工具
jol-cli-0.9-full.jar java.lang.Object

4. 垃圾回收

问题:CMS和G1收集器的区别?

答案:

  1. CMS特点
    • 标记-清除算法
    • 并发收集
    • 内存碎片问题
  2. G1特点
    • 分Region收集
    • 可预测停顿
    • 整体标记整理

并发编程

5. ThreadLocal

问题:ThreadLocal的内存泄漏问题如何解决?

答案:

  1. 原因分析
    • 线程池中线程长期存活
    • Entry的key是弱引用
  2. 解决方案
try {
    threadLocal.set(value);
    // ...
} finally {
    threadLocal.remove();
}

6. 并发容器

问题:ConcurrentHashMap的size()方法原理?

答案:

  1. 实现机制
    • 分段统计各Segment
    • 最多重试3次
  2. JDK8优化
    • 基于baseCount和CounterCell

数据库

7. 事务隔离

问题:MySQL的RR隔离级别实现原理?

答案:

  1. MVCC机制
    • 版本链+ReadView
    • undo日志回滚
  2. 锁机制
    • 记录锁
    • 间隙锁

8. 索引优化

问题:联合索引的最左前缀原则?

答案:

  1. 示例说明
-- 索引(a,b,c)
WHERE a=1 AND b=2  -- 使用索引
WHERE b=2 AND c=3  -- 不使用索引

Spring框架

9. Bean生命周期

问题:Spring Bean的初始化顺序?

答案:

  1. 执行顺序
    • @PostConstruct
    • InitializingBean
    • init-method
  2. 销毁顺序
    • @PreDestroy
    • DisposableBean
    • destroy-method

10. AOP原理

问题:Spring AOP的代理创建时机?

答案:

  1. 创建流程
    • Bean初始化完成后
    • 通过BeanPostProcessor创建
  2. 源码位置
    • AbstractAutoProxyCreator

分布式

11. 分布式锁

问题:Redis分布式锁的Redlock算法?

答案:

  1. 实现步骤
    • 向N个节点获取锁
    • 多数节点成功才算获取成功
    • 锁有效期需包含时钟漂移
  2. 问题
    • 性能较低
    • 实现复杂

12. 服务注册

问题:Eureka的服务续约机制?

答案:

  1. 心跳间隔
    • 默认30秒
  2. 失效时间
    • 90秒未续约则剔除

系统设计

13. 缓存策略

问题:缓存穿透解决方案?

答案:

  1. 方案对比
    • 布隆过滤器
    • 空值缓存
    • 接口校验
  2. 实现示例
if (bloomFilter.mightContain(key)) {
    return cache.get(key);
}

14. 限流算法

问题:令牌桶算法实现原理?

答案:

  1. 核心参数
    • 令牌生成速率
    • 桶容量
  2. Guava实现
RateLimiter limiter = RateLimiter.create(10); // 每秒10个令牌
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值