首页 /  技术专区  /  面试题 宽屏模式 >

面试题基础六(框架部分)

1.   Hashmap和Hashtable的区别

1.HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口。

2.主要区别在于HashMap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable。

3.HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

4.HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

5.Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。

6.最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。

7.Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异

2.   JDBC与Hibernate的优缺点比较

JDBC与Hibernate在性能上相比,JDBC灵活性有优势。而Hibernate在易学性,易用性上有些优势。当用到很多复杂的多表联查和复杂的数据库操作时,JDBC有优势。

相同点:

◆两者都是JAVA的数据库操作中间件。

◆两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭。

◆两者都可以对数据库的更新操作进行显式的事务处理。

不同点:

◆使用的SQL语言不同:JDBC使用的是基于关系型数据库的标准SQL语言,Hibernate使用的是HQL(Hibernate query language)语言

◆操作的对象不同:JDBC操作的是数据,将数据通过SQL语句直接传送到数据库中执行,Hibernate操作的是持久化对象,由底层持久化对象的数据更新到数据库中。

◆数据状态不同:JDBC操作的数据是“瞬时”的,变量的值无法与数据库中的值保持一致,而Hibernate操作的数据是可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。

3.   Struts2中拦截器和一般的过滤器有哪些区别?

Struts2中将框架的核心功能都分散到了各个拦截器中,拦截器可以根据需要自由组合,使用更加灵活。而过滤器是由web服务器servlet容器提供的,可以在web.xml中配置url规则

1.拦截器是语句java的反射机制的,而过滤器是基于函数回调

2.拦截器依赖于struts框架,而过滤器依赖于servlet容器

3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用

4.拦截器可以访问action上下文、值栈里的对象,而过滤器不能

5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

4.   简单介绍下你对MyBatis的理解?MyBatis中如何使用事务?MyBatis如何做对象关联?

1. MyBatis是一个数据持久层(ORM)框架。

把实体类和SQL语句之间建立了映射关系,是一种半自动化的ORM实现。

需要开发人员自己来写sql语句,程序更灵活,在一定程度上可以作为ORM的一种补充。数据库移植性差。

便于统一管理与维护,降低了程序的耦合度

2. Mybatis对于事务的支持不太好。需要手动开启JDBC事务进行事务管理。在整个请求处理之前,创建事务工厂,基于同一个SqlSession对象获得事务对象,期间执行多次数据库更新操作,最后捕捉异常,进行事务回滚或关闭。

3. Mybatis的对象关联,分成:集合、关联

一对多,多对多统称为集合。多对一,一对一统称为关联。

不管是集合还是关联,都有两种实现方式:

嵌套查询

分别编写两个查询sql,通过自定义resultMap中association或者collection标签的select引用,将查询嵌套起来

嵌套结果

编写联表查询sql,查询出需要的多表中的数据,分别通过不同的resultMap进行映射,并在主resultMap的association或者collection标签的resultMap中,将结果映射嵌套起来

嵌套查询可能会出现1+N次查询的问题,可以通过延迟加载来尽量减少性能的影响。嵌套结果会使查询数据过多,并且不能延迟加载。所以通常使用嵌套查询更多些。

5.   SpringMVC和MVC的区别?

MVC指的是一种请求处理的设计模式:M:model模型,V:view 视图, C:controller控制器。MVC不仅实现了功能模块和显示模块的分离,同时还提高了应用系统的可维护性、可扩展性、可移植性和组件的可重用性。

MVC设计模式提出的很早,也有很多种具体的实现方式,例如JSP+Servlet+JavaBean,Struts1,Struts2,Spring MVC。

Spring MVC就是MVC设计模式的其中一种具体实现。

Spring MVC有前端控制器,HandlerMapping, 后端控制器,ViewResolver等几个部分构成。

通过前端控制器DispatcherServlet接受所有处理请求,通过HandlerMapping调用请求对应的后端控制器,处理请求,并返回逻辑视图,再通过ViewResolver,找到物理视图,执行并输出给客户端。

6.   Hibernate生成实体类时,如果列在oracle中是date类型,映射在java是什么类型?

映射成java.util.Date类型


头像
0/200
图片验证码