![Java程序員面試分類模擬26_第1頁](http://file4.renrendoc.com/view4/M02/3C/17/wKhkGGZb9BOAV0c5AALaC67E6S8812.jpg)
![Java程序員面試分類模擬26_第2頁](http://file4.renrendoc.com/view4/M02/3C/17/wKhkGGZb9BOAV0c5AALaC67E6S88122.jpg)
![Java程序員面試分類模擬26_第3頁](http://file4.renrendoc.com/view4/M02/3C/17/wKhkGGZb9BOAV0c5AALaC67E6S88123.jpg)
![Java程序員面試分類模擬26_第4頁](http://file4.renrendoc.com/view4/M02/3C/17/wKhkGGZb9BOAV0c5AALaC67E6S88124.jpg)
![Java程序員面試分類模擬26_第5頁](http://file4.renrendoc.com/view4/M02/3C/17/wKhkGGZb9BOAV0c5AALaC67E6S88125.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Java程序員面試分類模擬26一、單項選擇題1.
以下關(guān)于傳輸層協(xié)議UDP的描述中,正確的有______。A.比較適合傳輸小的數(shù)據(jù)文件B.提高了傳輸?shù)目煽啃訡.提供了高的傳輸效率D.使用窗口機制來(江南博哥)實現(xiàn)流量控制正確答案:C
2.
欲構(gòu)造ArrayList類的一個實例,此類繼承了List接口,下列方法正確的是______。A.ArrayListmyList=newLinkedList();B.ListmyList=newArrayList();C.ArrayListmyList=newList();D.ListmyList=newList();正確答案:B
3.
對于IP地址,屬于______類地址。A.AB.BC.CD.D正確答案:C[解析]IP地址根據(jù)網(wǎng)絡(luò)ID的不同分為5種類型:A類地址、B類地址、C類地址、D類地址和E類地址。
一個A類IP地址由1字節(jié)的網(wǎng)絡(luò)地址和3字節(jié)主機地址組成,網(wǎng)絡(luò)地址的最高位必須是“0”,地址范圍從到??捎玫腁類網(wǎng)絡(luò)有126個,每個網(wǎng)絡(luò)能容納1億多個主機。一個B類IP地址由2個字節(jié)的網(wǎng)絡(luò)地址和2個字節(jié)的主機地址組成,網(wǎng)絡(luò)地址的最高位必須是“10”,地址范圍從到55??捎玫腂類網(wǎng)絡(luò)有16382個,每個網(wǎng)絡(luò)能容納6萬多個主機。一個C類IP地址由3字節(jié)的網(wǎng)絡(luò)地址和1字節(jié)的主機地址組成,網(wǎng)絡(luò)地址的最高位必須是“110”。范圍從到55。C類網(wǎng)絡(luò)可達209萬余個,每個網(wǎng)絡(luò)能容納254個主機。D類IP地址的第一個字節(jié)以“1110”開始,它是一個專門保留的地址。它并不指向特定的網(wǎng)絡(luò),目前這一類地址被用在多點廣播(Multicast)中。多點廣播地址用來一次尋址一組計算機,它標識共享同一協(xié)議的一組計算機。E類IP地址的第一個字節(jié)以“11110”開始,為將來使用保留。
通過上面分析可知,屬于~55范圍內(nèi),屬于C類地址范疇。所以,選項C正確。
4.
極限編程XP的核心思想是______。A.強調(diào)文檔和以敏捷性應(yīng)對變化B.強調(diào)建模和以敏捷性應(yīng)對變化C.強調(diào)設(shè)計和以敏捷性應(yīng)對變化D.強調(diào)人和人之間的合作因素和以敏捷性應(yīng)對變化正確答案:D[解析]極限編程(ExtremeProgramming,XP)是一種輕量級的、靈巧的軟件開發(fā)方法,同時,它也是一種非常嚴謹和周密的方法。它的基礎(chǔ)和價值觀是交流、樸素、反饋和勇氣,即任何一個軟件項目都可以從四個方面入手進行改善:加強交流;從簡單做起;尋求反饋;勇于實事求是。它是敏捷開發(fā)的典型代表,其核心思想是強調(diào)人和人之間的合作因素和以敏捷性應(yīng)對變化。所以,選項D正確。
5.
遞歸式地先序遍歷一個有n個結(jié)點、深度為d的二叉樹,則需要??臻g的大小為______。A.O(n)B.O(d)C.O(logn)D.(nlogn)正確答案:B[解析]本題中,由于沒有明確交代二叉樹的類型或性質(zhì),所以,本題中的二叉樹是無法確定類型的,自然而然也就并不一定是平衡的了,也就是說,深度d的值并不一定等于logn,很有可能d的值比logn的值大,而??臻g的大小通常為二叉樹的深度,所以,棧的大小應(yīng)該是O(d),而不是O(logn)。因此,本題的答案為B。
6.
TCP報文首部信息中與關(guān)閉連接有關(guān)的是______。A.URGB.ACKC.SYND.FIN正確答案:D[解析]TCP是一個面向連接的協(xié)議,無論哪一方向另一方發(fā)送數(shù)據(jù)之前,都必須先在雙方之間建立一條連接。TCP使用三次握手(Three-wayHandshake)協(xié)議來建立連接,圖1描述了三次握手的報文序列。
圖1
三次握手報文序列
當TCP連接建立起來后,就可以在兩個方向傳送數(shù)據(jù)流。當TCP的應(yīng)用進程再沒有數(shù)據(jù)需要發(fā)送時,就發(fā)送關(guān)閉命令。TCP通過發(fā)送控制位FIN=1的數(shù)據(jù)片來關(guān)閉本方數(shù)據(jù)流,但還可以繼續(xù)接收數(shù)據(jù),直到對方關(guān)閉那個方向的數(shù)據(jù)流,連接就關(guān)閉。
TCP協(xié)議使用修改的三次握手協(xié)議來關(guān)閉連接,即終止一個連接要經(jīng)過4次握手。這是由于TCP的半關(guān)閉(Half-close)造成的。由于一個TCP連接是全雙工(即數(shù)據(jù)在兩個方向上能同時傳遞)的,因此,每個方向必須單獨地進行關(guān)閉。關(guān)閉的原則就是當一方完成它的數(shù)據(jù)發(fā)送任務(wù)后就能發(fā)送一個FIN來終止這個方向的連接。當一端收到一個FIN,它必須通知應(yīng)用層另一端已經(jīng)終止了那個方向的數(shù)據(jù)傳送。發(fā)送FIN通常是應(yīng)用層進行關(guān)閉的結(jié)果。過程如圖2所示。
圖2
FIN報文傳送過程
從一方的TCP來說,連接的關(guān)閉有三種情況:
(1)本方啟動關(guān)閉
收到本方應(yīng)用進程的關(guān)閉命令后,TCP在發(fā)送完尚未處理的報文段后,發(fā)FIN=1的報文段給對方,且TCP不再受理本方應(yīng)用進程的數(shù)據(jù)發(fā)送。在FIN以前發(fā)送的數(shù)據(jù)字節(jié),包括FIN,都需要對方確認,否則要重傳。注意FIN也占一個順序號。一旦收到對方對FIN的確認以及對方的FIN報文段,本方TCP就對該FIN進行確認,再等待一段時間,然后關(guān)閉連接。等待是為了防止本方的確認報文丟失,避免對方的重傳報文干擾新的連接。
(2)對方啟動關(guān)閉
當TCP收到對方發(fā)來的FIN報文時,發(fā)ACK確認此FIN報文,并通知應(yīng)用進程連接正在關(guān)閉。應(yīng)用進程將以關(guān)閉命令響應(yīng)。TCP在發(fā)送完尚未處理的報文段后,發(fā)一個FIN報文給對方TCP,然后等待對方對FIN的確認,收到確認后關(guān)閉連接。若對方的確認未及時到達,在等待一段時間后也關(guān)閉連接。
(3)雙方同時啟動關(guān)閉
如果連接雙方的應(yīng)用進程同時發(fā)關(guān)閉命令,則雙方TCP在發(fā)送完尚未處理的報文段后,發(fā)送FIN報文。各方TCP在FIN前所發(fā)報文都得到確認后,發(fā)ACK確認它收到的FIN。各方在收到對方對FIN的確認后,同樣等待一段時間再關(guān)閉連接。這稱為同時關(guān)閉(Simultaneousclose)。
由于TCP連接是全雙工的,因此,每個方向都必須單獨進行關(guān)閉。這個原則是當一方完成它的數(shù)據(jù)發(fā)送任務(wù)后就能發(fā)送一個FIN來終止這個方向的連接。收到一個FIN只意味著這一方向上沒有數(shù)據(jù)流動,一個TCP連接在收到一個FIN后仍能發(fā)送數(shù)據(jù)。首先進行關(guān)閉的一方將執(zhí)行主動關(guān)閉,而另一方執(zhí)行被動關(guān)閉。
1)客戶端A發(fā)送一個FIN,用來關(guān)閉客戶A到服務(wù)器B的數(shù)據(jù)傳送(報文段4)。
2)服務(wù)器B收到這個FIN,它發(fā)回一個ACK,確認序號為收到的序號加1(報文段5)。和SYN一樣,一個FIN將占用一個序號。
3)服務(wù)器B關(guān)閉與客戶端A的連接,發(fā)送一個FIN給客戶端A(報文段6)。
4)客戶端A發(fā)回ACK報文確認,并將確認序號設(shè)置為收到序號加1(報文段7)。
URG(Urgent)表示緊急傳輸;ACK表示傳輸確認;SYN表示同步;FIN用來釋放連接;此外還有PSH(不要緩存立即push給應(yīng)用層)和RST(復(fù)位reset,斷開再重新建立連接)。
TCP初始化連接三次握手:發(fā)SYN包,然后返回SYN/ACK包,再發(fā)ACK包,連接正式建立。但是這里有點出入,當請求者收到SYS/ACK包后,就開始建立連接了,而被請求者第三次握手結(jié)束后才建立連接。關(guān)閉連接要四次握手:發(fā)FIN包,ACK包,F(xiàn)IN包,ACK包,四次握手。因為TCP連接是全雙工,我關(guān)了你的連接,并不等于你關(guān)了我的連接。
所以,本題的答案為D。
7.
在bash中,以下說法正確的是______。A.$#表示參數(shù)的數(shù)量B.$$表示當前進程的名字C.$@表示當前進程的pidD.$?表示前一個命令的返回值正確答案:A[解析]bash是一個為GNU(GNUisNotUnix的遞歸縮寫)計劃編寫的UnixShell,它的名字是一系列縮寫:Boutlle-AgainShell。它是大多數(shù)Linux系統(tǒng)以及MacOSXv10.4默認的Shell,能運行于大多數(shù)Unix風(fēng)格的操作系統(tǒng)之上,甚至被移植到MicrosoftWindows上的Cygwin系統(tǒng)中,以實現(xiàn)Windows的POSIX虛擬接口。此外,它也被DJGPP項目移植到MS-DOS上。
bash的命令語法是BourneShell命令語法的超集。本題中,對于選項A,$#用來表示執(zhí)行bash程序時命令行參數(shù)的個數(shù)。所以,選項A正確。
對于選項B,$$用來表示當前腳本運行的進程ID。所以,選項B錯誤。
對于選項C,$@用來表示參數(shù)列表。所以,選項C錯誤。
對于選項D,$?命令表示函數(shù)或者腳本自身的退出狀態(tài),用于檢查上一個命令、函數(shù)或者腳本執(zhí)行是否正確。所以,選項D錯誤。
所以,本題的答案為A。
8.
當在CPU內(nèi)存之間進行地址轉(zhuǎn)換時,______將地址從虛擬(邏輯)地址空間映射到物理地址空間。A.TCBB.MMUC.CACHED.DMA正確答案:B[解析]本題中,對于選項A,TCB是TIaastedComputingBase的簡稱,指的是計算機內(nèi)保護裝置的總體,包括硬件、固件、軟件和負責執(zhí)行安全策略的組合體。它建立了一個基本的保護環(huán)境并提供一個可信計算機系統(tǒng)所要求的附加用戶服務(wù)。所以,選項A錯誤。
對于選項B,MMU是MemoryManagementUnit的縮寫,即內(nèi)存管理單元,它用來管理虛擬存儲器、物理存儲器的控制線路,同時也負責虛擬地址映射為物理地址,以及提供硬件機制的內(nèi)存訪問授權(quán)。所以,選項B正確。
對于選項C,CACHE是指介于中央處理器和主存儲器之間的高速小容量存儲器。所以,選項C錯誤。
對于選項D,DMA(DirectMemoryAccess,直接內(nèi)存存取)指的是一種高速的數(shù)據(jù)傳輸操作,允許在外部設(shè)備和存儲器之間直接讀寫數(shù)據(jù),既不通過CPU,也不需要CPU干預(yù)。所以,選項D錯誤。
通過上面的分析可知,MMU可以將地址從虛擬(邏輯)地址空間映射到物理地址空間。所以,選項B正確。
9.
下面有關(guān)子類繼承父類構(gòu)造方法的描述中,正確的是______。A.創(chuàng)建子類的對象時,先調(diào)用子類自己的構(gòu)造方法,然后調(diào)用父類的構(gòu)造方法B.子類會繼承父類的構(gòu)造方法C.子類必須通過關(guān)鍵字super調(diào)用父類的構(gòu)造方法D.子類無法繼承父類的構(gòu)造方法正確答案:D[解析]對于選項A,當創(chuàng)建子類對象時,必定會首先調(diào)用父類的構(gòu)造方法,然后再調(diào)用子類的構(gòu)造方法。因此,選項A錯誤。
對于選項B與選項D,由于構(gòu)造方法是不能被繼承的,因此,選項B錯誤,選項D正確。
對于選項C,當子類沒有顯式地調(diào)用構(gòu)造方法的時候,編譯器會自動調(diào)用父類的無參數(shù)的構(gòu)造方法,因此,子類可以不通過super()方法調(diào)用父類的構(gòu)造方法。因此,選項C錯誤。
10.
編譯Java應(yīng)用程序源文件將產(chǎn)生相應(yīng)的字節(jié)碼文件,這些字節(jié)碼文件的擴展名為______。A..classB..javaC..htmlD..exe正確答案:A[解析]對于選項A與選項B,Java程序源文件的后綴為java,編譯生成中間代碼文件的后綴名為.class。所以,選項A正確,選項B錯誤。
對于選項C,在Web應(yīng)用程序的開發(fā)中,靜態(tài)網(wǎng)頁文件的后綴為.html。所以,選項C錯誤。
對于選項D,一般情況下,Windows操作系統(tǒng)中可執(zhí)行文件的后綴為.exe。所以,選項D錯誤。
11.
以下關(guān)于數(shù)據(jù)庫的描述中,正確的是______。A.關(guān)系數(shù)據(jù)庫表中記錄是不能重復(fù)的B.關(guān)系數(shù)據(jù)庫表中主鍵上默認建有索引,且是唯一索引C.索引需要專門的存儲空間進行存放,插入、更新、刪除等操作會引起索引維護更新D.只要條件語句中有索引字段,SQL執(zhí)行時就一定能夠用到索引正確答案:B[解析]索引是對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結(jié)構(gòu),使用索引可以快速訪問數(shù)據(jù)庫表中的特定信息。一個設(shè)計良好的索引可以讓數(shù)據(jù)庫的操作效率提高幾十倍甚至幾百倍,但索引并非越多越好,因為太多索引會影響數(shù)據(jù)的更新操作,對一個存在大量更新操作的表而言,所建索引的數(shù)目一般不要超過3個,最多不要超過5個。
建立索引通常有以下幾點原則:
1)定義主鍵的數(shù)據(jù)列一定要建立索引。
2)定義有外鍵的數(shù)據(jù)列一定要建立索引。
3)對于經(jīng)常查詢的數(shù)據(jù)列最好建立索引。
4)對于需要在指定范圍內(nèi)快速或頻繁查詢的數(shù)據(jù)列最好建立索引。
5)經(jīng)常用在where子句中的數(shù)據(jù)列最好建立索引。
6)經(jīng)常出現(xiàn)在關(guān)鍵字orderby、groupby、distinct后面的字段,最好建立索引。如果建立的是復(fù)合索引,索引的字段順序要和這些關(guān)鍵字后面的字段順序一致,否則,索引不會被使用。
7)對于那些查詢中很少涉及的列、重復(fù)值比較多的列不要建立索引。
8)對于定義為text、image和bit的數(shù)據(jù)類型的列不要建立索引。
9)對于經(jīng)常存取的列避免建立索引。
10)對于復(fù)合索引,按照字段在查詢條件中出現(xiàn)的頻度建立索引。在復(fù)合索引中,記錄首先按照第一個字段排序。對于在第一個字段上取值相同的記錄,系統(tǒng)再按照第二個字段的取值排序,以此類推。只有復(fù)合索引的第一個字段出現(xiàn)在查詢條件中,該索引才可能被使用,因此,將應(yīng)用頻度高的字段放置在復(fù)合索引的前面,會使系統(tǒng)最大可能地使用此索引,發(fā)揮索引的作用。
本題中,對于選項A,在關(guān)系數(shù)據(jù)庫表中,如果沒有主鍵和唯一索引,表中可以有重復(fù)的記錄。所以,選項A錯誤。
對于選項B,主鍵具有唯一性,完全滿足唯一索引的特征,因此,數(shù)據(jù)庫會對主鍵默認建立唯一索引。所以,選項B正確。
對于選項C,索引需要存儲空間來存放,如果插入、更新和刪除操作在一個事務(wù)里面,那么這些操作不會引起索引的更新,只有執(zhí)行commit語句才會引起索引的更新。所以,選項C錯誤。
對于選項D,當數(shù)據(jù)庫有一個組合索引(例如把兩列col1和col2作為一個組合索引),此時,如果查詢條件中只用到了col2,索引就不會被用到了,所以,選項D錯誤。
所以,本題的答案為B。
12.
一個廣域網(wǎng)和一個局域網(wǎng)相連,需要的設(shè)備是______。A.NICB.網(wǎng)關(guān)C.集線器D.路由器正確答案:B[解析]網(wǎng)關(guān)是局域網(wǎng)連接廣域網(wǎng)的出口,可以工作在OSI模型網(wǎng)絡(luò)層以上的不同層次。所以,選項B正確。
13.
n個頂點的強連通圖至少有______條邊。A.nB.n-1C.n+1D.n(n-1)正確答案:A[解析]n個頂點的強連通圖至少有n條邊,最多有n(n-1)/2條邊。所以,選項A正確。
14.
有如下代碼:
publicclassXextendsThreadimplementsRunable
{
publicvoidrun()
{
System.out.println("thisisrun()");
}
publicstaticvoidmain(Stringargs[])
{
Threadt=newThread(newX());
t.start();
}
}
程序的運行結(jié)果為______。A.第一行會產(chǎn)生編譯錯誤B.第六行會產(chǎn)生編譯錯誤C.第六行會產(chǎn)生運行錯誤D.程序會運行和啟動正確答案:D
15.
下列關(guān)于abstract的描述中,正確的是______。A.abstract修飾符可以修飾屬性、方法和類B.聲明抽象方法,大括號可有可無C.抽象方法的body部分必須用一對大括號{}D.聲明抽象方法不可寫出大括號正確答案:D[解析]在Java語言中,被abstract修飾的方法為抽象方法,這種方法是沒有方法體的(也就是說,沒有大括號{};一旦有大括號{},就說明這個方法有方法體)。因此,選項B和選項C錯誤,選項D正確。
對于選項A,abstract只能用來修飾方法和類,不能修飾屬性。因此,選項A錯誤。
16.
某棵完全二叉樹上有699個結(jié)點,則該二叉樹的葉子結(jié)點數(shù)為______。A.349B.350C.188D.187正確答案:B[解析]二叉樹有如下性質(zhì):對于一棵非空的二叉樹,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個,即如果葉子結(jié)點(度為0的結(jié)點)數(shù)為n0,度數(shù)為2的結(jié)點數(shù)為n2,則有n0=n2+1。
對于本題而言,假設(shè)度為i的結(jié)點的個數(shù)為ni,則n0=n2+1,所以,n0+n1+n2=n0+n1+n0-1=699,可以得到n0=(700-n1)/2,顯然,n1只能是偶數(shù)。由于在完全二叉樹中,度為1的結(jié)點只有0個或1個兩種情況,因此,n1=0,n0=350。所以,葉子結(jié)點個數(shù)為350,選項B正確。
17.
下面不是Java語言關(guān)鍵字的是______。A.integerB.floatC.doubleD.default正確答案:A[解析]關(guān)鍵字是計算機語言里事先定義的、有特別意義的標識符,Java語言有51個保留關(guān)鍵字:數(shù)據(jù)類型字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,動作字package、import、throw、throws、extends、implements、this、super、instanceof、new,保留字true、false、null、goto、const。其中,const和goto雖然被保留但未被使用,不能使用保留關(guān)鍵字來命名類、方法或變量。
本題中,對于選項A,integer不是Java語言的關(guān)鍵字,而Integer卻是Java語言的關(guān)鍵字。所以,選項A不正確。
對于選項B與選項C,float和double是Java語言的兩個基本數(shù)據(jù)類型,因此,它們都是Java的關(guān)鍵字。所以,選項B與選項C正確。
對于選項D,在switch語句中,default分支是一個用來匹配當不滿足前面所有分支條件時的特殊的分支,因此,它也是Java語言的關(guān)鍵字。所以,選項D正確。
所以,本題的答案為A。
18.
有一個變量inta=0,兩個線程同時對其進行+1操作,每個線程加100次,不加鎖,最后變量a的值是______。A.200B.<=200C.>=200D.都有可能正確答案:B[解析]多線程(Multithreading)技術(shù)指的是從軟件或者硬件上實現(xiàn)多個線程并發(fā)執(zhí)行的技術(shù),本題中,+1操作的執(zhí)行過程如下:取出變量a,對變量a執(zhí)行+1操作,把計算結(jié)果放回去。如果兩個線程中+1操作都沒有被中斷,所有的+1操作都生效了,那么此時相應(yīng)地對a執(zhí)行了200次+1操作,在這種情況下,a的值變?yōu)?00。由于這兩個線程在對a執(zhí)行+1操作的時候,并沒有加鎖,因此,有可能會導(dǎo)致部分+1操作丟失,如下所示:
1)線程1讀取變量a的值(讀取到寄存器中)為0。
2)線程2讀取變量a的值,此時讀取到的值也為0。
3)線程1對a執(zhí)行+1操作并放回去,此時a的值為1。
4)線程2也對a執(zhí)行+1操作并放回去,由于此時線程2中寄存器中a的值為0,執(zhí)行+1操作后變?yōu)?并放回去,此時a的值還為1。
在這種情況下,線程1對a執(zhí)行+1的操作就會丟失。因此,執(zhí)行結(jié)束后,a的最大值為200。所以,選項B正確。
19.
每個使用Swing構(gòu)件的程序必須有一個______A.標簽B.按鈕C.菜單D.容器正確答案:D[解析]Swing是一個用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包,它提供了大量模塊化組件來方便開發(fā)人員構(gòu)建用戶界面。在使用Swing開發(fā)界面應(yīng)用程序的時候,圖形界面至少要有一個頂級Swing容器,這個頂級Swing容器主要用來為其他Swing組件在屏幕上的繪制和處理事件提供支持,常見的頂級容器為JFrame、JDialog和JApplet。至于其他的控件,可以根據(jù)實際的需求而定,可以使用,也可以不用。所以,選項D正確。
20.
當執(zhí)行Mysql查詢時,只有滿足連接條件的記錄才包含在查詢結(jié)果中,這種連接是______。A.左連接B.右連接C.內(nèi)連接D.全連接正確答案:C[解析]在SQL中,內(nèi)連接也稱為自然連接,只有兩個表相匹配的行才能在結(jié)果集中出現(xiàn),返回的結(jié)果集是兩個表中所有相匹配的數(shù)據(jù),而舍棄不匹配的數(shù)據(jù)。由于內(nèi)連接是從結(jié)果表中刪除與其他連接表中沒有匹配行的所有行,所以,內(nèi)連接可能會造成信息的丟失。內(nèi)連接的語法如下:
selectfieldlistfromtablel[inner]jointable2ontable1.column=table2.column
內(nèi)連接是保證兩個表中所有的行都要滿足連接條件。與內(nèi)連接不同的是,外連接不僅包含符合連接條件的行,而且還包括左表(左外連接時)、右表(右外連接時)或兩個連接表(全外連接)中的所有數(shù)據(jù)行。SQL的外連接共有3種類型:左外連接(關(guān)鍵字為LEFTOUTERJOIN)、右外連接(關(guān)鍵字為RIGHTOUTERJOIN)、全外連接(關(guān)鍵字為FULLOUTERJOIN)。外連接的用法和內(nèi)連接一樣,只是將INNERJOIN關(guān)鍵字替換為相應(yīng)的外連接關(guān)鍵字即可。
內(nèi)連接只顯示符合連接條件的記錄,外連接除了顯示符合連接條件的記錄外,例如若用左外連接,還顯示左表中記錄。所以,本題的答案為C。
21.
以下關(guān)于排序算法的描述中,正確的是______。A.快速排序的平均時間復(fù)雜度為O(nlogn),最壞時間復(fù)雜度為O(nlogn)B.堆排序的平均時間復(fù)雜度為O(nlogn),最壞時間復(fù)雜度為O(n^2)C.冒泡排序的平均時間復(fù)雜度為O(n^2),最壞時間復(fù)雜度為O(n^2)D.歸并排序的平均時間復(fù)雜度為O(nlogn),最壞時間復(fù)雜度為O(n^2)正確答案:C[解析]各種算法的性能見下表。各種排序算法的性能排序方法最好時間復(fù)雜度平均時間復(fù)雜度最壞時間復(fù)雜度輔助存儲穩(wěn)定性備注簡單選擇排序O(n^2)O(n^2)O(n^2)O(1)不穩(wěn)定n小時較好直接插入排序O(n)O(n^2)O(n^2)O(1)穩(wěn)定大部分已有序時較好冒泡排序O(n)O(n^2)O(n^2)O(1)穩(wěn)定n小時較好希爾排序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大時較好堆排序O(nlogn)O(nlogn)O(nlogn)O(1)不穩(wěn)定n大時較好歸并排序O(nlogn)O(nlogn)O(nlogn)O(n)穩(wěn)定n大時較好
所以,本題的答案為C。
22.
類Test定義如下:
1.publicclassTest{
2.publicfloatf(floata,floatb){return0;}
3.
4.}
將選項______中代碼插入第3行是不合法的。A.publicfloatf(floata,floatb,floatc){return0;}B.publicfloatf(floatc,floatd){return0;}C.publicintf(inta,intb){return0;}D.privatefloatf(inta,intb,floatc){return0;}正確答案:B[解析]對于選項A,這個方法有三個參數(shù),而題目中給出的方法只有兩個參數(shù)。因此,選項A是合法的。
對于選項B,這個方法與題目中給出的方法同名而且有相同的參數(shù)類表,二者是相同的方法,所以,這個方法被加入Test中是不合法的。因此,選項B是不合法的。
對于選項C,這個方法的參數(shù)類型為int,而題目中的參數(shù)類型為float。因此,選項C是合法的。
對于選項D,這個方法參數(shù)的個數(shù)與類型與題目中的方法都不同。因此,選項D是合法的。
23.
操作系統(tǒng)采用分頁式存儲管理中,要求______。A.每個進程擁有一張頁表,且進程的頁表駐留在內(nèi)存中B.每個進程擁有一張頁表,但只要執(zhí)行進程的頁表駐留在內(nèi)存中,其他進程的頁表不必駐留在內(nèi)存中C.所有進程共享一張頁表,以節(jié)約有限的內(nèi)存空間,但頁表必須駐留在內(nèi)存中D.所有進程共享一張頁表,只有頁表中當前使用的頁面必須駐留在內(nèi)存中,以最大限度地節(jié)約有限的內(nèi)存空間正確答案:A[解析]頁式存儲管理的特征是等分內(nèi)存,它解決了外碎片(大量信息由于先后寫入、置換、刪除而形成的空間碎片)問題。段式存儲管理的特征是邏輯分段,便于實現(xiàn)共享和保護。為了保持頁式和段式上的優(yōu)點,結(jié)合兩種存儲管理方案,形成了段頁式存儲管理。本題中,在分頁系統(tǒng)中,為每個進程都配置一張頁表,進程邏輯地址空間中的每一頁在頁表中都有一個頁表項。所以,選項A正確。
24.
下列不是實現(xiàn)防火墻的主流技術(shù)的是______。A.包過濾技術(shù)B.應(yīng)用級網(wǎng)關(guān)技術(shù)C.NAT技術(shù)D.代理服務(wù)器技術(shù)正確答案:C[解析]所謂防火墻指的是一個由軟件和硬件設(shè)備組合而成、在內(nèi)部網(wǎng)和外部網(wǎng)之間、專用網(wǎng)與公共網(wǎng)之間構(gòu)造的保護屏障,是一種獲取安全性方法的形象說法。通常,實現(xiàn)防火墻的主流技術(shù)有三種:
(1)包過濾技術(shù)
包過濾是使用很早的一種防火墻技術(shù),它在基于TCMP協(xié)議的數(shù)據(jù)報文進出的通道上工作,對這兩層數(shù)據(jù)進行監(jiān)控,對每個數(shù)據(jù)包的頭部、協(xié)議、地址、端口和類型等信息進行詳細分析,并與提前設(shè)定好的防火墻過濾規(guī)則(FilteringRule)進行比對,只要發(fā)現(xiàn)一個包的某個或多個部分與過濾規(guī)則匹配并且條件為“阻止”的時候,就會丟棄這個包。
(2)應(yīng)用代理技術(shù)
由于包過濾技術(shù)對于數(shù)據(jù)的保護不是很完善,對于一些特殊的攻擊方式(例如SYN攻擊)不能起到很好的作用,因此,出現(xiàn)了“應(yīng)用代理”(ApplicationProxy)技術(shù)的防火墻。代理設(shè)備包含兩個部分:服務(wù)端和客戶端。主要工作方式為:當服務(wù)端接收來自用戶的請求時,通過代理設(shè)備的客戶端把這個客戶端的請求轉(zhuǎn)發(fā)給服務(wù)器,把從服務(wù)器接收到的響應(yīng)轉(zhuǎn)發(fā)給用戶。
(3)狀態(tài)檢測技術(shù)
狀態(tài)檢測技術(shù)通過檢測網(wǎng)絡(luò)的狀態(tài)來做出安全決策,工作方式為在不影響網(wǎng)絡(luò)正常工作的前提下采用抽取相關(guān)數(shù)據(jù)的方法對網(wǎng)絡(luò)通信的各個層次實行監(jiān)測,并根據(jù)預(yù)定義的過濾規(guī)則做出安全決策。
NAT(NetworkAddressTranslation,網(wǎng)絡(luò)地址轉(zhuǎn)換)是一種將私有(保留)地址轉(zhuǎn)化為合法IP地址的轉(zhuǎn)換技術(shù),完美地解決了IPv4地址不足的問題,而且還能夠有效地避免來自網(wǎng)絡(luò)外部的攻擊,隱藏并保護網(wǎng)絡(luò)內(nèi)部的計算機。
包過濾技術(shù)是最基本的防火墻技術(shù),所以,選項A正確。應(yīng)用級網(wǎng)關(guān)和代理服務(wù)器技術(shù)都是應(yīng)用代理技術(shù)的防火墻,所以,選項B與選項D正確。而NAT技術(shù)是網(wǎng)絡(luò)地址轉(zhuǎn)換,用于公網(wǎng)和內(nèi)網(wǎng)IP之間的相互轉(zhuǎn)換,它不是防火墻技術(shù),所以,選項C錯誤。
25.
list是一個ArrayList的對象,當將選項______的代碼填到//tododelete處時,可以在Iterator遍歷的過程中正確并安全地刪除一個list中保存的對象。
Iteratorit=list.iterator();
imindex=0;
while(it.hasNext())
{
Objectobj=it.next();
if(needDelete(obj))//needDelete返回boolean,決定是否要刪除
{
//tododelete
}
index++;
}A.it.remove();B.list.remove(index);C.list.remove(ohj);D.list.delete(index);正確答案:A[解析]Iterator支持從源集合中安全地刪除對象,刪除的方法為在Iterator上調(diào)用remove()方法。這樣做的好處是可以避免ConcurrentModifiedException異常發(fā)生,當打開Iterator迭代集合時,同時又在對集合進行修改。有些集合不允許在迭代時刪除或添加元素,但是調(diào)用Iterator的remove()方法是個安全的做法。
remove()方法的作用為從迭代器指向的集合中移除迭代器返回的最后一個元素(可選操作),每次調(diào)用next()方法只能調(diào)用一次此方法。如果在進行迭代時,用調(diào)用此方法之外其他方式修改了該迭代器所指向的集合,那么迭代器的行為是不明確的。因此,選項A正確。
26.
下列排序算法中,對一個list排序的最快方法是______。A.快速排序B.冒泡排序C.二分插入排序D.線性排序正確答案:A[解析]對于選項A,需要注意的是,在C++語言中,list采用的是雙向列表來存儲的,因此,它比較適合用快速排序(快速排序不需要隨機的訪問元素)。此時的時間復(fù)雜度為O(nlogn)。所以,選項A正確。
對于選項B,冒泡排序也是對數(shù)據(jù)順序遍歷,不需要隨機訪問,因此,它也適合對list進行排序,但由于算法的時間復(fù)雜度為O(n^2),沒有快速排序效率高。所以,選項B不正確。
對于選項C,首先需要弄清楚二分插入排序的基本思想。二分插入排序的基本思想如下:假設(shè)列表[0...n]被分成兩部分,其中一部分[0...i]為有序序列,另一部分[i+1...n]為無序序列,排序的過程為從無序序列中取一個數(shù)d,利用二分查找算法找到d在有序序列中的插入位置并插入。不斷重復(fù)上述步驟,直到無序序列中的元素全部插入有序序列,就完成了排序。由此可以看出,二分插入排序需要對列表中的元素進行隨機訪問,因此,它不適合對list進行排序。所以,選項C不正確。
對于選項D,只有當被排序的元素滿足某種特定的條件的時候,線性排序算法才能有較好的性能。由于list有非常好的通用性,對任意的數(shù)據(jù)類型都能排序,因此,線性排序算法不適用對list進行排序。所以,選項D不正確。
所以,本題的答案為A。
27.
Servlet處理請求的方式為______。A.以程序的方式B.以進程的方式C.以線程的方式D.以響應(yīng)的方式正確答案:C[解析]SeiMet是采用Java語言編寫的服務(wù)器端程序,運行于Web服務(wù)器的Servlet容器中,其主要功能是提供請求/響應(yīng)的Web服務(wù)模式,可以生成動態(tài)的Web內(nèi)容,工作原理如圖所示。
Servlet工作原理
Servlet處理客戶端請求通常有如下幾個步驟:
1)用戶通過單擊一個鏈接來向Servlet發(fā)起請求。
2)Web服務(wù)器接收到該請求后,會把該請求提交給相應(yīng)的容器來處理,當容器發(fā)現(xiàn)這是對Servlet發(fā)起的請求后,容器此時會創(chuàng)建兩個對象:HttpServletResponse和HttpServletRequest。
3)容器可以根據(jù)請求消息中的URL消息找到對應(yīng)的Servlet,然后針對該請求創(chuàng)建一個單獨的線程,同時把第2)步中創(chuàng)建的兩個對象以參數(shù)的形式傳遞到新創(chuàng)建的線程中。
4)容器調(diào)用Servlel的service()方法來完成對用戶請求的響應(yīng),service()方法會調(diào)用doPost()方法或doGet()方法來完成具體的響應(yīng)任務(wù),同時把生成的動態(tài)頁面返回給容器。
5)容器把響應(yīng)消息組裝成HTTP格式返回給客戶端。此時,這個線程運行結(jié)束,同時刪除第2)步創(chuàng)建的兩個對象,HttpServletResponse和HttpServletRequest。
容器會針對每次請求創(chuàng)建一個新的線程進行處理,同時,會針對每次請求創(chuàng)建HttpServletResponse和HttpServletRequest兩個對象,處理完成后,線程也就退出了。所以,選項C正確。
28.
Linux系統(tǒng)下的進程有以下______三種狀態(tài)。A.精確態(tài)、模糊態(tài)和隨機態(tài)B.運行態(tài)、就緒態(tài)和等待態(tài)C.準備態(tài)、執(zhí)行態(tài)和退出態(tài)D.手動態(tài)、自動態(tài)和自由態(tài)正確答案:B[解析]進程的狀態(tài)有兩種劃分方式:三態(tài)模型與五態(tài)模型。
1)三態(tài)模型:運行態(tài)、就緒態(tài)和阻塞(等待)態(tài)。
2)五態(tài)模型:新建態(tài)、就緒態(tài)、運行態(tài)、阻塞態(tài)和終止態(tài)。
所以,本題的答案為B。
29.
文件長度是一個大于0的整數(shù),用變量unsignedfilelength來表示,把文件分成塊,每塊的長度也是一個大于0的整數(shù),用變量unsignedblocklength來表示,則文件被分成的塊數(shù)為______。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塊,排除選項A。
假設(shè)file_length=6,block_length=2,也可以分成3塊,排除選項B。
對于選項C,兩個unsigned類型的值相加可能會溢出,所以,可以排除選項C。
對于選項D,對于上述兩種情況都能得到正確的結(jié)果。因此,選項D正確。
30.
有十二個雞蛋,其中一個是壞的(重量與其余雞蛋不同),用天平最少稱______次,才能稱出哪個雞蛋是壞的。A.1B.2C.3D.4正確答案:C[解析]假設(shè)這12個雞蛋分別為1,2,3,…,12。把這12個雞蛋分成3組(1,2,3,4),(5,6,7,8),(9,10,11,12)。首先稱(1,2,3,4)和(5,6,7,8),稱的結(jié)果有如下幾種可能:
第一種可能:(1,2,3,4)=(5,6,7,8)——第一次稱重
說明1~8的雞蛋都是好雞蛋。此時,再接著稱(6,7,8)和(9,10,11)——第二次稱重
此時會存在以下三種可能性:
1)如果(6,7,8)=(9,10,11),說明壞雞蛋是12。在這種情況下,只需要稱2次就能找出壞雞蛋。
2)如果(6,7,8)>(9,10,11),說明壞雞蛋在(9,10,11)中,同時可以說明壞雞蛋一定比好雞蛋輕。
接著稱9和10。如果9=10,則說明11為壞雞蛋;否則,輕的為壞雞蛋——第三次稱重
3)如果(6,7,8)<(9,10,11),與2)使用相同的方法稱3次就可以得到壞雞蛋——第三次稱重
第二種可能:(1,2,3,4)≠(5,6,7,8)——第一次稱重
在這種情況下,說明壞雞蛋一定在(1,2,3,4,5,6,7,8)中。
對于(1,2,3,4)>(5,6,7,8)和(1,2,3,4)<(5,6,7,8)兩種情況,分析方法是類似的。
在這里以(1,2,3,4)>(5,6,7,8)為例進行分析:
此時接著稱重(1,2,5)和(3,4,6)——第二次稱重
1)如果(1,2,5)=(3,4,6),說明壞雞蛋一定在(7,8)中,而且壞雞蛋一定比好雞蛋輕。
接著稱重(7,8),輕的就是壞雞蛋——第三次稱重
2)如果(1,2,5)>(3,4,6),壞雞蛋一定在(1,2,3,4,5,6)中,再繼續(xù)稱(2,3,5)和(1,4,7)——第三次稱重
①如果(2,3,5)=(1,4,7),說明6是壞雞蛋。
②如果(2,3,5)>(1,4,7),則
假如壞雞蛋重,此時壞雞蛋為(1,2,3,4)∩(1,2,5)∩(2,3,5)=2。
假如壞雞蛋輕,此時壞雞蛋為(5,6,7,8)∩(1,4,7)∩(3,4,6)=空集。說明壞雞蛋一定更重,且壞雞蛋為2。
③如果(2,3,5)<(1,4,7),與(2,3,5)>(1,4,7)分析方法類似。
3)如果(1,2,5)<(3,4,6),分析方法與(1,2,5)>(3,4,6)的情況類似。
由此可見,用天平稱3次就可以找出壞雞蛋。
所以,選項C正確。
二、論述題1.
JSP的內(nèi)置對象有哪些?正確答案:在JSP中,內(nèi)置對象又稱為隱含對象,是指在不聲明和不創(chuàng)建的情況下就可以被使用的一些成員變量。JSP一共提供有9個內(nèi)置對象:request(請求對象)、response(響應(yīng)對象)、pageContext(頁面上下文對象)、session(會話對象)、application(應(yīng)用程序?qū)ο?、out(輸出對象)、config(配置對象)、page(頁面對象)與exception(例外對象)。JSP內(nèi)置對象的具體描述見表。JSP內(nèi)置對象名稱描述request客戶端請求,此請求包含來自GET/POST請求的參數(shù)??蛻舳说恼埱笮畔⒈环庋b在request對象中,通過它才能了解到客戶的需求,然后做出響應(yīng),因此request對象是用來獲取請求參數(shù)的非常重要的途徑。它是HttpServletRequest類的實例response用來表示服務(wù)器端劉客戶端的響應(yīng),將Web服務(wù)器處理后的結(jié)果返回給客戶端。但在JSP中很少直接使用到它。它是HttpServletResponse類的實例pageContext提供了對JSP頁面的所有對象及命名空間的訪問,也就是說,用它可以訪問到本頁面中的所有其他對象,例如前面已經(jīng)描述的request、response以及后面要介紹的session和application對象等。它的本類名也叫pageContextsession用來表示客戶端與服務(wù)器的一次會話。從客戶端與Web服務(wù)器建立連接的時候會話開始,直到關(guān)閉瀏覽器時結(jié)束會話。它是HttpSession類的實例application代表JSP所屬的Web應(yīng)用本身。application對象可存放全局變量,因此可以實現(xiàn)用戶間的數(shù)據(jù)共享。它的生命周期與服務(wù)器的生命周期一致,也就是說,服務(wù)器啟動后這個對象即被創(chuàng)建出來,直到服務(wù)器停止后這個對象的生命周期才結(jié)束。在任何地方,對此對象屬性的操作都將影響到其他用戶對此的訪問。它是ServletContext類的實例out用于在客戶端瀏覽器內(nèi)輸出信息。它是JspWriter類的實例config主要作用是取得服務(wù)器的配置信息。當一個Servlet初始化時,容器把某些信息通過config對象傳遞給這個Servlet,Servlet可以使用這個對象獲取所需的配置信息page表示當前JSP頁面,類似于Java中的this指針。它是java.lang.Object類的實例exception用來表示異常。當一個頁面在運行過程中發(fā)生了例外,就會產(chǎn)生這個對象。如果JSP需要使用這個對象,就必須把isErrorPage設(shè)為true,否則將無法編譯。它是java.lang.Throwable的對象
根據(jù)以上9個內(nèi)置對象的作用的不同,可以將它們分為4類:第一類,與Servlet有關(guān)的page和config;第二類,與Input/Output有關(guān)的out,request和response;第三類,與Context有關(guān)的application,session和pageContext;第四類,與Error有關(guān)的exception。
常見筆試題:
JSP主要內(nèi)置對象有______、______、______、______、______、______、out、config和page。
答案:見上面講解。
2.
XML有哪些解析技術(shù)?它們有什么不同點?正確答案:目前,對XML的解析最主要的方式有兩種:DOM(DocumentObiectModel,文檔對象模型)和SAX(SimpleAPIforXML,XMI,簡單API)。其中,DOM方式會根據(jù)給定的XML,文件在內(nèi)存中創(chuàng)建一個樹形結(jié)構(gòu),因此,這種處理方法會占用較多的內(nèi)存,在處理大文件的時候,效率會急劇下降。而且,DOM必須在解析文件之前就把整個文檔裝入內(nèi)存,所以,該方式主要適用于對XML的隨機訪問與頻繁地對XML中的內(nèi)容進行修改的場合。而SAX是事件驅(qū)動型的XML解析方式,它不會在內(nèi)存中存儲XML文件的內(nèi)容,只是把每次對數(shù)據(jù)的請求看成是一個事件,通過遍歷文件來獲取用戶所需的數(shù)據(jù)。當遇到像文件開頭、文檔結(jié)束或者標簽開頭與標簽結(jié)束時,它會觸發(fā)一個事件,用戶通過在其回調(diào)事件中寫入處理代碼來處理XML文件。所以,它的使用場合一般為對XML的順序訪問、XML文件太大以至于在內(nèi)存中放不下等情況。
3.
如何編寫一個JUnitTest?正確答案:JUnitTest主要用來測試一個小單元的代碼(例如,測試一個方法,測試一個類)。對每個單元的代碼編寫單元測試用例是一個好的編程習(xí)慣,它可以幫助開發(fā)人員在開發(fā)的前期發(fā)現(xiàn)代碼中的Bug。目前有兩個主流的JUnit測試框架版本:JUnit3和JUnit4,其中,JUnit3通過“test”關(guān)鍵字來表示測試方法,而JUnit4通過注解(Annotation)來識別測試方法。
下面給出一
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代辦公環(huán)境下的技術(shù)趨勢分析報告
- 生態(tài)修復(fù)技術(shù)在水域生態(tài)保護中的作用
- 2 認識幾種常見的巖石(說課稿)-2023-2024學(xué)年科學(xué)四年級下冊教科版
- 2024-2025學(xué)年高中化學(xué) 化學(xué)實驗基本方法說課稿 新人教版必修1
- Unit 1 Lesson 1 At the Airport(說課稿)-2024-2025學(xué)年冀教版(三起)英語六年級上冊
- 2024-2025學(xué)年高中物理 第10章 熱力學(xué)定律 1 功和內(nèi)能說課稿 新人教版選修3-3
- 2023八年級道德與法治上冊 第二單元 遵守社會規(guī)則 第五課 做守法的公民 第2框 預(yù)防犯罪說課稿 新人教版
- Unit 2 Ways to school Part A Let's learn (說課稿)-2024-2025學(xué)年人教PEP版英語六年級上冊001
- 10的再認識(說課稿)-2024-2025學(xué)年一年級上冊數(shù)學(xué)人教版
- 2 時、分、秒(說課稿)-2023-2024學(xué)年二年級下冊數(shù)學(xué)蘇教版
- 華為智慧園區(qū)解決方案介紹
- 2022年江西省公務(wù)員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
- 【招投標管理探究的國內(nèi)外文獻綜述2600字】
- 一例蛇串瘡患者個案護理課件
- DB63-T 2269-2024 公路建設(shè)項目安全生產(chǎn)費用清單計量規(guī)范
- 低壓電工理論考試題庫低壓電工考試題
- 國家電網(wǎng)培訓(xùn)課件
- 五年級上冊口算練習(xí)400題及答案
- 駱駝祥子選擇題100道及答案
- 2024年公務(wù)員考試題庫附答案【完整版】
- T-GDWCA 0019-2018 輻照工藝操作規(guī)范
評論
0/150
提交評論