一、冲刺问题
1、Spring在ssm中的作用是什么?
Spring :轻量级框架
角色:用于管理Bean生命周期和框架集成的Bean工厂。
两个主要核心:
. IOC/DI (控制反转/依赖注入) :将dao依赖注入服务层,将服务层反转为action层,Spring顶级容器为BeanFactory。
. AOP :面向切割的编程
2、Spring的事务?
编程式事务管理:用编程方式管理事务,非常灵活,很难维护。
声明性事务管理—使您可以将业务代码和事务管理分开,并通过注释和xml配置来管理事务。
3、IOC在项目中的作用?
角色: Ioc解决了对象之间的依赖关系,并通过配置文件或注释关联所有Bean的依赖关系来降低绑定度。
4、Spring概要文件的内容?
打开事务注释驱动
事务管理器
打开注释功能并设置扫描包
数据库配置
配置SQL会话工厂、别名和映射文件
不创建Dao层的实现类
5、Spring上的评论?
注册: @Controller @Service @Component
注入: @Autowired @Resource
请求地址: @RequestMapping
返回特定的数据类型而不是跳转: @ResponseBody
6、Spring DI有三种方式?
构造函数注入:用构造方法初始化
constructor-arg index='0' type=' Java.lang.string ' value=' BMW '/constructor-arg setter方法注入:用setter方法初始化
属性名称=' id ' value=' 1111 '/property接口注入
7、Spring主要使用什么模式?
工厂模式:每个Bean的创建路径方法
单实例模式:每个缺省Bean的范围是单实例
代理模式:关于Aop的实现通过代理模式
8、IOC、AOP的实现原理?
IOC :通过反射机制生成对象注入
AOP :动态代理
二. SpringMvc面试问题
1、SpringMvc的控制器是单实例模式吗? 如果是那样的话,有什么问题,怎么解决?
问题:单实例模式、多线程访问时有线进程的安全问题
解决方法:请勿使用同步。 不要在控制器上写字段
2、SpringMvc中控制器的评论?
@Controller :此注释表明此类充当控制器
3,@RequestMapping注释用于类的作用?
角色:用于将URL映射到类或特定处理方法
4、前台的多个参数,这些参数都是一个对象,能快速得到对象吗?
方法:在方法中直接声明对象时,SpringMvc会自动将属性分配给该对象
5、SpringMvc函数的返回值?
字符串、ModelAndView、列表、Set等
返回常规String、Ajax请求和List集合
6、SpringMvc上的传输和重定向?
传输:返回:“hello”
重定向:“return:“ redirect:hello.jsp”
使用体贴的馒头框架将java中的对象直接转换为js可以识别的json对象。 具体步骤如下。
装体贴的馒头. jar
在配置文件中配置json映射
必须在接受Ajax方法的过程中直接返回Object、list等,并在方法前添加注释@ResponseBody
8、SpringMvc的工作流程图?
9、Struts2和SpringMvc有什么区别?
入口不同:
结构2 :过滤器
SpringMvc :作为前端控制器的servlet
开发方法的不同:
Struts2:基于类开发,通过类的属性传递参数只能设置多个示例
SpringMvc :基于方法开发(一个方法对应于一个url ),将请求参数传递给方法参数,该参数可以是单个实例,也可以是多个实例(建议使用单个实例)。
理赔方法不同:
Struts2)值栈村塾的要求和应答的数据,通过OGNL访问数据
SpringMvc :参数解析器解析请求的内容,为方法参数赋值,将数据和视图封装到ModelAndView对象中,最后将ModelAndView中的模型数据填充到请求域中缺省情况下,jsp视图解析器使用jstl。
三. Mybatis面试问题
1、Ibatis和Mybatis?
Ibatis:2010年,apache的Ibatis框架停止更新,并移交给了google团队,同时更名为MyBatis。从2010年后Ibatis在没更新过,彻底变成了一个孤儿框架。一个没人维护的框架注定被mybatis拍在沙滩上。Mybatis:Ibatis的升级版本。
2、什么是Mybatis的接口绑定,有什么好处?
Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。
3、什么情况用注解,什么情况用xml绑定?
注解使用情况:Sql语句简单时
xml绑定使用情况:xml绑定 (@RequestMap用来绑定xml文件)
4、Mybatis在核心处理类叫什么?
SqlSession
5、查询表名和返回实体Bean对象不一致,如何处理?
映射键值对即可
<result column="title" property="title" javaType="java.lang.String"/>column:数据库中表的列名
property:实体Bean中的属性名
6、Mybatis的好处?
把Sql语句从Java中独立出来。
封装了底层的JDBC,API的调用,并且能够将结果集自动转换成JavaBean对象,简化了Java数据库编程的重复工作。
自己编写Sql语句,更加的灵活。
入参无需用对象封装(或者map封装),使用@Param注解
7、Mybatis配置一对多?
<collection property="topicComment" column="id" ofType="com.tmf.bbs.pojo.Comment" select="selectComment" />property:属性名
column:共同列
ofType:集合中元素的类型
select:要连接的查询
8、Mybatis配置一对一?
<association property="topicType" select="selectType" column="topics_type_id" javaType="com.tmf.bbs.pojo.Type"/>property:属性名
select:要连接的查询
column:共同列
javaType:集合中元素的类型
9 、${} 和 #{}的区别?
: 简 单 字 符 串 替 换 , 把 {}:简单字符串替换,把 :简单字符串替换,把{}直接替换成变量的值,不做任何转换,这种是取值以后再去编译SQL语句。
#{}:预编译处理,sql中的#{}替换成?,补全预编译语句,有效的防止Sql语句注入,这种取值是编译好SQL语句再取值。
总结:一般用#{}来进行列的代替
10、获取上一次自动生成的主键值?
select last _insert_id()11、Mybatis如何分页,分页原理?
RowBounds对象分页
在Sql内直接书写,带有物理分页
12、Mybatis工作原理?
原理:
通过SqlSessionFactoryBuilder从mybatis-config.xml配置文件中构建出SqlSessionFactory。
SqlSessionFactory开启一个SqlSession,通过SqlSession实例获得Mapper对象并且运行Mapper映射的Sql语句。
完成数据库的CRUD操作和事务提交,关闭SqlSession。
扫描下方二维码,及时获取更多互联网求职面经、java、python、爬虫、大数据等技术,和海量资料分享:
公众号**菜鸟名企梦后台发送“csdn”即可免费领取【csdn】和【百度文库】下载服务;
公众号菜鸟名企梦后台发送“资料”:即可领取5T精品学习资料**、java面试考点和java面经总结,以及几十个java、大数据项目,资料很全,你想找的几乎都有
推荐阅读
☞二叉树高频面试题总结:含答案