测试题答案

一、 选择题 

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   B  D   A

11-15:  AB   A   A   D   DE

 

五、 简答题(一)

1. 请描述SpringMvc的的核心组件,以及SpringMVC的工作原理。(共15分,核心组件5分,工作原理10分)

答案:

核心组件:1. DispatcherServlet    2. HandlerMapping    3. Controller    4. ModelAndView    5. ViewResolver

SpringMVC的工作原理:

DispatcherServlet接受客户端发送的所有请求,这些请求经过HandlerMapping解析之后,找到对应的Controller组件,

Controller中处理请求,得到的结果即ModelAndView,ModelAndView再经由ViewResolver解析得到最终要响应回客户端的

视图,再交给DispatcherServlet,由核心控制器响应回客户端。

2. 写出spring中的5个注解及其含义(10分)

@Component 标识一个受Spring管理的组件

@Respository标识持久层

@Service 标识服务层

@Controller 标识控制层

@Autowired  它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作

3. SpringMVC中怎么样设定重定向和转发的(10分)

答案:

在返回值前面加"forward:"就可以让结果转发,譬如"forward:user.do?name=method4"

在返回值前面加"redirect:"就可以让返回值重定向,譬如"redirect:http://www.baidu.com"

4. 请简述什么是MVC模式?(10分)

答案:

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文件时,有哪些注意事项?(10分)

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等集合类型的使用:

  1. map、set等集合类型存放的对象必须是唯一的;
  2. 集合类判断两个对象是否相等,是先判断equals是否相等,如果equals方法返回true,还要继续判断hashcode方法返回值是否为true,只有两者都返回true,才认为该两个对象是相等的;

2)、由于object的hashcode方法返回的是对象的hash值,所以即使equals方法返回true,集合也可能判定两个对象不等,所以必须重写hashcode方法,以保证当equals方法返回true时,hashcode方法也返回true,这样才能使得集合存放的对象唯一。

猜你喜欢

转载自www.cnblogs.com/chenglaoshi/p/12553951.html
今日推荐