javaEE面试题

1.下面哪些类可以被继承?

java.lang.Thread (T)

java.lang.Number (T)

java.lang.Double (F)

java.lang.Math (F)

java.lang.Void (F)

java.lang.Class (F)

java.lang.ClassLoader (T)

2.抽象类和接口的区别

(1)接口可以被多重implements,抽象类只能被单一extends

(2)接口只有定义,抽象类可以有定义和实现

(3)接口的字段定义默认为:public static final, 抽象类字段默认是"friendly"(本包可见)

3.Hashtable的原理,并说出HashMap与Hashtable的区别

HashTable的原理:通过节点的关键码确定节点的存储位置,即给定节点的关键码k,通过一定的函数关系H(散列函 数),得到函数值H(k),将此值解释为该节点的存储地址.

HashMap 与Hashtable很相似,但HashMap 是非同步(unsynchronizded)和可以以null为关键码的.

4.forward和redirect的区别

forward: an internal transfer in servlet

redirect: 重定向,有2次request,第2次request将丢失第一次的attributs/parameters等

5.什么是Web容器?

实现J2EE规范中web协议的应用.该协议定义了web程序的运行时环境,包括:并发性,安全性,生命周期管理等 等.

6.解释下面关于J2EE的名词

(1)JNDI:Java Naming & Directory Interface,JAVA命名目录服务.主要提供的功能是:提供一个目录系统 ,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能.

(2)JMS:Java Message Service,JAVA消息服务.主要实现各个应用程序之间的通讯.包括点对点和广播.

(3)JTA:Java Transaction API,JAVA事务服务.提供各种分布式事务服务.应用程序只需调用其提供的接口即可 .

(4)JAF: Java Action FrameWork,JAVA安全认证框架.提供一些安全控制方面的框架.让开发者通过各种部署和 自定义实现自己的个性安全控制策略.

(5)RMI:Remote Method Interface,远程方法调用

7.EJB是基于哪些技术实现的?并说 出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别.

EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现.

SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组 件.EntityBean被用来代表应用系统中用到的数据.对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻 辑;EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体.

Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean .这两种

的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一 个相对应的 Stateful Session Bean 的实体.Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用 者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method.换言之, 很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行.从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态.

8.XML的解析方法

Sax,DOM,JDOM

9.什么是Web Service?

Web Service就是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。

Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等, 所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。

注:SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个用于分散和分布式环境下网络 信息交换的基于XML的通讯协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,这 有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。 优势:

(1).跨平台。

(2).SOAP协议是基于XML和HTTP这些业界的标准的,得到了所有的重要公司的支持。

(3).由于使用了SOAP,数据是以ASCII文本的方式而非二进制传输,调试很方便;并且由于这样,它的数据容易 通过防火墙,不需要防火墙为了程序而单独开一个“漏洞”。

(4).此外,WebService实现的技术难度要比CORBA和DCOM小得多。

(5).要实现B2B集成,EDI比较完善与比较复杂;而用WebService则可以低成本的实现,小公司也可以用上。

(6).在C/S的程序中,WebService可以实现网页无整体刷新的与服务器打交道并取数。 缺点:

(1).WebService使用了XML对数据封装,会造成大量的数据要在网络中传输。

 

第二篇:javaEE笔试复习题

一、 单选题

1. 下面关于数据持久化概念的描述,错误的是(D)

A、保存在内存中数据的状态是瞬时状态 B、持久状态的数据在关机后数据依然存在

C、数据可以由持久状态转换为瞬时状态 D、将数据转换为持久状态的机制称为数据持久化

2. Java Web应用中往往通过设置不同作用域的属性来达到通讯的目的。如果某个对象只在

同一请求中共享,通过调用哪个类(C)的setAttribute方法设置属性。

A、HttpServletRequestB、ServletRequestListenerC、HttpSessionD、ServletContext

3. POJO的作用是(C)

A、普通的Java对象映射数据库元组B、数据访问C、对象的赋值D、保存客户端对象

4. 在三层结构中,数据访问层承担的责任是(B)

A、定义实体类 B、数据的增删改查操作 C、业务逻辑的描述 D、页面展示和控制转发

5. 下列哪个接口用于获取关于数据库的信息(D)

A、Statement B、PreparedStatementC、ConnectionD、DatabaseMetaData

6. JDBC包含多个类,其中Java.sql.ResultSet类属于(C)

A、JDBC控制类B、JDBC类C、JDBC接口类D、JDBC异常类

7. 以下关于SessionFactory的说法哪些正确(B)

A、对于每个数据库事务,应该创建一个SessionFactory对象。

B、一个SessionFactory对象对应一个数据库存储源。

C、SessionFactory是重量级的对象,不应该随意创建。如果系统中只有一个数据库存储源,需要创建多个。

D、SessionFactory的load()方法用于加载持久化对象。

8. 以下哪些不属于Session的方法(C)

A、load() B、save() C、open() D、saveOrUpdate()

9. 在持久化层,对象分为的状态不包括(B)

A、瞬时(Transient) B、新建(New) C、脱管(Detached) D、持久(Persistent)

10. 实现equals和hashCode最显而易见的作用是(A)

A、比较两个对象标识符的值

B、比较数据库的两条数据

C、比较两个组建是否部署在同一个应用服务器上

D、对象与字段的映射

11. 在三层结构中,数据访问层承担的责任是(B)

A、定义实体类

B、数据的增删改查操作

C、业务逻辑的描述

D、页面展示和控制转发

12. Hibernate配置文件中,不包含下面的(A)

A、“对象-关系映射”信息

B、数据关联的配置

C、show_sql等参数的配置

D、数据库连接信息

13. 下面创建Criteria对象的语句中正确的是(D)

A、 Criteria c = query.createCriteria();

B、 Criteria c = query.addCriteria();

C、 Criteria c = session.createCriteria();

D、 Criteria c = session.createCriteria(User.class);

14. 以下关于SessionFactory的说法哪些正确(B)

A、对于每个数据库事务,应该创建一个SessionFactory对象。

B、一个SessionFactory对象对应一个数据库存储源。

C、SessionFactory是重量级的对象,不应该随意创建。如果系统中只有一个数据库存储源,需要创建多个。

D、SessionFactory的load()方法用于加载持久化对象。

15. 在持久化层,对象分为的状态不包括(B)

A、瞬时(Transient) B、新建(New) C、脱管(Detached) D、持久(Persistent)

16. POJO的作用是(C)

A、普通的Java对象映射数据库元组

B、数据访问

C、对象的赋值

D、保存客户端对象

17. 资源文件的后缀名为(D)

A、txt B、doc C、property D、properties

18. 在Hibernate中,关于数据库的方言,下面哪个说法是正确的(D)

A、可以不写数据库方言

B、数据库方言没有作用,可以随便写

C、有通用的数据库方言可以使用

D、数据方言对应于每个数据库,主要用于产生SQL语句

19. 以下哪项不是常见的三层(D)

A、应用层

B、业务逻辑层

C、数据访问层

D、通讯层

20. 下面关于数据持久化概念的描述,错误的是(D)

A、保存在内存中数据的状态是瞬时状态

B、持久状态的数据在关机后数据依然存在

C、数据可以由持久状态转换为瞬时状态

D、将数据转换为持久状态的机制称为数据持久化

21. Java Web应用中往往通过设置不同作用域的属性来达到通讯的目的。如果某个对象只在同一请求中共享,通过调用哪个类的setAttribute方法设置属性( C )

A、HttpServletRequest

B、ServletRequestListener

C、HttpSession

D、ServletContext

22. executeUpdate返回的类型是( A )

A、int

B、ResultSet

C、boolean

D、受影响的记录数量

23.Oracle数据库的JDBC驱动程序类名及完整包路径为(D)

A、jdbc.driver.oracle.OracleDriver

B、jdbc.oracle.driver.OracleDriver

C、driver.oracle.jdbc.OracleDriver

D、oracle.jdbc.driver.OracleDriver

24. JSP中可使用一些隐含对象,通过什么可以访问浏览器输入的参数(A)

A、param

B、requestScope

C、sessionScope

D、applicationScope

二、 填空题

1.Struts 2框架由和框架发展而来。

2.Struts 2以采用的机制来处理用户的请求。

3.构建Struts 2应用的最基础的几个类库是、、、以及。

4.Struts 2中的控制器类是一个普通的。

5.如果要在JSP页面中使用Struts 2提供的标签库,首先必须在页面中使用taglib编译指令导入标签库,其中taglib编译指令为____<%@ uri=”/struts-tags” prefix=”s”%>_______。

6.在Struts 2表单标签库中,表单标签为。

7.ActionSupport类实现了接口和等接口。

8.通过控制器类中的方法来输出校验错误信息。

9. Struts 2以为核心控制器,它的初始化方法为。

10.Hibernate配置数据库连接的四种属性名是、、

11. 在Hibernate XML影射文件中描述主键生成机制,其属性描述了主键的生成策略,至少写出三种策略名identity、native、increment。

12. 基于Hibernate用标注(annotations)描述映射关系,映射实体类中表示主键的属性的标注是___@Id________ ;映射实体类中普通属性的标注是___@Column________;实体属性对应的列用标注____@Entity_______。

13.Hibernate的会话接口中声明了持久化的操作,删除一个实体的方法是,合并一个实体的方法是,获得事务处理接口的方法是_getTransaction()__________。

14. Hibernate的会话接口同时又是一个工厂类型:创建一个HQL查询接口的方法是,创建基于公式(标准)接口的方法是 。

15. 对象关系映射(ORM)的基本原则是:类型(class)映射,属性(property)映射____列_______,类型的实例或对象(instance | object)映射___一条记录________。

16. Hibernate应用缺省的XML格式的配置文件名是放置在下;配置数据库方言的属性名是。

17. 在Hibernate中级联操作的属性值至少写出三个、、。

18 基于Hibernate用标注(annotations)描述映射关系,实体类型用标注;实体对应的表用标注___@Table________。

19 Hibernate的会话接口是 ,它由接口 创建;Hibernate处理事务的接口是;封装HQL的接口是。

三、简述题

1. 谈谈你对MVC的理解?

MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。

MVC中的模型、视图、控制器它们分别担负着不同的任务。

视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。

模型: 模型表示业务数据和业务处理。相当于JavaBean。一个模型能为多个视图提供数据。这提高了应用程序的重用性

控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。然后根据处理的结果调用相应的视图来显示处理的结果。

MVC的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用户。

2. 项目中为什么使用SSH?

使用Struts是因为struts是基于MVC模式的,很好的将应用程序进行了分层,使开发者更关注于业务逻辑的实现;第二,struts有着丰富的taglib,如能灵活运用,则能大大提高开发效率。

使用Hibernate:因为hibernate为Java应用提供了一个易用的、高效率的对象关系映射框架。hibernate是个轻量级的持久性框架,功能丰富。

使用Spring:因为spring基于IoC(Inversion of Control,反向控制)和AOP构架多层j2ee系统的框架,但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;采用IoC使得可以很容易的实现bean

的装配,提供了简洁的AOP并据此实现事务管理(TranscationManagment),等等。

3. Spring在项目中如何充当粘合剂?

在项目中利用spring的IOC(控制反转或依赖注入),明确地定义组件接口(如UserDAO),开发者可以独立开发各个组件, 然后根据组件间的依赖关系组装(UserAction依赖于UserBiz,UserBiz依赖于UserDAO)运行,很好的把Struts(Action)和hibernate(DAO的实现)结合起来了。spring的事务管理把hibernate对数据库的操作进行了事务配置。

4. 项目中如何体现Spring中的切面编程,举例说明?

面向切面编程:主要是横切一个关注点,将一个关注点模块化成一个切面。在切面上声明一个通知(Advice)和切入点(Pointcut); 通知: 是指在切面的某个特定的连接点(代表一个方法的执行。通过声明一个org.aspectj.lang.JoinPoint类型的参数可以使通知(Advice)的主体部分获得连接点信息。)上执行的动作。通知中定义了要插入的方法。切入点:切入点的内容是一个表达式,以描述需要在哪些对象的哪些方法上插入通知中定义的方法。

项目中用到的Spring中的切面编程最多的地方:声明式事务管理。

a、定义一个事务管理器;

b、配置事务特性(相当于声明通知。一般在业务层的类的一些方法上定义事务); c、配置哪些类的哪些方法需要配置事务(相当于切入点,一般是业务类的方法上)。

5. Action是单实例还是多实例,为什么?

Action是单实例的。当多个用户访问一个请求的时候,服务器内存中只有一个与之对应的Action类对象。因为当服务器第一次加载struts的配置文件的时候,创建了一个Action后,每发送一个请求,服务器都会先去检索相应的范围内(request,session)是否存在这样一个action实例,如果存在,则使用这个实例,如果不存在,则创建一个Action实例。

6. Hibernate与jdbc的联系?

Hibernate是jdbc的轻量级封装,包括jdbc的与数据库的连接(用hibernate.property的配置文件实现当然本质是封装了jdbc的forname),和查询,删除等代码,都用面向对象的思想用代码联系起来,hibernate通过hbm配置文件把po类的字段和数据库的字段关联起来比如数据库的id,在po类中就是pravite Long id; public Long getId() ;public setId(Long id);然后hql语句也是面向对象的,它的查询语句不是查询数据库而是查询类的,这些实现的魔法就是xml文件,其实hibernate=封装的jdbc+xml文件。

7. Spring的事务如何配置?

<!--配置事务管理器 -->

<bean id="transactionManager"

class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean>

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<tx:attributes> <tx:method name="add*" propagation="REQUIRED"/>

<tx:method name="update*" propagation="REQUIRED"/>

<tx:method name="del*" propagation="REQUIRED"/>

<tx:method name="*" read-only="true"/>

</tx:attributes>

</tx:advice>

8. Hibernate与spring的联系?

Hibernate中的一些对象可以给Spring来管理,让Spring容器来创建hibernate中一些对象实例化。例如:SessionFactory,HibernateTemplate等。

Hibernate本来是对数据库的一些操作,放在DAO层,而Spring给业务层的方法定义了事务,业务层调用DAO层的方法,很好的将Hibernate的操作也加入到事务中来了。

9. 在Struts框架下,在web.xml文件中如何配置ActionSetvlet?

<!--将ActionServlet配置成自启动的Servlet-->

<servlet>

<!--指定Servlet的名字-->

<servlet-name>actionSevlet</servlet-name>

<!--指定该Servlet的实现类-->

<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

<!-配置自启动的级别-->

<load-on-startup>2</load-on-startup>

</servlet>

<servlet-mapping>

<!--配置ActionServlet的URL映射-->

<servlet-name>actionSevlet</servlet-name>

<!--所有以.do结尾的请求由ActionServlet拦截>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

10. Hibernate工作原理?

原理:

1)读取并解析配置文件2)读取并解析映射信息,创建SessionFactory3)打开Sesssion

4)创建事务Transation 5)持久化操作 6)提交事务 7)关闭Session

8)关闭SesstionFactory

11. Struts工作机制?

truts的工作流程:

在web应用启动时就会加载初始化ActionServlet,ActionServlet从

struts-config.xml文件中读取配置信息,把它们存放到各种配置对象

当ActionServlet接收到一个客户请求时,将执行如下流程.

-(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息; -(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;

-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;

-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;

-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的 Action实例不存在,就先创建这个实例,然后调用Action的execute()方法; -(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向的JSP组件;

-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;

12. spring工作机制?

1)spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。

2)DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.

3)DispatcherServlet请请求提交到目标Controller

4)Controller进行业务逻辑处理后,会返回一个ModelAndView

5)Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象

6)视图对象负责渲染返回给客户端。