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

下載本文檔

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

文檔簡(jiǎn)介

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

以下關(guān)于傳輸層協(xié)議UDP的描述中,正確的有______。A.比較適合傳輸小的數(shù)據(jù)文件B.提高了傳輸?shù)目煽啃訡.提供了高的傳輸效率D.使用窗口機(jī)制來(lái)(江南博哥)實(shí)現(xiàn)流量控制正確答案:C

2.

欲構(gòu)造ArrayList類(lèi)的一個(gè)實(shí)例,此類(lèi)繼承了List接口,下列方法正確的是______。A.ArrayListmyList=newLinkedList();B.ListmyList=newArrayList();C.ArrayListmyList=newList();D.ListmyList=newList();正確答案:B

3.

對(duì)于IP地址,屬于______類(lèi)地址。A.AB.BC.CD.D正確答案:C[解析]IP地址根據(jù)網(wǎng)絡(luò)ID的不同分為5種類(lèi)型:A類(lèi)地址、B類(lèi)地址、C類(lèi)地址、D類(lèi)地址和E類(lèi)地址。

一個(gè)A類(lèi)IP地址由1字節(jié)的網(wǎng)絡(luò)地址和3字節(jié)主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“0”,地址范圍從到??捎玫腁類(lèi)網(wǎng)絡(luò)有126個(gè),每個(gè)網(wǎng)絡(luò)能容納1億多個(gè)主機(jī)。一個(gè)B類(lèi)IP地址由2個(gè)字節(jié)的網(wǎng)絡(luò)地址和2個(gè)字節(jié)的主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“10”,地址范圍從到55??捎玫腂類(lèi)網(wǎng)絡(luò)有16382個(gè),每個(gè)網(wǎng)絡(luò)能容納6萬(wàn)多個(gè)主機(jī)。一個(gè)C類(lèi)IP地址由3字節(jié)的網(wǎng)絡(luò)地址和1字節(jié)的主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“110”。范圍從到55。C類(lèi)網(wǎng)絡(luò)可達(dá)209萬(wàn)余個(gè),每個(gè)網(wǎng)絡(luò)能容納254個(gè)主機(jī)。D類(lèi)IP地址的第一個(gè)字節(jié)以“1110”開(kāi)始,它是一個(gè)專(zhuān)門(mén)保留的地址。它并不指向特定的網(wǎng)絡(luò),目前這一類(lèi)地址被用在多點(diǎn)廣播(Multicast)中。多點(diǎn)廣播地址用來(lái)一次尋址一組計(jì)算機(jī),它標(biāo)識(shí)共享同一協(xié)議的一組計(jì)算機(jī)。E類(lèi)IP地址的第一個(gè)字節(jié)以“11110”開(kāi)始,為將來(lái)使用保留。

通過(guò)上面分析可知,屬于~55范圍內(nèi),屬于C類(lèi)地址范疇。所以,選項(xiàng)C正確。

4.

極限編程XP的核心思想是______。A.強(qiáng)調(diào)文檔和以敏捷性應(yīng)對(duì)變化B.強(qiáng)調(diào)建模和以敏捷性應(yīng)對(duì)變化C.強(qiáng)調(diào)設(shè)計(jì)和以敏捷性應(yīng)對(duì)變化D.強(qiáng)調(diào)人和人之間的合作因素和以敏捷性應(yīng)對(duì)變化正確答案:D[解析]極限編程(ExtremeProgramming,XP)是一種輕量級(jí)的、靈巧的軟件開(kāi)發(fā)方法,同時(shí),它也是一種非常嚴(yán)謹(jǐn)和周密的方法。它的基礎(chǔ)和價(jià)值觀是交流、樸素、反饋和勇氣,即任何一個(gè)軟件項(xiàng)目都可以從四個(gè)方面入手進(jìn)行改善:加強(qiáng)交流;從簡(jiǎn)單做起;尋求反饋;勇于實(shí)事求是。它是敏捷開(kāi)發(fā)的典型代表,其核心思想是強(qiáng)調(diào)人和人之間的合作因素和以敏捷性應(yīng)對(duì)變化。所以,選項(xiàng)D正確。

5.

遞歸式地先序遍歷一個(gè)有n個(gè)結(jié)點(diǎn)、深度為d的二叉樹(shù),則需要??臻g的大小為_(kāi)_____。A.O(n)B.O(d)C.O(logn)D.(nlogn)正確答案:B[解析]本題中,由于沒(méi)有明確交代二叉樹(shù)的類(lèi)型或性質(zhì),所以,本題中的二叉樹(shù)是無(wú)法確定類(lèi)型的,自然而然也就并不一定是平衡的了,也就是說(shuō),深度d的值并不一定等于logn,很有可能d的值比logn的值大,而??臻g的大小通常為二叉樹(shù)的深度,所以,棧的大小應(yīng)該是O(d),而不是O(logn)。因此,本題的答案為B。

6.

TCP報(bào)文首部信息中與關(guān)閉連接有關(guān)的是______。A.URGB.ACKC.SYND.FIN正確答案:D[解析]TCP是一個(gè)面向連接的協(xié)議,無(wú)論哪一方向另一方發(fā)送數(shù)據(jù)之前,都必須先在雙方之間建立一條連接。TCP使用三次握手(Three-wayHandshake)協(xié)議來(lái)建立連接,圖1描述了三次握手的報(bào)文序列。

圖1

三次握手報(bào)文序列

當(dāng)TCP連接建立起來(lái)后,就可以在兩個(gè)方向傳送數(shù)據(jù)流。當(dāng)TCP的應(yīng)用進(jìn)程再?zèng)]有數(shù)據(jù)需要發(fā)送時(shí),就發(fā)送關(guān)閉命令。TCP通過(guò)發(fā)送控制位FIN=1的數(shù)據(jù)片來(lái)關(guān)閉本方數(shù)據(jù)流,但還可以繼續(xù)接收數(shù)據(jù),直到對(duì)方關(guān)閉那個(gè)方向的數(shù)據(jù)流,連接就關(guān)閉。

TCP協(xié)議使用修改的三次握手協(xié)議來(lái)關(guān)閉連接,即終止一個(gè)連接要經(jīng)過(guò)4次握手。這是由于TCP的半關(guān)閉(Half-close)造成的。由于一個(gè)TCP連接是全雙工(即數(shù)據(jù)在兩個(gè)方向上能同時(shí)傳遞)的,因此,每個(gè)方向必須單獨(dú)地進(jìn)行關(guān)閉。關(guān)閉的原則就是當(dāng)一方完成它的數(shù)據(jù)發(fā)送任務(wù)后就能發(fā)送一個(gè)FIN來(lái)終止這個(gè)方向的連接。當(dāng)一端收到一個(gè)FIN,它必須通知應(yīng)用層另一端已經(jīng)終止了那個(gè)方向的數(shù)據(jù)傳送。發(fā)送FIN通常是應(yīng)用層進(jìn)行關(guān)閉的結(jié)果。過(guò)程如圖2所示。

圖2

FIN報(bào)文傳送過(guò)程

從一方的TCP來(lái)說(shuō),連接的關(guān)閉有三種情況:

(1)本方啟動(dòng)關(guān)閉

收到本方應(yīng)用進(jìn)程的關(guān)閉命令后,TCP在發(fā)送完尚未處理的報(bào)文段后,發(fā)FIN=1的報(bào)文段給對(duì)方,且TCP不再受理本方應(yīng)用進(jìn)程的數(shù)據(jù)發(fā)送。在FIN以前發(fā)送的數(shù)據(jù)字節(jié),包括FIN,都需要對(duì)方確認(rèn),否則要重傳。注意FIN也占一個(gè)順序號(hào)。一旦收到對(duì)方對(duì)FIN的確認(rèn)以及對(duì)方的FIN報(bào)文段,本方TCP就對(duì)該FIN進(jìn)行確認(rèn),再等待一段時(shí)間,然后關(guān)閉連接。等待是為了防止本方的確認(rèn)報(bào)文丟失,避免對(duì)方的重傳報(bào)文干擾新的連接。

(2)對(duì)方啟動(dòng)關(guān)閉

當(dāng)TCP收到對(duì)方發(fā)來(lái)的FIN報(bào)文時(shí),發(fā)ACK確認(rèn)此FIN報(bào)文,并通知應(yīng)用進(jìn)程連接正在關(guān)閉。應(yīng)用進(jìn)程將以關(guān)閉命令響應(yīng)。TCP在發(fā)送完尚未處理的報(bào)文段后,發(fā)一個(gè)FIN報(bào)文給對(duì)方TCP,然后等待對(duì)方對(duì)FIN的確認(rèn),收到確認(rèn)后關(guān)閉連接。若對(duì)方的確認(rèn)未及時(shí)到達(dá),在等待一段時(shí)間后也關(guān)閉連接。

(3)雙方同時(shí)啟動(dòng)關(guān)閉

如果連接雙方的應(yīng)用進(jìn)程同時(shí)發(fā)關(guān)閉命令,則雙方TCP在發(fā)送完尚未處理的報(bào)文段后,發(fā)送FIN報(bào)文。各方TCP在FIN前所發(fā)報(bào)文都得到確認(rèn)后,發(fā)ACK確認(rèn)它收到的FIN。各方在收到對(duì)方對(duì)FIN的確認(rèn)后,同樣等待一段時(shí)間再關(guān)閉連接。這稱(chēng)為同時(shí)關(guān)閉(Simultaneousclose)。

由于TCP連接是全雙工的,因此,每個(gè)方向都必須單獨(dú)進(jìn)行關(guān)閉。這個(gè)原則是當(dāng)一方完成它的數(shù)據(jù)發(fā)送任務(wù)后就能發(fā)送一個(gè)FIN來(lái)終止這個(gè)方向的連接。收到一個(gè)FIN只意味著這一方向上沒(méi)有數(shù)據(jù)流動(dòng),一個(gè)TCP連接在收到一個(gè)FIN后仍能發(fā)送數(shù)據(jù)。首先進(jìn)行關(guān)閉的一方將執(zhí)行主動(dòng)關(guān)閉,而另一方執(zhí)行被動(dòng)關(guān)閉。

1)客戶(hù)端A發(fā)送一個(gè)FIN,用來(lái)關(guān)閉客戶(hù)A到服務(wù)器B的數(shù)據(jù)傳送(報(bào)文段4)。

2)服務(wù)器B收到這個(gè)FIN,它發(fā)回一個(gè)ACK,確認(rèn)序號(hào)為收到的序號(hào)加1(報(bào)文段5)。和SYN一樣,一個(gè)FIN將占用一個(gè)序號(hào)。

3)服務(wù)器B關(guān)閉與客戶(hù)端A的連接,發(fā)送一個(gè)FIN給客戶(hù)端A(報(bào)文段6)。

4)客戶(hù)端A發(fā)回ACK報(bào)文確認(rèn),并將確認(rèn)序號(hào)設(shè)置為收到序號(hào)加1(報(bào)文段7)。

URG(Urgent)表示緊急傳輸;ACK表示傳輸確認(rèn);SYN表示同步;FIN用來(lái)釋放連接;此外還有PSH(不要緩存立即push給應(yīng)用層)和RST(復(fù)位reset,斷開(kāi)再重新建立連接)。

TCP初始化連接三次握手:發(fā)SYN包,然后返回SYN/ACK包,再發(fā)ACK包,連接正式建立。但是這里有點(diǎn)出入,當(dāng)請(qǐng)求者收到SYS/ACK包后,就開(kāi)始建立連接了,而被請(qǐng)求者第三次握手結(jié)束后才建立連接。關(guān)閉連接要四次握手:發(fā)FIN包,ACK包,F(xiàn)IN包,ACK包,四次握手。因?yàn)門(mén)CP連接是全雙工,我關(guān)了你的連接,并不等于你關(guān)了我的連接。

所以,本題的答案為D。

7.

在bash中,以下說(shuō)法正確的是______。A.$#表示參數(shù)的數(shù)量B.$$表示當(dāng)前進(jìn)程的名字C.$@表示當(dāng)前進(jìn)程的pidD.$?表示前一個(gè)命令的返回值正確答案:A[解析]bash是一個(gè)為GNU(GNUisNotUnix的遞歸縮寫(xiě))計(jì)劃編寫(xiě)的UnixShell,它的名字是一系列縮寫(xiě):Boutlle-AgainShell。它是大多數(shù)Linux系統(tǒng)以及MacOSXv10.4默認(rèn)的Shell,能運(yùn)行于大多數(shù)Unix風(fēng)格的操作系統(tǒng)之上,甚至被移植到MicrosoftWindows上的Cygwin系統(tǒng)中,以實(shí)現(xiàn)Windows的POSIX虛擬接口。此外,它也被DJGPP項(xiàng)目移植到MS-DOS上。

bash的命令語(yǔ)法是BourneShell命令語(yǔ)法的超集。本題中,對(duì)于選項(xiàng)A,$#用來(lái)表示執(zhí)行bash程序時(shí)命令行參數(shù)的個(gè)數(shù)。所以,選項(xiàng)A正確。

對(duì)于選項(xiàng)B,$$用來(lái)表示當(dāng)前腳本運(yùn)行的進(jìn)程ID。所以,選項(xiàng)B錯(cuò)誤。

對(duì)于選項(xiàng)C,$@用來(lái)表示參數(shù)列表。所以,選項(xiàng)C錯(cuò)誤。

對(duì)于選項(xiàng)D,$?命令表示函數(shù)或者腳本自身的退出狀態(tài),用于檢查上一個(gè)命令、函數(shù)或者腳本執(zhí)行是否正確。所以,選項(xiàng)D錯(cuò)誤。

所以,本題的答案為A。

8.

當(dāng)在CPU內(nèi)存之間進(jìn)行地址轉(zhuǎn)換時(shí),______將地址從虛擬(邏輯)地址空間映射到物理地址空間。A.TCBB.MMUC.CACHED.DMA正確答案:B[解析]本題中,對(duì)于選項(xiàng)A,TCB是TIaastedComputingBase的簡(jiǎn)稱(chēng),指的是計(jì)算機(jī)內(nèi)保護(hù)裝置的總體,包括硬件、固件、軟件和負(fù)責(zé)執(zhí)行安全策略的組合體。它建立了一個(gè)基本的保護(hù)環(huán)境并提供一個(gè)可信計(jì)算機(jī)系統(tǒng)所要求的附加用戶(hù)服務(wù)。所以,選項(xiàng)A錯(cuò)誤。

對(duì)于選項(xiàng)B,MMU是MemoryManagementUnit的縮寫(xiě),即內(nèi)存管理單元,它用來(lái)管理虛擬存儲(chǔ)器、物理存儲(chǔ)器的控制線路,同時(shí)也負(fù)責(zé)虛擬地址映射為物理地址,以及提供硬件機(jī)制的內(nèi)存訪問(wèn)授權(quán)。所以,選項(xiàng)B正確。

對(duì)于選項(xiàng)C,CACHE是指介于中央處理器和主存儲(chǔ)器之間的高速小容量存儲(chǔ)器。所以,選項(xiàng)C錯(cuò)誤。

對(duì)于選項(xiàng)D,DMA(DirectMemoryAccess,直接內(nèi)存存取)指的是一種高速的數(shù)據(jù)傳輸操作,允許在外部設(shè)備和存儲(chǔ)器之間直接讀寫(xiě)數(shù)據(jù),既不通過(guò)CPU,也不需要CPU干預(yù)。所以,選項(xiàng)D錯(cuò)誤。

通過(guò)上面的分析可知,MMU可以將地址從虛擬(邏輯)地址空間映射到物理地址空間。所以,選項(xiàng)B正確。

9.

下面有關(guān)子類(lèi)繼承父類(lèi)構(gòu)造方法的描述中,正確的是______。A.創(chuàng)建子類(lèi)的對(duì)象時(shí),先調(diào)用子類(lèi)自己的構(gòu)造方法,然后調(diào)用父類(lèi)的構(gòu)造方法B.子類(lèi)會(huì)繼承父類(lèi)的構(gòu)造方法C.子類(lèi)必須通過(guò)關(guān)鍵字super調(diào)用父類(lèi)的構(gòu)造方法D.子類(lèi)無(wú)法繼承父類(lèi)的構(gòu)造方法正確答案:D[解析]對(duì)于選項(xiàng)A,當(dāng)創(chuàng)建子類(lèi)對(duì)象時(shí),必定會(huì)首先調(diào)用父類(lèi)的構(gòu)造方法,然后再調(diào)用子類(lèi)的構(gòu)造方法。因此,選項(xiàng)A錯(cuò)誤。

對(duì)于選項(xiàng)B與選項(xiàng)D,由于構(gòu)造方法是不能被繼承的,因此,選項(xiàng)B錯(cuò)誤,選項(xiàng)D正確。

對(duì)于選項(xiàng)C,當(dāng)子類(lèi)沒(méi)有顯式地調(diào)用構(gòu)造方法的時(shí)候,編譯器會(huì)自動(dòng)調(diào)用父類(lèi)的無(wú)參數(shù)的構(gòu)造方法,因此,子類(lèi)可以不通過(guò)super()方法調(diào)用父類(lèi)的構(gòu)造方法。因此,選項(xiàng)C錯(cuò)誤。

10.

編譯Java應(yīng)用程序源文件將產(chǎn)生相應(yīng)的字節(jié)碼文件,這些字節(jié)碼文件的擴(kuò)展名為_(kāi)_____。A..classB..javaC..htmlD..exe正確答案:A[解析]對(duì)于選項(xiàng)A與選項(xiàng)B,Java程序源文件的后綴為java,編譯生成中間代碼文件的后綴名為.class。所以,選項(xiàng)A正確,選項(xiàng)B錯(cuò)誤。

對(duì)于選項(xiàng)C,在Web應(yīng)用程序的開(kāi)發(fā)中,靜態(tài)網(wǎng)頁(yè)文件的后綴為.html。所以,選項(xiàng)C錯(cuò)誤。

對(duì)于選項(xiàng)D,一般情況下,Windows操作系統(tǒng)中可執(zhí)行文件的后綴為.exe。所以,選項(xiàng)D錯(cuò)誤。

11.

以下關(guān)于數(shù)據(jù)庫(kù)的描述中,正確的是______。A.關(guān)系數(shù)據(jù)庫(kù)表中記錄是不能重復(fù)的B.關(guān)系數(shù)據(jù)庫(kù)表中主鍵上默認(rèn)建有索引,且是唯一索引C.索引需要專(zhuān)門(mén)的存儲(chǔ)空間進(jìn)行存放,插入、更新、刪除等操作會(huì)引起索引維護(hù)更新D.只要條件語(yǔ)句中有索引字段,SQL執(zhí)行時(shí)就一定能夠用到索引正確答案:B[解析]索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),使用索引可以快速訪問(wèn)數(shù)據(jù)庫(kù)表中的特定信息。一個(gè)設(shè)計(jì)良好的索引可以讓數(shù)據(jù)庫(kù)的操作效率提高幾十倍甚至幾百倍,但索引并非越多越好,因?yàn)樘嗨饕龝?huì)影響數(shù)據(jù)的更新操作,對(duì)一個(gè)存在大量更新操作的表而言,所建索引的數(shù)目一般不要超過(guò)3個(gè),最多不要超過(guò)5個(gè)。

建立索引通常有以下幾點(diǎn)原則:

1)定義主鍵的數(shù)據(jù)列一定要建立索引。

2)定義有外鍵的數(shù)據(jù)列一定要建立索引。

3)對(duì)于經(jīng)常查詢(xún)的數(shù)據(jù)列最好建立索引。

4)對(duì)于需要在指定范圍內(nèi)快速或頻繁查詢(xún)的數(shù)據(jù)列最好建立索引。

5)經(jīng)常用在where子句中的數(shù)據(jù)列最好建立索引。

6)經(jīng)常出現(xiàn)在關(guān)鍵字orderby、groupby、distinct后面的字段,最好建立索引。如果建立的是復(fù)合索引,索引的字段順序要和這些關(guān)鍵字后面的字段順序一致,否則,索引不會(huì)被使用。

7)對(duì)于那些查詢(xún)中很少涉及的列、重復(fù)值比較多的列不要建立索引。

8)對(duì)于定義為text、image和bit的數(shù)據(jù)類(lèi)型的列不要建立索引。

9)對(duì)于經(jīng)常存取的列避免建立索引。

10)對(duì)于復(fù)合索引,按照字段在查詢(xún)條件中出現(xiàn)的頻度建立索引。在復(fù)合索引中,記錄首先按照第一個(gè)字段排序。對(duì)于在第一個(gè)字段上取值相同的記錄,系統(tǒng)再按照第二個(gè)字段的取值排序,以此類(lèi)推。只有復(fù)合索引的第一個(gè)字段出現(xiàn)在查詢(xún)條件中,該索引才可能被使用,因此,將應(yīng)用頻度高的字段放置在復(fù)合索引的前面,會(huì)使系統(tǒng)最大可能地使用此索引,發(fā)揮索引的作用。

本題中,對(duì)于選項(xiàng)A,在關(guān)系數(shù)據(jù)庫(kù)表中,如果沒(méi)有主鍵和唯一索引,表中可以有重復(fù)的記錄。所以,選項(xiàng)A錯(cuò)誤。

對(duì)于選項(xiàng)B,主鍵具有唯一性,完全滿足唯一索引的特征,因此,數(shù)據(jù)庫(kù)會(huì)對(duì)主鍵默認(rèn)建立唯一索引。所以,選項(xiàng)B正確。

對(duì)于選項(xiàng)C,索引需要存儲(chǔ)空間來(lái)存放,如果插入、更新和刪除操作在一個(gè)事務(wù)里面,那么這些操作不會(huì)引起索引的更新,只有執(zhí)行commit語(yǔ)句才會(huì)引起索引的更新。所以,選項(xiàng)C錯(cuò)誤。

對(duì)于選項(xiàng)D,當(dāng)數(shù)據(jù)庫(kù)有一個(gè)組合索引(例如把兩列col1和col2作為一個(gè)組合索引),此時(shí),如果查詢(xún)條件中只用到了col2,索引就不會(huì)被用到了,所以,選項(xiàng)D錯(cuò)誤。

所以,本題的答案為B。

12.

一個(gè)廣域網(wǎng)和一個(gè)局域網(wǎng)相連,需要的設(shè)備是______。A.NICB.網(wǎng)關(guān)C.集線器D.路由器正確答案:B[解析]網(wǎng)關(guān)是局域網(wǎng)連接廣域網(wǎng)的出口,可以工作在OSI模型網(wǎng)絡(luò)層以上的不同層次。所以,選項(xiàng)B正確。

13.

n個(gè)頂點(diǎn)的強(qiáng)連通圖至少有______條邊。A.nB.n-1C.n+1D.n(n-1)正確答案:A[解析]n個(gè)頂點(diǎn)的強(qiáng)連通圖至少有n條邊,最多有n(n-1)/2條邊。所以,選項(xiàng)A正確。

14.

有如下代碼:

publicclassXextendsThreadimplementsRunable

{

publicvoidrun()

{

System.out.println("thisisrun()");

}

publicstaticvoidmain(Stringargs[])

{

Threadt=newThread(newX());

t.start();

}

}

程序的運(yùn)行結(jié)果為_(kāi)_____。A.第一行會(huì)產(chǎn)生編譯錯(cuò)誤B.第六行會(huì)產(chǎn)生編譯錯(cuò)誤C.第六行會(huì)產(chǎn)生運(yùn)行錯(cuò)誤D.程序會(huì)運(yùn)行和啟動(dòng)正確答案:D

15.

下列關(guān)于abstract的描述中,正確的是______。A.abstract修飾符可以修飾屬性、方法和類(lèi)B.聲明抽象方法,大括號(hào)可有可無(wú)C.抽象方法的body部分必須用一對(duì)大括號(hào){}D.聲明抽象方法不可寫(xiě)出大括號(hào)正確答案:D[解析]在Java語(yǔ)言中,被abstract修飾的方法為抽象方法,這種方法是沒(méi)有方法體的(也就是說(shuō),沒(méi)有大括號(hào){};一旦有大括號(hào){},就說(shuō)明這個(gè)方法有方法體)。因此,選項(xiàng)B和選項(xiàng)C錯(cuò)誤,選項(xiàng)D正確。

對(duì)于選項(xiàng)A,abstract只能用來(lái)修飾方法和類(lèi),不能修飾屬性。因此,選項(xiàng)A錯(cuò)誤。

16.

某棵完全二叉樹(shù)上有699個(gè)結(jié)點(diǎn),則該二叉樹(shù)的葉子結(jié)點(diǎn)數(shù)為_(kāi)_____。A.349B.350C.188D.187正確答案:B[解析]二叉樹(shù)有如下性質(zhì):對(duì)于一棵非空的二叉樹(shù),度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè),即如果葉子結(jié)點(diǎn)(度為0的結(jié)點(diǎn))數(shù)為n0,度數(shù)為2的結(jié)點(diǎn)數(shù)為n2,則有n0=n2+1。

對(duì)于本題而言,假設(shè)度為i的結(jié)點(diǎn)的個(gè)數(shù)為ni,則n0=n2+1,所以,n0+n1+n2=n0+n1+n0-1=699,可以得到n0=(700-n1)/2,顯然,n1只能是偶數(shù)。由于在完全二叉樹(shù)中,度為1的結(jié)點(diǎn)只有0個(gè)或1個(gè)兩種情況,因此,n1=0,n0=350。所以,葉子結(jié)點(diǎn)個(gè)數(shù)為350,選項(xiàng)B正確。

17.

下面不是Java語(yǔ)言關(guān)鍵字的是______。A.integerB.floatC.doubleD.default正確答案:A[解析]關(guān)鍵字是計(jì)算機(jī)語(yǔ)言里事先定義的、有特別意義的標(biāo)識(shí)符,Java語(yǔ)言有51個(gè)保留關(guān)鍵字:數(shù)據(jù)類(lèi)型字boolean、int、long、short、byte、float、double、char、class、interface,流程控制字if、else、do、while、for、switch、case、default、break、continue、return、try、catch、finally,修飾符字public、protected、private、final、void、static、strictfp、abstract、transient、synchronized、volatile、native,動(dòng)作字package、import、throw、throws、extends、implements、this、super、instanceof、new,保留字true、false、null、goto、const。其中,const和goto雖然被保留但未被使用,不能使用保留關(guān)鍵字來(lái)命名類(lèi)、方法或變量。

本題中,對(duì)于選項(xiàng)A,integer不是Java語(yǔ)言的關(guān)鍵字,而Integer卻是Java語(yǔ)言的關(guān)鍵字。所以,選項(xiàng)A不正確。

對(duì)于選項(xiàng)B與選項(xiàng)C,float和double是Java語(yǔ)言的兩個(gè)基本數(shù)據(jù)類(lèi)型,因此,它們都是Java的關(guān)鍵字。所以,選項(xiàng)B與選項(xiàng)C正確。

對(duì)于選項(xiàng)D,在switch語(yǔ)句中,default分支是一個(gè)用來(lái)匹配當(dāng)不滿足前面所有分支條件時(shí)的特殊的分支,因此,它也是Java語(yǔ)言的關(guān)鍵字。所以,選項(xiàng)D正確。

所以,本題的答案為A。

18.

有一個(gè)變量inta=0,兩個(gè)線程同時(shí)對(duì)其進(jìn)行+1操作,每個(gè)線程加100次,不加鎖,最后變量a的值是______。A.200B.<=200C.>=200D.都有可能正確答案:B[解析]多線程(Multithreading)技術(shù)指的是從軟件或者硬件上實(shí)現(xiàn)多個(gè)線程并發(fā)執(zhí)行的技術(shù),本題中,+1操作的執(zhí)行過(guò)程如下:取出變量a,對(duì)變量a執(zhí)行+1操作,把計(jì)算結(jié)果放回去。如果兩個(gè)線程中+1操作都沒(méi)有被中斷,所有的+1操作都生效了,那么此時(shí)相應(yīng)地對(duì)a執(zhí)行了200次+1操作,在這種情況下,a的值變?yōu)?00。由于這兩個(gè)線程在對(duì)a執(zhí)行+1操作的時(shí)候,并沒(méi)有加鎖,因此,有可能會(huì)導(dǎo)致部分+1操作丟失,如下所示:

1)線程1讀取變量a的值(讀取到寄存器中)為0。

2)線程2讀取變量a的值,此時(shí)讀取到的值也為0。

3)線程1對(duì)a執(zhí)行+1操作并放回去,此時(shí)a的值為1。

4)線程2也對(duì)a執(zhí)行+1操作并放回去,由于此時(shí)線程2中寄存器中a的值為0,執(zhí)行+1操作后變?yōu)?并放回去,此時(shí)a的值還為1。

在這種情況下,線程1對(duì)a執(zhí)行+1的操作就會(huì)丟失。因此,執(zhí)行結(jié)束后,a的最大值為200。所以,選項(xiàng)B正確。

19.

每個(gè)使用Swing構(gòu)件的程序必須有一個(gè)______A.標(biāo)簽B.按鈕C.菜單D.容器正確答案:D[解析]Swing是一個(gè)用于開(kāi)發(fā)Java應(yīng)用程序用戶(hù)界面的開(kāi)發(fā)工具包,它提供了大量模塊化組件來(lái)方便開(kāi)發(fā)人員構(gòu)建用戶(hù)界面。在使用Swing開(kāi)發(fā)界面應(yīng)用程序的時(shí)候,圖形界面至少要有一個(gè)頂級(jí)Swing容器,這個(gè)頂級(jí)Swing容器主要用來(lái)為其他Swing組件在屏幕上的繪制和處理事件提供支持,常見(jiàn)的頂級(jí)容器為JFrame、JDialog和JApplet。至于其他的控件,可以根據(jù)實(shí)際的需求而定,可以使用,也可以不用。所以,選項(xiàng)D正確。

20.

當(dāng)執(zhí)行Mysql查詢(xún)時(shí),只有滿足連接條件的記錄才包含在查詢(xún)結(jié)果中,這種連接是______。A.左連接B.右連接C.內(nèi)連接D.全連接正確答案:C[解析]在SQL中,內(nèi)連接也稱(chēng)為自然連接,只有兩個(gè)表相匹配的行才能在結(jié)果集中出現(xiàn),返回的結(jié)果集是兩個(gè)表中所有相匹配的數(shù)據(jù),而舍棄不匹配的數(shù)據(jù)。由于內(nèi)連接是從結(jié)果表中刪除與其他連接表中沒(méi)有匹配行的所有行,所以,內(nèi)連接可能會(huì)造成信息的丟失。內(nèi)連接的語(yǔ)法如下:

selectfieldlistfromtablel[inner]jointable2ontable1.column=table2.column

內(nèi)連接是保證兩個(gè)表中所有的行都要滿足連接條件。與內(nèi)連接不同的是,外連接不僅包含符合連接條件的行,而且還包括左表(左外連接時(shí))、右表(右外連接時(shí))或兩個(gè)連接表(全外連接)中的所有數(shù)據(jù)行。SQL的外連接共有3種類(lèi)型:左外連接(關(guān)鍵字為L(zhǎng)EFTOUTERJOIN)、右外連接(關(guān)鍵字為RIGHTOUTERJOIN)、全外連接(關(guān)鍵字為FULLOUTERJOIN)。外連接的用法和內(nèi)連接一樣,只是將INNERJOIN關(guān)鍵字替換為相應(yīng)的外連接關(guān)鍵字即可。

內(nèi)連接只顯示符合連接條件的記錄,外連接除了顯示符合連接條件的記錄外,例如若用左外連接,還顯示左表中記錄。所以,本題的答案為C。

21.

以下關(guān)于排序算法的描述中,正確的是______。A.快速排序的平均時(shí)間復(fù)雜度為O(nlogn),最壞時(shí)間復(fù)雜度為O(nlogn)B.堆排序的平均時(shí)間復(fù)雜度為O(nlogn),最壞時(shí)間復(fù)雜度為O(n^2)C.冒泡排序的平均時(shí)間復(fù)雜度為O(n^2),最壞時(shí)間復(fù)雜度為O(n^2)D.歸并排序的平均時(shí)間復(fù)雜度為O(nlogn),最壞時(shí)間復(fù)雜度為O(n^2)正確答案:C[解析]各種算法的性能見(jiàn)下表。各種排序算法的性能排序方法最好時(shí)間復(fù)雜度平均時(shí)間復(fù)雜度最壞時(shí)間復(fù)雜度輔助存儲(chǔ)穩(wěn)定性備注簡(jiǎn)單選擇排序O(n^2)O(n^2)O(n^2)O(1)不穩(wěn)定n小時(shí)較好直接插入排序O(n)O(n^2)O(n^2)O(1)穩(wěn)定大部分已有序時(shí)較好冒泡排序O(n)O(n^2)O(n^2)O(1)穩(wěn)定n小時(shí)較好希爾排序O(n)O(nlogn)O(ns)1<s<2O(1)不穩(wěn)定s是所選分組快速排序O(nlogn)O(nlogn)O(n^2)O(logn)不穩(wěn)定n大時(shí)較好堆排序O(nlogn)O(nlogn)O(nlogn)O(1)不穩(wěn)定n大時(shí)較好歸并排序O(nlogn)O(nlogn)O(nlogn)O(n)穩(wěn)定n大時(shí)較好

所以,本題的答案為C。

22.

類(lèi)Test定義如下:

1.publicclassTest{

2.publicfloatf(floata,floatb){return0;}

3.

4.}

將選項(xiàng)______中代碼插入第3行是不合法的。A.publicfloatf(floata,floatb,floatc){return0;}B.publicfloatf(floatc,floatd){return0;}C.publicintf(inta,intb){return0;}D.privatefloatf(inta,intb,floatc){return0;}正確答案:B[解析]對(duì)于選項(xiàng)A,這個(gè)方法有三個(gè)參數(shù),而題目中給出的方法只有兩個(gè)參數(shù)。因此,選項(xiàng)A是合法的。

對(duì)于選項(xiàng)B,這個(gè)方法與題目中給出的方法同名而且有相同的參數(shù)類(lèi)表,二者是相同的方法,所以,這個(gè)方法被加入Test中是不合法的。因此,選項(xiàng)B是不合法的。

對(duì)于選項(xiàng)C,這個(gè)方法的參數(shù)類(lèi)型為int,而題目中的參數(shù)類(lèi)型為float。因此,選項(xiàng)C是合法的。

對(duì)于選項(xiàng)D,這個(gè)方法參數(shù)的個(gè)數(shù)與類(lèi)型與題目中的方法都不同。因此,選項(xiàng)D是合法的。

23.

操作系統(tǒng)采用分頁(yè)式存儲(chǔ)管理中,要求______。A.每個(gè)進(jìn)程擁有一張頁(yè)表,且進(jìn)程的頁(yè)表駐留在內(nèi)存中B.每個(gè)進(jìn)程擁有一張頁(yè)表,但只要執(zhí)行進(jìn)程的頁(yè)表駐留在內(nèi)存中,其他進(jìn)程的頁(yè)表不必駐留在內(nèi)存中C.所有進(jìn)程共享一張頁(yè)表,以節(jié)約有限的內(nèi)存空間,但頁(yè)表必須駐留在內(nèi)存中D.所有進(jìn)程共享一張頁(yè)表,只有頁(yè)表中當(dāng)前使用的頁(yè)面必須駐留在內(nèi)存中,以最大限度地節(jié)約有限的內(nèi)存空間正確答案:A[解析]頁(yè)式存儲(chǔ)管理的特征是等分內(nèi)存,它解決了外碎片(大量信息由于先后寫(xiě)入、置換、刪除而形成的空間碎片)問(wèn)題。段式存儲(chǔ)管理的特征是邏輯分段,便于實(shí)現(xiàn)共享和保護(hù)。為了保持頁(yè)式和段式上的優(yōu)點(diǎn),結(jié)合兩種存儲(chǔ)管理方案,形成了段頁(yè)式存儲(chǔ)管理。本題中,在分頁(yè)系統(tǒng)中,為每個(gè)進(jìn)程都配置一張頁(yè)表,進(jìn)程邏輯地址空間中的每一頁(yè)在頁(yè)表中都有一個(gè)頁(yè)表項(xiàng)。所以,選項(xiàng)A正確。

24.

下列不是實(shí)現(xiàn)防火墻的主流技術(shù)的是______。A.包過(guò)濾技術(shù)B.應(yīng)用級(jí)網(wǎng)關(guān)技術(shù)C.NAT技術(shù)D.代理服務(wù)器技術(shù)正確答案:C[解析]所謂防火墻指的是一個(gè)由軟件和硬件設(shè)備組合而成、在內(nèi)部網(wǎng)和外部網(wǎng)之間、專(zhuān)用網(wǎng)與公共網(wǎng)之間構(gòu)造的保護(hù)屏障,是一種獲取安全性方法的形象說(shuō)法。通常,實(shí)現(xiàn)防火墻的主流技術(shù)有三種:

(1)包過(guò)濾技術(shù)

包過(guò)濾是使用很早的一種防火墻技術(shù),它在基于TCMP協(xié)議的數(shù)據(jù)報(bào)文進(jìn)出的通道上工作,對(duì)這兩層數(shù)據(jù)進(jìn)行監(jiān)控,對(duì)每個(gè)數(shù)據(jù)包的頭部、協(xié)議、地址、端口和類(lèi)型等信息進(jìn)行詳細(xì)分析,并與提前設(shè)定好的防火墻過(guò)濾規(guī)則(FilteringRule)進(jìn)行比對(duì),只要發(fā)現(xiàn)一個(gè)包的某個(gè)或多個(gè)部分與過(guò)濾規(guī)則匹配并且條件為“阻止”的時(shí)候,就會(huì)丟棄這個(gè)包。

(2)應(yīng)用代理技術(shù)

由于包過(guò)濾技術(shù)對(duì)于數(shù)據(jù)的保護(hù)不是很完善,對(duì)于一些特殊的攻擊方式(例如SYN攻擊)不能起到很好的作用,因此,出現(xiàn)了“應(yīng)用代理”(ApplicationProxy)技術(shù)的防火墻。代理設(shè)備包含兩個(gè)部分:服務(wù)端和客戶(hù)端。主要工作方式為:當(dāng)服務(wù)端接收來(lái)自用戶(hù)的請(qǐng)求時(shí),通過(guò)代理設(shè)備的客戶(hù)端把這個(gè)客戶(hù)端的請(qǐng)求轉(zhuǎn)發(fā)給服務(wù)器,把從服務(wù)器接收到的響應(yīng)轉(zhuǎn)發(fā)給用戶(hù)。

(3)狀態(tài)檢測(cè)技術(shù)

狀態(tài)檢測(cè)技術(shù)通過(guò)檢測(cè)網(wǎng)絡(luò)的狀態(tài)來(lái)做出安全決策,工作方式為在不影響網(wǎng)絡(luò)正常工作的前提下采用抽取相關(guān)數(shù)據(jù)的方法對(duì)網(wǎng)絡(luò)通信的各個(gè)層次實(shí)行監(jiān)測(cè),并根據(jù)預(yù)定義的過(guò)濾規(guī)則做出安全決策。

NAT(NetworkAddressTranslation,網(wǎng)絡(luò)地址轉(zhuǎn)換)是一種將私有(保留)地址轉(zhuǎn)化為合法IP地址的轉(zhuǎn)換技術(shù),完美地解決了IPv4地址不足的問(wèn)題,而且還能夠有效地避免來(lái)自網(wǎng)絡(luò)外部的攻擊,隱藏并保護(hù)網(wǎng)絡(luò)內(nèi)部的計(jì)算機(jī)。

包過(guò)濾技術(shù)是最基本的防火墻技術(shù),所以,選項(xiàng)A正確。應(yīng)用級(jí)網(wǎng)關(guān)和代理服務(wù)器技術(shù)都是應(yīng)用代理技術(shù)的防火墻,所以,選項(xiàng)B與選項(xiàng)D正確。而NAT技術(shù)是網(wǎng)絡(luò)地址轉(zhuǎn)換,用于公網(wǎng)和內(nèi)網(wǎng)IP之間的相互轉(zhuǎn)換,它不是防火墻技術(shù),所以,選項(xiàng)C錯(cuò)誤。

25.

list是一個(gè)ArrayList的對(duì)象,當(dāng)將選項(xiàng)______的代碼填到//tododelete處時(shí),可以在Iterator遍歷的過(guò)程中正確并安全地刪除一個(gè)list中保存的對(duì)象。

Iteratorit=list.iterator();

imindex=0;

while(it.hasNext())

{

Objectobj=it.next();

if(needDelete(obj))//needDelete返回boolean,決定是否要?jiǎng)h除

{

//tododelete

}

index++;

}A.it.remove();B.list.remove(index);C.list.remove(ohj);D.list.delete(index);正確答案:A[解析]Iterator支持從源集合中安全地刪除對(duì)象,刪除的方法為在Iterator上調(diào)用remove()方法。這樣做的好處是可以避免ConcurrentModifiedException異常發(fā)生,當(dāng)打開(kāi)Iterator迭代集合時(shí),同時(shí)又在對(duì)集合進(jìn)行修改。有些集合不允許在迭代時(shí)刪除或添加元素,但是調(diào)用Iterator的remove()方法是個(gè)安全的做法。

remove()方法的作用為從迭代器指向的集合中移除迭代器返回的最后一個(gè)元素(可選操作),每次調(diào)用next()方法只能調(diào)用一次此方法。如果在進(jìn)行迭代時(shí),用調(diào)用此方法之外其他方式修改了該迭代器所指向的集合,那么迭代器的行為是不明確的。因此,選項(xiàng)A正確。

26.

下列排序算法中,對(duì)一個(gè)list排序的最快方法是______。A.快速排序B.冒泡排序C.二分插入排序D.線性排序正確答案:A[解析]對(duì)于選項(xiàng)A,需要注意的是,在C++語(yǔ)言中,list采用的是雙向列表來(lái)存儲(chǔ)的,因此,它比較適合用快速排序(快速排序不需要隨機(jī)的訪問(wèn)元素)。此時(shí)的時(shí)間復(fù)雜度為O(nlogn)。所以,選項(xiàng)A正確。

對(duì)于選項(xiàng)B,冒泡排序也是對(duì)數(shù)據(jù)順序遍歷,不需要隨機(jī)訪問(wèn),因此,它也適合對(duì)list進(jìn)行排序,但由于算法的時(shí)間復(fù)雜度為O(n^2),沒(méi)有快速排序效率高。所以,選項(xiàng)B不正確。

對(duì)于選項(xiàng)C,首先需要弄清楚二分插入排序的基本思想。二分插入排序的基本思想如下:假設(shè)列表[0...n]被分成兩部分,其中一部分[0...i]為有序序列,另一部分[i+1...n]為無(wú)序序列,排序的過(guò)程為從無(wú)序序列中取一個(gè)數(shù)d,利用二分查找算法找到d在有序序列中的插入位置并插入。不斷重復(fù)上述步驟,直到無(wú)序序列中的元素全部插入有序序列,就完成了排序。由此可以看出,二分插入排序需要對(duì)列表中的元素進(jìn)行隨機(jī)訪問(wèn),因此,它不適合對(duì)list進(jìn)行排序。所以,選項(xiàng)C不正確。

對(duì)于選項(xiàng)D,只有當(dāng)被排序的元素滿足某種特定的條件的時(shí)候,線性排序算法才能有較好的性能。由于list有非常好的通用性,對(duì)任意的數(shù)據(jù)類(lèi)型都能排序,因此,線性排序算法不適用對(duì)list進(jìn)行排序。所以,選項(xiàng)D不正確。

所以,本題的答案為A。

27.

Servlet處理請(qǐng)求的方式為_(kāi)_____。A.以程序的方式B.以進(jìn)程的方式C.以線程的方式D.以響應(yīng)的方式正確答案:C[解析]SeiMet是采用Java語(yǔ)言編寫(xiě)的服務(wù)器端程序,運(yùn)行于Web服務(wù)器的Servlet容器中,其主要功能是提供請(qǐng)求/響應(yīng)的Web服務(wù)模式,可以生成動(dòng)態(tài)的Web內(nèi)容,工作原理如圖所示。

Servlet工作原理

Servlet處理客戶(hù)端請(qǐng)求通常有如下幾個(gè)步驟:

1)用戶(hù)通過(guò)單擊一個(gè)鏈接來(lái)向Servlet發(fā)起請(qǐng)求。

2)Web服務(wù)器接收到該請(qǐng)求后,會(huì)把該請(qǐng)求提交給相應(yīng)的容器來(lái)處理,當(dāng)容器發(fā)現(xiàn)這是對(duì)Servlet發(fā)起的請(qǐng)求后,容器此時(shí)會(huì)創(chuàng)建兩個(gè)對(duì)象:HttpServletResponse和HttpServletRequest。

3)容器可以根據(jù)請(qǐng)求消息中的URL消息找到對(duì)應(yīng)的Servlet,然后針對(duì)該請(qǐng)求創(chuàng)建一個(gè)單獨(dú)的線程,同時(shí)把第2)步中創(chuàng)建的兩個(gè)對(duì)象以參數(shù)的形式傳遞到新創(chuàng)建的線程中。

4)容器調(diào)用Servlel的service()方法來(lái)完成對(duì)用戶(hù)請(qǐng)求的響應(yīng),service()方法會(huì)調(diào)用doPost()方法或doGet()方法來(lái)完成具體的響應(yīng)任務(wù),同時(shí)把生成的動(dòng)態(tài)頁(yè)面返回給容器。

5)容器把響應(yīng)消息組裝成HTTP格式返回給客戶(hù)端。此時(shí),這個(gè)線程運(yùn)行結(jié)束,同時(shí)刪除第2)步創(chuàng)建的兩個(gè)對(duì)象,HttpServletResponse和HttpServletRequest。

容器會(huì)針對(duì)每次請(qǐng)求創(chuàng)建一個(gè)新的線程進(jìn)行處理,同時(shí),會(huì)針對(duì)每次請(qǐng)求創(chuàng)建HttpServletResponse和HttpServletRequest兩個(gè)對(duì)象,處理完成后,線程也就退出了。所以,選項(xiàng)C正確。

28.

Linux系統(tǒng)下的進(jìn)程有以下______三種狀態(tài)。A.精確態(tài)、模糊態(tài)和隨機(jī)態(tài)B.運(yùn)行態(tài)、就緒態(tài)和等待態(tài)C.準(zhǔn)備態(tài)、執(zhí)行態(tài)和退出態(tài)D.手動(dòng)態(tài)、自動(dòng)態(tài)和自由態(tài)正確答案:B[解析]進(jìn)程的狀態(tài)有兩種劃分方式:三態(tài)模型與五態(tài)模型。

1)三態(tài)模型:運(yùn)行態(tài)、就緒態(tài)和阻塞(等待)態(tài)。

2)五態(tài)模型:新建態(tài)、就緒態(tài)、運(yùn)行態(tài)、阻塞態(tài)和終止態(tài)。

所以,本題的答案為B。

29.

文件長(zhǎng)度是一個(gè)大于0的整數(shù),用變量unsignedfilelength來(lái)表示,把文件分成塊,每塊的長(zhǎng)度也是一個(gè)大于0的整數(shù),用變量unsignedblocklength來(lái)表示,則文件被分成的塊數(shù)為_(kāi)_____。A.file_length/block_lengthB.file_length/block_length+1C.(file_length+block_length_1)/block_lengthD.((file_length_1)/block_length+1正確答案:D[解析]本題可以采用排除法解答。

假設(shè)file_length=5,block_length=2,則可以分成3塊,排除選項(xiàng)A。

假設(shè)file_length=6,block_length=2,也可以分成3塊,排除選項(xiàng)B。

對(duì)于選項(xiàng)C,兩個(gè)unsigned類(lèi)型的值相加可能會(huì)溢出,所以,可以排除選項(xiàng)C。

對(duì)于選項(xiàng)D,對(duì)于上述兩種情況都能得到正確的結(jié)果。因此,選項(xiàng)D正確。

30.

有十二個(gè)雞蛋,其中一個(gè)是壞的(重量與其余雞蛋不同),用天平最少稱(chēng)______次,才能稱(chēng)出哪個(gè)雞蛋是壞的。A.1B.2C.3D.4正確答案:C[解析]假設(shè)這12個(gè)雞蛋分別為1,2,3,…,12。把這12個(gè)雞蛋分成3組(1,2,3,4),(5,6,7,8),(9,10,11,12)。首先稱(chēng)(1,2,3,4)和(5,6,7,8),稱(chēng)的結(jié)果有如下幾種可能:

第一種可能:(1,2,3,4)=(5,6,7,8)——第一次稱(chēng)重

說(shuō)明1~8的雞蛋都是好雞蛋。此時(shí),再接著稱(chēng)(6,7,8)和(9,10,11)——第二次稱(chēng)重

此時(shí)會(huì)存在以下三種可能性:

1)如果(6,7,8)=(9,10,11),說(shuō)明壞雞蛋是12。在這種情況下,只需要稱(chēng)2次就能找出壞雞蛋。

2)如果(6,7,8)>(9,10,11),說(shuō)明壞雞蛋在(9,10,11)中,同時(shí)可以說(shuō)明壞雞蛋一定比好雞蛋輕。

接著稱(chēng)9和10。如果9=10,則說(shuō)明11為壞雞蛋;否則,輕的為壞雞蛋——第三次稱(chēng)重

3)如果(6,7,8)<(9,10,11),與2)使用相同的方法稱(chēng)3次就可以得到壞雞蛋——第三次稱(chēng)重

第二種可能:(1,2,3,4)≠(5,6,7,8)——第一次稱(chēng)重

在這種情況下,說(shuō)明壞雞蛋一定在(1,2,3,4,5,6,7,8)中。

對(duì)于(1,2,3,4)>(5,6,7,8)和(1,2,3,4)<(5,6,7,8)兩種情況,分析方法是類(lèi)似的。

在這里以(1,2,3,4)>(5,6,7,8)為例進(jìn)行分析:

此時(shí)接著稱(chēng)重(1,2,5)和(3,4,6)——第二次稱(chēng)重

1)如果(1,2,5)=(3,4,6),說(shuō)明壞雞蛋一定在(7,8)中,而且壞雞蛋一定比好雞蛋輕。

接著稱(chēng)重(7,8),輕的就是壞雞蛋——第三次稱(chēng)重

2)如果(1,2,5)>(3,4,6),壞雞蛋一定在(1,2,3,4,5,6)中,再繼續(xù)稱(chēng)(2,3,5)和(1,4,7)——第三次稱(chēng)重

①如果(2,3,5)=(1,4,7),說(shuō)明6是壞雞蛋。

②如果(2,3,5)>(1,4,7),則

假如壞雞蛋重,此時(shí)壞雞蛋為(1,2,3,4)∩(1,2,5)∩(2,3,5)=2。

假如壞雞蛋輕,此時(shí)壞雞蛋為(5,6,7,8)∩(1,4,7)∩(3,4,6)=空集。說(shuō)明壞雞蛋一定更重,且壞雞蛋為2。

③如果(2,3,5)<(1,4,7),與(2,3,5)>(1,4,7)分析方法類(lèi)似。

3)如果(1,2,5)<(3,4,6),分析方法與(1,2,5)>(3,4,6)的情況類(lèi)似。

由此可見(jiàn),用天平稱(chēng)3次就可以找出壞雞蛋。

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

二、論述題1.

JSP的內(nèi)置對(duì)象有哪些?正確答案:在JSP中,內(nèi)置對(duì)象又稱(chēng)為隱含對(duì)象,是指在不聲明和不創(chuàng)建的情況下就可以被使用的一些成員變量。JSP一共提供有9個(gè)內(nèi)置對(duì)象:request(請(qǐng)求對(duì)象)、response(響應(yīng)對(duì)象)、pageContext(頁(yè)面上下文對(duì)象)、session(會(huì)話對(duì)象)、application(應(yīng)用程序?qū)ο?、out(輸出對(duì)象)、config(配置對(duì)象)、page(頁(yè)面對(duì)象)與exception(例外對(duì)象)。JSP內(nèi)置對(duì)象的具體描述見(jiàn)表。JSP內(nèi)置對(duì)象名稱(chēng)描述request客戶(hù)端請(qǐng)求,此請(qǐng)求包含來(lái)自GET/POST請(qǐng)求的參數(shù)。客戶(hù)端的請(qǐng)求信息被封裝在request對(duì)象中,通過(guò)它才能了解到客戶(hù)的需求,然后做出響應(yīng),因此request對(duì)象是用來(lái)獲取請(qǐng)求參數(shù)的非常重要的途徑。它是HttpServletRequest類(lèi)的實(shí)例response用來(lái)表示服務(wù)器端劉客戶(hù)端的響應(yīng),將Web服務(wù)器處理后的結(jié)果返回給客戶(hù)端。但在JSP中很少直接使用到它。它是HttpServletResponse類(lèi)的實(shí)例pageContext提供了對(duì)JSP頁(yè)面的所有對(duì)象及命名空間的訪問(wèn),也就是說(shuō),用它可以訪問(wèn)到本頁(yè)面中的所有其他對(duì)象,例如前面已經(jīng)描述的request、response以及后面要介紹的session和application對(duì)象等。它的本類(lèi)名也叫pageContextsession用來(lái)表示客戶(hù)端與服務(wù)器的一次會(huì)話。從客戶(hù)端與Web服務(wù)器建立連接的時(shí)候會(huì)話開(kāi)始,直到關(guān)閉瀏覽器時(shí)結(jié)束會(huì)話。它是HttpSession類(lèi)的實(shí)例application代表JSP所屬的Web應(yīng)用本身。application對(duì)象可存放全局變量,因此可以實(shí)現(xiàn)用戶(hù)間的數(shù)據(jù)共享。它的生命周期與服務(wù)器的生命周期一致,也就是說(shuō),服務(wù)器啟動(dòng)后這個(gè)對(duì)象即被創(chuàng)建出來(lái),直到服務(wù)器停止后這個(gè)對(duì)象的生命周期才結(jié)束。在任何地方,對(duì)此對(duì)象屬性的操作都將影響到其他用戶(hù)對(duì)此的訪問(wèn)。它是ServletContext類(lèi)的實(shí)例out用于在客戶(hù)端瀏覽器內(nèi)輸出信息。它是JspWriter類(lèi)的實(shí)例config主要作用是取得服務(wù)器的配置信息。當(dāng)一個(gè)Servlet初始化時(shí),容器把某些信息通過(guò)config對(duì)象傳遞給這個(gè)Servlet,Servlet可以使用這個(gè)對(duì)象獲取所需的配置信息page表示當(dāng)前JSP頁(yè)面,類(lèi)似于Java中的this指針。它是java.lang.Object類(lèi)的實(shí)例exception用來(lái)表示異常。當(dāng)一個(gè)頁(yè)面在運(yùn)行過(guò)程中發(fā)生了例外,就會(huì)產(chǎn)生這個(gè)對(duì)象。如果JSP需要使用這個(gè)對(duì)象,就必須把isErrorPage設(shè)為true,否則將無(wú)法編譯。它是java.lang.Throwable的對(duì)象

根據(jù)以上9個(gè)內(nèi)置對(duì)象的作用的不同,可以將它們分為4類(lèi):第一類(lèi),與Servlet有關(guān)的page和config;第二類(lèi),與Input/Output有關(guān)的out,request和response;第三類(lèi),與Context有關(guān)的application,session和pageContext;第四類(lèi),與Error有關(guān)的exception。

常見(jiàn)筆試題:

JSP主要內(nèi)置對(duì)象有______、______、______、______、______、______、out、config和page。

答案:見(jiàn)上面講解。

2.

XML有哪些解析技術(shù)?它們有什么不同點(diǎn)?正確答案:目前,對(duì)XML的解析最主要的方式有兩種:DOM(DocumentObiectModel,文檔對(duì)象模型)和SAX(SimpleAPIforXML,XMI,簡(jiǎn)單API)。其中,DOM方式會(huì)根據(jù)給定的XML,文件在內(nèi)存中創(chuàng)建一個(gè)樹(shù)形結(jié)構(gòu),因此,這種處理方法會(huì)占用較多的內(nèi)存,在處理大文件的時(shí)候,效率會(huì)急劇下降。而且,DOM必須在解析文件之前就把整個(gè)文檔裝入內(nèi)存,所以,該方式主要適用于對(duì)XML的隨機(jī)訪問(wèn)與頻繁地對(duì)XML中的內(nèi)容進(jìn)行修改的場(chǎng)合。而SAX是事件驅(qū)動(dòng)型的XML解析方式,它不會(huì)在內(nèi)存中存儲(chǔ)XML文件的內(nèi)容,只是把每次對(duì)數(shù)據(jù)的請(qǐng)求看成是一個(gè)事件,通過(guò)遍歷文件來(lái)獲取用戶(hù)所需的數(shù)據(jù)。當(dāng)遇到像文件開(kāi)頭、文檔結(jié)束或者標(biāo)簽開(kāi)頭與標(biāo)簽結(jié)束時(shí),它會(huì)觸發(fā)一個(gè)事件,用戶(hù)通過(guò)在其回調(diào)事件中寫(xiě)入處理代碼來(lái)處理XML文件。所以,它的使用場(chǎng)合一般為對(duì)XML的順序訪問(wèn)、XML文件太大以至于在內(nèi)存中放不下等情況。

3.

如何編寫(xiě)一個(gè)JUnitTest?正確答案:JUnitTest主要用來(lái)測(cè)試一個(gè)小單元的代碼(例如,測(cè)試一個(gè)方法,測(cè)試一個(gè)類(lèi))。對(duì)每個(gè)單元的代碼編寫(xiě)單元測(cè)試用例是一個(gè)好的編程習(xí)慣,它可以幫助開(kāi)發(fā)人員在開(kāi)發(fā)的前期發(fā)現(xiàn)代碼中的Bug。目前有兩個(gè)主流的JUnit測(cè)試框架版本:JUnit3和JUnit4,其中,JUnit3通過(guò)“test”關(guān)鍵字來(lái)表示測(cè)試方法,而JUnit4通過(guò)注解(Annotation)來(lái)識(shí)別測(cè)試方法。

下面給出一

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論