當前位置:才華齋>IT認證>JAVA認證>

java程式設計師面試考試題及答案

JAVA認證 閱讀(1.13W)

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將不會用到這些方法,因為這些方法不是用來和外界的事務管理器進行交流事務狀態的。