常见面试题(2)

1.spring 常用的注入方式有哪些?

1.属性注入
2.构造方法注入
3.注解方式注入

2.说一下 spring mvc 运行流程

1.spring mvc 先将请求发送给 DispatcherServlet(前置控制器)2.DispatcherServlet 查询一个或多个 HandlerMapping(映射注册),找到处理请求的 Controller。
3.DispatcherServlet 再把请求提交到对应的 Controller(控制器)。
4.Controller 进行业务逻辑处理后,会返回一个ModelAndView。
5.Dispathcher(分配器) 查询一个或多个 ViewResolver 视图解析器,找到 ModelAndView 对象指定的视图对象。
6.视图对象负责渲染返回给客户端

3.spring mvc 有哪些组件

1.前置控制器 DispatcherServlet。
2.映射控制器 HandlerMapping。
3.处理器 Controller。
4.模型和视图 ModelAndView。
5.视图解析器 ViewResolver。

4.@Autowired与@Resource的区别

1.@Autowired与@Resource都是自动注入
2.@Autowired是spring提供的注解,@Resource是sun公司提供的注解
3.@Autowired是先根据类型注入,再根据名字注入,@Resource是先根据名字注入,然后再根据类型注入
所以注入字段推荐使用@Autowired,因为它和spring进行无缝集成

5.为什么要使用 spring

1.spring 提供 ioc 技术,容器会帮你管理依赖的对象,从而不需要自己创建和管理依赖对象了,更轻松的实现了程序的解耦。
2.spring 提供了事务支持,使得事务操作变的更加方便。
3.spring 提供了面向切片编程,允许你把遍布应用各处的功能分离出来形成可重用的组件
4.更方便的框架集成,spring 可以很方便的集成其他框架,比如 MyBatis、hibernate 等。

6.请谈谈你对spring的理解

Spring的2大核心
1.IOC/DI
   所谓的IOC就是控制反转,把当前应用中的对象都交给spring来统一进行管理控制,这种创建对象权利的反转就叫做控制反转
   所谓DI就是依赖注入,把spring创建对象注入到指定字段的过程就叫做依赖注入
2.AOP
   所谓AOP就是面向切面编程,把遍布引用各处的重复功能抽取成可重用的组件,能让代码有效的进行解耦,并且维护性较强
   AOP一般用来做日志管理,权限还有事务管理等等..

7.MyBatis 中 #{}和 ${}的区别是什么

1.#{}是预编译处理,${}是字符替换。
2.MyBatis 会将 SQL 中的 #{}替换成“?”,配合 PreparedStatement 的 set 方法赋值,这样可以有效的防止 SQL 注入,保证程序的运行安全。

8.MyBatis 和 hibernate 的区别有哪些

1.灵活性:MyBatis 更加灵活,自己可以写 SQL 语句,使用起来比较方便。
2.可移植性:MyBatis 都是自己手写的 SQL,因为每个数据库的 SQL 都有不同之处,所以可移植性比较差。
3.学习和使用门槛:MyBatis 入门比较简单,使用门槛也更低。
4.二级缓存:hibernate 拥有更好的二级缓存,它的二级缓存可以自行更换为第三方的二级缓存。

9.数据库的三范式是什么

第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。
第二范式:就是要有主键,要求其他字段都依赖于主键
第三范式:就是要消除传递依赖

10.char 和 varchar 的区别是什么

char(n) :固定长度类型,比如订阅 char(10),当你输入"abc"三个字符的时候,它们占的空间还是 10 个字节,其他 7 个是空字节。
char 优点:效率高;缺点:占用空间;适用场景:存储密码的 md5 值,固定长度的,使用 char 非常合适。
varchar(n) :可变长度,存储的值是每个值占用的字节再加上一个用来记录其长度的字节的长度。
所以,从空间上考虑 varcahr 比较合适;从效率上考虑 char 比较合适,二者使用需要权衡。

11.MySQL 的内连接、左连接、右连接有什么区别

内连接关键字:inner join;左连接:left join;右连接:right join。
内连接是把匹配的关联数据显示出来;左连接是左边的表全部显示出来,右边的表显示出符合条件的数据;右连接正好相反

12.说一下 spring 的事务隔离

默认值为 ISOLATION_DEFAULT(使用数据库的设置),其他四个隔离级别和数据库的隔离级别一致:
ISOLATION_DEFAULT:用底层数据库的设置隔离级别,数据库设置的是什么我就用什么;

ISOLATIONREADUNCOMMITTED:未提交读,最低隔离级别、事务未提交前,就可被其他事务读取(会出现幻读、脏读、不可重复读);

ISOLATIONREADCOMMITTED:提交读,一个事务提交后才能被其他事务读取到(会造成幻读、不可重复读),SQL server 的默认级别;

ISOLATIONREPEATABLEREAD:可重复读,保证多次读取同一个数据时,其值都和事务开始时候的内容是一致,禁止读取到别的事务未提交的数据(会造成幻读),MySQL 的默认级别;

ISOLATION_SERIALIZABLE:序列化,代价最高最可靠的隔离级别,该隔离级别能防止脏读、不可重复读、幻读。

13.BeanFactory和ApplicationContext有什么区别?

1.都是接口,ApplicationContext是BeanFactory的子接口,拥有更多的功能与方法

2.ApplicationContext是在启动容器创建上下文环境的时候就创建Bean对象(预先加载,迫切加载),而BeanFactory是在使用的时候才进行对象的创建(懒加载)

14.SpringMVC常用的注解有哪些

@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。

@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。

@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。

15.说一下 ACID 是什么

1.原子性:要么都执行,要么都不执行。
2.一致性:合法的数据才可以被写入。
3.隔离性:允许多个用户并发访问。
4.持久性:事务结束后,事务处理的结果必须得到固化。即一旦提交,对数据库改变是永久的。


16.索引的作用?和它的优点缺点是什么?

1.作用:加速对数据的检索
2.优点:它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据
3.缺点:是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。

17.union和union all有什么不同

UNION在进行表连接后会筛选掉重复的记录
UNION ALL只是简单的将两个结果合并后就返回。
从结果上来说,union去重,union all 不去重,从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL。

18.sql执行顺序

(1)from (查表)
(2)On
(3) join (连表) 
(4) where (条件)
(5)group by(分组)
(6) avg,sum.... (聚合函数)
(7)having 
(8) select  查询字段
(9) distinct 去重
(10) order by 排序
发布了28 篇原创文章 · 获赞 15 · 访问量 1106

猜你喜欢

转载自blog.csdn.net/W1184394406/article/details/103768083
今日推荐