Java面試基礎知識大全_第1頁
Java面試基礎知識大全_第2頁
Java面試基礎知識大全_第3頁
Java面試基礎知識大全_第4頁
Java面試基礎知識大全_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java基礎方面:

1、作用域public,private,protected,以及不寫時的區(qū)分

答:區(qū)分如下:

作用域當前類同一package子孫類其他package

public7VVV

protectedV7VX

friendlyVVXX

private7XXX

不寫時默認為friendly

2、AnonymousInnerClass(匿名內(nèi)部類)是否可以extends(繼承)其它類,是否可

以implements(實現(xiàn))interface(接口)

答:匿名的內(nèi)部類是沒出名字的內(nèi)部類。不能extends(繼承)其它類,但一個內(nèi)部類可以作為

一個接口,由另一個內(nèi)部類實現(xiàn)

3、StaticNestedClass和InnerClass的不同

答:NestedClass(一般是C++的說法),InnerClass(一般是JAVA的說法)。Java內(nèi)部類與

C++嵌套類最大的不同就在于是否有指向外部的引用上。注:靜態(tài)內(nèi)部類(InnerClass)意味

著1創(chuàng)建一個static內(nèi)部類的對象,不須要一個外部類對象,2不能從一個static內(nèi)部類的一

個對象訪問一個外部類對象

4、&和&&的區(qū)分

答:&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)

5、Collection和Collections的區(qū)分

答:Collection是集合類的上級接口,繼承與他的接口主要有Set和List.

Collections是針對集合類的一個幫助類,他供應一系列靜態(tài)方法實現(xiàn)對各種集合的搜尋、排序、

線程平安化等操作

6、什么時候用assert

答:assertion(斷言)在軟件開發(fā)中是一種常用的調(diào)試方式,許多開發(fā)語言中都支持這種機制。

在實現(xiàn)中,assertion就是在程序中的一條語句,它對一個boolean表達式進行檢查,一個正

確程序必需保證這個boolean表達式的值為true;假如該值為false,說明程序已經(jīng)處于不正

確的狀態(tài)下,系統(tǒng)將給出警告或退出。一般來說,assertion用于保證程序最基本、關(guān)鍵的正確

性。assertion檢查通常在開發(fā)和測試時開啟。為了提高性能,在軟件發(fā)布后,assertion檢查

通常是關(guān)閉的

7、Strings=newString("xyz”);創(chuàng)建了幾個StringObject

答:兩個,一個字符對象,一個字符對象引用對象

8、Math.round(11.5)等於多少?Math.round(-11.5)等於多少

答:Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回與參數(shù)最接近

的長整數(shù),參數(shù)加1/2后求其floor

9、shortsi=1;si=si+1;有什么錯?shortsi=1;si+=1;有什么錯

答:shortsi=1;si=si+1;(sl+1運算結(jié)果是int型,須要強制轉(zhuǎn)換類型)shorts

1=1;si+=1;(可以正確編譯)

10、Java有沒有g(shù)oto

答:java中的保留字,現(xiàn)在沒有在java中運用

11、數(shù)組有沒有l(wèi)ength。這個方法?String有沒有l(wèi)ength。這個方法

答:數(shù)組沒有l(wèi)ength。這個方法,有l(wèi)ength的屬性。String有有l(wèi)ength。這個方法

12、Overload和Oveuide的區(qū)分。Overloaded的方法是否可以變更返回值的類型

答:方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding

是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。假如在

子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫(Overriding)。子類的

對象運用這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被"屏蔽”了。假如在

一個類中定義了多個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的

重載(Overloading)。Overloaded的方法是可以變更返回值的類型

13、Set里的元素是不能重復的,那么用什么方法來區(qū)分重復與否呢?是用==還是equals

()?它們有何區(qū)分

答:Set里的元素是不能重復的,那么用iterator。方法來區(qū)分重復與否。equals。是判讀兩個

Set是否相等

equals()和==方法確定引用值是否指向同一對象equals()在類中被覆蓋,為的是當兩

個分別的對象的內(nèi)容和類型相配的話,返回真值

14、給我一個你最常見到的runtimeexception

答:常見的運行時異樣有如下這些ArithmeticException,ArrayStoreException,BufferOve

rflowException,BufferUnderflowException,CannotRedoException,CannotUndoExcepti

on,ClassCastException,CMMException,ConcurrentModificationException,DOMExcep

tion,EmptyStackException,IllegalArgumentException,11legalMonitorStateExceptio

n,11legalPathStateException,IllegalStateException,ImagingOpException,TndexO

utOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuc

hElementException,NullPointerException,ProfileDataException,ProviderExceptio

n,RasterFormatException,SecurityException,SystemException,UndeclaredThrowab

leException,UnmodifiableSetException,UnsupportedOperationException

15、error和exception有什么區(qū)分

答:error表示復原不是不行能但很困難的狀況下的一種嚴峻問題。比如說內(nèi)存溢出。不行能希

望程序能處理這樣的狀況

exception表示一種設計或?qū)崿F(xiàn)問題。也就是說,它表示假如程序運行正常,從不會發(fā)生的

狀況

16、List,Set,Map是否繼承自Collection接口

答:List,Set是,Map不是

17、abstractclass和interface有什么區(qū)分

答:聲明方法的存在而不去實現(xiàn)它的類被叫做抽象類(abstractclass),它用于要創(chuàng)建一個體

現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實現(xiàn)該類的狀況。不能創(chuàng)建abstra

ct類的實例。然而可以創(chuàng)建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。

不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract類的子類為它們父類中的全部抽象方法供應實

現(xiàn),否則它們也是抽象類為。取而代之,在子類中實現(xiàn)該方法。知道其行為的其它類可以在類中

實現(xiàn)這些方法

接口(interface)是抽象類的變體。在接口中,全部方法都是抽象的。多繼承性可通過實現(xiàn)這

樣的接口而獲得。接口中的全部方法都是抽象的,沒有一個有程序體。接口只可以定義staticf

inal成員變量。接口的實現(xiàn)與子類相像,除了該實現(xiàn)類不能從接口定義中繼承行為。當類實現(xiàn)

特殊接口時,它定義(即將程序體賜予)全部這種接口的方法。然后,它可以在實現(xiàn)了該接口的

類的任何對象上調(diào)用接口的方法。由于有抽象類,它允許運用接口名作為引用變量的類型。通常

的動態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof運算符可以用來

確定某對象的類是否實現(xiàn)了接口

18、abstract的method是否可同時是static,是否可同時是native,是否可同時是syn

chronized

答:都不能

19、接口是否可繼承接口?抽象類是否可實現(xiàn)(implements)接口?抽象類是否可繼承實體

類(concreteclass)

答:接口可以繼承接口。抽象類可以實現(xiàn)(implements)接口,抽象類是否可繼承實體類,但前

提是實體類必需有明確的構(gòu)造函數(shù)

20、構(gòu)造器Constructor是否可被override

答:構(gòu)造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載OveHoadin

g

21、是否可以繼承String類

答:String類是final類故不行以繼承

22、try■里有一個return語句,那么緊跟在這個try后的finally{3?里的code會不會

被執(zhí)行,什么時候被執(zhí)行,在return前還是后

答:會執(zhí)行,在return前執(zhí)行

23、用最有效率的方法算出2乘以8等於幾

答:2vv3

24、兩個對象值相同(x.equals(y)==true),但卻可有不同的hashcode,這句話對

不對

答:不對,有相同的hashcode

25、當一個對象被當作參數(shù)傳遞到一個方法后,此方法可變更這個對象的屬性,并可返回變更

后的結(jié)果,那么這里原委是值傳遞還是引用傳遞

答:是值傳遞。Java編程語言只有值傳遞參數(shù)。當一個對象實例作為一個參數(shù)被傳遞到方法中

時,參數(shù)的值就是對該對象的引用。對象的內(nèi)容可以在被調(diào)用的方法中變更,但對象的引用是恒

久不會變更的

26、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上

答:witch(exprl)中,exprl是一個整數(shù)表達式。因此傳遞給switch和case語句的參數(shù)

應當是int、short、char或者byte。long,string都不能作用于swtich

27>ArrayList和Vector的區(qū)分,HashMap和Hashtable的區(qū)分

答:就ArrayList與Vector主要從二方面來說.

一.同步性:Vecto「是線程平安的,也就是說是同步的,而ArrayList是線程序擔憂全的,不是

同步的

二,數(shù)據(jù)增長:當須要增長時,Vector默認增長為原來一培,而ArrayList卻是原來的一半

就HashMap與HashTable主要從三方面來說。

一.歷史緣由:Hashtable是基于陳舊的Dictionary類的,HashMap是JavaL2引進的Map

接口的一個實現(xiàn)

二.同步性:Hashtable是線程平安的,也就是說是同步的,而HashMap是線程序擔憂全的,

不是同步的

三,值:只有HashMap可以讓你將空值作為一個表的條目的key或value

28、char型變量中能不能存貯一個中文漢字?為什么?

答:是能夠定義成為一個中文的,因為java中以unicode編碼,一個char占16個字節(jié),所

以放一個中文是沒問題的

29、GC是什么?為什么要有GC

答:GC是垃圾收集的意思(GabageCollection),內(nèi)存處理是編程人員簡潔出現(xiàn)問題的地方,

遺忘或者錯誤的內(nèi)存回收會導致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java供應的GC功能可以自動

監(jiān)測對象是否超過作用域從而達到自動回收內(nèi)存的目的,Java語言沒有供應釋放已支配內(nèi)存的

顯示操作方法。

30、floatfloatf=3.4是否正確?

答:不正確。精度不精確,應當用強制類型轉(zhuǎn)換,如下所示:floatf=(float)3.4

31、介紹JAVA中的CollectionFramework(包括如何寫自己的數(shù)據(jù)結(jié)構(gòu))?

答:CollectionFramework如下:

Collection

卜List

I|-LinkedList

I卜ArrayList

ILVector

ILStack

LSet

Map

FHashtable

[-HashMap

LWeakHashMap

Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(E

lements)

Map供應key至i」value的映射

32、抽象類與接口?

答:抽象類與接口都用于抽象,但是抽象類(JAVA中)可以有自己的部分實現(xiàn),而接口則完全是

一個標識(同時有多重繼承的功能)。

JAVA類實現(xiàn)序例化的方法是實現(xiàn)java.io.Serializable接口

Collection框架中實現(xiàn)比較要實現(xiàn)Comparable接口和Comparator接口

33>STRING與STRINGBUFFER的區(qū)分。

答:STRING的長度是不行變的,STRINGBUFFER的長度是可變的。假如你對字符串中的內(nèi)

容經(jīng)常進行操作,特殊是內(nèi)容要修改時,那么運用StringBuffer,假如最終須要String,那么

運用StringBuffer的toString。方法

34、談談final,finally,finalize的區(qū)分

答:final一修飾符(關(guān)鍵字)假如一個類被聲明為final,意味著它不能再派生出新的子類,不

能作為父類被繼承。因此一個類不能既被聲明為abstract的,又被聲明為final的。將變量或

方法聲明為final,可以保證它們在運用中不被變更。被聲明為final的變量必需在聲明時給定初

值,而在以后的引用中只能讀取,不行修改。被聲明為final的方法也同樣只能運用,不能重載

finally一再異樣處理時供應finally塊來執(zhí)行任何清除操作。假如拋出一個異樣,那么相匹配的

catch子句就會執(zhí)行,然后限制就會進入finally塊(假如有的話)

finalize一方法名。Java技術(shù)允許運用finalize。方法在垃圾收集器將對象從內(nèi)存中清除出去

之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調(diào)用

的。它是在Object類中定義的,因此全部的類都繼承了它。子類覆蓋finalize。方法以整理

系統(tǒng)資源或者執(zhí)行其他清理工作。finalize。方法是在垃圾收集器刪除對象之前對這個對象調(diào)用

35、面對對象的特征有哪些方面

答:主要有以下四方面:

1.抽象:

抽象就是忽視一個主題中與當前目標無關(guān)的那些方面,以便更充分地留意與當前目標有關(guān)的方

面。抽象并不打算了解全部問題,而只是選擇其中的一部分,短暫不用部分微小環(huán)節(jié)。抽象包括

兩個方面,一是過程抽象,二是數(shù)據(jù)抽象。

2.繼承:

繼承是一種聯(lián)結(jié)類的層次模型,并且允許和激勵類的重用,它供應了一種明確表述共性的方法。

對象的一個新類可以從現(xiàn)有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類

稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里

繼承方法和實例變量,并且類可以修改或增加新的方法使之更適合特殊的須要。

3.封裝:

封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的訪問只能通過已定義的界面。面對對象計算始于這個基

本概念,即現(xiàn)實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受愛惜的接

口訪問其他對象。

4.多態(tài)性:

多態(tài)性是指允許不同類的對象對同一消息作出響應。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多

態(tài)性語言具有靈敏、抽象、行為共享、代碼共享的優(yōu)勢,很好的解決了應用程序函數(shù)同名問題。

36、String是最基本的數(shù)據(jù)類型嗎

答:基本數(shù)據(jù)類型包括byte、int、char、long、float、double、boolean和short。

java.lang.String類是final類型的,因此不行以繼承這個類、不能修改這個類。為了提高效

率節(jié)約空間,我們應當用StringBuffer類

37、int和Integer有什么區(qū)分

答:Java供應兩種不同的類型:引用類型和原始類型(或內(nèi)置類型)。Int是java的原始數(shù)

據(jù)類型,Integer是java為int供應的封裝類。Java為每個原始類型供應了封裝類。

原始類型封裝類,booleanBoolean,charCharacter,byteByte,shortShort,intlnteger,longLong,

floatFloat,doubleDouble

引用類型和原始類型的行為完全不同,并且它們具有不同的語義。引用類型和原始類型具有不同

的特征和用法,它們包括:大小和速度問題,這種類型以哪種類型的數(shù)據(jù)結(jié)構(gòu)存儲,當引用類型

和原始類型用作某個類的實例數(shù)據(jù)時所指定的缺省值。對象引用實例變量的缺省值為null,而

原始類型實例變量的缺省值與它們的類型有關(guān)

38、運行時異樣與一般異樣有何異同

答:異樣表示程序運行過程中可能出現(xiàn)的非正常狀態(tài),運行時異樣表示虛擬機的通常操作中可能

遇到的異樣,是一種常見運行錯誤。java編譯器要求方法必需聲明拋出可能發(fā)生的非運行時異

樣,但是并不要求必需聲明拋出未被捕獲的運行時異樣。

39、說出ArrayList,Vector,LinkedList的存儲性能和特性

答:ArrayList和Vector都是運用數(shù)組方式存儲數(shù)據(jù),此數(shù)組元素數(shù)大于實際存儲的數(shù)據(jù)以便

增加和插入元素,它們都允許干脆按序號索引元素,但是插入元素要涉及數(shù)組元素移動等內(nèi)存操

作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于運用了synchronized方法(線程平安),通常

性能上較ArrayList差,而LinkedList運用雙向鏈表實現(xiàn)存儲,按序號索引數(shù)據(jù)須要進行前向

或后向遍歷,但是插入數(shù)據(jù)時只須要記錄本項的前后項即可,所以插入速度較快。

40、HashMap和Hashtable的區(qū)分

答:HashMap是Hashtable的輕量級實現(xiàn)(非線程平安的實現(xiàn)),他們都完成了Map接口,主要

區(qū)分在于HashMap允許空(null)鍵值(key),由于非線程平安,效率上可能高于Hashtable。

HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。

HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為con

tains方法簡潔讓人引起誤會。

Hashtable繼承自Dictionary類,而HashMap是Javal.2引進的Mapinterface的一個實現(xiàn)。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hasht

able時,不須要自己為它的方法實現(xiàn)同步,而HashMap就必需為之供應外同步。

Hashtable和HashMap接受的hash/rehash算法都或許一樣,所以性能不會有很大的差異。

41、heap和stack有什么區(qū)分

答:棧是一種線形集合,其添加和刪除元素的操作應在同一段完成。棧依據(jù)后進先出的方式進行

處理。堆是棧的一個組成元素

42、Java的接口和C++的虛類的相同和不同處

答:由于Java不支持多繼承,而有可能某個類或?qū)ο笠\用分別在幾個類或?qū)ο罄锩娴姆椒ɑ?/p>

屬性,現(xiàn)有的單繼承機制就不能滿足要求。與繼承相比,接口有更高的靈敏性,因為接口中沒有

任何實現(xiàn)代碼。當一個類實現(xiàn)了接口以后,該類要實現(xiàn)接口里面全部的方法和屬性,并且接口里

面的屬性在默認狀態(tài)下面都是publicstatic,全部方法默認狀況下是public.一個類可以實現(xiàn)

多個接口。

43、Java中的異樣處理機制的簡潔原理和應用

答:當JAVA程序違反了JAVA的語義規(guī)則時,JAVA虛擬機就會招發(fā)生的錯誤表示為一個異樣。

違反語義規(guī)則包括2種狀況。一種是JAVA類庫內(nèi)置的語義檢查。例如數(shù)組下標越界,會引發(fā)Ind

exOutOfBoundsException;訪問null的對象時會引發(fā)NullPointerException?另一種狀況就是J

AVA允許程序員擴展這種語義檢查,程序員可以創(chuàng)建自己的異樣,并自由選擇在何時用throw關(guān)

鍵字引發(fā)異樣。全部的異樣都是java.lang.Thowable的子類。

43、垃圾回收的優(yōu)點和原理。并考慮2種回收機制

答:Java語言中一個顯著的特點就是引入了垃圾回收機制,使C++程序員最頭疼的內(nèi)存管理的問

題迎刃而解,它使得Java程序員在編寫程序的時候不再須要考慮內(nèi)存管理。由于有個垃圾回收

機制,Java中的對象不再有"作用域”的概念,只有對象的引用才有"作用域”。垃圾回收可以有

效的防止內(nèi)存泄露,有效的運用可以運用的內(nèi)存。垃圾回收器通常是作為一個單獨的低級別的線

程運行,不行預知的狀況下對內(nèi)存堆中己經(jīng)死亡的或者長時間沒有運用的對象進行清楚和回收,

程序員不能實時的調(diào)用垃圾回收器對某個對象或全部對象進行垃圾回收?;厥諜C制有分代復制垃

圾回收和標記垃圾回收,增量垃圾回收。

44、你所知道的集合類都有哪些?主要方法?

答:最常用的集合類是List和Map.List的具體實現(xiàn)包括ArrayList和Vector,

它們是可變大小的列表,比較適合構(gòu)建、存儲和操作任何類型對象的元素列表。List適用于

按數(shù)值索引訪問元素的情形。

Map供應了一個更通用的元素存儲方法。Map集合類用于存儲元素對(稱作"鍵‘'和"值"),

其中每個鍵映射到一個值。

45、描述一下JVM加載class文件的原理機制?

答:JVM中類的裝載是由ClassLoader和它的子類來實現(xiàn)的,JavaClassLoader是一個重要的

Java運行時系統(tǒng)組件。它負責在運行時查找和裝入類文件的類。

46、排序都有哪幾種方法?請列舉

答:排序的方法有:插入排序(干脆插入排序、希爾排序),交換排序(冒泡排序、快速排序),

選擇排序(干脆選擇排序、堆排序),歸并排序,支配排序(箱排序、基數(shù)排序)

快速排序的偽代碼。

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

從a[0:n-1]中選擇一個元素作為midd1e,該元素為支點

把余下的元素分割為兩段left和right,使得1eft中的元素都小于等于支點,

而right中的元素都大于等于支點

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

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

所得結(jié)果為left+middle+right

47、JAVA語言如何進行異樣處理,關(guān)鍵字:throws,throw,try,catch,finally分別代表

什么意義?在try塊中可以拋出異樣嗎?

答:Java通過面對對象的方法進行異樣處理,把各種不同的異樣進行分類,并供應了良好的接

口。在Java中,每個異樣都是一個對象,它是Throwable類或其它子類的實例。當一個方法出

現(xiàn)異樣后便拋出一個異樣對象,該對象中包含有異樣信息,調(diào)用這個對象的方法可以捕獲到這個

異樣并進行處理。Java的異樣處理是通過5個關(guān)鍵詞來實現(xiàn)的:try、catch、throw、throws

和Cnally。一般狀況下是用try來執(zhí)行一段程序,假如出現(xiàn)異樣,系統(tǒng)會拋出(throws)一個

異樣,這時候你可以通過它的類型來捕獲(catch)它,或最終(finally)由缺省處理器來處理。

用try來指定一塊預防全部"異樣”的程序。緊跟在try程序后面,應包含一個catch子句來指定

你想要捕獲的〃異樣”的類型。

throw語句用來明確地拋出一個"異樣

throws用來標明一個成員函數(shù)可能拋出的各種"異樣”。

Finally為確保一段代碼不管發(fā)生什么''異樣”都被執(zhí)行一段代碼。

可以在一個成員函數(shù)調(diào)用的外面寫一個try語句,在這個成員函數(shù)內(nèi)部寫另一個try語句愛惜其

他代碼。每當遇到一個try語句,"異樣”的框架就放到堆棧上面,直到全部的try語句都完成。

假如下一級的try語句沒有對某種"異樣”進行處理,堆棧就會綻開,直到遇到有處理這種"異樣"

的try語句。

48、一個”.java"源文件中是否可以包括多個類(不是內(nèi)部類)?有什么限制?

答:可以。必需只有一個類名與文件名相同。

49、java中有幾種類型的流?JDK為每種類型的流供應了一些抽象類以供繼承,請說出他們

分別是哪些類?

答:字節(jié)流,字符流。字節(jié)流繼承于InputStreamOutputstream,字符流繼承于InputStream

ReaderOutputStreamWriter?在java,io包中還有許多其他的流,主要是為了提高性能和運用

便利。

50、java中會存在內(nèi)存泄漏嗎,請簡潔描述。

答:會。自己實現(xiàn)堆載的數(shù)據(jù)結(jié)構(gòu)時有可能會出現(xiàn)內(nèi)存泄露,可參看effectivejava.

51>java中實現(xiàn)多態(tài)的機制是什么?

答:方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding

是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。

52、垃圾回收器的基本原理是什么?垃圾回收器可以立即回收內(nèi)存嗎?有什么方法主動通知虛

擬機進行垃圾回收

答:對于GC來說,當程序員創(chuàng)建對象時,GC就起先監(jiān)控這個對象的地址、大小以及運用狀況。

通常,GC接受有向圖的方式記錄和管理堆(heap)中的全部對象。通過這種方式確定哪些對象是“

可達的”,哪些對象是"不行達的"。當GC確定一些對象為"不行達"時,GC就有責任回收這些內(nèi)

存空間??梢?。程序員可以手動執(zhí)行System.gc(),通知GC運行,但是Java語言規(guī)范并不保證

GC確定會執(zhí)行。

53、靜態(tài)變量和實例變量的區(qū)分?

答:statici=10;〃常量classAa;a.i=10;〃可變

54、什么是java序列化,如何實現(xiàn)java序列化?

答:序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內(nèi)容進行流化??梢詫?/p>

流化后的對象進行讀寫操作,也可將流化后的對象傳輸于網(wǎng)絡之間。序列化是為了解決在對對象

流進行讀寫操作時所引發(fā)的問題。

序列化的實現(xiàn):將須要被序列化的類實現(xiàn)Serializable接口,該接口沒有須要實現(xiàn)的方法,im

plementsSerializable只是為了標注該對象是可被序列化的,然后運用一個輸出流(如:File

Outputstream)來構(gòu)造一個ObjectOutpulStream(對象流)對象,接著,運用ObjectOulputSlrea

m對象的writeObject(Objectobj)方法就可以將參數(shù)為obj的對象寫出(即保存其狀態(tài)),要復

原的話則用輸入流。

55、是否可以從一個static方法內(nèi)部發(fā)出對非static方法的調(diào)用?

答:不行以,假如其中包含對象的method。;不能保證對象初始化.

56、寫clone。方法時,通常都有一行代碼,是什么?

答:Clone有缺省行為,super,clone。;他負責產(chǎn)生正確大小的空間,并逐位復制。

57、在JAVA中,如何跳出當前的多重嵌套循環(huán)?

答:用break;return方法。

58、List、Map、Set三個接口,存取元素時,各有什么特點?

答:List以特定次序來持有元素,可有重復元素。Set無法擁有重復元素,內(nèi)部排序。Map保

存key-value值,value可多值。

59、說出一些常用的類,包,接口,請各舉5個

答:常用的類:BufferedReaderBufferedWriterFileReaderFileWirterStrin

gInteger

常用的包:java,langjava,awtjava,iojava,utiljava,sql

常用的接口:RemoteListMapDocumentNodeList

線程編程方面

60、java中有幾種方法可以實現(xiàn)一個線程?用什么關(guān)鍵字修飾同步方法?stop。和suspend。

方法為何不舉薦運用?

答:有兩種實現(xiàn)方法,分別是繼承Thread類與實現(xiàn)Runnable接口

用synchronized關(guān)鍵字修飾同步方法

反對運用stop。,是因為它擔憂全。它會解除由線程獲得的全部鎖定,而且假如對象處于一種

不連貫狀態(tài),那么其他線程能在那種狀態(tài)下檢查和修改它們。結(jié)果很難檢查出真正的問題所在。

suspend。方法簡潔發(fā)生死鎖。調(diào)用suspend。的時候,目標線程會停下來,但卻照舊持有在這

之前獲得的鎖定。此時,其他任何線程都不能訪問鎖定的資源,除非被"掛起”的線程復原運行。

對任何線程來說,假如它們想復原目標線程,同時又試圖運用任何一個鎖定的資源,就會造成死

鎖。所以不應當運用suspend。,而應在自己的Thread類中置入一個標記,指出線程應當活動

還是掛起。若標記指出線程應當掛起,便用wait。命其進入等待狀態(tài)。若標記指出線程應當復

原,則用一個notify。重新啟動線程。

61、sleep。和wait。有什么區(qū)分?

答:sleep是線程類(Thread)的方法,導致此線程暫停執(zhí)行指定時間,給執(zhí)行機會給其他線程,

但是監(jiān)控狀態(tài)照舊保持,到時后會自動復原。調(diào)用sleep不會釋放對象鎖。

wait是Object類的方法,對此對象調(diào)用wait方法導致本線程放棄對象鎖,進入等待此對象的

等待鎖定池,只有針對此對象發(fā)出notify方法(或notifyAIl)后本線程才進入對象鎖定池打

算獲得對象鎖進入運行狀態(tài)。

62、同步和異步有何異同,在什么狀況下分別運用他們?舉例說明。

答:假如數(shù)據(jù)將在線程間共享。例如正在寫的數(shù)據(jù)以后可能被另一個線程讀到,或者正在讀的數(shù)

據(jù)可能己經(jīng)被另一個線程寫過了,那么這些數(shù)據(jù)就是共享數(shù)據(jù),必需進行同步存取。

當應用程序在對象上調(diào)用了一個須要花費很長時間來執(zhí)行的方法,并且不希望讓程序等待方法的

返回時,就應當運用異步編程,在許多狀況下接受異步途徑往往更有效率。

63、啟動一個線程是用run()還是start。?

答:啟動一個線程是調(diào)用start。方法,使線程所代表的虛擬處理機處于可運行狀態(tài),這意味著

它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會立刻運行。run()方法可以產(chǎn)生必需退出的標

記來停止一個線程。

64、當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其

它方法?

答:不能,一個對象的一個synchronized方法只能由一個線程訪問。

65、請說出你所知道的線程同步的方法。

答:wait。:使一個線程處于等待狀態(tài),并且釋放所持有的對象的lock。

sleep。:使一個正在運行的線程處于睡眠狀態(tài),是一個靜態(tài)方法,調(diào)用此方法要捕獲Interrupt

edException異樣。

notify。:喚醒一個處于等待狀態(tài)的線程,留意的是在調(diào)用此方法的時候,并不能精確的喚醒某

一個等待狀態(tài)的線程,而是由JVM確定喚醒哪個線程,而且不是按優(yōu)先級。

AllnotityO:喚醒全部處入等待狀態(tài)的線程,留意并不是給全部喚醒線程一個對象的鎖,而是讓

它們競爭。

66、多線程有幾種實現(xiàn)方法,都是什么?同步有幾種實現(xiàn)方法,都是什么?

答:多線程有兩種實現(xiàn)方法,分別是繼承Thread類與實現(xiàn)Runnable接口

同步的實現(xiàn)方面有兩種,分別是synchronized,wait與notify

67、線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之間的關(guān)系

答:線程指在程序執(zhí)行過程中,能夠執(zhí)行程序代碼的一個執(zhí)行單位,每個程序至少都有一個線程,

也就是程序本身。

Java中的線程有四種狀態(tài)分別是:運行、就緒、掛起、結(jié)束

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

答:主耍相同點:Lock能完成synchronized所實現(xiàn)的全部功能

主要不同點:Lock有比synchronized更精確的線程語義和更好的性能。synchronized會自動釋

放鎖,而Lock確定要求程序員手工釋放,并且必需在finally從句中釋放。

Jsp方面

69、forward和redirect的區(qū)分

答:forward是服務器請求資源,服務器干脆訪問目標地址的URL,把那個URL的響應內(nèi)容讀取

過來,然后把這些內(nèi)容再發(fā)給閱讀器,閱讀器根本不知道服務器發(fā)送的內(nèi)容是從哪兒來的,所以

它的地址欄中還是原來的地址。

redirect就是服務端依據(jù)邏輯,發(fā)送一個狀態(tài)碼,告知閱讀器重新去請求那個地址,一

般來說閱讀器會用剛才請求的全部參數(shù)重新請求,所以session,request參數(shù)都可以獲得。

70、jsp有哪些內(nèi)置對象?作用分別是什么?

答:JSP共有以下9種基本內(nèi)置組件(可與ASP的6種內(nèi)部組件相對應):

request用戶端請求,此請求會包含來自GET/POST請求的參數(shù)

response網(wǎng)頁傳回用戶端的回應

pageContext網(wǎng)頁的屬性是在這里管理

session與請求有關(guān)的會話期

applicationservlet正在執(zhí)行的內(nèi)容

out用來傳送回應的輸出

configservlet的構(gòu)架部件

pageJSP網(wǎng)頁本身

exception針對錯誤網(wǎng)頁,未捕獲的例外

71、jsp有哪些動作?作用分別是什么?

答:JSP共有以下6種基本動作

jsp:include:在頁面被請求的時候引入一個文件。

jsp:useBean:找尋或者實例化一個JavaBean。

jsp:setProperty:設置JavaBean的屬性。

jsp:getProperty:輸出某個JavaBean的屬性。

jsp:forward:把請求轉(zhuǎn)到一個新的頁面。

jsp:plugin:依據(jù)閱讀器類型為Java插件生成OBJECT或EMBED標記

72、JSP中動態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)分?

答:動態(tài)INCLUDE用jsp:include動作實現(xiàn)

<jsp:includepage="included.jsp"flush="true"/>它總是會檢查所含文件中的變更,

適合用于包含動態(tài)頁面,并且可以帶參數(shù)

靜態(tài)INCLUDE用include偽碼實現(xiàn),定不會檢查所含文件的變更,適用于包含靜態(tài)頁面

<%@includefile="included.htm"%>

73、兩種跳轉(zhuǎn)方式分別是什么?有什么區(qū)分?

答:有兩種,分別為:

<jsp:includepage="included.jsp"flush="true">

<jsp:forwardpage="nextpage.jsp"/>

前者頁面不會轉(zhuǎn)向include所指的頁面,只是顯示該頁的結(jié)果,主頁面還是原來的頁面。執(zhí)行

完后還會回來,相當于函數(shù)調(diào)用。并且可以帶參數(shù).后者完全轉(zhuǎn)向新頁面,不會再回來。相當于

goto語句。

74、JSP的內(nèi)置對象及方法。

答:request表示ServletRequest對象。它包含了有關(guān)閱讀器請求的信息,并且供應了幾個

用于獲得cookie,header,和session數(shù)據(jù)的有用的方法。

response表示ServletResponse對象,并供應了幾個用于設置送回閱讀器的響應的方法

(如cookies,頭信息等)

out對象是javax.jsp.JspWHter的一個實例,并供應了幾個方法使你能用于向閱讀器回送輸出

結(jié)果。

pageContext表示一個javax.servlet.jsp.PageContext對象。它是用于便利存取各種范圍的名

字空間、servlet相關(guān)的對象的API,并且包裝了通用的servlet相關(guān)功能的方法。

session表示一個請求的javax.servlet.Session對象。Session可以存貯用戶的狀態(tài)

信息

applicator)表示一個javax.servle.ServletContext對象。這有助于查找有關(guān)servlet引擎和ser

vlet環(huán)境的信息

coring表示一個javax.servlet.ServletConfig對象。該對象用于存取servlet實例的初始化參數(shù)。

page表示從該頁面產(chǎn)生的一個servlet實例

Servlet方面

75、說一說Servlet的生命周期?

答:servlet有良好的生存期的定義,包括加載和實例化、初始化、處理請求以及服務結(jié)束。這

個生存期由javax.servlet.Servlet接口的init,service和destroy方法表達。Servlet被服務

器實例化后,容器運行其init方法,請求到達時運行其service方法,service方法自動派遣運行

與請求對應的doXXX方法(doGet,doPost)等,當服務器確定將實例銷毀的時候調(diào)用其dest

roy方法。

與cgi的區(qū)分在于servlet處于服務器進程中,它通過多線程方式運行其service方法,一個實例

可以服務于多個請求,并且其實例一般不會銷毀,而CGI對每個請求都產(chǎn)生新的進程,服務完

成后就銷毀,所以效率上低于servlet。

76、JAVASERVLETAPI中forward。與redirect。的區(qū)分?

答:前者僅是容器中限制權(quán)的轉(zhuǎn)向,在客戶端閱讀器地址欄中不會顯示出轉(zhuǎn)向后的地址;后者則

是完全的跳轉(zhuǎn),閱讀器將會得到跳轉(zhuǎn)的地址,并重新發(fā)送請求鏈接。這樣,從閱讀器的地址欄中

可以看到跳轉(zhuǎn)后的鏈接地址。所以,前者更加高效,在前者可以滿足須要時,盡量運用forwar

d()方法,并且,這樣也有助于隱藏實際的鏈接。在有些狀況下,比如,須要跳轉(zhuǎn)到一個其它服

務器上的資源,則必需運用sendRedirect。方法。

77、Servlet的基本架構(gòu)

答:

publicclassServletNameextendsServlet{

publicvoiddoPost(ServletRequestrequest,ServletResponseresponse)

throws

ServletException,lOException{

>

publicvoiddoGet(ServletRequestrequest,ServletResponseresponse)

throws

ServletException,lOException{

}

78、什么狀況下調(diào)用doGet()和doPost。?

答:Jsp頁面中的form標簽里的method屬性為get時調(diào)用doGet。,為post時調(diào)用doPost()。

79、servlet的生命周期

答:web容器加載servlet,生命周期起先。通過調(diào)用servlet的irdt()方法進行servlet的初始化。

通過調(diào)用service。方法實現(xiàn),依據(jù)請求的不同調(diào)用不同的do***()方法。結(jié)束服務,web容器調(diào)

用servlet的destroy。方法。

80、如何現(xiàn)實servlet的單線程模式

答:<%@pageisThreadSafe="false"%>

81、頁面間對象傳遞的方法

答:request,session,application,cookie等

82、JSP和Servlet有哪些相同點和不同點,他們之間的聯(lián)系是什么?

答:JSP是Servlet技術(shù)的擴展,本質(zhì)上是Servlet的簡易方式,更強調(diào)應用的外表表達。JSP

編譯后是"類servlet"oServlet和JSP最主要的不同點在于,Servlet的應用邏輯是在Java文件

中,并且完全從表示層中的HTML里分別開來。而JSP的狀況是Java和HTML可以組合成一

個擴展名為.jsp的文件。JSP側(cè)重于視圖,Servlet主要用于限制邏輯。

83、四種會話跟蹤技術(shù)

答:會話作用域ServletsJSP頁面描述

page否是代表與一個頁面相關(guān)的對象和屬性。一個頁面由一個編譯好的Javaservlet類(可以

帶有任何的include指令,但是沒有include動作)表示。這既包括servlet又包括被編譯成ser

vlet的JSP頁面

request是是代表與Web客戶機發(fā)出的一個請求相關(guān)的對象和屬性。一個請求可能跨越多個頁

面,涉及多個Web組件(由于forward指令和include動作的關(guān)系)

session是是代表與用于某個Web客戶機的一個用戶體驗相關(guān)的對象和屬性。一個Web會話可

以也經(jīng)常會跨越多個客戶機請求

application是是代表與整個Web應用程序相關(guān)的對象和屬性。這實質(zhì)上是跨越整個Web應用

程序,包括多個頁面、請求和會話的一個全局作用域

84、Request對象的主要方法

答:

setAttribute(Stringname,Object):設置名字為name的request的參數(shù)值

getAttribute(Stringname):返回由name指定的屬性值

getAttributeNames():返回request對象全部屬性的名字集合,結(jié)果是一個枚舉的實例

getCookies():返回客戶端的全部Cookie對象,結(jié)果是一個Cookie數(shù)組

getCharacterEncoding():返回請求中的字符編碼方式

getContentLength():返回請求的Body的長度

getHeader(Stringname):獲得協(xié)議定義的文件頭信息

getHeaders(Stringname):返回指定名字的requestHeader的全部值,結(jié)果是一個枚舉的實例

getHeaderNames():返回所以requestHeader的名字,結(jié)果是一個枚舉的實例

getlnputStream():返回請求的輸入流,用于獲得請求中的數(shù)據(jù)

getMethod():獲得客戶端向服務器端傳送數(shù)據(jù)的方法

getParameter(Stringname):獲得客戶端傳送給服務器端的有name指定的參數(shù)值

getParameterNamesO:獲得客戶端傳送給服務器端的全部參數(shù)的名字,結(jié)果是一個枚舉的實例

getParameterValues(Stringname):獲得有name指定的參數(shù)的全部值

getProtocol():獲得客戶端向服務器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱

getQueryStringO:獲得查詢字符串

getRequestURI():獲得發(fā)出請求字符串的客戶端地址

getRemoteAddr():獲得客戶端的IP地址

getRemoteHost():獲得客戶端的名字

getSession([Booleancreate]):返回和請求相關(guān)Session

getServerName():獲得服務器的名字

getServletPath():獲得客戶端所請求的腳本文件的路徑

getServerPort():獲得服務器的端口號

removeAttribute(Stringname):刪除請求中的一個屬性

85、我們在web應用開發(fā)過程中經(jīng)常遇到輸出某種編碼的字符,如is。8859T等,如何輸

出一個某種編碼的字符串?

答:

PublicStringtranslate(Stringstr){

StringtempStr=

try{

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

tempStr=tempStr.trim();

)

catch(Exceptione){

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

)

returntempStr;

)

86、Servlet執(zhí)行時一般實現(xiàn)哪幾個方法?

答:

publicvoidinit(ServletConfigconfig)

publicServletConfiggetServletConfig()

publicStringgetServletlnfo()

publicvoidservice(ServletRequestrequest,ServletResponseresponse)

publicvoiddestroy()

Jdbc、Jdo方面

87、Class.forName的作用?為什么要用?

答:調(diào)用該訪問返回一個以字符串指定類名的類的對象。

88、Jdo是什么?

答:JDO是Java對象許久化的新的規(guī)范,為javadataobject的簡稱,也是一個用于存取某

種數(shù)據(jù)倉庫中的對象的標準化API。JDO供應了透亮的對象存儲,因此對開發(fā)人員來說,存儲

數(shù)據(jù)對象完全不須要額外的代碼(如JDBCAPI的運用)。這些繁瑣的例行工作已經(jīng)轉(zhuǎn)移到J

DO產(chǎn)品供應商身上,使開發(fā)人員解脫出來,從而集中時間和精力在業(yè)務邏輯上。另外,JDO

很靈敏,因為它可以在任何數(shù)據(jù)底層上運行。JDBC只是面對關(guān)系數(shù)據(jù)庫(RDBMS)JDO更通

用,供應到任何數(shù)據(jù)底層的存儲功能,比如關(guān)系數(shù)據(jù)庫、文件、XML以及對象數(shù)據(jù)庫(ODBM

S)等等,使得應用可移植性更強。

89、說出數(shù)據(jù)連接池的工作機制是什么?

答:J2EE服務器啟動時會建立確定數(shù)量的池連接,并始終維持不少于此數(shù)目的池連接。客戶端

程序須要連接時,池驅(qū)動程序會返回一個未運用的池連接并將其表記為忙。假如當前沒有空閑連

接,池驅(qū)動程序就新建確定數(shù)量的連接,新建連接的數(shù)量有配置參數(shù)確定。當運用的池連接調(diào)用

完成后,池驅(qū)動程序?qū)⒋诉B接表記為空閑,其他調(diào)用就可以運用這個連接。

90、Jdo是什么?

答:JDO是Java對象許久化的新的規(guī)范,為javadataobject的簡稱,也是一個用于存取某種數(shù)

據(jù)倉庫中的對象的標準化API。JDO供應了透亮的對象存儲,因此對開發(fā)人員來說,存儲數(shù)據(jù)

對象完全不須要額外的代碼(如JDBCAPI的運用)。這些繁瑣的例行工作己經(jīng)轉(zhuǎn)移到JDO產(chǎn)

品供應商身上,使開發(fā)人員解脫出來,從而集中時間和精力在業(yè)務邏輯上。另外,JDO很靈敏,

因為它可以在任何數(shù)據(jù)底層上運行。JDBC只是面對關(guān)系數(shù)據(jù)庫(RDBMS)JDO更通用,供應

到任何數(shù)據(jù)底層的存儲功能,比如關(guān)系數(shù)據(jù)庫、文件、XML以及對象數(shù)據(jù)庫(ODBMS)等等,

使得應用可移植性更強。

Xml方面

91、xml有哪些解析技術(shù)?區(qū)分是什么?

答:有DOM,SAX,STAX等

DOM:處理大型文件時其性能下降的特殊厲害。這個問題是由D0M的樹結(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的依次訪問

STAXStreamingAPIforXML(StAX)

92、你在項目中用到了xml技術(shù)的哪些方面?如何實現(xiàn)的?

答:用到了數(shù)據(jù)存貯,信息配置兩方而。在做數(shù)據(jù)交換平臺時,將不能數(shù)據(jù)源的數(shù)據(jù)組裝成XM

L文件,然后將XML文件壓縮打包加密后通過網(wǎng)絡傳送給接收者,接收解密與解壓縮后再同X

ML文件中還原相關(guān)信息進行處理。在做軟件配置時,利用XML可以很便利的進行,軟件的各

種配置參數(shù)都存貯在XML文件中。

93、XML文檔定義有幾種形式?它們之間有何本質(zhì)區(qū)分?解析XML文檔有哪幾種方式?

答:a:兩種形式dtdschema,b:本質(zhì)區(qū)分:schema本身是xml的,可以被XML解析器解析(這

也是從DTD上發(fā)展schema的根本目的),c:有DOM,SAX,STAX等

DOM:處理大型文件時其性能下降的特殊厲害。這個問題是由D0M的樹結(jié)構(gòu)所造成的,這種

結(jié)構(gòu)占用的內(nèi)存較多,而且D0M必需在解析文件之前把整個文檔裝入內(nèi)存,適合對XML的隨機

訪問

SAX:不現(xiàn)于DOM,SAX是事務驅(qū)動型的XML解析方式。它依次讀取XML文件,不須要一次全

部裝載整個文件。當遇到像文件開頭,文檔結(jié)束,或者標簽開頭與標簽結(jié)束時,它會觸發(fā)一個事

務,用戶通過在其回調(diào)事務中寫入處理代碼來處理XML文件,適合對XML的依次訪問

STAXStreamingAPIforXML(StAX)

EJB方面

94、EJB2.0有哪些內(nèi)容?分別用在什么場合?EJB2.0和EJB1.1的區(qū)分?

答:規(guī)范內(nèi)容包括Bean供應者,應用程序裝配者,EJB容器,EJB配置工具,EJB服務供應

者,系統(tǒng)管理員。這里面,EJB容器是EJB之所以能夠運行的核心。EJB容器管理著EJB的創(chuàng)

建,撤消,激活,去活,與數(shù)據(jù)庫的連接等等重要的核心工作。JSP,Servlet,EJBJNDI,JDBC,

JMS…

95>EJB與JAVABEAN的區(qū)分?

答:JavaBean是可復用的組件,對JavaBean并沒有嚴格的規(guī)范,理論上講,任何一個〕

ava類都可以是一個Bean。但通常狀況下,由于JavaBean是被容器所創(chuàng)建(如Tomcat)

的,所以JavaBean應具有一個無參的構(gòu)造器,另外,通常JavaBean還要實現(xiàn)Serializab

Ie接口用于實現(xiàn)Bean的許久性。JavaBean事實上相當于微軟COM模型中的本地進程內(nèi)C

0M組件,它是不能被跨進程訪問的。EnterpriseJavaBean相當于DCOM,即分布式組件。

它是基于Java的遠程方法調(diào)用(RMD技術(shù)的,所以EJB可以被遠程訪問(跨進程、跨計算機)。

但EJB必需被布署在諸如Webspere、WebLogic這樣的容器中,EJB客戶從不干脆訪問真正

的EJB組件,而是通過其容器訪問。日B容器是EJB組件的代理,EJB組件由容器所創(chuàng)建和管

理??蛻敉ㄟ^容器來訪問真正的EJB組件。

96、EJB是基于哪些技術(shù)實現(xiàn)的?并說出SessionBean和EntityBean的區(qū)分,Statef

ulBean和StatelessBean的區(qū)分。

答:EJB包括SessionBean、EntityBean^MessageDrivenBean,基于JNDI、RMLJAT

等技術(shù)實現(xiàn)。

SessionBean在J2EE應用程序中被用來完成一些服務器端的業(yè)務操作,例如訪問數(shù)據(jù)庫、調(diào)

用其他EJB組件。EntityBean被用來代表應用系統(tǒng)中用到的數(shù)據(jù)。

對于客戶機,SessionBean是一種非許久性對象,它實現(xiàn)某些在服務器上運行的業(yè)務邏輯。

對于客戶機,EnMtyBean是一種許久性對象,它代表一個存儲在許久性存儲器中的實體的對象

視圖,或是一個由現(xiàn)有企業(yè)應用程序?qū)崿F(xiàn)的實體。

SessionBean還可以再細分為StatefulSessionBean與StatelessSessionBean,這兩種的S

essionBean都可以將系統(tǒng)邏輯放在method之中執(zhí)行,不同的是StatefulSessionBean可以記

錄呼叫者的狀態(tài),因此通常來說,一個運用者會有一?個相對應的StatefulSessionBean的實體。

StatelessSessionBean雖然也是邏輯組件,但是他卻不負責記錄運用者狀態(tài),也就是說當運用

者呼叫StatelessSessionBean的時候,EJBContainer并不會找尋特定的StatelessSessionB

ean的實體來執(zhí)行這個method?換言之,很可能數(shù)個運用者在執(zhí)行某個StatelessSessionBe

an的methods時,會是同一個Bean的Instance在執(zhí)行。從內(nèi)存方面來看,StatefulSessionB

ean與StatelessSessionBean比較,StatefulSessionBean會消耗J2EEServer較多的內(nèi)

存,然而StatefulSessionBean的優(yōu)勢卻在于他可以維持運用者的狀態(tài)。

97、EJB與JAVABEAN的區(qū)分?

答:JavaBean是可復用的組件,對JavaBean并沒有嚴格的規(guī)范,理論上講,任何一個Java

類都可以是一個Bean。但通常狀況下,由于JavaBean是被容器所創(chuàng)建(如Tomcat)的,所

以JavaBean應具有一個無參的構(gòu)造器,另外,通常JavaBean還要實現(xiàn)Serializable接口用

于實現(xiàn)Bean的許久性。JavaBean事實上相當于微軟COM模型中的本地進程內(nèi)COM組件,

它是不能被跨進程訪問的。EnterpriseJavaBean相當于DCOM,即分布式組件。它是基于Ja

va的遠程方法調(diào)用(RMI)技術(shù)的,所以EJB可以被遠程訪問(跨進程、跨計算機)。但EJB

必需被布署在諸如Webspere.WebLogic這樣的容器中,EJB客戶從不干脆訪問真正的EJB組

件,而是通過其容器訪問。EJB容器是EJB組件的代理,EJB組件由容器所創(chuàng)建和管理??蛻?/p>

通過容器來訪問真正的EJB組件。

EJB包括(SessionBean,EntityBean)說出他們的生命周期,及如何管理事務的?

SessionBean:StatelessSessionBean的生命周期是由容器確定的,當客戶機發(fā)出請求要建立

一個Bean的實例時,EJB容器不愿定要創(chuàng)建一個新的Bean的實例供客戶機調(diào)用,而是隨意找

溫馨提示

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

最新文檔

評論

0/150

提交評論