1. 程式人生 > >Java工程師面試題(含答案)

Java工程師面試題(含答案)

1.web中的forward和redirect的區別?
前者僅是容器中控制權的轉向,在客戶端瀏覽器位址列中不會顯示出轉向後的地址;後者則是完全的跳轉,瀏覽器將會得到跳轉的地址,並重新發送請求連結。這樣,從瀏覽器的位址列中可以看到跳轉後的連結地址。所以,前者更加高效,在前者可以滿足需要時,儘量使用forward()方法,並且,這樣也有助於隱藏實際的連結。在有些情況下,比如,需要跳轉到一個其它伺服器上的資源,則必須使用sendRedirect()方法。

2. xml在解釋的時候DOM和SAX協議的區別和含義?
DOM:處理大型檔案時其效能下降的非常厲害。這個問題是由DOM的樹結構所造成的,這種結構佔用的記憶體較多,而且DOM必須在解析檔案之前把整個文件裝入記憶體,適合對XML的隨機訪問
SAX:不現於DOM,SAX是事件驅動型的XML解析方式。它順序讀取XML檔案,不需要一次全部裝載整個檔案。當遇到像檔案開頭,文件結束,或者標籤開頭與標籤結束時,它會觸發一個事件,使用者通過在其回撥事件中寫入處理程式碼來處理XML檔案,適合對XML的順序訪問


3說明JNDI、JMS、JTA、RMI的意思?
JNDI(Java Naming and Directory Interface)是一個應用程式設計的API,為開發人員提供了查詢和訪問各種命名和目錄服務的通用、統一的介面,類似JDBC都是構建在抽象層上。
JMS(Java Messaging Service)是Java平臺上有關面向訊息中介軟體的技術規範,翻譯為Java訊息服務。JMS支援點對點和釋出/訂閱兩種訊息模型。
JTA(Java Transaction API) 為 J2EE 平臺提供了分散式事務服務。要用 JTA 進行事務界定,應用程式要呼叫 javax.transaction.UserTransaction介面中的方法.
RMI是Java的一組擁護開發分散式應用程式的API。RMI使用Java語言介面定義了遠端物件,它集合了Java序列化和Java遠端方法協議(JavaRemote Method Protocol)。它大大增強了Java開發分散式應用的能力

4.單例模式
Public class Signle{

Private Signle(){
}
Pirvate static Signle signle = new Signle();

Public static Signlegets(){
Retrun signle;
}
}

5資料庫中left join的意思,和在什麼場合中應用?
LEFT JOIN操作用於在任何的 FROM 子句中,組合來源表的記錄。使用 LEFT JOIN 運算來建立一個左邊外部聯接。左邊外部聯接將包含了從第一個(左邊)開始的兩個表中的全部記錄,即使在第二個(右邊)表中並沒有相符值的記錄。

6 ejb中的sessionbean和entitybean的區別和含義?


SessionBean在J2EE應用程式中被用來完成一些伺服器端的業務操作,例如訪問資料庫、呼叫其他EJB元件。EntityBean被用來代表應用系統中用到的資料。
對於客戶機,SessionBean是一種非永續性物件,它實現某些在伺服器上執行的業務邏輯。
對於客戶機,EntityBean是一種永續性物件,它代表一個儲存在永續性儲存器中的實體的物件檢視,或是一個由現有企業應用程式實現的實體。

7抽象類和介面的區別
1:一個類可以實現任意多的介面,但是最多隻能對一個抽象類進行子類化。
2:一個抽象類可以包括非抽象方法,而一個介面的所有方法在效果上都是抽象的。
3:一個抽象類可以申明並使用變數,而一個介面不行。
4:一個抽象類中的方法的訪問修飾符可以使public,internal,protected,protectedinternal,private,而介面成員的訪問修飾符在預設情況下都是public,而且,在申明介面成員時,不允許使用訪問修飾符(甚至不能使用public)。
5:一個抽象類可以定義建構函式,而一個介面不行。

8物件序列化的含義
Java 序列化技術可以使你將一個物件的狀態寫入一個Byte流裡,並且可以從其它地方
把該Byte 流裡的資料讀出來。重新構造一個相同的物件。這種機制允許你將物件通過網路
進行傳播,並可以隨時把物件持久化到資料庫、檔案等系統裡。Java的序列化機制是RMI、
EJB、JNNI等技術的技術基礎。

9資料庫中的鎖包括什麼?
基本的封鎖型別有兩種:排它鎖(X鎖)和共享鎖(S鎖).
所謂X鎖,是事務T對資料A加上X鎖時,只允許事務T讀取和修改資料A,…
所謂S鎖,是事務T對資料A加上S鎖時,其他事務只能再對資料A加S鎖,而不能加X鎖,直到T釋放A上的S鎖若事務T對資料物件A加了S鎖,則T就可以對A進行讀取,但不能進行更新(S鎖因此又稱為讀鎖),在T釋放A上的S鎖以前,其他事務可以再對A加S鎖,但不能加X鎖,從而可以讀取A,但不能更新A.

10 jsp和serverlet的區別
(1).簡單的來說Jsp就是含有Java程式碼的html,而servlet是含有html的Java程式碼;
(2).Jsp最終也是被解釋為servlet並編譯再執行,Jsp不過是servlet的另一種編寫方式;
(3).Jsp擅長表示,servlet擅長資料處理,在MVC三層結構中,Jsp負責V(檢視),servlet負責C(控制),各有優勢,各司其職;

11. oracle中資料表的交集怎麼表示
第一種方法:利用操作符intersect
第二種方法: in子句

12 jsp頁面中如何傳遞引數
(1)直接在URL請求後新增
(2)jsp:param
3)設定session和request

13 jsp中的doget()和dopost()方法的作用?
這個兩個方法都是http協議的方法,doget用於傳輸資料量較小(密碼會洩露),dopost資料量較大,

14什麼是用例?如何確定用例?
在不展現一個系統或子系統內部結構的情況下,對系統或子系統的某個連貫的功能單元的定義和描述。
一個用例可以看作是系統的一個功能,例如增加使用者,增加角色,查詢一個具體的一個事物,在Ejb的設計中,一個use case跟Sessionbean的一個方法是對應的(使用的session fasade模式),你說的基礎資料管理,我會把它處理成為一個抽象用例,因為我認為基礎資料這個概念非常的抽象,什麼是真正的基礎資料?例如說一個系統中郵政編碼算是這個系統的基礎資料,那麼”郵政編碼修改”這個就應該算是用例了.

15活動圖和時序圖的區別?
時序圖主要強調時間的順序
活動圖主要強調空間上類的互動

16什麼是策略模式?什麼情況下使用?
策略模式定義了一系列的演算法,並將每一個演算法封裝起來,而且使它們還可以相互替換
Context(應用場景):
1、需要使用ConcreteStrategy提供的演算法。
2、 內部維護一個Strategy的例項。
3、 負責動態設定執行時Strategy具體的實現演算法。
4、負責跟Strategy之間的互動和資料傳遞。

17面向介面程式設計的好處
使用介面程式設計,易於程式擴充套件,降低程式耦合性。
包括結構清晰,類之間通訊簡單易懂,擴充套件性好,提高複用性等等。

18事物
事務就是一系列的操作,這些操作完成一項任務.只要這些操作裡有一個操作沒有成功,事務就操作失敗,發生回滾事件.即撤消前面的操作,這樣可以保證資料的一致性.而且可以把操作暫時放在快取裡,等所有操作都成功有提交資料庫,這樣保證費時的操作都是有效操作.