20道公司java面試題B_第1頁
20道公司java面試題B_第2頁
20道公司java面試題B_第3頁
20道公司java面試題B_第4頁
20道公司java面試題B_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、1. Set實現(xiàn)的基礎(chǔ)是Map (HashMap);2 Set中的元素是不能重復(fù)的,如果使用add(Object obj)方法添加已經(jīng)存在的對象,那么會覆 蓋前面的對象;性能時Map所要面對的一個大問題。如果你知道get。時怎么工作的,你就會覺察(比方說) 在Array List里面找對象會是相當(dāng)慢的。而這正是Hash Map的強(qiáng)項。它不是慢慢地一個個地 找這個鍵,而是用了一種被稱為hash code的特殊值來進(jìn)行查找的。散列(hash)時一種算 法,它會從目標(biāo)對象當(dāng)中提取一些信息,然后生成一個表示這個對象的“相對獨特”的int。 hashCodeO是Object根類的方法,因此所有Java對

2、象都能生成hash code0 Hash Map那么利用 對象的hashCodeO來進(jìn)行快速的查找。這樣性能就有了急劇的提高。設(shè)計模式方面1、開發(fā)中都用到了那些設(shè)計模式?用在什么場合?答:每個模式都描述了一個在我們的環(huán)境中不斷出現(xiàn)的問題,然后描述了該問題的解決方案 的核心。通過這種方式,你可以無數(shù)次地使用那些已有的解決方案,無需再重復(fù)相同的工作。 主要用到了 MVC的設(shè)計模式。用來開發(fā)JSP/Servlet或者J2EE的相關(guān)應(yīng)用。簡單工廠模式 等。2、UML方面答:標(biāo)準(zhǔn)建模語言U ML。用例圖,靜態(tài)圖(包括類圖、對象圖和 包圖),行為圖,交 互圖(順序圖,合作圖),實現(xiàn)囹xtx xrx xTx

3、 xrx xrx xrx xTxxjs zts Jsxrx xjx xrxxrx xTx zTx Tx xrs Is xix xrx xrs xTx xTxxvx xTx xrx xrs xTx zrx zTx xlxxjs xjx Js xjs xTsxTx xTx xvx xrx xjx xvsxTx xTs zTx zTxxTs zTxxrx zrx xvx xTx xTx zts zisxTs xTs x7s xTs xjx xr%1、概述struts,以及struts如何實現(xiàn)MVC架構(gòu)的?答:struts Same work是一種基于java的技術(shù),Web應(yīng)用程序開發(fā)人員通過stru

4、ts ftamework 即可充分利用面向?qū)ο笤O(shè)計、代碼重用以及“編寫一次、到處運行”的優(yōu)點。Struts提供了 一種創(chuàng)立Web應(yīng)用程序的框架,其中對應(yīng)用程序的顯示、表示和數(shù)據(jù)的后端代碼進(jìn)行了抽 象。Struts采用jsp作為MVC的視圖,由ActionServlet具體指定的action動作類作為控制器 即MVC中的C,負(fù)責(zé)視圖與模型之間的交互??刂破鞯拿總€入口點都由名為strut:configxml 的配置文件設(shè)置。該文件把來自視圖的請求映射為特定的JAVA類以進(jìn)行相應(yīng)的處理,控制 器還指定下一個視圖的位置。Struts中的模型主要指的就是javabean,它是模型的代表,主 要封裝數(shù)據(jù)和

5、業(yè)務(wù)邏輯。Struts的處理流程:1控制器進(jìn)行初始化工作,讀取配置文件,為不同的Struts模塊初始化相應(yīng)的ModulConfig 對象。2控制器接收 請求,并從ActionConfig中找出對應(yīng)于該請求的Action子類,如果沒有 對應(yīng)的Action,控制器直接將請求轉(zhuǎn)發(fā)給JSP或者靜態(tài)頁面,否那么控制器將請求分發(fā)至具體 的Action類進(jìn)行處理。3在控制器調(diào)用具體的Action的Execute方法之前,ActionForm對象將利用 請求中的 參數(shù)來填充自已。還可以在ActionForm類中調(diào)用Validate方法來檢查請求參數(shù)的合法性, 并且可以返回一個包含所有錯誤信息的ActionEr

6、rors對象。4執(zhí)行具體的的Execute的方法,它負(fù)責(zé)執(zhí)行相應(yīng)的業(yè)務(wù)邏輯。執(zhí)行完后,返回一個 ActionForward對象,控制器通過該ActionForward對象來進(jìn)行轉(zhuǎn)發(fā)工作。也可以把Action 要處理的業(yè)務(wù)邏輯封裝在JavaBean中,如果系統(tǒng)中還有EJB,那么通過JavaBean調(diào)用EJB 以完成業(yè)務(wù)處理;如果沒有EJB,那么就直接在JavaBean中連接數(shù)據(jù)庫,進(jìn)行數(shù)據(jù)庫相關(guān) 的操作。vizsi*si*slzxlz s* si* slz *1 si* slz slz 1* slz *1*si* 1*si*XTX XjX ZTX 1% xj、XIXXTX XIX XIX XTX

7、 XTX XTXXTX1% xTxXTXXT* XIXxTx XTXXTX XIX XIX 4、*7%*7% for(int i=(s length-1) ;i=O;i) System out printin(iii);答案:正確。在addOne method中,參數(shù)。被修飾成final。如果在addOne method里我們修 改了 o的reference(比方:o = new OtherO;),那么如同上例這題也是錯的。但這里修改的是o 的member vairable城員變量),而。的reference并沒有改變。本文來自 CSDN 博客,轉(zhuǎn)載請標(biāo)明出處 :blog csdn net/s

8、dhjob/archive/2009/08/12/4439197. aspx2、概述MVC體系結(jié)構(gòu)答:MVC包括三類對象,model是應(yīng)用對象,view是視圖,controller是控制器,它定義用 戶界面對用戶輸入的響應(yīng)方式。在MVC體系中,模型通常被稱為“業(yè)務(wù)邏輯”,是真正完成任務(wù)的代碼,視圖就是使用界 面,反映數(shù)據(jù)的變化??刂破骺刂浦P秃鸵晥D之間的交互過程,它決定著向用戶返回怎樣 的視圖、檢查通過界面輸入的信息以及選擇處理輸入信息的模型在MVC中,表示層和邏輯層別離,各局部可相互獨立進(jìn)行開發(fā),便于開發(fā)和維護(hù),提高了 開發(fā)效率。3、多線程的優(yōu)點 答:可分兩方面來答: ?相對于單線程而言:

9、 可以響應(yīng)多任務(wù)的并發(fā)操作。 多線程取消了主循環(huán)和輪流檢測機(jī)制,一個線程可以暫停而不阻止系統(tǒng)其他的局部的執(zhí)行, 而且當(dāng)程序中一個線程阻塞時,只有那個被阻塞的線程暫停,所有其他的線程繼續(xù)執(zhí)行。?相對于進(jìn)程而言:(可以答也可以不答) 它所要求的開銷比擬小,轉(zhuǎn)換本錢較小。 所有線程共享同一地址空間,相互協(xié)作。 彼此之間通信很容易。4、 EJB概述答:EJB是企業(yè)級的JavaBean,它提供了構(gòu)建企業(yè)級業(yè)務(wù)邏輯的一種組件模型。EJB 分為三種:Session Bean Entity Bean Message-Driven Bean 三種, 其中 Session Bean分為有狀態(tài)和無狀態(tài)Session

10、 Bean兩種Entity Bean分為容器管理的Entity Bean ( CM P ) 和Bean管理的Entity Bean ( BMP )o每一個EJB由一個遠(yuǎn)程接口、一個本地接口和一個 EJB容器實現(xiàn)組成,遠(yuǎn)程接口聲明了提供給EJB客戶調(diào)用的各種應(yīng)用方法,本地接口聲明 了創(chuàng)立新的EJB實例的create方法、尋找EJB實例的查找(finder)方法以及刪除EJB實例的 remove方法。EJB容器提供了 EJB的運行環(huán)境和生命周期的管理。4、用java訪問Oracle數(shù)據(jù)庫、取得記錄并輸出到界面 答:,Class.fbrNamefc,);Connection conn=DriverM

11、anager getConnection( url, username , password );Statement stmt=conn createStatement0 ;String str=9,select * from tableResultSet rs=stmt execute Query (str);W hile(rs nextO)rs close 0;stmt close0;conn close 0;5、概述java垃圾回收機(jī)制答:它的工作原理如下:當(dāng)不存在對一個對象的引用時,我們就假定不再需要那個對象,那個對象所占有的存儲 單元可以被收回,可通過System.gcO方法回收,但

12、一般要把不再引用的對象標(biāo)志為null為 佳。6、java類是否可以多繼承,怎么實現(xiàn)多繼承?答:java沒有多繼承,但可以通過接口的形式來到達(dá)多繼承的目地。7、面向?qū)ο蟮奶攸c答:面向?qū)ο笥腥筇攸c:封裝、繼承、多態(tài)。(如果要回答四個,可加上 抽象性 這一 特點)9、接口有什么優(yōu)點答:接口有以下優(yōu)點:1接口只是一個框架而沒有實現(xiàn),因此在接口定義時不需要考慮接口中的方法如何實現(xiàn)。2利用接口可到達(dá)實現(xiàn)多繼承的目地。3可以在不暴露對象的類的前提下,暴露對象的編程接口。4不用強(qiáng)迫類關(guān)系在無關(guān)類中截獲相似處(采用適配器就可以了)o5聲明想執(zhí)行的一個或多個方法。10、 Array Li st 與 Vector

13、 的區(qū)別答:主要從兩個方面來說明:?平安、效率方面如果要實現(xiàn)同步平安,那么要用Vector,否那么那么用AirayList,因為Array List不考慮同步平安 的問題,所以效率要高些。?資源方面當(dāng)兩者的容量已滿時,它們都會自動增長其容量,但Vector是按其容量的一倍增長,而 AirayList那么按其容量的50%增加,所以Vector更能節(jié)省資源。11、MVC結(jié)構(gòu)在Jtable中怎樣實現(xiàn)的,這種結(jié)構(gòu)有什么好處?答、在Jtable中不存儲它的單元數(shù)據(jù),它的所有實例把它們的單元值交給實現(xiàn)了TableModel 接口的對象來維護(hù)和管理,所以在MVC結(jié)構(gòu)中,Jtable的表格主要表達(dá)了一個V的作

14、用, 其表格將數(shù)據(jù)變化表達(dá)出來,而數(shù)據(jù)模型那么表達(dá)了 M的作用,封裝數(shù)據(jù)和業(yè)務(wù)邏輯。注:詳細(xì)解說見第二題12、在控制臺中輸入一個字符串,然后按照逆序打印出來答 :import java io.*;public class testpublic static void main (String args 口)String A=”;String B=”;String C=;try(Buffered Reader brnew Buffered Reader (new Input Stream Reader (System, in);If (B=br. readLine 0)! =null) A =

15、A + B;for(int I= A. length0l;I-0; I) C = C +A. substring。, 1+1);System. out printin。;catch (Exception e) System, out printin(e. get Message0);13、java是否存在內(nèi)存泄露答:存在,當(dāng)一個對象引用另一對象后,當(dāng)另一對象為空時,會出現(xiàn)內(nèi)存泄露。14、String類的值是否可以改變答:String類的值在初始后不能改變,如果要改變,可轉(zhuǎn)換為StringBuffer類,這個類的值是可以動態(tài)改變的。(這里主要考String和String Buffer的區(qū)別)17

16、. java有幾種修飾符?默認(rèn)的是什么?答:(注:修飾符是影響類、變量及成員方法的生存空間和可訪問性的關(guān)鍵字)修飾符類成員方法成員變量局部變量VVVVprotected - private -abstract static public private protected - synchronized - V native - V - volatile - - V - final V V V - transient 一一 J J以下是訪問控制修飾符:默認(rèn)為friendly 修飾符同類同包子孫類不同包 public V V V V protected V V V - friendly V V -

17、 private V - 18、toString方法的概述答:因為每個類都繼承了 Object類,所以都實現(xiàn)了 toStringO方法。通過toStringO方法可以決定所創(chuàng)立對象的字符串表達(dá)形式。19、Object類的概述答:Object類是所有其他的類的超類,Object的一個變量可以引用任何其他類的對象。因為數(shù)組是作為類實現(xiàn)的,所以O(shè)bject的一個變量也可以引用任何數(shù)組,它包括以下幾種方法:clone 0 equals 0 finalize 0 getClassO hashCodeO notify 0 notify All 0 toStringO waitO20、java 特點 答:j

18、ava具有以下幾個主要特點:?簡單性?面向?qū)ο螅篔AVA是完全面向?qū)ο蟮?,它支持靜態(tài)和動態(tài)風(fēng)格的代碼繼承及重用?分布式:包括數(shù)據(jù)分布和操作分布?健壯性:java系統(tǒng)仔細(xì)檢測對內(nèi)存的每次訪問,確認(rèn)它是否合法,而且在編譯和運行程序 時,都要對可能出現(xiàn)的問題進(jìn)行檢查,以消除錯誤的產(chǎn)生。?結(jié)構(gòu)中立?平安性:java不支持指針,一切對內(nèi)存的訪問都必須通過對象的實例變量來實現(xiàn),這樣就 防止程序員使用木馬等欺騙手段訪問對象的私有成員,同時也防止了指針操作中容易產(chǎn)生的 錯誤。?與平臺無關(guān):java寫的應(yīng)用程序不用修改就可在不同的軟硬平臺上運行。平臺無關(guān)性有兩 種:源代碼級和目標(biāo)代碼級。Java主要靠JAVA虛

19、擬機(jī)在目標(biāo)代碼級上實現(xiàn)平臺無關(guān)性 ?解釋執(zhí)性:運行JAVA程序時,它首先被編譯成字節(jié)代碼,字節(jié)代碼非常類似機(jī)器碼,執(zhí) 行效率非常高。?高性能?多性程?動態(tài)性:它允許程序動態(tài)的裝入運行時需要的類。21、什么叫抽象類?抽象類跟接口有什么區(qū)別?為什么引進(jìn)數(shù)據(jù)接口概念?答:具有關(guān)鍵字abstract ,在實現(xiàn)內(nèi)容上沒有完全定義的類就叫抽象類。抽象類和接口的區(qū)別如下:在類繼承抽象類時,只需實現(xiàn)局部具體方法和全部抽象方法,而實現(xiàn)接口那么要實現(xiàn)里面 的全部方法。在接口中無成員變量,而抽象類中可有成員變量。在Java中引進(jìn)接口主要是為了解決多繼承的問題。22、doGet 與 doPut 的區(qū)別?答:doPut

20、會把地址作為一個文件寫到服務(wù)器,而doGet不會,而只顯示在地址欄。23、多線程實現(xiàn)有那幾種方法,同步有哪幾種方法?答:實現(xiàn)同步主要有兩種方法:1.synchronized 2wait notify實現(xiàn)多線程主要繼承Thread類和實現(xiàn)Runnable接口。24、JSP頁面的跳轉(zhuǎn)?答:jsp頁面實現(xiàn)跳轉(zhuǎn)主要有jsp:forward和send Redirect兩種方法jsp:forward :在本容器內(nèi)跳轉(zhuǎn)。跳轉(zhuǎn)后,地址欄地址不變。效率高。跳轉(zhuǎn)后立即結(jié)束本 頁的內(nèi)容。sendRedirect:在容器之間的跳轉(zhuǎn),跳轉(zhuǎn)后地址欄地址為跳轉(zhuǎn)后的地址,效率較低。通常采用jsp:forward方式跳轉(zhuǎn)。25

21、、類變量的初始化答:在Java中類變量在局部中一定要初始化,因為局部變量會覆蓋全局變量,否那么會報錯: 變量未初始化。全局變量那么可以不初始化,而到具體的內(nèi)部方法或其他的類成員中初始化。 26、數(shù)組的定義答:數(shù)組是作為一種對象實現(xiàn)的。數(shù)組元素可以包含作何類型值,但數(shù)組里面的每個元素的 類型必須一致 創(chuàng)立數(shù)組步聚如下:?聲明?構(gòu)造?初始化27、 Hastable 與 Hash Map 的區(qū)另IJ ?答:Hashtable和Hash map的主要區(qū)另ij如下:? Hashtable是同步的,而HashMap不是同步的。所以不要求同步的時候,用Hash Map的效 率較高? Hashtable版本較

22、Hash Map版本低。Java代碼查錯:L abstract class Name private String name;public abstract boolean isStupidName (String name) )大俠們,這有何錯誤?答案:錯。abstract method必須以分號結(jié)尾,且不帶花括號。2public class Something void doSomething 0 private String s 二;int 1 = s length 0;有錯嗎?答案:錯。局部變量前不能放置任何訪問修飾符(private, public,和protected) o fin

23、al可以 用來修飾局部變量(final如同abstract和strictfp,都是非訪問修飾符,strictfp只能修飾class 和 method 而非 variable) o3.abstract class Something private abstract String doSomething 0;這好像沒什么錯吧?答案:錯。abstract的 methods不能以private修飾。abstract的 methods就是讓子類implement(實 現(xiàn))具體細(xì)節(jié)的,怎么可以用private把a(bǔ)bstract method封鎖起來呢?(同理 abstract method前 不能加fi

24、nal)。4public class Something public int add One (final int x) return +x;)這個比擬明顯。答案:錯。int x被修飾成final,意味著x不能在addOne method中被修改。public class Something public static void main(StringD args) Other o = new OtherO;new So methingO. add One (o);public void add One (final Other o) o.i+;class Other public int

25、i;和上面的很相似,都是關(guān)于final的問題,這有錯嗎?class Something int i;public void doSomethingO System, out printin Ci = + i);)有什么錯呢?看不出來啊。答案:正確。輸出的是i = 0。int i屬於instant variable (實例變量,或叫成員變量)。instant variable 有 default valueo int 的 default value 是 0。class Something final int i;public void doSomethingO System, out print

26、infi = + i);和上面一題只有一個地方不同,就是多了一個final。這難道就錯了嗎?答案:錯。final inti是個final的instant variable (實例變量,或叫成員變量)。final的instant variable沒有default value,必須在constructor (構(gòu)造器)結(jié)束之前被賦予一個明確的值。可以 修改為final int i = 0;。public class Something public static void m ain (String args) Something s = new SomethingO;System, out pr

27、intinfs doSomethingO leturns + doSomethingO);public String doSomethingO return Do something看上去很完美。答案:錯??瓷先ピ趍ain里call doSomething沒有什么問題,畢竟兩個methods都在同一個 class 里。但仔細(xì)看,main 是 static 的。static method 不能直接 call non-static methodso 可改 成System out printings doSomethingO returns +s doSomethingO);“。同理,static

28、method 不 能訪問 non-static instant variableo此處,Something類的文件名叫OtherThing javaclass Something private static void m ain (String so m ething to do) System, out printlnCDo something./7); )這個好像很明顯。答案:正確。從來沒有人說過Java的Class名字必須和其文件名相同。但public class的名字 必須和文件名相同。.interface A int x = 0;)class Bint x =1;)class C

29、extends B implements A public void pXO System, out printin(x);public static void main(StringD args) new CO.pXO;答案:錯誤。在編譯時會發(fā)生錯誤(錯誤描述不同的JVM有不同的信息,意思就是未明確的 x調(diào)用,兩個x都匹配(就象在同時i mport java util和java sql兩個包時直接聲明Date T羊)。 對于父類的變量可以用super.x來明確,而接口的屬性默認(rèn)隱含為public static final所以可 以通過A.x來明確。interface Playable voi

30、d playO;)interface Bounceable void playO;interface Rollable extends Playable Bounceable Ball ball = new Bah(PingPang);)class Ball implements Rollable private String name;public String getNameO return name;public Ball (String name) this name = name;public void playO ball = new BallCFootbairO;錯在這兒System, out printin (ball get Na me 0);)這個錯誤不容易發(fā)現(xiàn)。答案:錯。interface Rollable extends Playable Bounceable沒有問題。interface 可繼承多個 interfaces,所以這里沒錯。問題出在 interface Rollable里的Ball ball = new BallCPingPang);“。 任何在interface里聲明的inter

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論