Java程序員面試分類模擬24_第1頁
Java程序員面試分類模擬24_第2頁
Java程序員面試分類模擬24_第3頁
Java程序員面試分類模擬24_第4頁
Java程序員面試分類模擬24_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡介

Java程序員面試分類模擬24一、單項(xiàng)選擇題1.

下列關(guān)于Java語言的描述中,正確的是______。A.Java語言容許單獨(dú)的過程與函數(shù)存在B.Java語言容許單獨(dú)的方法存在C.Java語言中的方(江南博哥)法屬于類中的成員D.Java語言中的方法必定隸屬于某—類(對象)正確答案:D[解析]Java語言是純面向?qū)ο蟮恼Z言,任何變量與方法都必須定義在類中,方法與變量不能脫離類的定義而單獨(dú)存在,因此,選項(xiàng)A和選項(xiàng)B錯誤,選項(xiàng)D正確。在Java語言中,方法有兩種:靜態(tài)方法(類的方法)與非靜態(tài)方法(實(shí)例的方法),因此,選項(xiàng)C錯誤,因?yàn)榉椒ㄓ锌赡軐儆趯?shí)例成員,而不屬于類成員。

2.

下列關(guān)于視圖與基本表的對比描述中,正確的是______。A.視圖的定義功能強(qiáng)于基本表B.視圖的操作功能強(qiáng)于基本表C.視圖的數(shù)據(jù)控制功能弱于基本表D.上面提到的三種功能二者均相當(dāng)正確答案:A[解析]視圖是由從數(shù)據(jù)庫的基本表中選取出來的數(shù)據(jù)組成的邏輯窗口,不同于基本表,它是一個虛表。在數(shù)據(jù)庫中,存放的只是視圖的定義而已,而不存放數(shù)據(jù),這些數(shù)據(jù)仍然存放在原來的基本表結(jié)構(gòu)中。只有在使用視圖的時(shí)候才會執(zhí)行視圖的定義,從基本表中查詢數(shù)據(jù)。

視圖的作用非常多,主要有以下幾點(diǎn):首先,它可以簡化數(shù)據(jù)查詢語句;其次,它可以使用戶從多角度看待同一數(shù)據(jù);再次,它可以提高數(shù)據(jù)的安全性;最后,它提供了一定程度的邏輯獨(dú)立性等。

通過引入視圖機(jī)制,用戶可以將注意力集中在其關(guān)心的數(shù)據(jù)上而非全部數(shù)據(jù),這樣就大大提高了用戶效率與用戶滿意度,而且如果這些數(shù)據(jù)來源于多個基本表結(jié)構(gòu),或者數(shù)據(jù)不僅來自于基本表結(jié)構(gòu),還有一部分?jǐn)?shù)據(jù)來源于其他視圖,并且搜索條件又比較復(fù)雜時(shí),需要編寫的查詢語句就會比較繁瑣,此時(shí)定義視圖就可以使數(shù)據(jù)的查詢語句變得簡單可行。定義視圖可以將表與表之間的復(fù)雜的操作連接和搜索條件對用戶不可見,用戶只需要簡單地對一個視圖進(jìn)行查詢即可,所以,增加了數(shù)據(jù)的安全性,但是不能提高查詢的效率。

對于選項(xiàng)A,視圖可以被定義為多個表的連接,也可以被定義為只有部分列可見,或滿足條件的部分行可見,因此,有更強(qiáng)的定義功能。所以,選項(xiàng)A正確。

對于選項(xiàng)B,視圖有的操作,表都有,視圖一般被用來查找而使用。所以,選項(xiàng)B錯誤。

對于選項(xiàng)C,視圖的數(shù)據(jù)控制能力要強(qiáng)于表,視圖可以被定義為多個表的連接,也可以被定義為只有部分列可見,或滿足條件的部分行可見,通過定義不同的存儲過程,并授予不同的權(quán)限,可以很靈活地對數(shù)據(jù)進(jìn)行控制。所以,選項(xiàng)C錯誤。

對于選項(xiàng)D,自然也就錯了。

3.

敏捷軟件開發(fā)方法是一種______。A.數(shù)學(xué)觀B.建模觀C.工程觀D.協(xié)作觀正確答案:D[解析]敏捷軟件開發(fā)方法是一種應(yīng)對快速變化的需求的軟件開發(fā)能力。它們的具體名稱、理念、過程和術(shù)語都不盡相同,相對于“非敏捷”,敏捷更強(qiáng)調(diào)程序員團(tuán)隊(duì)與業(yè)務(wù)專家之間的緊密仂、作、面對面的溝通(認(rèn)為比書面的文檔更有效)、頻繁交付新的軟件版本、緊湊而自我組織型的團(tuán)隊(duì)、能夠很好地適應(yīng)需求變化的代碼編寫和團(tuán)隊(duì)組織方法,也更注重作為軟件開發(fā)中人的作用。所以,敏捷軟件開發(fā)方法是一種創(chuàng)作與交流的協(xié)作觀。所以,選項(xiàng)D正確。

4.

有如下代碼:

publicclassExample

{

StringStr=newString("good");

char[]ch={'a','b','c'};

publicstaticvoidmain(Stringargs[])

{

Exampleex=newExample();

Ex.change(ex.str,ex.ch);

System.out.print(ex.str+"and");

System.out.print(ex.ch);

}

publicvoidchange(Stringstr,charch[])

{

str="testok";

ch[0]='0';

}

}

程序的運(yùn)行結(jié)果為______。A.goodandabcB.goodandgbcC.testokandabcD.testokandgbc正確答案:B

5.

給定一個Java程序的main方法的代碼片段如下:

try

{

PrintWfiterout=newPrintWriter(newFileOutputStream("d:/a.txt"));

Stringname="chen";

out.print(name);

}

catch(Exceptione)

{

System.out.println("文件沒有發(fā)現(xiàn)!");

}

假如d目錄下不存在a.txt文件,現(xiàn)運(yùn)行該程序,下面的結(jié)果正確的是______。A.將在控制臺上打?。骸拔募]有發(fā)現(xiàn)!”B.運(yùn)行后生成abc.txt,該文件內(nèi)容為chenC.運(yùn)行后生成abc.txt,但該文件中可能無內(nèi)容D.正常運(yùn)行,但沒有生成文件abc.txt正確答案:A[解析]由于文件不存在,因此,在調(diào)用newFileOutputStream("d:/abc.txt")時(shí),會拋出FileNotFoundException異常,這個異常是Exception的子類,能匹配Exception從而執(zhí)行catch塊的代碼輸出“文件沒有發(fā)現(xiàn)!”。所以,選項(xiàng)A正確。

6.

在多級存儲體系中,“cache-主存”結(jié)構(gòu)的作用是解決______。A.主存容量不足B.輔存與CPU速度不匹配C.主存與輔存速度不匹配D.主存與CPU速度不匹配正確答案:D

7.

下列說法錯誤的是______。A.ALTERTABLE語句可以添加字段B.ALTERTABLE語句可以刪除字段C.LIPDATETABLE語句可以修改字段名稱D.ALTERTABLE語句可以修改字段數(shù)據(jù)類型正確答案:C[解析]在表中添加列的方法如下:

ALTERTABLEtable_nameADDcolumn_namedatatype

刪除表中的列的方法如下:

ALTERTABLEtable_name:DROPCOLUMNcolumn_name

改變表中列的數(shù)據(jù)類型的方法如下:

ALTERTABLEtable_nameMODIFYCOLUMNcolumn_namedatatype

而UPDATE語句只能更改表中的數(shù)據(jù),不能用來更改表的結(jié)構(gòu)。

所以,本題的答案為C。

8.

下面不是表單標(biāo)記的是______。A.RADIOB.INPUTC.CHECKBOXD.TR正確答案:D[解析]本題中,對于選項(xiàng)A,RADIO為單選按鈕控件標(biāo)簽,是表單標(biāo)記。所以,選項(xiàng)A錯誤。

對于選項(xiàng)B,INPUT表示Form表單中的一種輸入對象,其又隨Type類型的不同而分為文本輸入框、密碼輸入框、單選/復(fù)選框及提交/重置按鈕等,是表單標(biāo)記。所以,選項(xiàng)B錯誤。

對于選項(xiàng)C,CHECKBOX為多選復(fù)選框標(biāo)簽,是表單標(biāo)記。所以,選項(xiàng)C錯誤。

對于選項(xiàng)D,TR是表中的行標(biāo)簽,不屬于表單標(biāo)記。所以,選項(xiàng)D正確。

9.

當(dāng)路由器接收的IP報(bào)文的目的地址不是本路由器的接口IP地址,并且在路由表中未找到匹配的路由項(xiàng),則采取的策略是______。A.丟掉該分組B.將該分組分片C.轉(zhuǎn)發(fā)該分組D.將分組轉(zhuǎn)發(fā)或分片正確答案:A[解析]路由器轉(zhuǎn)發(fā)IP報(bào)文的依據(jù)是路由表,通過匹配路由表里的路由項(xiàng)來實(shí)現(xiàn)對IP報(bào)文的轉(zhuǎn)發(fā)。當(dāng)路由器收到一個IP報(bào)文的時(shí)候,將報(bào)文中的目的IP地址提取出來,然后與路由表中路由表項(xiàng)包含的目的地址進(jìn)行比較。如果與某路由項(xiàng)中的目的地址相同,則認(rèn)為與此路由項(xiàng)匹配;如果沒有路由項(xiàng)能夠匹配,則丟棄該IP報(bào)文。所以,選項(xiàng)A正確。

10.

把數(shù)據(jù)結(jié)構(gòu)從邏輯上分為______兩大類A.順序結(jié)構(gòu)、鏈?zhǔn)浇Y(jié)構(gòu)B.靜態(tài)結(jié)構(gòu)、動態(tài)結(jié)構(gòu)C.初等結(jié)構(gòu)、構(gòu)造型結(jié)構(gòu)D.線性結(jié)構(gòu)、非線性結(jié)構(gòu)正確答案:D[解析]數(shù)據(jù)的邏輯結(jié)構(gòu)指的是反映數(shù)據(jù)元素之間的邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu),其中的邏輯關(guān)系是指數(shù)據(jù)元素之間的前后關(guān)系,而與它們在計(jì)算機(jī)中的存儲位置無關(guān)。通常情況下,數(shù)據(jù)的邏輯結(jié)構(gòu)分以下兩大類:線性結(jié)構(gòu)和非線性結(jié)構(gòu)。線性結(jié)構(gòu)是指該結(jié)構(gòu)中的結(jié)點(diǎn)之間存在一對一的關(guān)系,其特點(diǎn)是開始結(jié)點(diǎn)和終端結(jié)點(diǎn)都是唯一的,除了開始結(jié)點(diǎn)和終端結(jié)點(diǎn)外,其余結(jié)點(diǎn)都有且僅有一個直接前驅(qū),有且僅有一個直接后繼,此類型的存儲結(jié)構(gòu)有順序表(數(shù)組)、鏈表、棧結(jié)構(gòu)和隊(duì)列結(jié)構(gòu)等。非線性結(jié)構(gòu)又包括集合、樹形結(jié)構(gòu)、圖形結(jié)構(gòu)或網(wǎng)狀結(jié)構(gòu),特點(diǎn)是數(shù)據(jù)元素之間存在一個對多個或多個對多個的關(guān)系,其中集合是一種關(guān)系極為松散的結(jié)構(gòu)。

數(shù)據(jù)的存儲方法有四種:順序存儲方法、鏈接存儲方法、索引存儲方法和散列存儲方法。以下將分別對它們進(jìn)行介紹。

1)順序存儲方法:它是把邏輯上相鄰的結(jié)點(diǎn)存儲在物理位置相鄰的存儲單元里,結(jié)點(diǎn)間的邏輯關(guān)系由存儲單元的鄰接關(guān)系來體現(xiàn)。由此得到的存儲表示稱為順序存儲結(jié)構(gòu),通常借助程序語言的數(shù)組描述。

2)鏈接存儲方法:它不要求邏輯上相鄰的結(jié)點(diǎn)在物理位置上亦相鄰,結(jié)點(diǎn)間的邏輯關(guān)系是由附加的指針字段表示。由此得到的存儲表示稱為鏈?zhǔn)酱鎯Y(jié)構(gòu),通常借助于程序語言的指針類型描述。

3)索引存儲方法:除建立存儲結(jié)點(diǎn)信息外,還建立附加的索引表來標(biāo)識結(jié)點(diǎn)的地址。組成索引表的索引項(xiàng)由結(jié)點(diǎn)的關(guān)鍵字和地址組成。如果每個結(jié)點(diǎn)在索引表中都有一個索引項(xiàng),則該索引表稱為稠密索引(DenseIndex)。如果一組結(jié)點(diǎn)在索引表中只對應(yīng)一個索引項(xiàng),則該索引表稱為稀疏索引。

4)散列存儲方法:就是根據(jù)結(jié)點(diǎn)的關(guān)鍵字直接計(jì)算出該結(jié)點(diǎn)的存儲地址。

通過以上分析可知,選項(xiàng)D正確。

11.

如果讓元素a、b、c依次進(jìn)棧,那么出棧次序不可能是______。A.c,a,bB.b,a,cC.c,b,aD.a,c,b正確答案:A

12.

現(xiàn)有一個包含m個結(jié)點(diǎn)的三叉樹,即每個結(jié)點(diǎn)都有三個指向孩子結(jié)點(diǎn)的指針,請問:在這3m個指針中,空指針的個數(shù)是______。A.2mB.2m-1C.2m+1D.3m正確答案:C[解析]根據(jù)題目意思可知,m個結(jié)點(diǎn)共有3m個指針,而除了根結(jié)點(diǎn)外,每個結(jié)點(diǎn)都有父結(jié)點(diǎn)(即需要占用一個父結(jié)點(diǎn)的指針),所以,空指針數(shù)為3m-(m-1)=2m+1,選項(xiàng)C正確。

13.

下面不是mead類的方法是______。A.run!()B.start()C.exit()D.stop()正確答案:C[解析]在Java語言中,Tharead類位于java.lang命名空間下。Thread類主要用于創(chuàng)建并控制線程、設(shè)置線程優(yōu)先級并獲取其狀態(tài)。

本題中,對于選項(xiàng)A,要實(shí)現(xiàn)多線程,在繼承了Thread類后必須實(shí)現(xiàn)run()方法,也就是說,線程的核心邏輯都存在于run()方法中。這個方法被start()方法調(diào)用來實(shí)現(xiàn)多線程的功能,如果直接調(diào)用run()方法,那么就與調(diào)用普通的方法類似。所以,選項(xiàng)A錯誤。

對于選項(xiàng)B,Tbread類提供了一個start()方法,該方法的功能是讓這個線程開始執(zhí)行,當(dāng)開始執(zhí)行后,JVM將會調(diào)用這個線程的run()方法來執(zhí)行這個線程的任務(wù)。所以,選項(xiàng)B錯誤。

對于選項(xiàng)C,Tbread類沒有exit()這個方法。所以,選項(xiàng)C正確。

對于選項(xiàng)D,Thread類的stop()方法是用來停止一個線程的,但是由于這個方法不是線程安全的,因此,通常不推薦使用。所以,選項(xiàng)D錯誤。

14.

以下關(guān)于Linux下的進(jìn)程的描述中,不正確的是______。A.僵尸進(jìn)程會被init進(jìn)程接管,而僵尸進(jìn)程不會造成資源浪費(fèi)B.孤兒進(jìn)程的父進(jìn)程在它之前退出,會被init進(jìn)程接管,它不會造成資源浪費(fèi)C.進(jìn)程是資源管理的最小單位,而線程是程序執(zhí)行的最小單位。Linux下的線程本質(zhì)上用進(jìn)程實(shí)現(xiàn)D.子進(jìn)程如果對資源只是進(jìn)行讀操作,那么完全和父進(jìn)程共享物理地址空間正確答案:A[解析]對于選項(xiàng)A,僵尸進(jìn)程不會被init進(jìn)程接管,會一直占用資源。所以,選項(xiàng)A錯誤。

對于選項(xiàng)B,孤兒進(jìn)程在產(chǎn)生的時(shí)候就會被init進(jìn)程所接管,會直接回收資源,也就不會占用資源。所以,選項(xiàng)B正確。

對于選項(xiàng)C與選項(xiàng)D,描述正確。

所以,本題的答案為A。

15.

欲構(gòu)造ArrayList類的一個實(shí)例,此類繼承了List接口,下列方法中,正確的是______。A.ArrayListlist=newObject()B.Listlist=newArrayList()C.Listlist=newList()D.ArrayListlist=newList()正確答案:B[解析]對于選項(xiàng)A,在Java語言中,可以把子類的對象賦值給父類的引用變量,但是不可以把父類的對象賦值給子類的引用,Object是所有類的父類,因此,也是ArrayList的父類,所以,這種寫法是不合法的,如果換成語句Objecto=newArrayList()就合法了。所以,選項(xiàng)A錯誤。

對于選項(xiàng)B,ArrayList實(shí)現(xiàn)了List接口。所以,選項(xiàng)B正確。

對于選項(xiàng)C與選項(xiàng)D,由于List是接口,因此,不能被實(shí)例化。所以,選項(xiàng)C與選項(xiàng)D錯誤。

所以,本題的答案為B。

16.

釋放掉一個指定占據(jù)的內(nèi)存空間的方法是______。A.調(diào)用system.gc()方法B.調(diào)用free()方法C.賦值給該項(xiàng)對象的引用為nullD.程序員無法明確強(qiáng)制垃圾回收器運(yùn)行正確答案:D[解析]在Java語言中,GC(GarbageCollection,垃圾回收)是一個非常重要的概念,它的主要作用是回收程序中不再使用的內(nèi)存。在使用C/C++語言進(jìn)行程序開發(fā)的時(shí)候,開發(fā)人員必須非常仔細(xì)地管理好內(nèi)存的分配與釋放,如果忘記或者錯誤地釋放內(nèi)存往往會導(dǎo)致程序運(yùn)行不正確甚至是程序的崩潰。為了減輕開發(fā)人員的工作,同時(shí)增加系統(tǒng)的安全性與穩(wěn)定性,Java語言提供了垃圾回收器來自動檢測對象的作用域,實(shí)現(xiàn)自動地、把不再被使用的存儲空間釋放掉。

在Java語言中,釋放掉占據(jù)的內(nèi)存空間是由GC完成的,程序員無法直接強(qiáng)制釋放存儲空間,當(dāng)一個對象不被使用的時(shí)候,GC會將該對象標(biāo)記為垃圾,并在后面一個不確定的時(shí)間內(nèi)回收垃圾(程序員無法控制這個時(shí)間)。

給對象引用賦值為null,并且該對象無其他引用,GC會標(biāo)記該對象為垃圾,并在后面一個不確定的時(shí)間內(nèi)回收垃圾。所謂不確定是指什么時(shí)間回收,程序員無法控制。

本題中,對于選項(xiàng)A,開發(fā)人員可以通過調(diào)用System.gc()方法來通知垃圾回收器運(yùn)行,但是JVM也并不能保證垃圾回收器馬上就會運(yùn)行。因此,選項(xiàng)A錯誤。

對于選項(xiàng)B,Java語言沒有提供free(釋放)方法。因此,選項(xiàng)B錯誤。

對于選項(xiàng)C,當(dāng)把對象的引用設(shè)置為null時(shí),GC會標(biāo)記該對象為垃圾,并在后面一個不確定的時(shí)問內(nèi)回收垃圾。因此,選項(xiàng)C錯誤。

對于選項(xiàng)D,程序員無法明確強(qiáng)制垃圾回收器運(yùn)行。因此,選項(xiàng)D正確。

17.

下列排序方法中,屬于穩(wěn)定排序的是______。A.選擇排序B.希爾排序C.堆排序D.歸并排序正確答案:D[解析]所謂穩(wěn)定排序,指的是一個序列中的相同的元素在排序完畢之后,它們的順序仍然不會改變。反之,排序算法則是不穩(wěn)定的。

對于選項(xiàng)A,選擇排序是給每個位置選擇當(dāng)前元素最小的,比如給第一個位置選擇最小的,在剩余元素里面給第二個元素選擇第二小的,依次類推,直到第n-1個元素,第n個元素不用選擇了,因?yàn)橹皇O滤粋€最大的元素了。例如,序列37329,第一遍選擇第1個元素3會和第4個元素2交換,那么原序列中兩個3的相對前后順序就被破壞了,所以,選擇排序不是一個穩(wěn)定的排序算法,選項(xiàng)A錯誤。

對于選項(xiàng)B,希爾排序是按照不同步長對元素進(jìn)行插入排序,當(dāng)剛開始元素很無序的時(shí)候,步長最大,所以,插入排序的元素個數(shù)很少,速度很快;當(dāng)元素基本有序了,步長很小,插入排序?qū)τ谟行虻男蛄行屎芨?。所以,希爾排序的時(shí)間復(fù)雜度會比O(n^2)好一些。由于涉及多次插入排序,而一次插入排序是穩(wěn)定的,不會改變相同元素的相對順序,但在不同的插入排序過程中,相同的元素可能在各自的插入排序中移動,最后其穩(wěn)定性就會被打亂,所以,希爾排序是不穩(wěn)定的,選項(xiàng)B錯誤。

對于選項(xiàng)C,堆的結(jié)構(gòu)是結(jié)點(diǎn)i的孩子為2*i和2*i+1結(jié)點(diǎn),大頂堆要求父結(jié)點(diǎn)大于等于其2個子結(jié)點(diǎn),小頂堆要求父結(jié)點(diǎn)小于等于其2個子結(jié)點(diǎn)。對于一個長為n的序列,堆排序的過程是從第n/2開始和其子結(jié)點(diǎn)共3個值選擇最大(大頂堆)或者最小(小頂堆),這3個元素之間的選擇當(dāng)然不會破壞穩(wěn)定性。但當(dāng)為n/2-1,n/2-2,…,1這些父結(jié)點(diǎn)選擇元素時(shí),就會破壞穩(wěn)定性。有可能第n/2個結(jié)點(diǎn)的父結(jié)點(diǎn)與它的孩子結(jié)點(diǎn)(假設(shè)這個結(jié)點(diǎn)的值為X)進(jìn)行了交換,而第n/2-1個結(jié)點(diǎn)如果也有一個孩子結(jié)點(diǎn)的值為X,但是這個父結(jié)點(diǎn)沒有與孩子結(jié)點(diǎn)進(jìn)行交換,那么這2個相同的元素之間的穩(wěn)定性就被破壞了。所以,堆排序不是穩(wěn)定的排序算法,選項(xiàng)C錯誤。

對于選項(xiàng)D,歸并排序是把序列遞歸地分成短序列,遞歸出口是短序列只有1個元素(認(rèn)為直接有序)或者2個序列(1次比較和交換),然后把各個有序的段序列合并成一個有序的長序列,不斷合并直到原序列全部排好序??梢园l(fā)現(xiàn),在1個或2個元素時(shí),1個元素不會交換,2個元素如果大小相等也不會交換,這不會破壞穩(wěn)定性。那么,在短的有序序列合并的過程中,穩(wěn)定是否受到破壞?沒有,合并過程中,可以保證如果兩個當(dāng)前元素相等,則把處在前面的序列的元素保存在結(jié)果序列的前面,這樣就保證了穩(wěn)定性。所以,歸并排序是穩(wěn)定的排序算法,選項(xiàng)D正確。

所以,本題的答案為D。

18.

PING命令使用ICMP的以下______代碼類型。A.重定向B.Echo響應(yīng)C.源抑制D.目標(biāo)不可達(dá)正確答案:B[解析]PING命令主要用來檢測網(wǎng)絡(luò)是否連通,使用方式為:pingIP地址。底層實(shí)現(xiàn)的原理為:PING發(fā)送一個ICMPECHO包;接收ICMPecho(ICMP回聲應(yīng)答)。因此,選項(xiàng)B正確。

對于選項(xiàng)A,ICMP(InternetControlMessageProtocol,Internnet控制報(bào)文協(xié)議)重定向報(bào)文是ICMP控制報(bào)文中的一種。在特定的情況下,當(dāng)路由器檢測到一臺機(jī)器使用非優(yōu)化路由時(shí),它會向該主機(jī)發(fā)送一個ICMP重定向報(bào)文,請求主機(jī)改變路由。路由器也會把初始數(shù)據(jù)報(bào)向它的目的地轉(zhuǎn)發(fā)。因此,選項(xiàng)A錯誤。

對于選項(xiàng)C,源抑制報(bào)文(SourceOuenchMessage)一般被接收設(shè)備用于幫助防止它們的緩存溢出。接收設(shè)備通過發(fā)送源抑制報(bào)文來請求源設(shè)備降低當(dāng)前的數(shù)據(jù)發(fā)送速度。因此,選項(xiàng)C錯誤。

對于選項(xiàng)D,當(dāng)數(shù)據(jù)包無法被轉(zhuǎn)發(fā)到目標(biāo)結(jié)點(diǎn)或者上層協(xié)議時(shí),路由器或者目標(biāo)結(jié)點(diǎn)發(fā)送ICMPv6目標(biāo)不可達(dá)差錯報(bào)文。因此,選項(xiàng)D錯誤。

19.

JavaTbread中的方法resume()負(fù)責(zé)恢復(fù)哪些線程的執(zhí)行?______A.通過調(diào)用wait()方法而停止運(yùn)行的線程B.通過調(diào)用sleep()方法而停止運(yùn)行的線程C.通過調(diào)用stop()方法而停止運(yùn)行的線程D.通過調(diào)用suspend()方法而停止運(yùn)行的線程正確答案:D[解析]對于選項(xiàng)A,wait()方法是一種使線程暫停執(zhí)行的方法,例如,當(dāng)線程交互時(shí),如果線程對一個同步對象發(fā)出了一個wait()調(diào)用請求,那么該線程會暫停執(zhí)行,被調(diào)對象進(jìn)入等待狀態(tài),直到被喚醒(通常使用notify方法喚醒)或等待時(shí)間超時(shí)。所以,選項(xiàng)A錯誤。

對于選項(xiàng)B,sleep()方法的作用是使當(dāng)前運(yùn)行的線程休眠指定的時(shí)間。所以,選項(xiàng)B錯誤。

對于選項(xiàng)C,可以使用stop()方法來終止線程的執(zhí)行。當(dāng)使用Tbread.stop()方法來終止線程時(shí),它會釋放已經(jīng)鎖定的所有的監(jiān)視資源。如果當(dāng)前任何一個受這些監(jiān)視資源保護(hù)的對象處于一個不一致的狀態(tài),其他的線程將會看到這個不一致的狀態(tài),這可能會導(dǎo)致程序執(zhí)行的不確定性,并且這種問題很難被定位。因此,不推薦使用。所以,選項(xiàng)C錯誤。

對于選項(xiàng)D,suspend()方法就是將一個線程掛起(暫停),并且不會自動恢復(fù),必須通過調(diào)用對應(yīng)的resume()方法,才能使得線程重新進(jìn)入可執(zhí)行狀態(tài)。所以,選項(xiàng)D正確。

20.

有如下代碼:publicclassTest{publicstaticvoidmain(Stringargv[]){int[]arr=newint[5];System.out.println(arr[5]);}}

當(dāng)編譯并運(yùn)行上面程序時(shí),輸出結(jié)果是______。A.編譯錯誤B.運(yùn)行錯誤C.輸出“null”D.輸出0正確答案:B[解析]在Java語言中,數(shù)組下標(biāo)是從0開始的,所以,一個大小為n的數(shù)組,它的有效下標(biāo)是O~n-1。如果下標(biāo)不在這個范圍內(nèi),就會發(fā)生錯誤。

本題中,首先申請了一個長度為5的數(shù)組,數(shù)組的下標(biāo)為0~4,當(dāng)使用arr[5]訪問數(shù)組元素的時(shí)候,由于訪問地址不在數(shù)組能夠訪問的合法地址范圍內(nèi),此時(shí)就發(fā)生了數(shù)組越界,會拋出java.lang.ArrayIndexOutOfoundsException異常,導(dǎo)致程序出現(xiàn)運(yùn)行錯誤。所以,選項(xiàng)B正確。

21.

在Java語言中,已定義兩個接口B和C,要定義一個實(shí)現(xiàn)這兩個接口的類,以下語句正確的是______。A.interfaceAimplementsB,CB.interfaceAextendsB,CC.classAimplementsB,CD.classAimplementsB,implementsC正確答案:C[解析]只有類才能實(shí)現(xiàn)接口,而實(shí)現(xiàn)接口的關(guān)鍵字為implements,當(dāng)實(shí)現(xiàn)多個接口的時(shí)候,只需要一個關(guān)鍵字implements,多個接口用逗號隔開即可。因此,選項(xiàng)C正確,選項(xiàng)D錯誤。

對于選項(xiàng)A,只有類才能實(shí)現(xiàn)接口,而接口是不能實(shí)現(xiàn)接口的。因此,選項(xiàng)A錯誤。

對于選項(xiàng)B,接口只能繼承接口,而不能繼承類。因此,選項(xiàng)B錯誤。

22.

最佳二叉搜索樹是______。A.關(guān)鍵碼個數(shù)最少的二叉搜索樹B.搜索時(shí)平均比較次數(shù)最少的二叉搜索樹C.所有結(jié)點(diǎn)的左子樹都為空的二叉搜索樹D.所有結(jié)點(diǎn)的右子樹都為空的二叉搜索樹正確答案:B[解析]二叉查找樹(BinarySearchTree)又稱為二叉搜索樹、二叉排序樹,它或者是一棵空樹,或者是具有下列性質(zhì)的二叉樹:若它的左子樹不空,則左子樹上所有結(jié)點(diǎn)的值均小于它的根結(jié)點(diǎn)的值;若它的右子樹不空,則右子樹上所有結(jié)點(diǎn)的值均大于它的根結(jié)點(diǎn)的值;它的左、右子樹也分別為二又查找樹。

二叉搜索樹的優(yōu)點(diǎn)是:樹中的元素是有序的,對二叉搜索樹的查找類似于二分查找,顯然,查找過程中比較的次數(shù)越少,效率就越高。顯然,選項(xiàng)B正確。

對于選項(xiàng)A,二叉搜索樹的好壞與關(guān)鍵碼的個數(shù)沒有直接關(guān)系。所以,選項(xiàng)A錯誤。

對于選項(xiàng)C與選項(xiàng)D,如果所有結(jié)點(diǎn)的左孩子(右孩子)都為空,那么查找效率與線性查找相同,都為O(n)。所以,選項(xiàng)C與選項(xiàng)D錯誤。

23.

有Shape和Circle兩個類的定義,在序列化一個Circle的對象circle到文件時(shí),下面會被保存到文件中的字段是______。

classShape

{

publicStringname;

}

classCircleextendsShapeimplementsSerializable

{

privatefloatradius;

transientintcolor;

publicstaticStringtype="Circle";

}A.nameB.radiusC.colorD.typeE.都不會正確答案:B

24.

有如下代碼:

intmain()

{

fork()||fork();

}

以上程序創(chuàng)建的進(jìn)程個數(shù)是______。A.2B.3C.4D.5正確答案:B[解析]邏輯或運(yùn)算符||具有短路功能,即如果第一個表達(dá)式的值為真,那么運(yùn)算符||后面的表達(dá)式將不再執(zhí)行,如果第一個表達(dá)式的返回值為假,就會繼續(xù)判斷右邊的表達(dá)式的值是否為真。

fork()函數(shù)的作用是創(chuàng)建一個新的進(jìn)程,一個現(xiàn)有進(jìn)程可以調(diào)用fork()函數(shù)創(chuàng)建一個新進(jìn)程。由函數(shù)fork()創(chuàng)建的新進(jìn)程被稱為子進(jìn)程(ChildProcess)。fork()函數(shù)被調(diào)用一次但會返回兩次,兩次返回的唯一區(qū)別是子進(jìn)程中返回0而父進(jìn)程中返回子進(jìn)程ID。子進(jìn)程是父進(jìn)程的副本,它將獲得父進(jìn)程數(shù)據(jù)空間、堆、棧等資源的副本。注意,子進(jìn)程持有的是上述存儲空間的“副本”,這意味著父子進(jìn)程間不共享這些存儲空間。

本題中,fork()||fork()語句的執(zhí)行流程為,在父進(jìn)程中,左邊的fork()函數(shù)返回一個非零值(子進(jìn)程ID),根據(jù)邏輯或運(yùn)算符||的短路原則,前面的表達(dá)式為真時(shí),后面的表達(dá)式不再執(zhí)行。

在子進(jìn)程中,左邊f(xié)ork()函數(shù)的返回值為0,因此會繼續(xù)執(zhí)行后面的fork()函數(shù),又創(chuàng)建一個新的進(jìn)程,因此一共創(chuàng)建了3個進(jìn)程,分別為main進(jìn)程->子進(jìn)程->子進(jìn)程。

如圖所示,相同形狀的為同一進(jìn)程,共有三種進(jìn)程。

進(jìn)程創(chuàng)建過程

所以,本題的答案為B。

25.

一個具有20個葉子結(jié)點(diǎn)的二叉樹,它有______個度為2的結(jié)點(diǎn)。A.16B.21C.17D.19正確答案:D[解析]度的含義是一個結(jié)點(diǎn)所擁有的孩子個數(shù)。結(jié)點(diǎn)的度為0表示該結(jié)點(diǎn)沒有孩子結(jié)點(diǎn),也就是說,該結(jié)點(diǎn)為葉子結(jié)點(diǎn)。結(jié)點(diǎn)的度為2表示該結(jié)點(diǎn)有兩個孩子結(jié)點(diǎn)。

在二叉樹中,存在這樣一個結(jié)論:對于任何的一棵二叉樹,度為0的結(jié)點(diǎn)(就是葉子結(jié)點(diǎn))數(shù)總是比度為2的結(jié)點(diǎn)數(shù)多一個。即假定度為0的結(jié)點(diǎn)(就是葉子結(jié)點(diǎn))個數(shù)為n0,度為2的結(jié)點(diǎn)的個數(shù)為n2,那么數(shù)值上滿足如下計(jì)算公式:n0=n2+1。證明過程如下:

假設(shè)n1為二叉樹T中度為1的結(jié)點(diǎn)數(shù),因?yàn)槎鏄渲兴薪Y(jié)點(diǎn)的度都小于或等于2,所以,其結(jié)點(diǎn)總數(shù)為

n=n0+n1+n2

(1)

而二叉樹中的分支數(shù),除了根結(jié)點(diǎn)外,其余結(jié)點(diǎn)都有一個分支進(jìn)入,設(shè)B為分支總數(shù),則n=B+1。由于這些分支是由度為1或2的結(jié)點(diǎn)射出的,所以,B=n1+2n2,于是得出如下結(jié)論:

n=n1+2n2+1

(2)

由表達(dá)式(1)和(2)可得:n0=n2+1。

本題中,由于己知葉子結(jié)點(diǎn)數(shù)為20,即n0的值為20,所以,n2的值就為19,選項(xiàng)D正確。

26.

有字符序列{Q,H,C,Y,P,A,M,S,R,D,F(xiàn),X},則新序列{F,H,C,D,P,A,M,O,R,S,Y,X}是下列______算法一趟掃描的結(jié)果。A.二路歸并排序B.快速排序C.步長為4的希爾排序D.冒泡排序正確答案:B

27.

下面不是進(jìn)程和程序的區(qū)別的是______。A.程序是一組有序的靜態(tài)指令,進(jìn)程是一次程序的執(zhí)行過程B.程序只能在前臺運(yùn)行,而進(jìn)程可以在前臺或后臺運(yùn)行C.程序可以長期保存,進(jìn)程是暫時(shí)的D.程序沒有狀態(tài),而進(jìn)程是有狀態(tài)的正確答案:B[解析]下表是程序、進(jìn)程、線程的定義與關(guān)聯(lián)關(guān)系。程序、進(jìn)程、線程的定義與關(guān)聯(lián)關(guān)系術(shù)語定義與描述程序一組指令的有序結(jié)合,是一個靜態(tài)沒狀態(tài)的文本進(jìn)程具有一定獨(dú)立功能的程序關(guān)于某個數(shù)據(jù)集合上的一次運(yùn)行活動,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨(dú)立單元線程進(jìn)程的一個實(shí)體,是CPU調(diào)度和分派的基本單元,是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單元。本身基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源(例如程序計(jì)數(shù)器、一組寄存器和棧)一個線程可以創(chuàng)建和撤銷另一個線程,同一個進(jìn)程中的多個線程之間可以并發(fā)執(zhí)行

所以,本題的答案為B。

28.

下面不是response對象的方法的是______。A.addCookie(Cookiecookie)B.setHeader(Stringheademarne,Stringheadervalue)C.getParameter(Stringstr)D.sendError(interrorcode)正確答案:C[解析]response對象所提供的方法有如下幾類:

(1)設(shè)定響應(yīng)頭的方法

voidaddCookie(Cookiecookie)

新增cookie

voidaddDateHeader(Stringname,longdate)

新增long類型的值到name響應(yīng)頭

voidaddHeader(Stringname,Stringvalue)

新增String類型的值到name響應(yīng)頭

voidaddIntHeader(Stringname,intvahe)

新增int類型的值到name響應(yīng)頭

voidsetDateHeader(Stringname,longdate)

指定long類型的值到name響應(yīng)頭

voidsetHeader(Stringname,Stringvalue)

指定String類型的值到name響應(yīng)頭

voidsetIntHeader(Stringname,intvalue)

指定int類型的值到name響應(yīng)頭

booleancontainsHeader

判斷指定名字的HTTP文件頭是否已經(jīng)存在,然

后返回真假部爾值

(2)設(shè)定響應(yīng)狀態(tài)碼的方法

voidsendError(intsc)

傳送狀態(tài)碼(StatusCode)

voidsendError(intsc,Stringmsg)

傳送狀態(tài)碼和錯誤信息

voidsetStatus(intsc)

設(shè)定狀態(tài)碼

(3)用來URL重寫(Rewriting)的方法

StringencodeRedirectURL(Stringurl)

對使用sendRedirect()方法的URL予以編碼

(4)設(shè)置重定向

sendRedirect()

設(shè)置重定向頁面

(5)設(shè)置不同瀏覽器對應(yīng)的數(shù)據(jù)

setContentType(StringcontentTypestr):使客戶端瀏覽器,區(qū)分不同種類的數(shù)據(jù),并根據(jù)不同的MIME(MultipurposeInternetMailExtensions,多用途互聯(lián)網(wǎng)郵件擴(kuò)展類型)調(diào)用瀏覽器內(nèi)不同的程序嵌入模塊來處理相應(yīng)的數(shù)據(jù)。

所以,選項(xiàng)C正確。

29.

靜態(tài)局部變量存儲在進(jìn)程的______。A.棧區(qū)B.寄存器區(qū)C.代碼區(qū)D.全局區(qū)正確答案:D

30.

假設(shè)某文件經(jīng)內(nèi)排序后得到100個初始?xì)w并段(初始順串),若使用多路歸并排序算法,且要求三趟歸并完成排序,問歸并路數(shù)最少為______。A.8B.7C.6D.5正確答案:D[解析]本題首先要弄懂歸并排序的思路。m個元素k路歸并的歸并次數(shù)s=logk(m),當(dāng)m=100,s=3時(shí),代入公式,logk(100)<=3,即k^3>=100,所以,k值最小為5,選項(xiàng)D正確。

二、論述題1.

段頁式虛擬存儲管理方案的特點(diǎn)是什么?正確答案:頁式存儲分配是把到來的作業(yè)分成相等大小的頁,段式存儲管理是把一個程序分成若干個段(Segment)進(jìn)行存儲,每個段都是一個邏輯實(shí)體(LogicalEntity),段頁式虛擬存儲管理是基本分段存儲管理方式和基本分頁存儲管理方式原理的結(jié)合,兼有段式和頁式管理的優(yōu)點(diǎn),即先將用戶程序分成若干個段,再把每個段分成若干個頁,并為每一個段賦予一個段名,頁間不要求連續(xù)(能動態(tài)連接),用分段方法分配管理作業(yè),用分頁方法分配管理內(nèi)存。它的特點(diǎn)是空間浪費(fèi)小、存儲共享容易、存儲保護(hù)容易及能動態(tài)連接。

段頁式管理采用二維地址空間,例如段號(S)、頁號(P)和頁內(nèi)單元號(D)。系統(tǒng)建兩張表格,每一作業(yè)一張段表,每一段建立一張頁表,段表指出該段的頁表在內(nèi)存中的位置,地址變換機(jī)構(gòu)類似頁式機(jī)制,只是前面增加一項(xiàng)段號。所以,存儲共享容易、存儲保護(hù)容易。

2.

寫代碼獲取年月日、小時(shí)分秒,獲取從1970年到現(xiàn)在的毫秒數(shù)及格式化日期。正確答案:System.currentTimeMillis產(chǎn)生一個當(dāng)前的毫秒,這個毫秒其實(shí)就是自1970年1月1日0時(shí)起的毫秒數(shù),Date()就相當(dāng)于Date(System.currentTimeMillis()),因?yàn)镈ate類還有構(gòu)造方法Date(longdate)以表示自從標(biāo)準(zhǔn)基準(zhǔn)時(shí)間(稱為“歷元(epoch)”,即1970年1月1日00:00:00GMT)以來的指定毫秒數(shù)。得到了這個毫秒數(shù),也就可以計(jì)算出現(xiàn)在的年、月、日、周、時(shí)、時(shí)區(qū)等信息,但是這不是用戶自己去計(jì)算的,因?yàn)橛蠧alendar,Calendar最終輸出的結(jié)果就是年、月、日、周、時(shí)、時(shí)區(qū)等。

SimpleDateFormat是一個以與語言環(huán)境相關(guān)的方式來格式化和分析日期的具體類,它允許進(jìn)行格式化(日期—>文本)、分析(文本—>日期)和規(guī)范化。SimpleDateFormat使得可以選擇任何用戶定義的日期一時(shí)間格式的模式。

通過以上分析,寫出示例代碼如下:importjava.text.SimpleDateFormat;importjava.util.Date;publicclassTest{publicstaticvoidmain(String[]args)throwsException{//獲取1970年1月1日

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論