天天看點

JAVA基礎知識

67、J2EE是技術還是平台還是架構?

    J2EE本身是一個标準,一個為企業分布式應用的開發提供的标準平台。

    J2EE也是一個架構,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技術。

68、我們在web應用開發過程中經常遇到輸出某種編碼的字元,如iso8859-1等,如何輸出一個某種編碼的字元串?

Public String translate (String str) {

    String tempStr = "";

    try {

      tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");

      tempStr = tempStr.trim();

    }

    catch (Exception e) {

      System.err.println(e.getMessage());

    return tempStr;

}

69、簡述邏輯操作(&,|,^)與條件操作(&&,||)的差別。

差別主要答兩點:a.條件操作隻能操作布爾型的,而邏輯操作不僅可以操作布爾型,而且可以操作數值型

b.邏輯操作不會産生短路

70、XML文檔定義有幾種形式?它們之間有何本質差別?解析XML文檔有哪幾種方式? 

a: 兩種形式 dtd schema,b: 本質差別:schema本身是xml的,可以被XML解析器解析(這也是從DTD上發展schema的根本目的),c:有DOM,SAX,STAX等 

    DOM:處理大型檔案時其性能下降的非常厲害。這個問題是由DOM的樹結構所造成的,這種結構占用的記憶體較多,而且DOM必須在解析檔案之前把整個文檔裝入記憶體,适合對XML的随機通路

SAX:不現于DOM,SAX是事件驅動型的XML解析方式。它順序讀取XML檔案,不需要一次全部裝載整個檔案。當遇到像檔案開頭,文檔結束,或者标簽開頭與标簽結束時,它會觸發一個事件,使用者通過在其回調事件中寫入處理代碼來處理XML檔案,适合對XML的順序通路 

STAX:Streaming API for XML (StAX)

71、簡述synchronized和java.util.concurrent.locks.Lock的異同 ?

主要相同點:Lock能完成synchronized所實作的所有功能

主要不同點:Lock有比synchronized更精确的線程語義和更好的性能。synchronized會自動釋放鎖,而Lock一定要求程式員手工釋放,并且必須在finally從句中釋放。

72、EJB的角色和三個對象

一個完整的基于EJB的分布式計算結構由六個角色組成,這六個角色可以由不同的開發商提供,每個角色所作的工作必須遵循Sun公司提供的EJB規範,以保證彼此之間的相容性。這六個角色分别是EJB元件開發者(Enterprise Bean Provider) 、應用組合者(Application Assembler)、部署者(Deployer)、EJB 伺服器提供者(EJB Server Provider)、EJB 容器提供者(EJB Container Provider)、系統管理者(System Administrator)

三個對象是Remote(Local)接口、Home(LocalHome)接口,Bean類

73、EJB容器提供的服務

主要提供聲明周期管理、代碼産生、持續性管理、安全、事務管理、鎖和并發行管理等服務。

74、EJB規範規定EJB中禁止的操作有哪些? 

    1.不能操作線程和線程API(線程API指非線程對象的方法如notify,wait等),2.不能操作awt,3.不能實作伺服器功能,4.不能對靜态屬生存取,5.不能使用IO操作直接存取檔案系統,6.不能加載本地庫.,7.不能将this作為變量和傳回,8.不能循環調用。

75、remote接口和home接口主要作用

remote接口定義了業務方法,用于EJB用戶端調用業務方法。

home接口是EJB工廠用于建立和移除查找EJB執行個體

76、bean 執行個體的生命周期

對于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在緩沖池管理,而對于Entity Bean和Statefull Session Bean存在Cache管理,通常包含建立執行個體,設定上下文、建立EJB Object(create)、業務方法調用、remove等過程,對于存在緩沖池管理的Bean,在create之後執行個體并不從記憶體清除,而是采用緩沖池排程機制不斷重用執行個體,而對于存在Cache管理的Bean則通過激活和去激活機制保持Bean的狀态并限制記憶體中執行個體數量。

77、EJB的激活機制

以Stateful Session Bean 為例:其Cache大小決定了記憶體中可以同時存在的Bean執行個體的數量,根據MRU或NRU算法,執行個體在激活和去激活狀态之間遷移,激活機制是當用戶端調用某個EJB執行個體業務方法時,如果對應EJB Object發現自己沒有綁定對應的Bean執行個體則從其去激活Bean存儲中(通過序列化機制存儲執行個體)回複(激活)此執行個體。狀态變遷前會調用對應的 ejbActive和ejbPassivate方法。

78、EJB的幾種類型

會話(Session)Bean ,實體(Entity)Bean 消息驅動的(Message Driven)Bean

會話Bean又可分為有狀态(Stateful)和無狀态(Stateless)兩種

實體Bean可分為Bean管理的持續性(BMP)和容器管理的持續性(CMP)兩種

79、客服端調用EJB對象的幾個基本步驟

設定JNDI服務工廠以及JNDI服務位址系統屬性,查找Home接口,從Home接口調用Create方法建立Remote接口,通過Remote接口調用其業務方法。

80、如何給weblogic指定大小的記憶體? 

在啟動Weblogic的腳本中(位于所在Domian對應伺服器目錄下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以調整最小記憶體為32M,最大200M

81、如何設定的weblogic的熱啟動模式(開發模式)與産品釋出模式?

可以在管理控制台中修改對應伺服器的啟動模式為開發或産品模式之一。或者修改服務的啟動檔案或者commenv檔案,增加set PRODUCTION_MODE=true。

82、如何啟動weblogic時不需輸入使用者名與密碼?

修改服務啟動檔案,增加 WLS_USER和WLS_PW項。也可以在boot.properties檔案中增加加密過的使用者名和密碼.

83、在weblogic管理制台中對一個應用域(或者說是一個網站,Domain)進行jms及ejb或連接配接池等相關資訊進行配置後,實際儲存在什麼檔案中?

儲存在此Domain的config.xml檔案中,它是伺服器的核心配置檔案。

84、說說weblogic中一個Domain的預設目錄結構?比如要将一個簡單的helloWorld.jsp放入何目錄下,然的在浏覽器上就可打入 http://主機:端口号//helloword.jsp就可以看到運作結果了? 又比如這其中用到了一個自己寫的javaBean該如何辦?

Domain 目錄伺服器目錄applications,将應用目錄放在此目錄下将可以作為應用通路,如果是Web應用,應用目錄需要滿足Web應用目錄要求,jsp檔案可以直接放在應用目錄中,Javabean需要放在應用目錄的WEB-INF目錄的classes目錄中,設定伺服器的預設應用将可以實作在浏覽器上無需輸入應用名。

85、在weblogic中釋出ejb需涉及到哪些配置檔案

不同類型的EJB涉及的配置檔案不同,都涉及到的配置檔案包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP實體Bean一般還需要weblogic-cmp-rdbms-jar.xml 

86、如何在weblogic中進行ssl配置與用戶端的認證配置或說說j2ee(标準)進行ssl的配置

預設安裝中使用DemoIdentity.jks和DemoTrust.jks KeyStore實作SSL,需要配置伺服器使用Enable SSL,配置其端口,在産品模式下需要從CA擷取私有密鑰和數字證書,建立identity和trust keystore,裝載獲得的密鑰和數字證書。可以配置此SSL連接配接是單向還是雙向的。

87、如何檢視在weblogic中已經釋出的EJB?

可以使用管理控制台,在它的Deployment中可以檢視所有已釋出的EJB

88、CORBA是什麼?用途是什麼? 

CORBA 标準是公共對象請求代理結構(Common Object Request Broker Architecture),由對象管理組織 (Object Management Group,縮寫為 OMG)标準化。它的組成是接口定義語言(IDL), 語言綁定(binding:也譯為聯編)和允許應用程式間互操作的協定。其目的為:用不同的程式設計語言書寫在不同的程序中運作,為不同的作業系統開發。

89、說說你所熟悉或聽說過的j2ee中的幾種常用模式?及對設計模式的一些看法

Session Facade Pattern:使用SessionBean通路EntityBean

Message Facade Pattern:實作異步調用

EJB Command Pattern:使用Command JavaBeans取代SessionBean,實作輕量級通路

Data Transfer Object Factory:通過DTO Factory簡化EntityBean資料提供特性

Generic Attribute Access:通過AttibuteAccess接口簡化EntityBean資料提供特性

Business Interface:通過遠端(本地)接口和Bean類實作相同接口規範業務邏輯一緻性

EJB架構的設計好壞将直接影響系統的性能、可擴充性、可維護性、元件可重用性及開發效率。項目越複雜,項目隊伍越龐大則越能展現良好設計的重要性。

90、說說在weblogic中開發消息Bean時的persistent與non-persisten的差别

persistent方式的MDB可以保證消息傳遞的可靠性,也就是如果EJB容器出現問題而JMS伺服器依然會将消息在此MDB可用的時候發送過來,而non-persistent方式的消息将被丢棄。

91、Servlet執行時一般實作哪幾個方法?

public void init(ServletConfig config)

public ServletConfig getServletConfig()

public String getServletInfo()

public void service(ServletRequest request,ServletResponse response)

public void destroy()

92、j2ee常用的設計模式?說明工廠模式。

    Java中的23種設計模式:

Factory(工廠模式),      Builder(建造模式),       Factory Method(工廠方法模式),

Prototype(原始模型模式),Singleton(單例模式),    Facade(門面模式),

Adapter(擴充卡模式),    Bridge(橋梁模式),        Composite(合成模式),

Decorator(裝飾模式),    Flyweight(享元模式),     Proxy(代理模式),

Command(指令模式),      Interpreter(解釋器模式), Visitor(通路者模式),

Iterator(疊代子模式),   Mediator(調停者模式),    Memento(備忘錄模式),

Observer(觀察者模式),   State(狀态模式),         Strategy(政策模式),

Template Method(模闆方法模式), Chain Of Responsibleity(責任鍊模式)

工廠模式:工廠模式是一種經常被使用到的模式,根據工廠模式實作的類可以根據提供的資料生成一組類中某一個類的執行個體,通常這一組類有一個公共的抽象父類并且實作了相同的方法,但是這些方法針對不同的資料進行了不同的操作。首先需要定義一個基類,該類的子類通過不同的方法實作了基類中的方法。然後需要定義一個工廠類,工廠類可以根據條件生成不同的子類執行個體。當得到子類的執行個體後,開發人員可以調用基類中的方法而不必考慮到底傳回的是哪一個子類的執行個體。

93、EJB需直接實作它的業務接口或Home接口嗎,請簡述理由。

遠端接口和Home接口不需要直接實作,他們的實作代碼是由伺服器産生的,程式運作中對應實作類會作為對應接口類型的執行個體被使用。

94、排序都有哪幾種方法?請列舉。用JAVA實作一個快速排序。

    排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸并排序,配置設定排序(箱排序、基數排序)

快速排序的僞代碼。

/ /使用快速排序方法對a[ 0 :n- 1 ]排序

從a[ 0 :n- 1 ]中選擇一個元素作為m i d d l e,該元素為支點

把餘下的元素分割為兩段left 和r i g h t,使得l e f t中的元素都小于等于支點,而right 中的元素都大于等于支點

遞歸地使用快速排序方法對left 進行排序

遞歸地使用快速排序方法對right 進行排序

所得結果為l e f t + m i d d l e + r i g h t

95、請對以下在J2EE中常用的名詞進行解釋(或簡單描述)

web 容器:給處于其中的應用程式元件(JSP,SERVLET)提供一個環境,使JSP,SERVLET直接更容器中的環境變量接口互動,不必關注其它系統問題。主要有WEB伺服器來實作。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴格遵守J2EE規範中的WEB APPLICATION 标準。我們把遵守以上标準的WEB伺服器就叫做J2EE中的WEB容器。

EJB容器:Enterprise java bean 容器。更具有行業領域特色。他提供給運作在其中的元件EJB各種管理功能。隻要滿足J2EE規範的EJB放入該容器,馬上就會被容器進行高效率的管理。并且可以通過現成的接口來獲得系統級别的服務。例如郵件服務、事務管理。

JNDI:(Java Naming & Directory Interface)JAVA命名目錄服務。主要提供的功能是:提供一個目錄系統,讓其它各地的應用程式在其上面留下自己的索引,進而滿足快速查找和定位分布式應用程式的功能。

JMS:(Java Message Service)JAVA消息服務。主要實作各個應用程式之間的通訊。包括點對點和廣播。

JTA:(Java Transaction API)JAVA事務服務。提供各種分布式事務服務。應用程式隻需調用其提供的接口即可。

JAF:(Java Action FrameWork)JAVA安全認證架構。提供一些安全控制方面的架構。讓開發者通過各種部署和自定義實作自己的個性安全控制政策。

RMI/IIOP: (Remote Method Invocation /internet對象請求中介協定)他們主要用于通過遠端調用服務。例如,遠端有一台計算機上運作一個程式,它提供股票分析服務,我們可以在本地計算機上實作對其直接調用。當然這是要通過一定的規範才能在異構的系統之間進行通信。RMI是JAVA特有的。

96、JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分别代表什麼意義?在try塊中可以抛出異常嗎?

Java 通過面向對象的方法進行異常處理,把各種不同的異常進行分類,并提供了良好的接口。在Java中,每個異常都是一個對象,它是Throwable類或其它子類的執行個體。當一個方法出現異常後便抛出一個異常對象,該對象中包含有異常資訊,調用這個對象的方法可以捕獲到這個異常并進行處理。Java的異常處理是通過5個關鍵詞來實作的:try、catch、throw、throws和finally。一般情況下是用try來執行一段程式,如果出現異常,系統會抛出(throws)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最後(finally)由預設處理器來處理。

用try來指定一塊預防所有"異常"的程式。緊跟在try程式後面,應包含一個catch子句來指定你想要捕捉的"異常"的類型。

throw語句用來明确地抛出一個"異常"。

throws用來标明一個成員函數可能抛出的各種"異常"。

Finally為確定一段代碼不管發生什麼"異常"都被執行一段代碼。

可以在一個成員函數調用的外面寫一個try語句,在這個成員函數内部寫另一個try語句保護其他代碼。每當遇到一個try語句,"異常"的架構就放到堆棧上面,直到所有的try語句都完成。如果下一級的try語句沒有對某種"異常"進行處理,堆棧就會展開,直到遇到有處理這種"異常"的try語句。

97、一個".java"源檔案中是否可以包括多個類(不是内部類)?有什麼限制?

可以。必須隻有一個類名與檔案名相同。

     本文轉自My_King1 51CTO部落格,原文連結:http://blog.51cto.com/apprentice/1360716,如需轉載請自行聯系原作者