一、單選題
1、在常用的網絡協議中,___是面向連接的、有重傳功能的協議。
A、IP B、TCP C、UDP D、DXP
分析:TCP協議為傳輸控制協議面向連接,IP為網際協議,UDP為用戶數據報協議。。
2、500張多米諾骨牌整齊地排成一列,依順序編號為1、2、3……499、500。第一次拿走所有奇數位置上的骨牌,第二次再從剩余骨牌中拿走所有奇數位置上的骨牌,依此類推。請問最后剩下的一張骨牌的編號是多少?
A、128 B、250 C、256 D、500
分析:第一次后剩下250個偶數 2 4 6...500,將它們除以2得到1~250的一列,以此類推8次,最后剩余1,即1×2^8=256(最后剩余2的最多次冪)
3、兩個線程並發執行以下代碼,假設a是全局變量,那么以下輸出______是不可能的?
void foo(){ ++a; printf("%d ",a); }
A、3 2 B、2 3 C、3 3 D、2 2
4、某系統采用36進制數表示一字符串,36個字符0-9 a-z分別由數字0~35表示,則10進制數字872581表示字符串____?
A、imac B、ipad C、iphone D、ipod
分析:本題即由十進制轉換為36進制,可效仿10進制轉換為16進制的做法,舉個例子:
256960轉成16進制:
256960÷16=16060……0
16060÷16=1003……12=C
1003÷16=62……11=B
62÷16=3……14=E
從下往上抄 EBC0
由此可以計算出872581轉換為36進制后是ipad。。
5、以下代碼輸出的是__?
int foo(int x,int y) { if(x<=0||y<=0) return 1; return 3*foo(x-1,y/2); } cout<<foo(3,5)<<endl;
A、81 B、27 C、9 D、3
分析:遞歸:3*3*3*f(0,0)=3*3*3*1=27。。
6、以下數據結構說法,錯誤的是___?
A、紅黑樹插入操作的平均時間復雜度為O(logn),最壞時間復雜度為O(logn)
B、B+樹插入操作的平均時間復雜度為O(logn),最壞時間復雜度為O(logn)
C、Hash表插入操作的平均時間復雜度為O(logn),最壞時間復雜度為O(n)
D、排序鏈表插入操作的平均時間復雜度為O(n),最壞時間復雜度為O(n)
分析:各種數據結構的search、insert和delete操作在平均情況下的時間復雜度比較
| 數據結構 | search | insert | delete |
|---|---|---|---|
| 數組 | O(n),有序數組折半查找是O(lgn) | O(n) | O(n) |
| 雙向鏈表 | O(n) | O(1) | O(1) |
| 排序二叉樹 | O(lgn) | O(lgn) | O(lgn) |
| 哈希表(n與槽數m成正比) | O(1) | O(1) | O(1) |
7、哈弗曼編碼是一種無損二進制熵編碼算法,其加權路徑長度最小,子婦產“alibaba”的二進制哈弗曼編碼有___位(bit)
A、11 B、12 C、13 D、14
分析:構造哈夫曼樹:l(1)、i(1)、b(2)、a(3) -> 3+3+2+2+1=11
7
/ \
4 a
/ \
2 b
/\
l i
8、節點按中序遍歷為xyz的二叉樹可能有幾種?
A、2 B、3 C、4 D、5
分析:貌似是卡特蘭數。。
,可以計算得出5。。
9、在4個元素的集合上可定義的互不相同的划分有___個。
A、14 B、15 C、16 D、17
分析:如果划分為4個子集,只有一種划分。
如果划分為3個子集,那么三個子集的元素必須是1,1,2個。有C(4,2)=6種划分。
如果划分為2個子集,那么可能是1+3,也可能是2+2。在1+3的情況,有4種方法去選擇那個單元素集合,所以有4種。如果是2+2,有C(4,2)/2=3種。所以總共有7種兩個子集的划分。
如果划分為1個子集,只有1種划分。
所以,總共有 1+6+7+1=15種划分。
10、下列關於C語言中指針的說法錯誤的是:___
A、指針的值是一個地址
B、非法指針是指該指針的值不是一個已經分配的內存地址
C、兩個指向同類型地址的指針之間做減法是沒有意義的
D、指針的指針占用的內存空間和其他指針占用的內存空間相同
二、不定項選擇
11、設A、B、C為任意集合,下面的命題為真的是____
A、如果A-B=∅,則A=B
B、如果A-C=B-C,則A∩^C=B∩^C
C、如果A∪B=A∪C,則B=C
D、如果A∩B=A∩C,則B=C
E、∅是∅的子集
12、一個棧的入棧序列為ABCDE,則不可能的出戰序列為___
A、ECDBA B、DCEAB C、DECBA D、ABCDE E、EDCBA
13、以下關於內存泄漏說法正確的是____
A、內存泄漏是操作系統內存管理出錯導致的問題
B、單線程程序不可能內存泄漏
C、如果一個進程在運行過程中占用的內存無限制上升,那么該進程有內存泄漏
D、只要進程在退出之前釋放了所有分配的內存,那么就不會內存泄漏
E、內存泄漏是僅僅出現在C/C++程序的問題,Java程序不會內存泄漏
14、關於進程和線程,下列說法正確的是___
A、線程是資源分配和擁有的單位
B、線程和進程都可並發執行
C、在linux系統中,線程是處理器調度的基本單位
D、線程的粒度小於進程,通常多線程比多進程並發性更高
E、不同的線程共享相同的棧空間
分析:A進程 E線程有各自的棧空間
