java程序員面試考試題及答案

Java編程語言的風格十分接近C語言、C++語言。Java是一個純粹的面向對象的程序設計語言,它繼承了 C++語言面向對象技術的核心。那麼關於java面試的試題有哪些呢?下面yjbys小編爲大家分享,希望大家一切小心!

java程序員面試考試題及答案

  WEBLOGIC

1. WEBLOGIC域裏面的服務器分那幾種,他們之間的關係是什麼?

管理服務器和託管服務器;

管理服務器管理託管服務器.

2. WEBLOGIC部署業務應用時,需要修改哪幾個關鍵配置文件?

web模塊:擴展名,配置文件,

ejb模塊:擴展名,配置文件,

ear模塊:擴展名,配置文件

3. WEBLOGIC中如何配置DataSource?DataSource來自什麼資源?

weblogic中通過配置數據庫連接池得到連接池資源,然後通過連接池資源可以配置出DataSource

4. WEBLOGIC中如何配置數據庫連接池?主要設置哪些參數?

可以通過weblogic管理控制檯進行配置,也可以手動修改配置文件實現.

主要設置:

數據庫連接字符串(包括IP,端口,數據庫名,訪問數據庫的用戶/密碼等),

數據庫驅動程序類路徑,

最大連接數,

最小連接數等

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 ontext {

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中實現 ionSynchronization接口。容器能自動檢測這個接口,容器會使用這個接口中的方法以使bean得到事務的狀態信息。實體bean不支持這個接口。因爲實體bean are implicitly transaction aware,所以容器使用不同的方法控制一個事務中的實體 bean.

SessionSynchronization接口定義如下:

public interface ionSynchronization {

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時, ainer將封鎖入口,直到前一個事務提交或回滾,並且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將不會用到這些方法,因爲這些方法不是用來和外界的事務管理器進行交流事務狀態的。