【必问Top 10(100%会出现)】
- Spring IoC 容器启动全过程,说得越详细越好(重点)
- Bean 的完整生命周期(从配置到销毁全过程)
- @Autowired 是怎么注入的?自动装配的底层实现原理?
- Spring Bean 是线程安全的吗?怎么保证线程安全?
- Spring 事务传播行为一共7种,分别解释 + 经典场景(REQUIRES_NEW、NESTED 必问)
- @Transactional 失效的10种场景,你能说几种?
- Spring 如何解决循环依赖?三级缓存到底是干什么的?
- Spring AOP 动态代理两种方式的区别?CGLIB 和 JDK 动态代理底层细节
- Spring Boot 自动装配原理(@SpringBootApplication 到底干了啥?)
- Spring Boot Starter 机制是怎么实现的?
【高频进阶题(80%会问到2-3个)】
- BeanFactory 和 ApplicationContext 的区别?
- @Component 和 @Bean 的区别?分别用在什么场景?
- Spring 中设计模式用了哪些?(至少说出9种)
- Spring 启动时能打印出所有 Bean 的名字吗?怎么做?
- Spring 事件机制底层原理(ApplicationEvent + ApplicationListener)
- Spring 如何实现跨模块事务?分布式事务怎么解决?
- Spring 事务底层到底是怎么实现的?(AOP + TransactionInterceptor + DataSourceTransactionManager)
- ProxyTransactionManagementConfiguration 这个类是干嘛的?
- Spring 6 和 Spring 5 最大的区别?(Jakarta EE、Baseline Java 17、AOT、GraalVM Native 支持)
- Spring Boot 3 必须用 Java 17+,底层有哪些重大变化?
【刨根问底型杀手题(大厂最爱)】
- 三级缓存具体是什么?源码级别讲清楚循环依赖解决过程(必问!)
→ 一级:singletonObjects
→ 二级:earlySingletonObjects
→ 三级:singletonFactories(Lambda) - 为什么不用两级缓存?三级缓存到底解决了什么问题?
- 循环依赖中如果有 @Async 会发生什么?为什么?
- 构造器注入的循环依赖能解决吗?为什么?
- @PostConstruct 和 init-method 执行顺序?和 InitializingBean 呢?
- BeanFactoryPostProcessor 和 BeanPostProcessor 执行顺序?
- InstantiationAwareBeanPostProcessor 有什么特殊作用?
- SpringBoot 打包后 jar 怎么能直接运行?(Fat Jar 结构 + Launcher 原理)
- @ConditionalOnMissingBean 是怎么判断的?优先级如何?
- Spring 怎么支持 GraalVM Native Image?AOT 编译过程了解吗?
【事务专项折磨(阿里、字节、美团必考)】
- @Transactional 在 private 方法上有效吗?
- 同类中方法互相调用,@Transactional 生效吗?怎么解决?
- 抛出 checked 异常事务会回滚吗?怎么让它回滚?
- Propagation.NESTED 和 REQUIRES_NEW 本质区别?(Savepoint)
- 事务失效案例:try-catch 吃了异常、数据库不支持事务、多线程中调用等
【2025年新热点题】
- Spring 6 中 Baseline 升级到 Java 17,有哪些 API 被移除或废弃?
- Spring WebFlux 和 Spring MVC 本质区别?Netty 和 Servlet 容器区别?
- Reactive 编程模型在实际项目中你用过吗?R2DBC 和 JPA 区别?
- Spring Cloud Alibaba 和 Spring Cloud Netflix 现在谁更主流?
- Spring Authorization Server(新版 OAuth2 授权服务器)了解吗?
【一道让99%的人当场去世的终极问题】
“请手写三级缓存解决循环依赖的全过程代码(或画图),并说明如果把三级缓存改成二级会发生什么?”
背题小技巧(建议打印贴墙上)
- 循环依赖 = 三级缓存 + 提前暴露半成品对象 + 动态代理时机
- 自动装配 = CommonAnnotationBeanPostProcessor + AutowiredAnnotationBeanPostProcessor
- 事务 = AOP + ThreadLocal(ConnectionHolder) + Proxy + TransactionInterceptor
- 自动配置 = spring.factories + @Conditional 派生注解 + AutoConfigurationImportSelector
把上面40题全部能说清楚,基本可以横着走在2025年的 Spring 面试场了!
需要我把每一题配上标准答案 + 源码解析 + 面试应对话术吗?可以直接告诉我你想听哪几道,我给你逐个拆!祝你面试直接秒杀!