关于框架方面的面试,这里主要总结时下流行的ssm框架或者springboot+mybatis框架
- 一、Mybatis方面
1、mybatis是什么,为什么要使用mybatis
答:mybatis是一个半自动的轻量级的开源的持久层框架,这里主要强调,半自动,开源,轻量级,作用在持久层几个特点
2、mybatis与hibernate的区别
答:mybatis是基于原生jdbc的半自动持久层框架,需要程序员自己写sql,更加灵活;hibernate是基于java的jpa规范的全自动的持久层框架(当然,他们的区别不仅仅是这一点,但作为面试,回答这一点就足够了)
3、mybatis的执行流程(下面是用于面试的大致流程,抽空单独写一篇关于mybatis执行流程的文章)
答:(1)读取配置文件,根据配置文件buder一个sqlsessionFactory对象(这里使用到了建造者模式)
(2)通过sqlsessionFactory创建一个sqlsession对象(这里使用到了工厂模式)
(3)由sqlsession对象执行sql语句并封装结果集
4、mybatis的动态sql
答:mybatis为了简化程序员的编码和sql的灵活性,提供了动态sql的功能,所谓动态sql就是利用,,等标签按照不懂得条件改变sql的结构,执行不同的sql语句,以达到灵活的目的。
5、mybatis的批量操作
答:mybatis批量查询其实就是利用动态sql的标签,遍历参数中传递的数组或者集合,以达到批量操作的效果
6、“$”与“#”的区别
答:" $"和“#”都是用来获取值的,他们的区别在于通过“ $”获取的值是原样输出的,也就是说值本身是怎么样就是怎么样,不会拼接引号,也不会有预编译效果的;而通过“#”获取到的值mybatis是会为我们拼接一个引号的,而且有预编译的效果,可以防止sql的注入攻击。 - 二、spring方面
1、spring是什么,spring的主要优势是什么?
答:spring是一个优秀的三方框架,其主要优势在于简化代码和整合资源。
2、spring管理的对象默认是单例还是多例?延迟加载还是实时加载?可否更改?如何更改?
答:spring管理的对象默认是单例的,实时加载的,我们可以通过配置文件或注解的方式将对象设置为多例的实时加载的,注意:多例对象spring不负责管理对象的生命周期。
3、spring的五大核心组件
答:IOC,DI,AOP,BeanFactory,ApplicationContext;
4、简述对springIOC的认识
答:spring的IOC称作控制反转,所谓控制反转就是把我们自己新建和管理对象的权利交给spring去做,其目的在于合理利用资源和解耦合;spring的IOC底层维护着两个map集合,其中一个集合用于存放bean配置信息,另一个是负责存放spring管理的对象,key是我们定义的id(如果没有定义则是类名全小写),value则是该对象。
5、简述对springAOP的认识
答:springAOP是面向切面编程的实现;我们通常的逻辑分为核心关注点(主要的业务逻辑)和非核心关注点(如日志,缓存,事务等),这些非核心关注点是在很多业务中都需要的,我们就可以通过定义切面将这些重复的代码进行抽取,底层利用动态代理和反射技术在运行时将我们切面中的逻辑动态植入到业务逻辑中。
6、说说spring的事务控制方式
答:spring的事务分为编程式事务和声明式事务,用的最多的是声明式事务。
7、spring事务的隔离级别
答:spring事务的隔离级别也分为读未提交、读已提交、可重复读、串行化。spring默认的事务隔离级别是使用数据库的隔离级别。
8、spring事务的传播特性
答:spring的事务传播主要指的是当这个业务中开启一个事务,调用另一个业务执行时是开启一个新的事物还是在原来的事务中执行还是不开启事务等等一些传播方式,面试时一般会摸你一个场景让面试者回答这个场景具体应该用那种传播方式。
9、spring事务的默认回滚异常
答:spring默认的事务回滚的异常时运行时异常。 - 三、springMvc方面
1、简述springMVC的执行流程
- 四、SpringBoot方面
1、说说为什么要使用springboot,springboot的原则是什么
答:springboot的使用主要是简化配置,方便开发,springboot的原则就是开箱即用,也可以说约定大于配置,配置大于编码。
2、说说springboot常用的注解
答:常用的注解比如@responseBody、@requestMapping、@value@bean@service、@mapper@controller等等