JAVA面试-框架篇

1、Spring中事务失效的场景

在项目中,我遇到过几种导致事务失效的场景:

  1. 如果方法内部捕获并处理了异常,没有将异常抛出,会导致事务失效。因此,处理异常后应该确保异常能够被抛出。

  2. 如果方法抛出检查型异常(checked exception),并且没有在@Transactional注解上配置rollbackFor属性为Exception,那么异常发生时事务可能不会回滚。

  3. 如果事务注解的方法不是公开(public)修饰的,也可能导致事务失效。

详解: https://www.bilibili.com/video/BV1yT411H7YK?spm_id_from=333.788.videopod.episodes&vd_source=5cdd04cd106e2c17afbf3ebd1143d654&p=38

2、 SpringMVC的执行流程

老旧的视图阶段(JSP)

前后端分离

3、SpringBoot自动装配原理

Spring Boot的自动配置原理基于@SpringBootApplication注解,它封装了@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan@EnableAutoConfiguration是核心,它通过@Import导入配置选择器,读取META-INF/spring.factories文件中的类名,根据条件注解决定是否将配置类中的Bean导入到Spring容器中。

4、Spring循环依赖怎么解决

循环依赖发生在两个或两个以上的bean互相持有对方,形成闭环。Spring框架允许循环依赖存在,并通过三级缓存解决大部分循环依赖问题:

  1. 一级缓存:单例池,缓存已完成初始化的bean对象。

  2. 二级缓存:缓存尚未完成生命周期的早期bean对象。

  3. 三级缓存:缓存ObjectFactory,用于创建bean对象。

解决循环依赖的流程如下:

  1. 实例化A对象,并创建ObjectFactory存入三级缓存。

  2. A在初始化时需要B对象,开始B的创建逻辑。

  3. B实例化完成,也创建ObjectFactory存入三级缓存。

  4. B需要注入A,通过三级缓存获取ObjectFactory生成A对象,存入二级缓存。

  5. B通过二级缓存获得A对象后,B创建成功,存入一级缓存。

  6. A对象初始化时,由于B已创建完成,可以直接注入B,A创建成功存入一级缓存。

  7. 清除二级缓存中的临时对象A。

5、MyBatis执行流程

MyBatis的执行流程如下:

  1. 读取MyBatis配置文件mybatis-config.xml

  2. 构造会话工厂SqlSessionFactory

  3. 会话工厂创建SqlSession对象。

  4. 操作数据库的接口,Executor执行器。

  5. Executor执行方法中的MappedStatement参数。

  6. 输入参数映射。

  7. 输出结果映射。

6、 MyBatis是否支持延迟加载

7、用过MyBatis的一级缓存和二级缓存吗?

一级缓存

一级缓存的作用域是sqlSession级别的,也就是说一个sqlSession下,同样的查询不会执行第二次,用第一次的结果,但是如过执行了更新,删除,插入的操作,会删除所有的一级缓存.一级缓存默认开启

拓展:同一个事务中默认是使用一个sqlSession的,如一个service的方法中加了 @Transactional那么这个方法里都用都一个sqlsesiion,如果没用加 @Transactional也就没开启事务,则这个方法每次执行mapper里的方法都会开启一个新的sqlsession.即使你连续查了同一条sql,这样是不是可以帮助理解一级缓存的作用域是sqlsession级别的.

二级缓存

二级缓存默认是不开启的,要打开配置,mapper的xml中也要开启,二级缓存的作用域是Namespaces级别的,

相关推荐
uzong6 小时前
一个好的面试官,应该让候选人感到被尊重
面试
咩咩啃树皮7 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
鱟鲥鳚8 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
触底反弹9 小时前
深入理解大模型采样:Temperature、Top-K、Top-P 的原理与实战
人工智能·算法·面试
大模型码小白9 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司10 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
沉默王二11 小时前
腾讯一面,我霸气反问:“你说你们在做Agent项目,说说 SubAgent、Plan 模式、Skill 调用这些你们都是怎么做的?”面试官一直在擦汗。。
面试·agent·ai编程
爱笑的源码基地11 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
wuqingshun31415911 小时前
TCP超时重传机制是为了解决什么问题?
java
莫逸风14 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope