一、 选择题:
a) 1-5:B D CD BD B
b) 6-10: B B B C D
c) 11-15: C A B A D
二、 选择题:
a) 1-5: B A C A A
b) 6-10: A D A D ABCD
c) 11-15: C A D B B
三、 选择题:
a) 1-5: C D B B C
b) 6-10: A D A B BC
c) 11-15: BD D C ABC ABC
四、 选择题:
1-5: C D B D A
6-10: C C C D A
11-15: AB A A D DE
五、 简答题(一)
1. 请描述SpringMvc的的核心组件,以及SpringMVC的工作原理。
答案:
核心组件:1. DispatcherServlet 2. HandlerMapping 3. Controller 4. ModelAndView 5. ViewResolver
SpringMVC的工作原理:
DispatcherServlet接受客户端发送的所有请求,这些请求经过HandlerMapping解析之后,找到对应的Controller组件,
在Controller中处理请求,得到的结果即ModelAndView,ModelAndView再经由ViewResolver解析得到最终要响应回客户端的
视图,再交给DispatcherServlet,由核心控制器响应回客户端。
2. 写出spring中的5个注解及其含义
@Component 标识一个受Spring管理的组件
@Respository标识持久层
@Service 标识服务层
@Controller 标识控制层
@Autowired 它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作
3. SpringMVC中怎么样设定重定向和转发的
答案:
在返回值前面加"forward:"就可以让结果转发,譬如"forward:user.do?name=method4"
在返回值前面加"redirect:"就可以让返回值重定向,譬如"redirect:http://www.baidu.com"
4. 请简述什么是MVC模式?
答案:
1. 是一种开发软件工程的设计模式。
2. M即Model,模型,定义数据模型和业务模型,通常由javabean实现;
V即View,视图,定义与客户端进行交互的界面,通常由jsp,html等实现;
C即Controller,控制器,接收客户端请求并调用模型和视图处理请求,通常由servlet实现。
六、 简答题(二)
1. 请描述ResultMap和ResultType的差别?
两者都是表示查询结果集与java对象之间的一种关系,处理查询结果集映射到java对象。
resultMap:表示将查询结果集中的列一 一映射到bean对象的各个属性。
ResultType:表示的是bean中的对象类,此时可以省略掉resultMap标签的映射,但是必须保证查询结果集中的属性 和 bean对象类中的属性是一一对应的
2. .MyBatis编程步骤是什么样的?
1. 创建SqlSessionFactory
2. 通过SqlSessionFactory创建SqlSession
3. 通过sqlsession执行数据库操作
4. 调用session.commit()提交事务
3. #{}和${}的区别是什么?
#{} 是预编译处理,${}是字符串替换。Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的set 方法来赋值;
Mybatis 在处理${}时,就是把时,就是把{}替换成变量的值。
使用#{}可以有效的防止 SQL 注入,提高系统安全性。
4. 当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
第 1 种: 通过在查询的 sql 语句中定义字段名的别名,让字段名的别名和实体类的属性名一致
第 2 种: 通过 <resultMap> 来映射字段名和实体类属性名的一一对应的关系。
5. 在写mapper接口以及对应的mapper.xml文件时,有哪些注意事项?
1、Mapper 接口方法名和 mapper.xml 中定义的每个 sql 的 id 相同;
2、Mapper 接口方法的输入参数类型和 mapper.xml 中定义的每个 sql 的parameterType 的类型相同;
3、Mapper 接口方法的输出参数类型和 mapper.xml 中定义的每个 sql 的resultType 的类型相同;
4、Mapper.xml 文件中的 namespace 即是 mapper 接口的类路径。
七、 简答题(三)
1. 请描述ArrayList与 LinkedList 的区别?
ArrrayList 底层的数据结构是数组,支持随机访问,查询效率高;
LinkedList 的底层数据结构是双向循环链表,增删元素性能更高。
2. Java 中,Comparator 与Comparable 有什么不同
Comparable 接口用于定义对象的自然顺序,是排序接口,需要该对象的类去实现该接口,而 comparator接口 通常用于定义用户定制的顺序,是新定义的
比较器需要实现的接口。
若某类的多个对象之间已经有定义好的排序规则,即已经实现Comparable接口,此时不想用已有的排序规则,而想使用临时的或新的排序规则
此时就可以采用定义比较器实现Comparator接口来实现。
3.请描述什么是事务,以及事务的ACID特性?
事务(Transaction)是数据库操作的基本执行单元。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。
事务具有以下4个基本特征。
Atomic(原子性):事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败。
Consistency(一致性):只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初状态。
Isolation(隔离性):事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。
Durability(持久性):事务结束后,事务处理的结果必须能够得到固化。
4.用递归求斐波那契数列1 1 2 3 5 8 13 21 34 的第30个数是多少?
public int GetNumberAtPos(int pos){
if(pos==0||pos==1){
return 1;
}
int res = GetNumberAtPos(pos - 1) + GetNumberAtPos(pos - 2);
return res;
}
5.为什么重写equals方法的同时建议重写hashcode方法。
Object默认的equals方法本质是==的比较,一般来说我们的对象都是引用对象,比较地址,需要重写equals方法。Hashcode 方法也是可以用来比较两个对象是否相等很少直接使用,hashcode方法返回的是一个int值,可以看作是一个对象的唯一编码,如果两个对象的hashcode值相同,我们应该认为这两个对象是同一个对象。所以如果我们对equals方法进行重写,建议一定要对hashcode方法重写,以保证相同的对象返回相同的hashcode值,不同对象返回不同的hashcode值。
1)、重写equals方法时需要重写hashcode方法,注意针对Map、Set等集合类型的使用:
- map、set等集合类型存放的对象必须是唯一的;
- 集合类判断两个对象是否相等,是先判断equals是否相等,如果equals方法返回true,还要继续判断hashcode方法返回值是否为true,只有两者都返回true,才认为该两个对象是相等的;
2)、由于object的hashcode方法返回的是对象的hash值,所以即使equals方法返回true,集合也可能判定两个对象不等,所以必须重写hashcode方法,以保证当equals方法返回true时,hashcode方法也返回true,这样才能使得集合存放的对象唯一。