- 相關(guān)推薦
JAVA面試常用的基礎(chǔ)知識(3)
getContentLength():返回請求的Body的長度
getHeader(String name):獲得HTTp協(xié)議定義的文件頭信息
getHeaders(String name):返回指定名字的request Header的所有值,結(jié)果是一個枚舉的實例
getHeaderNames():返回所以request Header的名字,結(jié)果是一個枚舉的實例
getInputStream():返回請求的輸入流,用于獲得請求中的數(shù)據(jù)
getMethod():獲得客戶端向服務器端傳送數(shù)據(jù)的方法
getparameter(String name):獲得客戶端傳送給服務器端的有name指定的參數(shù)值
getparameterNames():獲得客戶端傳送給服務器端的所有參數(shù)的名字,結(jié)果是一個枚舉的實例
getparameterValues(String name):獲得有name指定的參數(shù)的所有值
getprotocol():獲取客戶端向服務器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱
getQueryString():獲得查詢字符串
getRequestURI():獲取發(fā)出請求字符串的客戶端地址
getRemoteAddr():獲取客戶端的Ip地址
getRemoteHost():獲取客戶端的名字
getSession([Boolean create]):返回和請求相關(guān)Session
getServerName():獲取服務器的名字
getServletpath():獲取客戶端所請求的腳本文件的路徑
getServerport():獲取服務器的端口號
removeAttribute(String name):刪除請求中的一個屬性
67、J2EE是技術(shù)還是平臺還是框架?
J2EE本身是一個標準,一個為企業(yè)分布式應用的開發(fā)提供的標準平臺。
J2EE也是一個框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技術(shù)。
68、我們在web應用開發(fā)過程中經(jīng)常遇到輸出某種編碼的字符,如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、簡述邏輯操作(&,|,^)與條件操作(&&,||)的區(qū)別。
區(qū)別主要答兩點:a.條件操作只能操作布爾型的,而邏輯操作不僅可以操作布爾型,而且可以操作數(shù)值型
b.邏輯操作不會產(chǎn)生短路
70、XML文檔定義有幾種形式?它們之間有何本質(zhì)區(qū)別?解析XML文檔有哪幾種方式?
a: 兩種形式 dtd schema
b: 本質(zhì)區(qū)別:schema本身是xml的,可以被XML解析器解析(這也是從DTD上發(fā)展schema的根本目的)
c:有DOM,SAX,STAX等
DOM:處理大型文件時其性能下降的非常厲害。這個問題是由DOM的樹結(jié)構(gòu)所造成的,這種結(jié)構(gòu)占用的內(nèi)存較多,而且DOM必須在解析文件之前把整個文檔裝入內(nèi)存,適合對XML的隨機訪問
SAX:不現(xiàn)于DOM,SAX是事件驅(qū)動型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個文件。當遇到像文件開頭,文檔結(jié)束,或者標簽開頭與標簽結(jié)束時,它會觸發(fā)一個事件,用戶通過在其回調(diào)事件中寫入處理代碼來處理XML文件,適合對XML的順序訪問
STAX:Streaming ApI for XML (StAX)
xml文檔有兩種定義方法:
dtd:數(shù)據(jù)類型定義(data type definition),用以描述XML文檔的文檔結(jié)構(gòu),是早期的XML文檔定義形式。
schema:其本身是基于XML語言編寫的,在類型和語法上的限定能力比dtd強,處理也比較方便,因為此正逐漸代替dtd成為新的模式定義語言。
71、簡述synchronized和java.util.concurrent.locks.Lock的異同 ?
主要相同點:Lock能完成synchronized所實現(xiàn)的所有功能
主要不同點:Lock有比synchronized更精確的線程語義和更好的性能。synchronized會自動釋放鎖,而Lock一定要求程序員手工釋放,并且必須在finally從句中釋放。
72、EJB的角色和三個對象
一 個完整的基于EJB的分布式計算結(jié)構(gòu)由六個角色組成,這六個角色可以由不同的開發(fā)商提供,每個角色所作的工作必須遵循Sun公司提供的EJB規(guī)范,以保證 彼此之間的兼容性。這六個角色分別是EJB組件開發(fā)者(Enterprise Bean provider) 、應用組合者(Application Assembler)、部署者(Deployer)、EJB 服務器提供者(EJB Server provider)、EJB 容器提供者(EJB Container provider)、系統(tǒng)管理員(System Administrator)
三個對象是Remote(Local)接口、Home(LocalHome)接口,Bean類
73、EJB容器提供的服務
主要提供聲明周期管理、代碼產(chǎn)生、持續(xù)性管理、安全、事務管理、鎖和并發(fā)行管理等服務。
74、EJB規(guī)范規(guī)定EJB中禁止的操作有哪些?
1. 不能操作線程和線程ApI(線程ApI指非線程對象的方法如notify,wait等),2.不能操作awt,3.不能實現(xiàn)服務器功能,4.不能對靜態(tài)屬 生存取,5.不能使用IO操作直接存取文件系統(tǒng),6.不能加載本地庫.,7.不能將this作為變量和返回,8.不能循環(huán)調(diào)用。
75、remote接口和home接口主要作用
remote接口定義了業(yè)務方法,用于EJB客戶端調(diào)用業(yè)務方法。
home接口是EJB工廠用于創(chuàng)建和移除查找EJB實例
76、bean 實例的生命周期
對 于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在緩沖池管理,而對于Entity Bean和Statefull Session Bean存在Cache管理,通常包含創(chuàng)建實例,設置上下文、創(chuàng)建EJB Object(create)、業(yè)務方法調(diào)用、remove等過程,對于存在緩沖池管理的Bean,在create之后實例并不從內(nèi)存清除,而是采用緩沖 池調(diào)度機制不斷重用實例,而對于存在Cache管理的Bean則通過激活和去激活機制保持Bean的狀態(tài)并限制內(nèi)存中實例數(shù)量。
77、EJB的激活機制
以Stateful Session Bean 為例:其Cache大小決定了內(nèi)存中可以同時存在的Bean實例的數(shù)量,根據(jù)MRU或NRU算法,實例在激活和去激活狀態(tài)之間遷移,激活機制是當客戶端調(diào) 用某個EJB實例業(yè)務方法時,如果對應EJB Object發(fā)現(xiàn)自己沒有綁定對應的Bean實例則從其去激活Bean存儲中(通過序列化機制存儲實例)回復(激活)此實例。狀態(tài)變遷前會調(diào)用對應的 ejbActive和ejbpassivate方法。
78、EJB的幾種類型
會話(Session)Bean ,實體(Entity)Bean 消息驅(qū)動的(Message Driven)Bean
會話Bean又可分為有狀態(tài)(Stateful)和無狀態(tài)(Stateless)兩種
實體Bean可分為Bean管理的持續(xù)性(BMp)和容器管理的持續(xù)性(CMp)兩種
79、客服端調(diào)用EJB對象的幾個基本步驟
設置JNDI服務工廠以及JNDI服務地址系統(tǒng)屬性,查找Home接口,從Home接口調(diào)用Create方法創(chuàng)建Remote接口,通過Remote接口調(diào)用其業(yè)務方法。
80、如何給weblogic指定大小的內(nèi)存?
在啟動Weblogic的腳本中(位于所在Domian對應服務器目錄下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以調(diào)整最小內(nèi)存為32M,最大200M
81、如何設定的weblogic的熱啟動模式(開發(fā)模式)與產(chǎn)品發(fā)布模式?
可以在管理控制臺中修改對應服務器的啟動模式為開發(fā)或產(chǎn)品模式之一;蛘咝薷姆⻊盏膯游募蛘遚ommenv文件,增加set pRODUCTION_MODE=true。
82、如何啟動時不需輸入用戶名與密碼?
修改服務啟動文件,增加 WLS_USER和WLS_pW項。也可以在boot.properties文件中增加加密過的用戶名和密碼.
83、在weblogic管理制臺中對一個應用域(或者說是一個網(wǎng)站,Domain)進行jms及ejb或連接池等相關(guān)信息進行配置后,實際保存在什么文件中?
保存在此Domain的config.xml文件中,它是服務器的核心配置文件。
84、說說weblogic中一個Domain的缺省目錄結(jié)構(gòu)?比如要將一個簡單的helloWorld.jsp放入何目錄下,然的在瀏覽器上就可打入 http://主機:端口號//helloword.jsp就可以看到運行結(jié)果了? 又比如這其中用到了一個自己寫的javaBean該如何辦?
Domain 目錄服務器目錄applications,將應用目錄放在此目錄下將可以作為應用訪問,如果是Web應用,應用目錄需要滿足Web應用目錄要求,jsp文 件可以直接放在應用目錄中,Javabean需要放在應用目錄的WEB-INF目錄的classes目錄中,設置服務器的缺省應用將可以實現(xiàn)在瀏覽器上無 需輸入應用名。
85、在weblogic中發(fā)布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實現(xiàn)SSL,需要配置服務器使用Enable SSL,配置其端口,在產(chǎn)品模式下需要從CA獲取私有密鑰和數(shù)字證書,創(chuàng)建identity和trust keystore,裝載獲得的密鑰和數(shù)字證書。可以配置此SSL連接是單向還是雙向的。
87、如何查看在weblogic中已經(jīng)發(fā)布的EJB?
可以使用管理控制臺,在它的Deployment中可以查看所有已發(fā)布的EJB
88、CORBA是什么?用途是什么?
CORBA 標準是公共對象請求代理結(jié)構(gòu)(Common Object Request Broker Architecture),由對象管理組織 (Object Management Group,縮寫為 OMG)標準化。它的組成是接口定義語言(IDL), 語言綁定(binding:也譯為聯(lián)編)和允許應用程序間互操作的協(xié)議。 其目的為:用不同的程序設計語言書寫在不同的進程中運行,為不同的操作系統(tǒng)開發(fā)。
89、說說你所熟悉或聽說過的j2ee中的幾種常用模式?及對設計模式的一些看法
Session Facade pattern:使用SessionBean訪問EntityBean
Message Facade pattern:實現(xiàn)異步調(diào)用
EJB Command pattern:使用Command JavaBeans取代SessionBean,實現(xiàn)輕量級訪問
Data Transfer Object Factory:通過DTO Factory簡化EntityBean數(shù)據(jù)提供特性
Generic Attribute Access:通過AttibuteAccess接口簡化EntityBean數(shù)據(jù)提供特性
Business Interface:通過遠程(本地)接口和Bean類實現(xiàn)相同接口規(guī)范業(yè)務邏輯一致性
EJB架構(gòu)的設計好壞將直接影響系統(tǒng)的性能、可擴展性、可維護性、組件可重用性及開發(fā)效率。項目越復雜,項目隊伍越龐大則越能體現(xiàn)良好設計的重要性。
90、說說在weblogic中開發(fā)消息Bean時的persistent與non-persisten的差別
persistent方式的MDB可以保證消息傳遞的可靠性,也就是如果EJB容器出現(xiàn)問題而JMS服務器依然會將消息在此MDB可用的時候發(fā)送過來,而non-persistent方式的消息將被丟棄。
既然沒有標準答案,就根據(jù)自己的所了解的,補充修正一下好了
91、Servlet執(zhí)行時一般實現(xiàn)哪幾個方法?
public void init(ServletConfig config)
public ServletConfig getServletConfig()
public String getServletInfo()
public void service(ServletRequest request,ServletResponse response)
public void destroy()
init ()方法在servlet的生命周期中僅執(zhí)行一次,在服務器裝載servlet時執(zhí)行。缺省的init()方法通常是符合要求的,不過也可以根據(jù)需要進行 override,比如管理服務器端資源,一次性裝入GIF圖像,初始化數(shù)據(jù)庫連接等,缺省的inti()方法設置了servlet的初始化參數(shù),并用它 的ServeltConfig對象參數(shù)來啟動配置,所以覆蓋init()方法時,應調(diào)用super.init()以確保仍然執(zhí)行這些任務。
service ()方法是servlet的核心,在調(diào)用service()方法之前,應確保已完成init()方法。對于HttpServlet,每當客戶請求一個 HttpServlet對象,該對象的service()方法就要被調(diào)用,HttpServlet缺省的service()方法的服務功能就是調(diào)用與 HTTp請求的方法相應的do功能,dopost()和doGet(),所以對于HttpServlet,一般都是重寫dopost()和doGet() 方法。
【JAVA面試常用的基礎(chǔ)知識(3)】相關(guān)文章:
java面試寶典最新10-10
java面試題及答案10-03
java面試官技巧05-27
會計面試的基礎(chǔ)知識10-19
面試官常用的面試策略07-19
英語面試的常用口語08-28
Cookie基礎(chǔ)知識07-11
面膜基礎(chǔ)知識07-29
英語面試常用口語對話09-27