Spring Bean生命周期
Spring Bean的生命周期是面试必考题。从实例化、属性填充、初始化到销毁,每个阶段都可能被植入自定义逻辑。
- ① Bean实例化(Instantiation)
- ② 属性赋值(Populate Bean)
- ③ 初始化(Initialization):包括Aware接口、BeanPostProcessor前置处理、@PostConstruct、InitializingBean、自定义init-method、BeanPostProcessor后置处理
- ④ 使用Bean
- ⑤ 销毁(Destruction)
此外,Spring AOP的动态代理实现(JDK动态代理 vs CGLIB)也是重点,需明确两者的适用场景及性能差异。
Redis缓存穿透与雪崩
在高并发场景下,Redis的稳定性至关重要。面试官常问如何防止缓存穿透(查询不存在的数据)、缓存击穿(热点key过期)和缓存雪崩(大量key同时过期)。
| 问题类型 |
原因 |
解决方案 |
| 缓存穿透 |
查询不存在的数据 |
布隆过滤器、缓存空对象 |
| 缓存击穿 |
热点key过期 |
互斥锁、逻辑过期 |
| 缓存雪崩 |
大量key同时过期 |
随机过期时间、集群部署 |
RabbitMQ/Kafka消息可靠性
消息队列的可靠性是分布式系统的基石。如何保证消息不丢失?需要从生产者确认、Broker持久化、消费者手动ACK三个环节入手。
此外,消息重复消费(幂等性设计)和消息积压问题也是实际开发中常遇到的挑战,需结合业务场景给出解决方案。