JAVA认证 百分网手机站

java程序员面试考试题及答案

时间:2018-03-17 10:03:51 JAVA认证 我要投稿

java程序员面试考试题及答案

  Java编程语言的风格十分接近C语言、C++语言。Java是一个纯粹的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。那么关于java面试的试题有哪些呢?下面yjbys小编为大家分享,希望大家一切小心!

  WEBLOGIC

  1. WEBLOGIC域里面的服务器分那几种,他们之间的关系是什么?

  管理服务器和托管服务器;

  管理服务器管理托管服务器.

  2. WEBLOGIC部署业务应用时,需要修改哪几个关键配置文件?

  web模块:扩展名.war,配置文件web.xml,

  ejb模块:扩展名.jar,配置文件ejb-jar.xml,

  ear模块:扩展名.ear,配置文件application.xml

  3. WEBLOGIC中如何配置DataSource?DataSource来自什么资源?

  weblogic中通过配置数据库连接池得到连接池资源,然后通过连接池资源可以配置出DataSource

  4. WEBLOGIC中如何配置数据库连接池?主要设置哪些参数?

  可以通过weblogic管理控制台进行配置,也可以手动修改配置文件实现.

  主要设置:

  数据库连接字符串(包括IP,端口,数据库名,访问数据库的用户/密码等),

  数据库驱动程序类路径,

  最大连接数,

  最小连接数等

  http://dev2dev.bea.com.cn/techdoc/2004120203.html

  J2EE

  5. J2ee容器都有那些

  1)、J2EE服务器:是J2EE产品的运行部分。一个J2EE服务器提供EJB容器和Web容器。Enterprise JavaBeans(EJB)容器:管理J2EE应用程序的enterprise bean的执行。Enterprise bean和它的容器运行在J2EE服务器中。

  2)、Web容器:管理J2EE应用程序的JSP页面和servlet组件的执行。Web组件和它的容器也运行在J2EE服务器中。

  3)、客户端应用程序容器:管理应用程序客户端组件的运行。应用程序客户端和它的容器运行在客户端中。

  4)、Applet容器:管理applet的执行。由运行在客户端的一个Web浏览器和Java插件一同组成。

  6. web容器有哪些

  web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接跟容器中的环境变量接口交互,不必关注其它系统问题。主要由WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。

  7. JNDI有什么作用?哪些资源可以通过JNDI查找到?

  通过目录名称访问远程服务,JNDI可以访问数据库连接资源,EJB组件,JMS服务等等

  8. CMT EJB中对数据库进行插入和更新操作,一般配置什么事物属性? Required

  9. CMT EJB中对数据库进行查询操作,一般配置什么事物属性? Support

  10. SessionBean组件中的Remote接口,Home接口主要作用是什么?各有哪些主要的抽象方法?

  Home接口中的主要方法是create方法,该方法返回remote接口对象,Home接口的主要作用就是创建remote接口对象;

  Remote接口主要定义业务抽象方法,在Bean类中实现了这些抽象方法.

  11. 有状态SessionBean中的active方法和deactive方法有什么作用?

  active方法初始化有状态SessionBean中的全局资源,并激活EJB容器中有状态SessionBean对象,使得有状态SessionBean可以为外部提供服务.

  deactive方法去激活EJB容器中有状态SessionBean对象,释放有状态SessionBean中初始化的全局资源.

  12. 如何实现事务控制?

  JDBC事务管理方式 和 JTA事务管理方式

  13. 事务的概念

  事务处理是由以一个单一的逻辑单位完成的一系列操作,它可以由一系列的操作组成,如果在该单位包含的操作执行完毕后没有发生错误,那么它所作的改变就是永久的了。如果一旦有错误发生,它就会滚回,不会作任何修改或改变。

  14. 事务的特点

  Atomicity, Consistency, Isolation, and Durability

  1,原子性(Atomicity)

  事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

  2,一致性 (Consistency)

  事务在完成时,必须使所有的数据都保持一致状态。

  3,隔离性 (Isolation)

  由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。

  4,持久性 (Durability)

  事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。

  15. EJB中的事务

  (一) EJB中事务处理的属性有:Required,RequiresNew,Mandatory,NotSupported,Supports,Never.

  1、Required:当客户端运行一个事务处理并调用EJB的一个方法,这个方法执行客户端的事务处理;当客户端没有启动一个事务处理,则EJB容器在执行这个方法之前启动一个新的事务处理.

  2、RequiresNew:当客户端运行一个事务处理并调用EJB的一个方法时,容器管理器做如下操作:

  (1) 悬挂客户端的事务处理;

  (2) 开始一个新的事务处理;

  (3) 调用方法;

  (4) 当方法结束,恢复客户端的事物处理.

  当客户端没有启动一个事务处理,容器管理器在执行这个方法之前启动一个新的事务处理.

  3、Mandatory: 当客户端运行一个事务处理并调用EJB的一个方法,这个方法在客户端的事务处理范围内被执行; 当客户端没有启动一个事务处理,容器管理器将会抛错(TransactionRequiredException);

  4、NotSupported: 当客户端运行一个事务处理并调用EJB的一个方法,容器管理器在调用方法之前终止客户端的事务处理,当方法执行完,再恢复客户端的事务处理; 当客户端没有启动一个事务处理,容器管理器在调用方法时不启动事务处理.

  5、Supports: 当客户端运行一个事务处理并调用EJB的一个方法,在运行方法时执行客户端的事务处理; 当客户端没有启动一个事务处理,容器管理器在调用方法时不启动事务处理.

  6、Never: 当客户端运行一个事务处理并调用EJB的一个方法,容器管理器将抛出一个错误(RemoteException); 当客户端没有启动一个事务处理,容器管理器在调用方法时不启动事务处理.

  (二) EJB事务的操作

  如果声明一个bean的事务控制为TX_BEAN_MANAGED,则这个bean可以访问事务服务。当事务控制应用于单个的方法时这个控制只能应用于整个的bean. bean访问事务服务的能力不能只对某个方法起作用。因此一个方法声明事务控制为TX_BEAN_MANAGED,而另一个方法声明为其它不同的事务控制是错误的。厂商的安装工具应该能检测到并报告这个错误。Bean分别通过初始化时setSessionContext()或 setEntityContext()方法的参数 SessionContext或EntityContext来访问事务服务。这些接口都是EJBContext的子类。

  EJBContext的定义如下:

  Public interface javax.ejb.EJBContext {

  public Identity getCallerIdentity();

  public boolean isCallerInRole(Identity other);

  public EJBHome getEJBHome();

  public Properties getEnvironment();

  public UserTransaction getUserTransaction() throwsIllegalStateException;

  public boolean getRollbackOnly();

  public void set RollbackOnly();

  }

  一旦bean获得了一个UserTransaction的引用,就可以用这个引用管理自己的事务。有状态的会话bean的方法可以创建一个事务,而且不用终止事务就可以返回。如果还有线程调用bean的方法,容器检测是否有bean创建的活动的事务,如果被调用的事务是同一个事务,容器会允许该线程重新进入这个bean.如果bean在事务中且执行不同事务上下文的线程试图进入bean,容器会阻塞这个线程直到bean的事务终止。如果线程试图进入事务时 bean不在事务中,线程会执行一个自己的事务,容器会挂起线程当前的事务以允许线程进入。一旦线程离开方法就会恢复线程以前的事务,容器不会终止任何方法创建的事务。

  对于无状态会话bean和实体bean,当事务活动时bean的方法不允许返回。容器会为此抛出一个例外。

  会话同步接口

  有状态和无状态的会话bean都可以访问数据库,并且参与一个事务。为了让bean在事务中执行它的任务,bean开发者可以实现在bean中实现 javax.ejb.SessionSynchronization接口。容器能自动检测这个接口,容器会使用这个接口中的方法以使bean得到事务的状态信息。实体bean不支持这个接口。因为实体bean are implicitly transaction aware,所以容器使用不同的方法控制一个事务中的实体 bean.

  SessionSynchronization接口定义如下:

  public interface javax.ejb.SessionSynchronization {

  public void afterBegin() throws RemoteException;

  public void beforeCompletion() throws RemoteException;

  public void afterCompletion(boolean yn) throws RemoteException;

  }

  实际上一个事务不属于一个特殊的bean的实例。一个客户端或容器中执行的线程创建一个事务,在执行bean中的代码时执行该事务。如果一个有事务上下文的线程将要进入一个会话bean,容器首先调用它的afterBegin()方法。Bean可以记录所有的商业方法运行在事务中,随后执行事务操作。如果一个操作的内部标志显示这个线程在事务外运行,则会拒绝执行事务操作的请求。直到调用afterCompletion()方法,bean会继续认为商业方法的调用都在事务中执行。Bean将推断性地清除内部标志,以表示随后到来的事务请求将被拒绝。

  如果一个事务上下文的线程试图进入一个已经是另一个事务的一部分的Bean时, .Container将封锁入口,直到前一个事务提交或回滚,并且afterCompletion()方法被调用,此时,允许Bean 恢复它的状态。Container负责提供这些行为。当Container发现它将要提交一个事务时,将在这个事务的所有的session Bean上调用beforeCompletion()方法。这就给Bean足够的机会来结束事务的操作,如在提交前将数据写入数据库。反之,当 Container 发现,将要回滚一个事务撕,BeforeCompletion()方法将不会被调用,因为将一个将被回滚的事务所产生的数据写入数据库是没有意义的。

  AfterCompletion()是在一个事务即将提交或回滚时被调用,来通知Bean事务操作的最终结果。Bean可以用这个信息来修正自己的内部状态,但它不能用这个信息来维持任何它将要保存的事务。尽管session Bean可以创建,提交和回滚它自己的事务,但通常不推荐这样做。

  SessionSynchronization接口不提供整合外部和内部事务的能力。如果一个session bean实现了这个接口,则意味着它在方法调用之间要保持事务的状态。特别地,这也暗示在afterBegin()和afterCompletion() 调用之间bean是处于一个事务中。这样,如果一个bean实现了SessionSynchronization接口并且在装配符中声明是无状态的就是一个错误。厂商提供的安装工具应该可以捕捉到并报告这个错误。无状态的session bean可以加入一个事务,但它们不能实现这个接口。事务可以是TX_BEAN_MANAGED,或者container可以在方法入口和从方法的返回上来开始和提交这个事务。Container不可允许在一个现存的事务中有一个线程进入方法,因为无状态的Bean的方法将无法知道正在运行的线程是否正在一个事务中。

  解决这个问题的一个方法是使container挂起现存的事务,强迫方法总是认为线程没有在一个事务性的上下文中运行。有状态的Bran可以不实现这个接口而介入事务。但是,装配符必须要认真地配置以使得商务方法总能在正确的事务状态中运行。Bean自己没有通过这个接口来获得自己的事务的状态的权利。

  加入事务

  EJBContext接口在前面的一节中已经介绍了。其中有两个方法:

  public boolean getRollbackOnly();

  public void setRoolbackOnly();

  这些方法可以有任何bean来使用,而不仅仅是那些声明了其事务控制为bean-managed的bean。事实上,那些处理自己的事务的bean将不会用到这些方法,因为这些方法不是用来和外界的事务管理器进行交流事务状态的。