電子書下載地址: http://wiki.jikexueyuan.com/project/java-interview-bible/
1. J2EE 是什么?它包括哪些技術(shù)?
答:從整體上講,J2EE 是使用 Java 技術(shù)開發(fā)企業(yè)級應(yīng)用的工業(yè)標(biāo)準(zhǔn),它是 Java 技術(shù)不斷適應(yīng)和促進(jìn)企業(yè)級應(yīng)用過程中的產(chǎn)物。適用于企業(yè)級應(yīng)用的 J2EE,提供一個平臺獨立的、可移植的、多用戶的、安全的和基于標(biāo)準(zhǔn)的企業(yè)級平臺,從而簡化企業(yè)應(yīng)用的開發(fā)、管理和部署。J2EE 是一個標(biāo)準(zhǔn),而不是一個現(xiàn)成的產(chǎn)品。
主要包括以下這些技術(shù):
- Servlet
Servlet是Java平臺上的CGI技術(shù)。Servlet在服務(wù)器端運(yùn)行,動態(tài)地生成Web頁面。與傳統(tǒng)的CGI和許多其它類似CGI的技術(shù)相比,Java Servlet具有更高的效率并更容易使用。對于Servlet,重復(fù)的請求不會導(dǎo)致同一程序的多次轉(zhuǎn)載,它是依靠線程的方式來支持并發(fā)訪問的。
- JSP
JSP(Java Server Page)是一種實現(xiàn)普通靜態(tài) HTML 和動態(tài)頁面輸出混合編碼的技術(shù)。從這一點來看,非常類似 Microsoft ASP、PHP等技術(shù)。借助形式上的內(nèi)容和外觀表現(xiàn)的分離,Web 頁面制作的任務(wù)可以比較方便地劃分給頁面設(shè)計人員和程序員,并方便地通過 JSP 來合成。在運(yùn)行時態(tài),JSP 將會被首先轉(zhuǎn)換成 Servlet,并以 Servlet 的形態(tài)編譯運(yùn)行,因此它的效率和功能與 Servlet 相比沒有差別,一樣具有很高的效率。
- EJB
EJB 定義了一組可重用的組件:Enterprise Beans。開發(fā)人員可以利用這些組件,像搭積木一樣建立分布式應(yīng)用。
- JDBC
JDBC(Java Database Connectivity,Java 數(shù)據(jù)庫連接) API 是一個標(biāo)準(zhǔn) SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)數(shù)據(jù)庫訪問接口,它使數(shù)據(jù)庫開發(fā)人員能夠用標(biāo)準(zhǔn) Java API 編寫數(shù)據(jù)庫應(yīng)用程序。JDBC API 主要用來連接數(shù)據(jù)庫和直接調(diào)用 SQL 命令執(zhí)行各種 SQL 語句。利用 JDBC API 可以執(zhí)行一般的 SQL 語句、動態(tài) SQL 語句及帶 IN 和 OUT 參數(shù)的存儲過程。Java 中的 JDBC 相當(dāng)于 Microsoft 平臺中的 ODBC (Open Database Connectivity)。
2. 描述 J2EE 框架的多層結(jié)構(gòu),并簡要說明各層的作用。
答:
- Presentation layer(表示層)
a. 表示邏輯(生成界面代碼)
b. 接收請求
c. 處理業(yè)務(wù)層拋出的異常
d. 負(fù)責(zé)規(guī)則驗證(數(shù)據(jù)格式,數(shù)據(jù)非空等)
e. 流程控制
- Service layer(服務(wù)層/業(yè)務(wù)層)
a.封裝業(yè)務(wù)邏輯處理,并且對外暴露接口
b.負(fù)責(zé)事務(wù),安全等服務(wù)
- Persistence layer(持久層)
a 封裝數(shù)據(jù)訪問的邏輯,暴露接口
b.提供方便的數(shù)據(jù)訪問的方案(查詢語言,API,映射機(jī)制等)
4)Domain layer(域?qū)樱?/p>
a. 業(yè)務(wù)對象以及業(yè)務(wù)關(guān)系的表示
b. 處理簡單的業(yè)務(wù)邏輯
c. 域?qū)拥膶ο罂梢源┰奖硎緦樱瑯I(yè)務(wù)層,持久層
軟件分層結(jié)構(gòu)使得代碼維護(hù)非常方便,設(shè)計明確,各層獨立,專注自己擅長的領(lǐng)域。
3. EJB 包含哪 3 種 bean
答:session bean(會話 bean), entity bean(實體 bean), message bean(消息 bean)
4. Tomcat 服務(wù)器的默認(rèn)端口是多少?怎樣修改 tomcat 的端口?
答:默認(rèn)端口為 8080,可以通過 service.xml 的 Connector 元素的 port 屬性來修改端口
5. EJB的優(yōu)點有哪些?(選擇 2 項)
A、技術(shù)領(lǐng)先 B、價格低廉 C、性能優(yōu)越 D、強(qiáng)大的容器支持
解答:CD
6. 無狀態(tài)會話 Bean、有狀態(tài)會話 Bean、CMP 與 BMP 中,哪一種 Bean 不需要自己書寫連接數(shù)據(jù)庫的代碼?
A、無狀態(tài)會話Bean
B、有狀態(tài)會話Bean
C、CMP
D、BMP
答:C
BMP 是在 Bean 中完成對數(shù)據(jù)庫 JDBC 的各種調(diào)用
CMP 是由 EJB 容器自動完成對數(shù)據(jù)庫的操作
會話 Bean 主要處理業(yè)務(wù)邏輯
7. 假設(shè) web 應(yīng)用的文檔根目錄為 MyApp,那么可以從哪里找到 database.jar 文件。
A. MyApp目錄下
B. MyApp\images目錄下
C. MyApp\WEB-INF目錄下
D. MyApp\WEB-INF\lib目錄下
答:D
Web 工程的 lib 是放置 .jar 文件的地方。
8.要創(chuàng)建一個 EJB,必須要至少編寫哪些 Java 類和接口?
A. 定義遠(yuǎn)程(或業(yè)務(wù))接口
B. 定義本地接口
C. 定義Bean接口
D. 編寫B(tài)ean的實現(xiàn)
解答:ABC
9. EJB 類庫存在于 Java 的哪個版本中?(選擇1項)。
A. J2SE
B. J2EE
C. J2ME
D. J2NE
解答:B
Java 分為三個體系
JavaSE(Java2 Platform Standard Edition,java平臺標(biāo)準(zhǔn)版),
JavaEE(Java 2 Platform,Enterprise Edition,java平臺企業(yè)版),
JavaME(Java 2 Platform Micro Edition,java平臺微型版)。
EJB 屬于 JavaEE 版本
10. 在 J2EE 中屬于 Web 層的組件有(選擇1項)
A. HTML
B. EJB
C. Applet
D. JSP
解答:D
11. EJB 的角色和三個對象
一個完整的基于 EJB 的分布式計算結(jié)構(gòu)由六個角色組成,這六個角色可以由不同的開發(fā)商提供,每個角色所作的工作必須遵循 Sun 公司提供的 EJB 規(guī)范,以保證彼此之間的兼容性。這六個角色分別是 EJB 組件開發(fā)者(Enterprise Bean Provider) 、應(yīng)用組合者(Application Assembler)、部署者(Deployer)、EJB 服務(wù)器提供者(EJB Server Provider)、EJB 容器提供者(EJB Container Provider)、系統(tǒng)管理員(System Administrator)
三個對象是Remote(Local)接口、Home(LocalHome)接口,Bean 類
12. EJB 的激活機(jī)制
以 Stateful Session Bean 為例:其 Cache 大小決定了內(nèi)存中可以同時存在的Bean實例的數(shù)量,根據(jù)MRU或NRU算法,實例在激活和去激活狀態(tài)之間遷移,激活機(jī)制是當(dāng)客戶端調(diào)用某個 EJB 實例業(yè)務(wù)方法時,如果對應(yīng) EJB Object 發(fā)現(xiàn)自己沒有綁定對應(yīng)的 Bean 實例則從其去激活 Bean 存儲中(通過序列化機(jī)制存儲實例)回復(fù)(激活)此實例。狀態(tài)變遷前會調(diào)用對應(yīng)的 ejbActive 和 ejbPassivate 方法。
13. EJB 的幾種類型
會話(Session)Bean ,實體(Entity)Bean 消息驅(qū)動的(Message Driven)Bean
會話 Bean 又可分為有狀態(tài)(Stateful)和無狀態(tài)(Stateless)兩種
實體 Bean 可分為 Bean 管理的持續(xù)性(BMP)和容器管理的持續(xù)性(CMP)兩種