![Java程序員面試分類模擬18_第1頁](http://file4.renrendoc.com/view5/M00/2F/1E/wKhkGGZb9AmAerzdAANIoOg3cIw311.jpg)
![Java程序員面試分類模擬18_第2頁](http://file4.renrendoc.com/view5/M00/2F/1E/wKhkGGZb9AmAerzdAANIoOg3cIw3112.jpg)
![Java程序員面試分類模擬18_第3頁](http://file4.renrendoc.com/view5/M00/2F/1E/wKhkGGZb9AmAerzdAANIoOg3cIw3113.jpg)
![Java程序員面試分類模擬18_第4頁](http://file4.renrendoc.com/view5/M00/2F/1E/wKhkGGZb9AmAerzdAANIoOg3cIw3114.jpg)
![Java程序員面試分類模擬18_第5頁](http://file4.renrendoc.com/view5/M00/2F/1E/wKhkGGZb9AmAerzdAANIoOg3cIw3115.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Java程序員面試分類模擬18一、單項選擇題1.
下列關(guān)于進程的描述中,不正確的是______。A.進程在退出時會自動關(guān)閉自己打開的所有文件B.進程在退出時會自動關(guān)閉自己打開的網(wǎng)絡(luò)鏈接C.進程在退出(江南博哥)時會自動銷毀自己創(chuàng)建的所有線程D.進程在退出時會自動銷毀自己打開的共享內(nèi)存正確答案:D[解析]進程是一個具有一定獨立功能的程序關(guān)于某個數(shù)據(jù)集合的一次運行活動。它是操作系統(tǒng)動態(tài)執(zhí)行的基本單元,在傳統(tǒng)的操作系統(tǒng)中,進程既是基本的分配單元,也是基本的執(zhí)行單元。進程開啟的線程都僅僅屬于本進程,所以,進程在退出時,會自動關(guān)閉進程打開的文件、自己打開的網(wǎng)絡(luò),同時銷毀自己創(chuàng)建的所有線程。但是,由于共享內(nèi)存是公用的,一旦被銷毀了,會對其他正在使用這段內(nèi)存的進程造成破壞,所以,進程在退出時不會自動銷毀自己打開的共享內(nèi)存。所以,選項D錯誤,而選項A、選項B、選項C都是正確的。
2.
鏈表要求元素的存儲地址______。A.必須連續(xù)B.部分連續(xù)C.必須不連續(xù)D.連續(xù)與否均可正確答案:D[解析]鏈表是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。鏈表由一系列結(jié)點(鏈表中每一個元素稱為結(jié)點)組成,結(jié)點可以在運行時動態(tài)生成。每個結(jié)點包括兩個部分:一個是存儲數(shù)據(jù)元素的數(shù)據(jù)域,另一個是存儲下一個結(jié)點地址的指針域。由此可見,可以通過結(jié)點的指針域找到下一個結(jié)點,存儲地址是否連續(xù)并不重要。所以,選項A、選項B和選項C錯誤,選項D正確。
需要注意的是,數(shù)組與鏈表不同,對數(shù)組的訪問是通過數(shù)組的下標來實現(xiàn)的,所以,對于數(shù)組而言,存儲地址必須是連續(xù)的。
所以,本題的答案為D。
3.
在進程調(diào)度算法中,下面算法中,適用于運行時間可以預(yù)知的批處理調(diào)度算法是______。A.最短作業(yè)優(yōu)先B.先來先服務(wù)C.優(yōu)先級調(diào)度D.時間片輪轉(zhuǎn)調(diào)度正確答案:A[解析]對于選項A,最短作業(yè)優(yōu)先(ShortestJobFirst,SJF)是對FCFS算法的改進,其目標是減少平均周轉(zhuǎn)時間。其優(yōu)點是相比FCFS(FirstComeFirstServed,先來先服務(wù))改善了平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間,縮短了作業(yè)的等待時間,同時,提高了系統(tǒng)的吞吐量。但缺點就是對長作業(yè)非常不利,可能長時間得不到執(zhí)行;未能依據(jù)作業(yè)的緊迫程度來劃分執(zhí)行的優(yōu)先級;難以準確估計作業(yè)(進程)的執(zhí)行時間,從而影響調(diào)度性能。最短作業(yè)優(yōu)先是一種適用于運行時間可以預(yù)知的非搶占式的批處理調(diào)度算法。所以,選項A正確。
對于選項B,先來先服務(wù)(FirstComeFirstSerred,F(xiàn)CFS)是最簡單的調(diào)度算法,按先后順序進行調(diào)度;適用于長作業(yè),而不利于短作業(yè);有利于CPU繁忙的作業(yè),而不利于I/O繁忙的作業(yè)。所以,選項B錯誤。
對于選項C,優(yōu)先級算法(PriorityScheduling)是多級隊列算法的改進,平衡了各進程對響應(yīng)時間的要求。適用于作業(yè)調(diào)度和進程調(diào)度,可分成搶先式和非搶先式。所以,選項C錯誤。
對于選項D,輪轉(zhuǎn)法(RoundRobin)是讓每個進程在就緒隊列中的等待時間與享受服務(wù)的時間成正比例。所以,選項D錯誤。
所以,本題的答案為A。
4.
以下是合法的byte類型的數(shù)據(jù)的是______。A.-129B.127C.128D.(int)-130正確答案:B[解析]在Java語言中,byte只占了一個字節(jié)(8位),它的取值范圍為[-128,127],因此,只有選項B是合法的,byte的包裝類為Byte,也可以通過下面的代碼來查看byte的最大值和最小值:System.out.println(Byte.MAX_VALUE);System.out.println(Byte.MIN_VALUE);
5.
下面屬于面向字符的輸入流的是______。A.BufferedWriterB.ObjectInputStreamC.FileInputStreamD.InputStreamReader正確答案:D[解析]在Java語言中,輸入和輸出都被稱為抽象的流,流可以看作是一組有序的字節(jié)集合,即數(shù)據(jù)在兩個設(shè)備之間的傳輸。
流的本質(zhì)是數(shù)據(jù)傳輸,根據(jù)處理數(shù)據(jù)類型的不同,流可以分為兩大類:字節(jié)流和字符流。其中,字節(jié)流以字節(jié)(8bit)為單位,包含兩個抽象類:InputStream(輸入流)和OutputStream(輸出流)。字符流以字符(16bit)為單位,根據(jù)碼表映射字符,一次可以讀多個字節(jié),它包含兩個抽象類:Reader(輸入流)和Writer(輸出流)。其中,字節(jié)流和字符流最主要的區(qū)別為:字節(jié)流在處理輸入輸出的時候不會用到緩存,而字符流用到了緩存。
對于選項A,Writer代表輸出流。所以,選項A錯誤。
對于選項B和選項C,Stream代表的是字節(jié)流。所以,選項B和選項C錯誤。
對于選項D,InputStreamReader表示的是輸入流。所以,選項D正確。
6.
下列關(guān)于地址轉(zhuǎn)換的描述中,錯誤的是______。A.地址轉(zhuǎn)換解決了因特網(wǎng)地址短缺所面臨的問題B.地址轉(zhuǎn)換實現(xiàn)了對用戶透明的網(wǎng)絡(luò)外部地址的分配C.使用地址轉(zhuǎn)換后,對IP包加長、快速轉(zhuǎn)發(fā)不會造成什么影響D.地址轉(zhuǎn)換為內(nèi)部主機提供了一定的“隱私”正確答案:B[解析]對于選項A,隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,IP地址緊缺已經(jīng)是一個非常突出的問題,網(wǎng)絡(luò)地址轉(zhuǎn)換正是為了解決這個問題而出現(xiàn)的,網(wǎng)絡(luò)地址轉(zhuǎn)換的作用是把內(nèi)網(wǎng)的私有地址轉(zhuǎn)化成外網(wǎng)的公有地址,使得內(nèi)部網(wǎng)絡(luò)上的(被設(shè)置為私有IP地址的)主機可以訪問Internet。當大量的內(nèi)部主機只能使用少量的合法的外部地址,就可以使用NAT(NetworkAddressTranslation,網(wǎng)絡(luò)地址轉(zhuǎn)換)把內(nèi)部地址轉(zhuǎn)化成外部地址。所以,選項A正確。
對于選項B,地址轉(zhuǎn)換實現(xiàn)了對用戶透明的網(wǎng)絡(luò)內(nèi)部地址的分配,而不是外部。所以,選項B錯誤。
對于選項C,地址轉(zhuǎn)換只會對內(nèi)網(wǎng)與公網(wǎng)地址進行映射,不會影響其他功能。所以,選項C正確。
對于選項D,由于網(wǎng)絡(luò)內(nèi)部計算機在訪問Internet的時候都會被映射為一個公網(wǎng)地址,因此,并沒有把計算機實際的地址暴露在Internet中,所以,提供了一定的“隱私”。所以,選項D正確。
7.
有如下代碼:publicclassTest{staticinti;publicinttest(){i++;returni;}publicstaticvoidmain(Stringargs[]){Testtest=newTest();test.test();System.out.println(newTest().test());}}
編譯運行后,輸出結(jié)果是______。A.0B.1C.2D.3正確答案:C[解析]被關(guān)鍵字static修飾的屬性表示這個屬性是類的屬性,是所有對象共享的,這個類中定義了一個類的屬性i(這個類的屬性會被默認初始化為0)。在main方法中,首先實例化了一個對象,并調(diào)用了test方法,當調(diào)用結(jié)束后,變量i的值變?yōu)?,接著在System.out.println語句內(nèi)又創(chuàng)建了一個對象,并調(diào)用了test方法,由于i是所有對象共享的,因此,等到調(diào)用結(jié)束后,i的值由1變成2,故返回值為2,輸出結(jié)果為2。所以,選項C正確。
8.
已知一棵二叉樹的前序遍歷結(jié)果是ACDEFHGB,中序遍歷結(jié)果是DECALHFBG,那么該二叉樹的后序遍歷的結(jié)果為______。A.HGFEDCBAB.EDCHBGFAC.BGFHEDCAD.EDCBGHFA正確答案:B
9.
圖的廣度優(yōu)先搜索算法需使用的輔助數(shù)據(jù)結(jié)構(gòu)為______。A.三元組B.隊列C.二叉樹D.棧正確答案:B[解析]圖的廣度優(yōu)先搜索算法需使用的輔助數(shù)據(jù)結(jié)構(gòu)為隊列,圖的深度優(yōu)先搜索算法需使用的輔助數(shù)據(jù)結(jié)構(gòu)為棧。
什么是廣度優(yōu)先搜索呢?當一個結(jié)點被加入隊列時,要標記為已遍歷,遍歷過程中,對于隊列第一個元素,遍歷其所有能夠一步達到的結(jié)點;如果是標記未遍歷的,將其加入隊列,從第一個元素出發(fā)所有能一步直接達到的結(jié)點遍歷結(jié)束后將這個元素出列。廣度優(yōu)先則需要保證先訪問頂點的未訪問鄰接點先訪問,恰好就是先進先出。整個過程也可以看作一個倒立的樹形:
1)把根結(jié)點放到隊列的末尾。
2)每次從隊列的頭部取出一個元素,查看這個元素所有的一級元素,把它們放到隊列的末尾。并把這個元素記為它下一級元素的前驅(qū)。
3)找到所要找的元素時結(jié)束程序。
4)如果遍歷整棵樹還沒有找到,結(jié)束程序。
什么是圖的深度優(yōu)先搜索呢?當遍歷到某個結(jié)點A時,如果是標記未遍歷,將其入棧,遍歷它能夠一步直接達到的結(jié)點;如果是標記未遍歷,將其入棧且標記為已遍歷,然后對其進行類似A的操作,否則,找能夠一步直接達到的結(jié)點進行類似操作,直到所有能夠一步直接達到的結(jié)點都已遍歷,將A出棧。
整個過程可以想象成一個倒立的樹形:
1)把根結(jié)點壓入棧中。
2)每次從棧中彈出一個元素,搜索所有在它下一級的元素,把這些元素壓入棧中。并把這個元素記為它下一級元素的前驅(qū)。
3)找到所要找的元素時結(jié)束程序。
4)如果遍歷整棵樹還沒有找到,結(jié)束程序。
所以,本題的答案為B。
10.
下列關(guān)于Java語言中關(guān)鍵字super的說法中,正確的是______。A.關(guān)鍵字super是在子類對象中指代其父類對象的引用B.子類通過關(guān)鍵字super只能調(diào)用父類的屬性,而不能調(diào)用父類的方法C.子類通過關(guān)鍵字super只能調(diào)用父類的方法,而不能調(diào)用父類的屬性D.關(guān)鍵字super不僅可以指代子類的直接父類,還可以指代父類的父類正確答案:A[解析]在Java語言中,關(guān)鍵字this指的是對當前對象的引用,關(guān)鍵字super指的是當前對象里面的父對象的引用。當引用當前對象的某個方法或某個成員時,通常會使用this,而通過super可以調(diào)用父類的構(gòu)造方法、父類的方法和屬性。如下例所示:classBase{publicintstatus=0;Base(intstatus){this.status=status;}publicvoidprint(){System.out.println("base");}}classSubextendsBase{publicintstatus;Sub(intstatus){super(status-1);this.status=status;}publicvoidprintSub(){System.out.println("sub");System.out.println("status="+status);}publicvoidprintBase(){super.print();System.out.println("status="+super.status);}}publicclassTest{publicstaticvoidmain(Stringargs[]){Subs=newSub(2);s.printBase();s.printSub();}}程序的運行結(jié)果為:basestatus=1substatus=2
通過以上分析可知,選項A正確,選項B和選項C錯誤,對于選項D,super只能表示父類的引用,不能表示父類的父類。因此,選項D錯誤。
11.
以public修飾的類如下所示:publicclassCar{...},則類Car______。A.可被其他程序包中的類使用B.不能被其他類繼承C.不能被任意其他類使用D.僅能被本程序包中的類使用正確答案:A[解析]對于選項A與選項C,被public修飾的類的作用域最大,可以被程序中任意的類使用。因此,選項A正確,選項C錯誤。
對于選項B,只有當一個類被final修飾時,才不能被其他類繼承。因此,選項B錯誤。
對于選項D,當作用域為default時(不被public修飾),僅能被本程序包中的類使用。因此,選項D錯誤。
12.
設(shè)有一個關(guān)系:DEPT(DNO,DNAME),如果要找出倒數(shù)第三個字母為W,并且至少包含4個字母的DNAME,則查詢條件子句應(yīng)寫成WHEREDNAMELIKE______A.'__W_%'B.'_%W__'C.'_W__'D.'_W_%'正確答案:B[解析]在SQL語言中,%和表示的是通配符(通配符指的是一種特殊語句,用來進行模糊查詢的,在匹配字符串時,可以使用它來代替一個或多個真正字符,當不知道真正字符或者懶得輸入完整名字時,常常使用通配符代替一個或多個真正的字符),其中“%”表示的是0個或多個字符,而“_”表示的是一個字符。
在本題的查找條件中,要求倒數(shù)第三個字母為‘W’,所以,字符‘W’后面有兩個其他字符,可以表示成“W__”,并且還要求至少包含4個字母,而當以“%”開頭時,它表示的字符可以不存在,所以,開頭應(yīng)加一個“_”,那么查詢條件子句應(yīng)寫成WHEREDNAMELIKE'_%W__'。
所以,本題的答案為B。
需要注意的是,除了以上介紹的兩種通配符以外,SQL語言中還有兩個通配符,[charlist]表示字符列中的任何單一字符,[^charlist]或者[!charlist]表示不在字符列中的任何一個字符。例如,要求從名為“Persons”的表中選取居住的城市以“A”或“L”或“N”開頭的人,可以使用下面的SELECT語句:SELECT*FROMPersonsWHERECityLIKE'[ALN]%'。要求從名為“Persons”的表中選取居住的城市不以“A”或“L”或“N”開頭的人,可以使用下面的SELECT語句:SELECT*FROMPersonsWHERECityLIKE'[!ALN]%'。
13.
排序算法的穩(wěn)定是指關(guān)鍵碼相同的記錄排序前后相對位置不發(fā)生改變,下面排序算法中,______是不穩(wěn)定的。A.插入排序B.冒泡排序C.快速排序D.歸并排序正確答案:C
14.
以下不是Object類的方法的是______。A.hashCode()B.finalize()C.notif()D.hasNext()正確答案:D[解析]Object類是類層次結(jié)構(gòu)的根,在Java語言中,所有的類從根本上而言都繼承自這個類。而且,Object類是Java語言中唯一沒有父類的類,而其他所有的類,包括標準容器類,例如數(shù)組,都繼承了Object類。
具體而言,Object類的方法見下表。Object類的方法方法名返回類型方法描述clone()Object創(chuàng)建并返回此對象的一個副本equals(Objectobj)boolean判斷obj對象是否與此對象相等finalize()void當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調(diào)用此方法getClass()Class<?>返回此Object的運行時類hashCode()int返回該對象的散列碼值notify()void喚醒在此對象監(jiān)視器上等待的單個線程notifyAll()void喚醒在此對象監(jiān)視器上等待的所有線程toString()String返回該對象的字符串表示wait()void在其他線程調(diào)用此對象的notiy()方法或notifyAll()方法前,使當前線程等待wait(longtimeout)void在其他線程調(diào)用此對象的notify()方法或notifyAll()方法,或者超過指定的時間量前,使當前線程等待wait(longtimeout,intnanos)void在其他線程調(diào)用此對象的notify()方法或notiryAll()方法,或者其他某個線程中斷當前線程,或者已超過某個實際時間量前,使當前線程等待
由此可見,Object類沒有hasNext()方法。所以,選項D正確。
15.
若一棵二叉樹的前序遍歷序列為aebdc,后序遍歷序列為bcdea,則根結(jié)點的孩子結(jié)點______。A.只有eB.有e,bC.有e,cD.不確定正確答案:A[解析]二叉樹是每個結(jié)點最多有兩個子樹的樹結(jié)構(gòu),通常子樹被稱作“左子樹”(LeftSubtree)和“右子樹”(RightSubtree)。所謂遍歷(Traversal),是指沿著某條搜索路線,依次對樹中每個結(jié)點均做一次且僅做一次訪問。而通常情況下,如果中序遍歷未知,則是無法還原出二叉樹的。但本題只要求判斷根結(jié)點的孩子結(jié)點,因此,是可以實現(xiàn)的。
二叉樹中的前序遍歷也叫作先根遍歷、先序遍歷,遵循的原則為“根左右”,即首先遍歷根結(jié)點,再遍歷根結(jié)點的左子樹結(jié)點,最后遍歷根結(jié)點的右子樹結(jié)點。從前序遍歷序列可知,結(jié)點e緊跟著結(jié)點a,可得結(jié)論:①結(jié)點a為根結(jié)點;②當結(jié)點e為結(jié)點a的右孩子時,結(jié)點a有且僅有結(jié)點e一個孩子。
二叉樹中的后序遍歷也叫作后根遍歷,遵循的原則為“左右根”,即首先遍歷左子樹結(jié)點,再遍歷右子樹結(jié)點,最后遍歷根結(jié)點。從后序遍歷序列可知,結(jié)點e之后緊跟結(jié)點a,可得結(jié)論:③當結(jié)點e為結(jié)點a的左孩子時,結(jié)點a有且僅有結(jié)點e一個孩子。從結(jié)論①②③可知根結(jié)點的孩子有且僅有e。
通過前序遍歷序列和后序遍歷序列不能夠唯一確定一棵二叉樹,本例子存在如圖所示的兩種情況。
本題的兩種情況
但無論是以上哪一種情況,都可以看出根結(jié)點的孩子結(jié)點只有e。
通過以上分析可知,選項A是正確的。
16.
有如下代碼:
publicclassTest
{
publicstaticvoidmain(String[]args)
{
inta[]={0,1,2,3,4};
intsum=0;
try
{
for(inti=0;i<6;i++)
{
sum+=a[i];
}
System.out.println("sum="+sum);
}
catch(java.lang.ArrayIndexOutOfBoundsExceptione)
{
System.out.println("數(shù)組下標越界");
}
finally
{
System.out.println("程序結(jié)束")
}
}
}
以上程序的運行結(jié)果為______。A.10程序結(jié)束B.10數(shù)組下標越界程序結(jié)束C.數(shù)組下標越界程序結(jié)束D.程序結(jié)束正確答案:C[解析]本題中,首先定義了長度為5的數(shù)組(數(shù)組下標范圍為0~4),在接下來訪問數(shù)組的時候,當遍歷到下標為5的數(shù)組元素時,會拋出ArraylndexOutOfBoundsException異常,從而執(zhí)行catch塊的代碼輸出:數(shù)組下標越界,接著會運行finally塊的代碼輸出:程序結(jié)束。所以,選項C正確。
17.
在虛擬分頁存儲管理系統(tǒng)中,若進程訪問的頁面不在主存,且主存中沒有可用的空閑塊時,系統(tǒng)正確的處理順序是______。A.決定淘汰頁—>頁面調(diào)出—>缺頁中斷—>頁面調(diào)入B.決定淘汰頁—>頁面調(diào)入—>缺頁中斷—>頁面調(diào)出C.缺頁中斷—>決定淘汰頁—>頁面調(diào)出—>頁面調(diào)入D.缺頁中斷—>決定淘汰頁—>頁面調(diào)入—>頁面調(diào)出正確答案:C[解析]虛擬分頁存儲管理的步驟如下:
1)首先,在程序運行中發(fā)現(xiàn)所需要的頁不在物理內(nèi)存時,此時會發(fā)出缺頁中斷,并根據(jù)算法決定淘汰哪些頁。
2)然后,把物理內(nèi)存中的淘汰頁存儲到外存,此過程被稱為頁面調(diào)出。
3)最后,把需要的內(nèi)容從外存調(diào)入物理內(nèi)存指定頁,此過程被稱為頁面調(diào)入。
其實,操作系統(tǒng)就像一輛公交車,只有舊乘客先下來,新乘客才能上去,所以,頁面調(diào)出為先,頁面調(diào)入在后。而在頁面調(diào)出前,必須要存在著缺頁中斷,而且已經(jīng)決定了哪些頁面需要調(diào)出才行。
所以,完整的過程應(yīng)該是缺頁中斷—>決定淘汰頁—>頁面調(diào)出—>頁面調(diào)入,選項C正確。
18.
凈室軟件工程(Cleanroom)是軟件開發(fā)的一種形式化方法,可以開發(fā)較高質(zhì)量的軟件,它發(fā)現(xiàn)和排除錯誤的主要機制是______。A.正確性驗證B.黑白盒測試C.集成測試D.基本路徑測試正確答案:A[解析]凈室軟件工程是一種應(yīng)用數(shù)學與統(tǒng)計學理論以經(jīng)濟的方式生產(chǎn)高質(zhì)量軟件的工程技術(shù),力圖通過嚴格的工程化的軟件過程達到開發(fā)中的零缺陷或接近零缺陷。它提倡開發(fā)者不需要進行單元測試,而是進行正確性驗證和統(tǒng)計質(zhì)量控制。所以,選項A正確。
19.
訪問修飾符作用范圍由大到小是______。A.private-protected-default-publicB.public-protected-default-privateC.private-default-protected-publicD.public-default-protected-private正確答案:B[解析]在Java語言中,類的權(quán)限訪問修飾符有以下幾種:private、default(package)、protected和public。以下將具體對這幾個權(quán)限訪問修飾符進行介紹。
1)私有權(quán)限(private):private可以修飾數(shù)據(jù)成員、構(gòu)造方法和方法成員,不可以修飾類(此處指外部類,不考慮內(nèi)部類)。被private修飾的成員,只能在定義它們的類中使用,在其他類中不能調(diào)用。
2)默認權(quán)限(default):類、數(shù)據(jù)成員、構(gòu)造方法和方法成員等都能夠使用默認權(quán)限,即不被private、protected和public修飾。默認權(quán)限即同包權(quán)限,同包權(quán)限的元素只能在定義它們的類中以及同包的類中被調(diào)用。
3)受保護權(quán)限(protected):protected可以修飾數(shù)據(jù)成員、構(gòu)造方法和方法成員,不可以修飾類(此處指外部類,不考慮內(nèi)部類)。被protected修飾的成員,能在定義它們的類中以及同包的類中被調(diào)用。如果有不同包的類想調(diào)用它們,那么這個類必須是它的子類。
4)公共權(quán)限(public):public可以修飾類、數(shù)據(jù)成員、構(gòu)造方法和方法成員。被public修飾的成員,可以在任何一個類中被調(diào)用,不管同包或不同包,是權(quán)限最大的一個修飾符。
以上幾種修飾符的作用范圍見下表(表中√表示可訪問,×表示不可訪問)。修飾符的作用范圍范圍privatedefaultprotectedpublic同一類√√√√同一包中的類×√√√同一包中的類、不同包中的子類××√√所有×××√
由上表可知,訪問修飾符的作用范圍由大到小依次是public、protected、default和private。所以,選項B正確。
20.
以下關(guān)于異常的描述中,正確的是______。A.如果一個方法聲明將拋出某個異常,它就必須真的拋出那個異常B.一旦出現(xiàn)異常,程序運行就終止了C.在catch子句中匹配異常是一種精確匹配D.可能拋出系統(tǒng)異常的方法是不需要聲明異常的正確答案:D[解析]異常是指程序運行時(非編譯時)所發(fā)生的非正常情況或錯誤,當程序違反了語義規(guī)則時,JVM就會將出現(xiàn)的錯誤表示為一個異常并拋出。這個異??梢栽赾atch程序塊中進行捕獲,然后進行處理。而異常處理的目的則是為了提高程序的安全性與健壯性。
Java語言提供了兩種錯誤的處理類,分別為Error(錯誤)和Exception(異常),且它們擁有共同的父類:Throwable。
Error表示程序在運行期間出現(xiàn)了非常嚴重的錯誤,并且該錯誤是不可恢復的,由于這屬于JVM層次的嚴重錯誤,所以,這種錯誤是會導致程序終止執(zhí)行的。此外,編譯器不會檢查Error是否被處理,因此,在程序中不推薦去捕獲Error類型的異常,主要原因是運行時異常多是由于邏輯錯誤導致的,屬于應(yīng)該解決的錯誤,也就是說,一個正確的程序中是不應(yīng)該存在Error的。OutOfMemoryErTor、ThreadDeath等都屬于錯誤。當這些異常發(fā)生時,JVM一般會選擇將線程終止。
Exception表示可恢復的異常,是編譯器可以捕捉到的。它包含兩種類型:運行時異常(RuntimeException)和檢查異常(CheckedException)。
1)檢查異常是在程序中最經(jīng)常碰到的異常,所有繼承自Exception并且不是運行時異常的異常都是檢查異常,比如最常見的IO異常和SQL異常。對于這種異常,都發(fā)生在編譯階段,Java編譯器強制程序去捕獲此類型的異常,即把可能會出現(xiàn)這些異常的代碼放到try塊中,把對異常的處理的代碼放到catch塊中。這種異常一般在如下幾種情況中使用:
①異常的發(fā)生并不會導致程序出錯,進行處理后可以繼續(xù)執(zhí)行后續(xù)的操作。例如,當連接數(shù)據(jù)庫失敗后,可以重新連接后進行后續(xù)操作。
②程序依賴于不可靠的外部條件,例如系統(tǒng)IO。
2)對于運行時異常,編譯器沒有強制對其進行捕獲并處理。如果不對這種異常進行處理,當出現(xiàn)這種異常時,會由JVM來處理。在Java語言中,最常見的運行時異常有如下幾種:NullPointerException(空指針異常)、ArrayStoreException(數(shù)據(jù)存儲異常)、ClassCastException(類型轉(zhuǎn)換異常)、InexOutOfBoundException(數(shù)組越界異常)、BufferOverflowException(緩沖區(qū)溢出異常)和ArithmeticException(算術(shù)異常)等。
出現(xiàn)運行時異常后,系統(tǒng)會把異常一直往上層拋出,直到遇到處理代碼為止。如果沒有處理塊,則拋到最上層,如果是多線程就由Thread.run()方法拋出,如果是單線程,就被main()方法拋出。拋出之后,如果是線程,這個線程也就退出了。如果是主程序拋出的異常,那么整個程序也就退出了。所以,如果不對運行時異常進行處理,后果是非常嚴重的,一旦發(fā)生,要么是線程中止,要么是主程序終止。
在使用異常處理時,還需要注意以下幾個問題:
1)Java異常處理用到了多態(tài)的概念,如果在異常處理過程中,首先捕獲了基類,然后再捕獲子類,那么捕獲子類的代碼塊將永遠不會被執(zhí)行。因此,在進行異常捕獲的時候,正確的寫法是:首先捕獲子類,然后再捕獲基類的異常信息。如下例所示:正確的寫法錯誤的寫法try{//accessdbcode}catch(SQLExceptione1){//dealwiththisexception}catch(Exceptioile2){}try{//accessdbcode}catch(Exceptione1){//dealwitllthisexception}catch(SQLExceptione2){}
2)盡早拋出異常,同時對捕獲的異常進行處理,或者從錯誤中恢復,或者讓程序繼續(xù)執(zhí)行。對捕獲的異常不進行任何處理是一個非常不好的習慣,這樣的代碼將非常不利于調(diào)試。當然,也不是拋出異常越多越好,對于有些異常類型,例如運行時異常,實際上根本不必處理。
3)可以根據(jù)實際的需求自定義異常類,這些自定義的異常類只要繼承自Exception類即可。
4)異常能處理就處理,不能處理就拋出。對于一般異常,如果不能進行行之有效地處理,最好轉(zhuǎn)換為運行時異常拋出。對于沒有處理的異常,最終JVM會進行處理。
本題中,對于選項A,一個方法聲明了拋出一個異常只表明這個方法有可能會拋出這個異常,而不是一定會拋出這個異常。因此,選項A錯誤。
對于選項B,如果出現(xiàn)的異常被捕獲到,并進行相應(yīng)的處理后,程序可以繼續(xù)運行,而不會終止。因此,選項B錯誤。
對于選項C,異常匹配不是一種精確的匹配,使用了多態(tài)的概念。假如異常A是異常B的子類,如果有異常A拋出,在捕獲異常的代碼中,不僅可以匹配異常A,而且也可以匹配異常B。因此,選項C錯誤。
對于選項D,對于可能拋出的運行時異常,編譯器沒有強制對其進行聲明,只有檢查異常(例如IOException),編譯器才會強制要求在方法中聲明。因此,選項D正確。
21.
下列關(guān)于構(gòu)造方法的描述中,錯誤的是______。A.Java語言規(guī)定構(gòu)造方法沒有返回值,但不用void聲明B.Java語言規(guī)定構(gòu)造方法名與類名必須相同C.Java語言規(guī)定構(gòu)造方法不可以重載D.Java語言規(guī)定構(gòu)造方法不能直接被調(diào)用正確答案:C[解析]構(gòu)造方法是一種特殊的方法,用來在對象實例化時初始化對象的成員變量。在Java語言中,構(gòu)造方法具有以下特點:
1)構(gòu)造方法必須與類的名字相同,并且不能有返回值(返回值也不能為void)。
2)每個類可以有多個構(gòu)造方法。當開發(fā)人員沒有提供構(gòu)造方法時,編譯器在把源代碼編譯成字節(jié)碼的過程中會提供一個沒有參數(shù)的默認構(gòu)造方法,但該構(gòu)造方法不會執(zhí)行任何代碼。如果開發(fā)人員提供了構(gòu)造方法,那么編譯器就不會再創(chuàng)建默認的構(gòu)造方法。
3)構(gòu)造方法可以有0個、1個或1個以上的參數(shù)。
4)構(gòu)造方法總是伴隨著new操作一起調(diào)用,不能由程序的編寫者直接調(diào)用,必須要由系統(tǒng)調(diào)用。構(gòu)造方法在對象實例化時會被自動調(diào)用,且只運行一次,而普通的方法是在程序執(zhí)行到它時才被調(diào)用,可以被該對象調(diào)用多次。
5)構(gòu)造方法的主要作用是完成對象的初始化工作。
6)構(gòu)造方法不能被繼承,因此,它不能被覆蓋,但是構(gòu)造方法能夠被重載,可以使用不同的參數(shù)個數(shù)或參數(shù)類型來定義多個構(gòu)造方法。
7)子類可以通過關(guān)鍵字super來顯式地調(diào)用父類的構(gòu)造方法。當父類沒有提供無參數(shù)的構(gòu)造方法時,子類的構(gòu)造方法中必須顯式地調(diào)用父類的構(gòu)造方法。如果父類中提供了無參數(shù)的構(gòu)造方法,此時子類的構(gòu)造方法就可以不顯式地調(diào)用父類的構(gòu)造方法,在這種情況下,編譯器會默認調(diào)用父類的無參數(shù)的構(gòu)造方法。當有父類時,在實例化對象時,會首先執(zhí)行父類的構(gòu)造方法,然后才執(zhí)行子類的構(gòu)造方法。
8)當父類和子類都沒有定義構(gòu)造方法時,編譯器會為父類生成一個默認的無參數(shù)的構(gòu)造方法,給子類也生成一個默認的無參數(shù)的構(gòu)造方法。此外,默認構(gòu)造器的修飾符只與當前類的修飾符有關(guān)(例如,如果一個類被定義為public,那么它的構(gòu)造方法也是public)。
從以上分析可知,選項A和選項B正確,選項C錯誤。
對于選項D,在Java語言中,當類在實例化時,會自動調(diào)用構(gòu)造方法,而不能顯式地調(diào)用構(gòu)造方法。因此,選項D正確。
22.
軟件復用是使用已有的軟件產(chǎn)品(例如設(shè)計、代碼和文檔等)來開發(fā)新的軟件系統(tǒng)的過程。為了提高構(gòu)件(Component)的復用率,通常要求構(gòu)件具有較好的______。A.專用性和不變性B.專用性和可變性C.通用性和不變性D.通用性和可變性正確答案:C[解析]軟件復用(SoftwareReuse)是將已有軟件的各種有關(guān)知識用于建立新的軟件,以縮減軟件開發(fā)和維護的花費。為了提高構(gòu)件的復用率,通常要求構(gòu)件具有較好的通用性與不變性。所以,選項C正確。
23.
某二叉樹按中序遍歷的序列為SYZ,則該二叉樹可能存在______種情況。A.2B.3C.4D.5正確答案:D[解析]由于二叉樹的中序遍歷序列為SYZ,所以,可以分別以字符S、Y、Z為根構(gòu)建二叉樹。
(1)S為根
此時可以構(gòu)建2種不同的二叉樹。
二叉樹結(jié)構(gòu)如圖1所示。
圖1
S為根的二叉樹
(2)Y為根
此時可以構(gòu)建1種二叉樹。
二叉樹結(jié)構(gòu)如圖2所示。
圖2
Y為根的二叉樹
(3)Z為根
此時可以構(gòu)建2種不同的二叉樹。
二叉樹結(jié)構(gòu)如圖3所示。
圖3
Z為根的二叉樹
所以,一共可以構(gòu)建2+1+2=5種不同的二叉樹。所以,選項D正確。
24.
以下命令中,可以用來查看當前系統(tǒng)啟動時間的是______。A.wB.topC.psD.uptime正確答案:D[解析]w命令用來顯示當前登錄的用戶信息。top命令用來實時顯示系統(tǒng)中各個進程的資源占用狀況。ps命令用來列出系統(tǒng)中當前運行的那些進程。uptime命令主要用于獲取主機運行時間和查詢Linux系統(tǒng)負載等信息,可以顯示系統(tǒng)現(xiàn)在時間、系統(tǒng)已經(jīng)運行了多長時間、目前有多少登錄用戶以及系統(tǒng)在過去的1min、5min和15min內(nèi)的平均負載。所以,選項D正確。
25.
將對象序列化,要實現(xiàn)的接口是______。A.RurmableB.CloneableC.SerializableD.Comparator正確答案:C
26.
一種既有利于短作業(yè)又兼顧長作業(yè)的調(diào)度方式是______。A.先來先服務(wù)B.均衡調(diào)度C.最短作業(yè)優(yōu)先D.最高響應(yīng)比優(yōu)先正確答案:D[解析]本題中,選項A、選項B和選項C的調(diào)度方法都不滿足題目要求,所以,選項A、選項B和選項C錯誤。
對于選項D,最高響應(yīng)比優(yōu)先法(HighestResponse_ratioNext,HRN)是對FCFS(FirstComeFirstServed,先來先服務(wù))方式和SJF(ShortestJobFirst,最短作業(yè)優(yōu)先)方式的一種綜合平衡。FCFS方式只考慮每個作業(yè)的請求時間而未考慮執(zhí)行時間的長短,而SJF方式只考慮執(zhí)行時間而未考慮等待時間的長短。因此,這兩種調(diào)度算法在某些極端情況下會帶來不便。HRN調(diào)度策略同時考慮每個作業(yè)的等待時間長短和估計需要的執(zhí)行時間長短,從中選出響應(yīng)比最高的作業(yè)投入執(zhí)行。響應(yīng)比R定義如下:R=(W+T)/T=1+W/T,其中,T為該作業(yè)估計需要的執(zhí)行時間,W為作業(yè)在后備狀態(tài)隊列中的等待時間。每當要進行作業(yè)調(diào)度時,系統(tǒng)計算每個作業(yè)的響應(yīng)比,選擇其中R最大者投入執(zhí)行。這樣,即使是長作業(yè),隨著它等待時間的增加,W/T也就隨著增加,也就有機會獲得調(diào)度執(zhí)行。這種算法是介于FCFS和SJF之間的一種折中算法。由于長作業(yè)也有機會投入運行,在同一時間內(nèi)處理的作業(yè)數(shù)顯然要少于SJF法,當采用HRN方式時,其吞吐量將小于采用SJF法時的吞吐量。另外,由于每次調(diào)度前要計算響應(yīng)比,系統(tǒng)開銷也要相應(yīng)增加。等待時問一定,要求服務(wù)的時間越短,先運行;要求服務(wù)的時間一定,等待時間越長,先運行。所以,最高響應(yīng)比優(yōu)先調(diào)度是一種既有利于短作業(yè)又兼顧長作業(yè)的調(diào)度方式。所以,選項D正確。
27.
以下關(guān)于RARP協(xié)議的說法中,正確的是______。A.RARP協(xié)議用于對IP協(xié)議進行差錯控制B.RARP協(xié)議根據(jù)主機IP地址查詢對應(yīng)的MAC地址C.RARP協(xié)議根據(jù)MAC地址求主機對應(yīng)的IP地址D.RARP協(xié)議根據(jù)交換的路由信息動態(tài)改變路由表正確答案:C[解析]ARP(AddressResolutionProtocol,地址解析協(xié)議)是一個位于TCP/IP協(xié)議棧中的低層協(xié)議,它用于映射計算機的物理地址與網(wǎng)絡(luò)IP地址。在Internet分布式環(huán)境中,每個主機都被分配了一個32位的網(wǎng)絡(luò)地址,此時就存在計算機的IP地址與物理地址之間的轉(zhuǎn)換問題。ARP協(xié)議所要做的工作就是在主機發(fā)送幀前,根據(jù)目標IP地址獲取MAC地址,以保證通信過程的順暢。
其具體過程如下:首先,每臺主機都會在自己的ARP緩沖區(qū)中建立一個ARP列表,用于存儲IP地址與MAC地址的對應(yīng)關(guān)系;然后,當源主機需要將一個數(shù)據(jù)包發(fā)送到目標主機時,會首先檢查自己的ARP列表是否存在該IP地址對應(yīng)的MAC地址,如果存在,則直接將數(shù)據(jù)包發(fā)送到該MAC地址,如果不存在,就向本地網(wǎng)段發(fā)起一個ARP請求的廣播包,用于查詢目標主機對應(yīng)的MAC地址,此ARP請求數(shù)據(jù)包里包括源主機的IP地址、硬件地址以及目標主機的IP地址等;接著,網(wǎng)絡(luò)中所有的主機收到這個ARP請求之后,會檢查數(shù)據(jù)包中的目的IP是否與自己的IP地址一致,如果不同就忽略此數(shù)據(jù)包,如果相同,該主機會將發(fā)送端的MAC地址與IP地址添加到自己的ARP列表中,如果ARP列表中已經(jīng)存在該IP地址的相關(guān)信息,則將其覆蓋掉,然后給源主機發(fā)送一個ARP響應(yīng)包,告訴對方自己是它所需要查找的MAC地址;最后源主機收到這個ARP響應(yīng)包后,將得到的目的主機的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息開始數(shù)據(jù)的傳輸,如果源主機一直沒有收到ARP響應(yīng)包,則表示ARP查詢失敗。
RARP(ReverseAddressResolutionProtocol,反向地址解析仂、議)與ARP工作方式相反。RARP發(fā)出要反向解析的物理地址并希望返回其對應(yīng)的IP地址,應(yīng)答包括由能夠提供所需信息的RARP服務(wù)器發(fā)出的IP地址。RARP獲取IP地址的過程如下:主機發(fā)起一個RARP請求的廣播包,用于查詢主機的IP地址,這個廣播包中包含了主機的MAC地址。網(wǎng)絡(luò)中的RARP服務(wù)器收到這個RARP請求后,檢查其RARP列表,查詢這個MAC地址對應(yīng)的IP地址,如果找到,則發(fā)送響應(yīng)包給請求主機,否則,不做任何響應(yīng)。源主機獲取到這個IP地址后就可以用這個IP地址進行通信。所以,選項C正確。
28.
在Applet子類中,一般需要重載父類的______方法來完成一些畫圖操作。A.stop()B.start()C.init()D.paint()正確答案:D[解析]Applet程序的開發(fā)必須繼承Applet類,它有如下5個比較重要的方法:
(1)init()
當ADplet啟動的時候,調(diào)用完構(gòu)造方法后,就會調(diào)用init方法做一些初始化的工作。因此,這個方法中一般做一些初始化的工作。所以,選項C錯誤。
(2)start()
Applet第一次啟動后,調(diào)用完init方法后,就會調(diào)用start方法來啟動需要的一些線程?;蛘弋斢脩綦x開HTML頁面,然后重新返回頁面的時候,start方法也會被調(diào)用。所以,選項A錯誤。
(3)paint(Graphicsg)
Applet每次重繪的時候都會調(diào)用paint方法進行畫圖。在開發(fā)的時候,需要繼承這個類完成自己的畫圖的工作。所以,選項D正確。
(4)stop()
這個方法與start方法是相對應(yīng)的,當用戶離開HTML頁面的時候,stop方法會被調(diào)用,用來停止start方法中啟動的線程。所以,選項B錯誤。
(5)destory()
當Applet終止運行時,destory方法會被調(diào)用,用來釋放所占用的資源。
所以,本題的答案為D。
29.
已知一棵二叉樹,如果先序遍歷的結(jié)點順序為ADCEFGHB,中序遍歷的結(jié)點順序為cDFEGHAB,則后序遍歷的結(jié)點順序為______。A.CFHGEBDAB.CDFEGHBAC.FGHCDEBAD.CFHGEDBA正確答案:D[解析]要解答出本題,首先需要對各種遍歷方式有一個清晰的認識??梢酝ㄟ^圖1來介紹二叉樹的三種遍歷方式的區(qū)別。
圖1
二叉樹的遍歷方式
1)先序遍歷:先遍歷根結(jié)點,再遍歷左子樹,最后遍歷右子樹。所以,圖1的先序遍歷序列是ABDECFG。
2)中序遍歷:先遍歷左子樹,再遍歷根結(jié)點,最后遍歷右子樹。所以,圖1的中序遍歷序列是DBEAFCG。
3)后序遍歷:先遍歷左子樹,再遍歷右子樹,最后遍歷根結(jié)點。所以,圖1的后序遍歷序列是DEBFGCA。
從上面的介紹可以看出,先序遍歷序列的第一個結(jié)點一定是根結(jié)點,因此,本題中可以確定這個二叉樹的根結(jié)點為A。由中序遍歷的特點可以把樹分為三部分:根結(jié)點A、A的左子樹和A的右子樹。在中序遍歷的序列中,在A結(jié)點前面的序列一定是在A的左子樹上,在結(jié)點A后面的序列一定在A的右子樹上。由此可以確定:A的左子樹包含的結(jié)點為CDFEGH,右子樹包含的結(jié)點為B(見圖2a)。接下來對A的左子樹上的結(jié)點采用同樣的方法進行分析:對于序列CDFEGH,先序遍歷的時候先遍歷到結(jié)點D,因此,結(jié)點D是這個子樹的根結(jié)點;通過對中序遍歷進行分析可以把CDFEGH分為三部分:根結(jié)點D、D的左子樹包含的結(jié)點為C、D的右子樹上包含的結(jié)點為FEGH(見圖2b)。然后對FEGH用同樣的方法進行分析:在先序遍歷的序列中先遍歷到的結(jié)點為E,因此,根結(jié)點為E,通過分析中序遍歷的序列,可以把這個序列分成三部分:根結(jié)點E、E的左子樹上的結(jié)點F和E的右子樹上的結(jié)點GH(見圖2c)。最后分析結(jié)點GH,在先序遍歷序列中先遍歷到G,則說明G為根結(jié)點,在中序遍歷序列中先遍歷到結(jié)點G,說明H是G右子樹上的結(jié)點(見圖2d)。由此可以發(fā)現(xiàn),通過先序遍歷和中序遍歷完全確定了二叉樹的結(jié)構(gòu),可以非常容易
圖2
二叉樹的遍歷
所以,本題的答案為D。
30.
以下排序算法中,需要開辟額外的存儲空間的是______。A.選擇排序B.歸并排序C.快速排序D.堆排序正確答案:B
二、論述題1.
用Java語言寫一段訪問Oracle數(shù)據(jù)庫的程序,并實現(xiàn)數(shù)據(jù)查詢。正確答案:示例代碼如下:
importjava.sql.*;
publicclassTest{
publicConnectiongetConnection(){
Connectionconn=null;
Stringdriver="oracle.jdbc.driver.OracleDriver";
Stringurl="";
Stringname="user";
Stringpsw="password";
try{
Class.forName(driver);
conn=DriverManager.getConnection(url,name,psw);
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}catch(SQLExceptione){
e.printStackTrace();
}
returnconn;
}
publicvoidselectFromOracle(){
Connectionconn=null;
PreparedStatementpstat=null;
ResultSetrs=null;
try{
conn=getConnection();
Stringsql="selectname,scorefromStudentwherename=?";
pstat=conn.prepareStatement(sql);
pstat.setString(1,"James");
rs=pstat.executeQuery();
while(rs.next()){
System.out.println(rs.getString("name")+1","+rs.getInt("score"));;
}
}catch(SQLExceptione){
e.printStackTrace();
}finally{
if(rs!=null)
try{
rs.close();
}catch(SQLExceptione){
e.printStackTrace();
}
if(pstat!=null)
try{
pstat.close();
)catch(SQLExceptione){
e.printStackTrace();
}
if(conn!=null)
try{
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
}
}
2.
Hibernate中session的update()和saveOrUpdate()、load()和get()有什么區(qū)別?正確答案:Hibernate的對象有3種狀態(tài),分別為:瞬時態(tài)(Transient)、持久態(tài)(Persistent)和脫管態(tài)(Detached)。處于持久態(tài)的對象也被稱為PO(PersistenceObject),瞬時對象和脫管對象也被稱為VO(ValueObject)。
saveOrUpdate()方法同時包含了save()和update()方法的功能。Hibernate會根據(jù)對象的狀態(tài)來確定是調(diào)用save()方法還是調(diào)用update()方法:若對象是持久化對象,則不進行任何操作,直接返回;若傳入的對象與session中的另一個對象有相同的標識符,則拋出一個異常;若對象的標識符屬性(用來唯一確定一個對象)在數(shù)據(jù)庫中不存在或者是一個臨時值,則調(diào)用save()方法把它保存到數(shù)據(jù)庫中,否則,調(diào)用update()方法更新對象的值到數(shù)據(jù)庫中。鑒于此,在使用時,若能確定對象的狀態(tài),則最好不要調(diào)用saveOrUpdate()方法,這樣有助于提高效率,例如,如果能夠確定這個對象所對應(yīng)的值在數(shù)據(jù)庫中肯定不存在,那么就可以直接調(diào)用save()方法。
get()方法與load()方法都是用來通過從數(shù)據(jù)庫中加載所需的數(shù)據(jù)來創(chuàng)建一個持久化的對象,它們主要有以下幾個不同點:
1)如果數(shù)據(jù)庫中不存在該對象,load()方法會拋出一個ObjectNotFoundException異常,而get()方法則會返回null。
2)get()方法首先查詢Session內(nèi)部緩存,若不存在,則接著查詢二級緩存,最后查詢數(shù)據(jù)庫;而load()方法在創(chuàng)建時會首先查詢Session內(nèi)部緩存,如果不存在,就創(chuàng)建代理對象,實際使用數(shù)據(jù)時才查詢二級緩存和數(shù)據(jù)庫,因此load()方法支持延遲加載(對象中的屬性在使用時才會加載,而不是在創(chuàng)建對象時就加載所有屬性)。
3)get()方法永遠只返回實體類,而load()方法可以返回實體類的代理類實例。
4)get()方法和find()方法都是直接從數(shù)據(jù)庫中檢索,而load()方法的執(zhí)行則比較復雜:首先查找Session的persistentContext中是否有緩存,若有,則直接返回;若沒有,則判斷是否是lazy。如果不是,直接訪問數(shù)據(jù)庫檢索,查到記錄返回,查不到拋出異常;若是lazy,則需要建立代理對象,對象的initialized屬性為f
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)田農(nóng)場養(yǎng)殖合同范例
- 農(nóng)村地轉(zhuǎn)讓合同范本
- 臨建房合同范例
- 代驗收合同范例
- 借款利率合同范本
- 獸醫(yī)樣品郵寄合同范本
- 代理公司分銷合同范例
- 個體人員招聘合同范例
- 產(chǎn)品配送合同范例
- 個人號碼租賃合同范例
- 西藏事業(yè)單位c類歷年真題
- 2024人教新目標(Go for it)八年級英語下冊【第1-10單元】全冊 知識點總結(jié)
- 七年級英語下學期開學考試(深圳專用)-2022-2023學年七年級英語下冊單元重難點易錯題精練(牛津深圳版)
- 房屋市政工程生產(chǎn)安全重大事故隱患判定標準(2024版)宣傳畫冊
- 杭州市房地產(chǎn)經(jīng)紀服務(wù)合同
- 2024年大宗貿(mào)易合作共贏協(xié)議書模板
- 初中數(shù)學教學經(jīng)驗分享
- 新聞記者證600道考試題-附標準答案
- 2024年公開招聘人員報名資格審查表
- TSG ZF001-2006《安全閥安全技術(shù)監(jiān)察規(guī)程》
- 長螺旋鉆孔壓灌樁工程勞務(wù)清包合同(范本)
評論
0/150
提交評論