技术综合面试题目(含参考答案) 联系客服

发布时间 : 星期六 文章技术综合面试题目(含参考答案)更新完毕开始阅读529e684302d276a201292e6a

9/38

在对应的ActionForm中的reset方法设置相应属性的初始值,或者调用ActionForm中的相应属性的set方法来为其设置初始值。

23. Struts框架的综合运用开发过程中,一般会使用ActionForm和JavaBean,这两个Bean

能不能通用?如果不能的话请简述原因 无法通用,

1. ActionForm是表示表单对象,负责action和表单的数据传递,javabean是表示和数据库交互的对象。

2.从软件分层角度看,bean分开的话,一旦框架发生变化,无需进行大量代码重构。 24. 如何操作Oracle表中CLOB和BLOB字段

1、将事务提交设置为手动提交 (conn.setAutoCommit(false))

2、插入一个空的CLOB或BLOB (empty_clob()) 3、锁定当前记录 (for update) 4、文件操作 (reader、writer)

5、关闭资源,提交事务。(conn.close 、conn.commit())

2 Spring框架

1. Spring框架分为哪七大模块,各模块的主要功能作用是什么

七大模块,如下:

1. Spring Core: 核心包。Core封装包是框架的最基础部分,提供IOC和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。 2.Spring Context: 上下文(容器)。构建于Core封装包基础上的 Context封装包,提供了一种框架式的对象访问方法,有些象JNDI注册器。Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N)的支持(例如资源绑定),事件传播,资源装载的方式和Context的透明创建,比如说通过Servlet容器。

3.Spring DAO: DAO (Data Access Object)提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。 并且,JDBC封装包还提供了一种比编程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且对所有的POJOs(plain

10/38

old Java objects)都适用。

4.Spring ORM: 封装一个持久层框架。ORM 封装包提供了常用的“对象/关系”映射APIs的集成层。 其中包括JPA、JDO、Hibernate 和 iBatis 。利用ORM封装包,可以混合使用所有Spring提供的特性进行“对象/关系”映射,如前边提到的简单声明性事务管理。

5.Spring AOP: 面向切面编程。Spring的 AOP 封装包提供了符合AOP Alliance规范的面向方面的编程实现,让你可以定义,例如方法拦截器(method-interceptors)和切点(pointcuts),从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。而且,利用source-level的元数据功能,还可以将各种行为信息合并到你的代码中。 6.Spring Web: 封装一个web框架。Spring中的 Web 包提供了基础的针对Web开发的集成特性,例如多方文件上传,利用Servlet listeners进行IOC容器初始化和针对Web的ApplicationContext。当与WebWork或Struts一起使用Spring时,这个包使Spring可与其他框架结合。 7.Spring Web MVC: Spring

中的

MVC

封装包提供了

Web

应用的

Model-View-Controller(MVC)实现。Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种清晰的分离模型,在领域模型代码和Web Form之间。并且,还可以借助Spring框架的其他特性。 2. Spring框架中的三大核心思想是什么

DI(依赖注入),IOC(控制反转),AOP(面向切面编程) 3. IOC的概念以及在Spring容器中如何进行IOC的操作。

IOC:Inversion of Control,控制反转。在Java开发中,IOC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制,这称为控制反转,就是被调用类的实例由原先的调用类控制创建、销毁现在转变成由Spring的容器管理。

BeanFactory 延迟加载

applicationContextXML:更高级、支持国际化、资源文件、文字解析

4. Spring容器是如何管理Bean的生命周期的(如Bean的初始化方法,Bean的销毁方法)

11/38

创建:

初始化:配置init-method/实现接口InitializingBean 调用:context.getBean(),进行方法的调用

销毁:配置destroy-method/实现DisposableBean接口

5. DI的概念以及在Spring框架注入有几种方式。使用构造注入对象,必须要注意什么问

题,当设值注入与构造注入同时存在时,执行的先后流程顺序 注入方式:

接口注入

设置注入[属性的SET/GET] 构造注入[构造方法注入]

使用构造函数依赖注入时,Spring保证所有一个对象所有依赖的对象先实例化后,才实例化这个对象。使用set方法依赖注入时,Spring首先实例化对象,然后才实例化所有依赖的对象。

当设值注入与构造注入同时存在时,先执行构造注入,在执行设置注入。

6. 使用DI注入时,Property代表什么意思,如果property引用的是其他Bean的话,如

何注入,如果引用是字符串的话,如何设置。

使用DI注入时,Property代表注入类的属性,如果应用其他的bean用ref属性来表明被引用bean的名称,如果是引用字符串的话,用value属性。如:

7. 在Spring框架中获取连接池有几种方式。当JNDI与DBCP同时存在时,会不会出现问

题,如果不能同时存在的话,请说明原因 四种方式,如下: 1:DBCP数据源

DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP

是一个依赖Jakarta commons-pool对象池机制的数据库连接池,所以在类路径下还必须包括/lib/jakarta-commons/commons-pool.jar。下面是使用DBCP配置oracle数据源的配置片断:

12/38

class=\.BasicDataSource\

value=\

2:C3P0数据源

C3P0是一个开放源代码的JDBC数据源实现项目,它在lib目录中与Hibernate一起发布,实现了JDBC3和JDBC2扩展规范说明的Connection 和Statement 池。C3P0类包位于/lib/c3p0/c3p0-0.9.0.4.jar。下面是使用C3P0配置一个Oracle数据源:

value=\

3. Spring的数据源实现类(DriverManagerDataSource)

Spring本身也提供了一个简单的数据源实现类DriverManagerDataSource ,它位于org.springframework.jdbc.datasource包中。这个类实现了javax.sql.DataSource接口,但它并没有提供池化连接的机制,每次调用getConnection()获取新连接时,只是简单地创建一个新的连接。因此,这个数据源类比较适合在单元测试或简单的独立应用中使用,因为它不需要额外的依赖类。

id=\

class=\DriverManagerDataSource\destroy-method=\