J2EE是一套全然不同於傳統應用開發的技術架構,包含許多元件,主要可簡化且規範應用系統的開發與部署,進而提高可移植性、安全與再用價值。以下是小編整理的關於J2EE高階工程師常見面試題,希望大家認真閱讀!
1、 分類列舉伺服器和元件技術:
(1)伺服器端技術:JSP、Servlet。
(2)元件技術:JavaBean、EJB。
2、 Http和Https:Https即多了安全的Http,s(Security Socket Layer)指加密套接字協議(簡寫SSL)。
3、 OSI(Open System Interconnection)網路抽象模型:
(1)由國際標準化組織(ISO)提出。
(2)將網際網路分為七層,從下至上分別為:物理層(physical)、資料鏈路層(data link)、網路層(network)、傳送層(transport)、會話層(session)、表示層(presentation)、應用層(application)。底層通過提供介面支援上層功能。
(3)各層詳解:
a) 物理層:LAN/ATM,為硬體層。
b) 資料鏈路層:LAN/ATM
c) 網路層:IP協議,IOS
d) 傳輸層:TCP/UDP協議,支援Java Socket。
e) 會話層
f) 表示層:HTML、XML
g) 應用層:HTTP協議,使用Java Servlet/JSP
<第八層(Web服務層):SOAP/UDDI>
4、 J2EE的容器與伺服器:
容器負責EJB元件中宣告週期的控制;
伺服器包含在容器外,提供系統級操作底層服務,包括事務、事件、多執行緒。
5、 繼承限制:
父類物件不可以賦給子類物件,因為子類可能具有更多的成員,反之可以。
6、 邏輯操作:
C = ( a > b ) ? a : b ;等同於
If ( a > b ) c=a; else c = b;
7、 列舉常見集合框架型別
(1)List、Set、Map。由這三個介面實現出ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等常用集合框架。
(2)Vector屬於重量級元件不推薦使用。
(3)Map型別維護鍵/值對,Hashtable與HashMap相近但效率略低於HashMap、高於TreeMap、TreeMap優點是可以排序。
(4)Set型別可以裝入唯一值,HashSet效率高於TreeSet但TreeSet可以維護內部元素的排序狀態。
(5)List型別可按某種特定順序維護元素。ArrayList允許快速隨機訪問,但如果新增或刪除位於中間的元素時效率很低;LinkedList提供最佳迴圈訪問及快速的中間位置新增刪除元素,並有addFirst、addLast、getFirst、getLast、removeFirst、removeLast方法。
8、 面向物件的特徵:
(1)繼承:通過子類可以實現繼承,子類繼承父類的所有狀態和行為,同時新增自身的狀態和行為。
(2)封裝:將程式碼及處理資料繫結在一起的一種程式設計機制,該機制保證程式和資料不受外部干擾。
(3)多臺:包括過載和重寫。過載為編譯時多型,重寫是執行時多型。過載必須是同類中名稱相同引數不同(包括個數不同和型別不同),但返回型別不同不構成過載;重寫發生於子類對父類的覆蓋,子類繼承父類方法名相同、引數列表相同、返回型別相同才構成重寫。
9、 Java命名規範:
(1)必須以應為字母、下劃線或$開始,其餘可以有資料但不允許包含空格,且組合後的名稱不能是Java關鍵字或保留字。
(2)匈牙利命名法:以m開始為類成員變數,以g開始為全域性變數,以v開始為本的區域性變數,常量命名一般不以下劃線、美元符開始。
(3)駝峰命名:一般稱由多個單詞或縮寫組成的變數名,並且該變數名每個單詞首字母均為大寫(一般類名全部首字母大寫,方法或屬性名第一個字母小寫)的稱為駝峰命名。
10、Java語言共包含47個關鍵字。
11、設計模式:
一個設計模式描述了一個被證實可行的方案。這些方案非常普遍,是具有完整定義的最常用的模式。一般模式有4個基本要素:模式名稱(pattern name)、問題(problem)、解決方案(solution)、效果(consequences)
常見23種模式概述:
(1)抽象工廠模式(Abstract Factory):提供一個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。
(2)介面卡模式(Adapter):將一個類的介面轉換成客戶希望的另外一個介面。介面卡模式使得原本由於介面不相容而不能一起工作的類可以一起工作。
(3)橋樑模式(Bridge):將抽象部分與他的實現部分分離,使他們都可以獨立的變化。
(4)建造模式(Builder):將一個複雜物件的構建與他的標表示分離,使同樣的構建過程可以建立不同的表示。
(5)責任鏈模式(Chain of Responsibility):為解除請求的傳送者和接收者之間耦合,而使多個物件都有幾乎處理這個請求。將這些物件連成一條鏈,並沿著這條鏈傳遞給請求,知道有一個物件處理他。
(6)命令模式(Command):將一個請求封裝為一個物件,從而可用不同的請求對客戶進行引數化;對請求排列或記錄請求日誌,以及支援可取消的操作。
(7)合成模式(Composite):將物件組合成樹形結構以表示“部分-整體”的層次結構。它使得客戶對單個物件和複合物件的使用具有一致性。
(8)裝飾模式(Decorator):動態地給一個物件新增一些額外的職責。就擴充套件功能而言,他能生成子類的方式更為靈活。
(9) 門面模式(Facade):為子系統中的'一組介面提供一個一致的介面,門面模式定義了一個高層介面,這個介面使得這一子系統更加容器使用。
(10)工廠方法(Factory Mehtod):定義一個用於建立物件的介面,讓子類決定將哪一個類例項化。Factory Method使一個類的例項化延遲到其子類。
(11)享元模式(Flyweight):運用共享技術以有效地支援大量細粒度的物件。
(12)直譯器模式(Interpreter):給定一個語言,定義他的語法的一種表示,並定義一個直譯器,該直譯器使用該表示解釋語言中的句子。
(13)迭代子模式(Iterator):提供一種方法順序訪問一個聚合物件中的各個元素,而又不需暴露該物件的內部表示。
(14)調停者模式(Mediator):用一箇中介物件來封裝一系列的物件互動。中介者使各物件不需要顯式的內部表示。
(15)備忘錄模式(Memento):在不破壞封裝性的前提下,捕獲一個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到儲存的狀態。
(16)觀察者模式(Observer):定義物件間的一種一對多的依賴關係,以便當一個物件的狀態發生改變時,所有依賴於他的物件都得到通知並自動重新整理。
(17)原始模型模式(Prototype):用原型例項指定建立物件的種類,並且通過拷貝這個原型建立新的物件。
(18)代理模式(Proxy):為其他物件提供一個代理以控制對這個物件的訪問。
(19)單例模式(Singleton):保證一個類僅有一個例項,並提供一個訪問他的全域性訪問點。
(20)狀態模式(State):允許一個物件在其內部狀態改變時改變他的行為。物件看起來似乎修改了他所屬的類。
(21)策略模式(Strategy):定義一系列的演算法,把他們一個個封裝起來,並且使他們可相互替換。本模式使得演算法的變化可獨立使用他的客戶。
(22)模板模式(Template Mehtod):定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。
(23)訪問者模式(Visitor):表示一個作用於某物件結構中的各元素的做。該模式可以實現在不改變各元素的類的前提下定義作用於這些元素的新操作。
12、簡述常用的軟體開發文件
(1)可行性研究報告
(2)專案開發計劃
(3)軟體需求說明書(必有)
(4)資料要求說明書
(5)概要設計說明書(必有)
(6)詳細設計說明書(必有)
(7)資料庫設計說明書(必有)
(8)使用者手冊(一般會有)
(9)操作手冊(必有)
(10)模組開發卷宗
(11)測試計劃(必有)
(12)測試分析報告
(13)開發進度月報
(14)專案開發總結報告
13、簡述類的關係
(1)當一個類是“一種”另一個類時:is-a關係
(2)當兩個類之間有關聯時:
一個類“包含”另一個類:has-a關係
一個類“使用”另一個類