2016CVTE校招線上筆試題
以下說法正確的有()
A. 多個程序操作同一個檔案時,應該要考慮到檔案的一致性問題
B. 可通過檔案在不同程序間進行資料傳遞和共享
C. 可以通過全域性變數在不同程序間傳遞資料
D. 一個程序可以訪問到所有實體記憶體空間
正確答案: A B
- 程序間通訊靠:管道、訊息佇列、訊號、共享記憶體、套介面等
- 父子程序記憶體空間相互獨立,全域性變數也只能在同一程序的多個執行緒敏感詞享。fork後子程序中是父程序的完全複製(其中有寫時複製技術),不管什麼變數,fork後父子程序中都是一樣的,但兩者之間沒有關係,任何一個程序修改變數後,在另一個程序中都不能知道,更不能訪問另一個程序中的變數,即使是全域性變數. C錯誤!
IP資料報分片的重組通常發生在()
A. 源主機和資料報經過的路由器上
B. 源主機上
C. 資料報經過的路由器上
D. 目的主機上
正確答案: D
- 重組發生在目的主機,分片發生在路由器上
- 1.IP資料報分片的原因:
在TCP/IP分層中,資料鏈路層用 MTU (Maximum Transmission Unit,最大傳輸單元)來限制所能傳輸的資料包大小,MTU是指一次傳送的資料最大長度,不包括資料鏈路層資料幀的幀頭,如乙太網的MTU為1500位元組,實際上資料幀的最大長度為1512位元組,其中乙太網資料幀的幀頭為12位元組。
2.分片的思想:
當傳送的IP資料報的大小超過了MTU時,IP層就需要對資料進行分片,否則資料將無法傳送成功。
IP 分片發生在 IP 層 ,不僅 源端主機 會進行分片,中間的 路由器 也有可能分片,因為不同的網路的 MTU 是不一樣的,如果傳輸路徑上的某個網路的 MTU 比源端網路的 MTU 要小,路由器就可能對 IP 資料報再次進行分片。而分片資料的 重組 只會發生在 目的端 的 IP 層。
引入多道程式技術以後,處理器的利用率()
A. 降低了
B. 沒有變化,只是程式的執行方便了
C. 大大提高
D. 沒有影響
正確答案: C
多道程式設計是指在主存中同時存放多道使用者作業,使它們都處於執行的開始點和開始點之間,這些程式共享計算機系統資源
。
多道程式設計的主要優點有:
(1)提高CPU的利用率。在多道程式環境下,多個程式共享計算機資源當某個程式等待I/O操作時,CPU可以執行其他程式,大大提高CPU的利用率。
(2)提高裝置的利用率。在多道程式環境下,多個程式共享系統的裝置,大大提高系統裝置的利用率。
(3)提高系統的吞吐量。在多道程式環境下,減少了程式的等待時間,提高了系統的吞吐量。
關於TCP協議以下說法正確的是:()
A. 通訊雙方被動關閉的一方進入TIME_WAIT狀態
B. TIME_WAIT狀態會持續2個MSL
C. TIME_WAIT狀態會持續1個MSL
D. 通訊雙方主動關閉的一方進入TIME_WAIT狀態
正確答案: B D
TCP建立連線和斷開連線過程
假設Client端發起中斷連線請求,也就是傳送FIN報文。Server端接到FIN報文後,意思是說”我Client端沒有資料要發給你了”,但是如果你還有資料沒有傳送完成,則不必急著關閉Socket,可以繼續傳送資料。所以你先發送ACK,”告訴Client端,你的請求我收到了,但是我還沒準備好,請繼續你等我的訊息”。這個時候Client端就進入FIN_WAIT
狀態,繼續等待Server端的 FIN 報文。當Server端確定資料已傳送完成,則向Client端傳送FIN報文,”告訴Client端,好了,我這邊資料發完了,準備好關閉連線了”。Client端收到FIN報文後,”就知道可以關閉連線了,但是他還是不相信網路,怕Server端不知道要關閉,所以傳送ACK後進入TIME_WAIT
狀態,如果Server端沒有收到ACK則可以重傳。“,Server端收到ACK後,”就知道可以斷開連線了”。Client端等待了2MSL後依然沒有收到回覆,則證明Server端已正常關閉,那好,我Client端也可以關閉連線了。Ok,TCP連線就這樣關閉了!
什麼是2MSL
為什麼TCP的TIME_WAIT狀態要保持2MSL?
以下說法正確的是()
A. 在計算機中,運算器訪問暫存器的速度是最快的
B. 在等待中斷的過程中,CPU不可以處理其他任務
C. 同一段程式碼每次執行的時間一定是一樣的
D. 軟中斷是由軟體觸發的一種中斷
正確答案: A
- A中訪問暫存器最快,依據:暫存器>cache>RAM>ROM
- 硬中斷:
1、 硬中斷是由硬體產生的,比如,像磁碟,網絡卡,鍵盤,時鐘等。每個裝置或裝置集都有它自己的IRQ(中斷請求)。基於IRQ,CPU可以將相應的請求分發到對應的硬體驅動上(注:硬體驅動通常是核心中的一個子程式,而不是一個獨立的程序)。
2、 處理中斷的驅動是需要執行在CPU上的,因此,當中斷產生的時候,CPU會中斷當前正在執行的任務,來處理中斷。在有多核心的系統上,一箇中斷通常只能中斷一顆CPU(也有一種特殊的情況,就是在大型主機上是有硬體通道的,它可以在沒有主CPU的支援下,可以同時處理多箇中斷。)。- 軟中斷:
軟中斷的處理非常像硬中斷。然而,它們僅僅是由當前正在執行的程序所產生的。軟中斷並不會直接中斷CPU。也只有當前正在執行的程式碼(或程序)才會產生軟中斷。這種中斷是一種需要核心為正在執行的程序去做一些事情(通常為I/O)的請求。
一個棧的入棧序列為ABCDE,則不可能的出棧序列為()
A. ECDBA
B. DCEAB
C. DECBA
D. ABCDE
正確答案: A B
TCP首部報文資訊中跟建立連結有關的是()
A. PSH
B. SYN
C. FIN
D. ACK
正確答案: B D
URG:Urget pointer is valid (緊急指標欄位值有效)
SYN: 表示建立連線
FIN: 表示關閉連線
ACK: 表示響應
PSH: 表示有 DATA資料傳輸
RST: 表示連線重置。
TCP資料報首部
已知圖的鄰接表如下所示,根據演算法,則從節點0出發按廣度優先遍歷的節點序列是
A. 0 1 2 3
B. 0 1 3 2
C. 0 3 2 1
D. 0 3 1 2
以下說法正確的有()
A. 在時間片輪詢排程演算法中,時間片越短則CPU利用率越高
B. 優先順序越高的程序佔用CPU的執行時間就一定越多
C. 在遍歷大型二維陣列int a[x][y]時,先遍歷x或先遍歷y的處理時間都是一樣的
D. 使用cache可以提高CPU的利用率
正確答案: D
A選項,時間片越短,說明其它程序或執行緒獲得CPU,此時需要進行中斷,CPU不能處理其它任務。
B選項,優先順序越高,說明它獲得CPU的可能性越大,但本身該作業所需佔用CPU的時間就很少。
C選項,因為是按行順序進行儲存的,所以先遍歷x,再遍歷y相對要快一點,這涉及到預取操作。
設一組初始關鍵字記錄關鍵字為(19,15,12,18,21,36,45,10),則以19位基準記錄的一趟快速排序結束後的結果為()
A. 10,15,12,18,19,36,45,21
B. 10,15,12,18,19,45,36,21
C. 15,10,12,18,19,36,45,21
D. 10,15,12,19,18,45,36,21
正確答案: A
先從後往前掃描,比19小的與19交換,再從前往後掃描,比是19大的與19交換
依次為:
19 , 15 ,12 ,18 ,21, 36 , 45 ,10 // 從後往前掃描 10比19小,交換
10 , 15, 12,,18,21,36,45,19, 從前往後掃描,21 比19大,交換
10 , 15 , 12 ,18 , 19 ,36, 45, 21 // 19前邊都比19小,後邊都比19大,一趟比較結束
具有1000個節點的二叉樹的最小深度為()(第一層深度為1)
A. 11
B. 12
C. 9
D. 10
正確答案: D
n個節點的二叉樹與深度k的關係為
n
最大2^k-1
若進棧序列為1,2,3.4假定進棧和出棧可以穿插進行,則可能的出棧序列是()
A. 2,4,1,3
B. 3,1,4,2
C. 3,4,1,2
D. 1,2,3,4
正確答案: D
以下程式統計給定輸入中每個大寫字母的出現次數(不需要檢查輸入合法性)
void AlphabetCounting(char a[],int n){
int count[26]={},i,kind=0;
for(i=0;i<n;++i) (1);
for(i=0;i<26;++i){
if(++kind>1) putchar(';');
printf("%c=%d",(2));
}
}
A. ++count[a[i]-'Z'];'Z'-i,count['Z'-i]
B. ++count['A'-a[i]];'A'+i,count[i]
C. ++count[i];i,count[i]
D. ++count['Z'-a[i]];'Z'-i,count[i]
正確答案: D
題意為輸入設定全部是大寫(ASCII碼A-Z為65-90,遞增),所以有兩種情況:
一、count[0;25]儲存A-Z的個數,即count[0]儲存A的個數,於是(1)++count[a[i]-‘A’];(2)’A’+i,count[i];
二、count[0;25]儲存Z-A的個數,即count[0]儲存Z的個數,於是(1)++count[‘Z’-a[i]];(2)’Z’-i,count[i]。
所以答案為D
設非空二叉樹中度數為0的結點數為n0,度數為1的結點數為n1,度數為2的結點數為n2,則下列等式成立的是()
A. n0=n1+n2
B. n0=2n1+1
C. n0=n2+1
D. n0=n1+1
正確答案: C
IP地址205.140.36.68的哪一部分表示網路號()
A. 205
B. 205.140
C. 68
D. 205.140.36
正確答案: D
1. A類IP地址
一個A類IP地址由1位元組的網路地址和3位元組主機地址組成 ,網路地址的最高位必須是“0”, 地址範圍從1.0.0.0 到126.0.0.0。
2. B類IP地址
一個B類IP地址由2個位元組的網路地址和2個位元組的主機地址組成 ,網路地址的最高位必須是“10”,地址範圍從 128 .0.0.0到191.255.255.255。
3. C類IP地址
一個C類IP地址由3位元組的網路地址和1位元組的主機地址組成 ,網路地址的最高位必須是“110”。範圍從 192 .0.0.0到223.255.255.255。
一棵深度為4的三叉樹,最多有多少個節點?()
A. 24
B. 40
C. 36
D. 54
正確答案: B
有兩個袋子,白色袋子裡有7個紅球和3個藍球,黑色袋子裡有3個紅球和7個藍球。每次取一個球,取完立刻放回,所有球都從某一個袋子裡取,袋子的選擇是隨機的。共取出6個紅球和4個藍球。問所有球是從黑色袋子裡取出的概率是()
A. 0.1
B. 0.48
C. 0.66
D. 0.16
正確答案: D
p(自黑袋取|取6紅4藍) = p(取6紅4藍,從黑袋中取)/p(取6紅4藍);
其中:
p(取6紅4藍,從黑袋中取) = p(從黑袋中取)*p(黑袋中取出6紅4藍),
p(取6紅4藍) = p(黑袋子中取6紅4藍,從黑袋中取) + p(紅袋子中取6紅4藍,從白袋中取)
a = 0.5 * pow(0.7, 6) * pow(0.3, 4)
b = 0.5 * pow(0.3, 6) * pow(0.7, 4)
P = a / (a + b) = 0.15517241379310343
關於二叉樹,下面說法正確的是()
A. 二叉樹中至少有一個節點的度為2
B. 一個具有1025個節點的二叉樹,其高度範圍在11到1025之間
C. 對於n個節點的二叉樹,其高度為nlogn
D. 二叉樹的先序遍歷是EFHIGJK,中序遍歷為HFIEJKG,該二叉樹的右子樹的根為G
以下選項中採用分治方法的演算法有()
A. 堆排序演算法
B. 插入排序演算法
C. 歸併排序演算法
D. 二分查詢演算法
E. 快速排序演算法
正確答案: C D E
存在疑問
已知有向圖G=(V,E)
其中V={V1,V2,V3,V4,V5,V6,V7} ,E={ < V1,V2>,< V1,V3>, < V1,V4 > , < V2,V5>, < V2,V6>,< V3,V5>, < V3,V6>,< V4,V6>,< V5,V7>,< V6,V7>}, 則G的拓撲序列是:()
A. V1, V4,V2,V6, V3,V5,V7
B. V1,V2,V3,V4, V5,V6,V7
C. V1,V3, V4,V2,V6,V5,V7
D. V1,V3,V4, V6,V2, V5,V7
正確答案: B C
拓撲序列的求解方法:
(1)、找到一個沒有後繼的頂點(如果有一條邊從A指向B,那麼B是A的後繼)。
(2)、從圖中刪除這個頂點,在列表的前面插入頂點的標記。
(3)、重複步驟1和2.直到所有的頂點都從圖中刪除。這時列表顯示的頂點順序就是拓撲排序的結果。
下面演算法中可以判斷出一個有向圖是否有環的是:()
A. 求最短路徑
B. 深度優先遍歷
C. 廣度優先遍歷
D. 拓撲排序
正確答案: B D
判斷 無向圖 中是否存在迴路(環)的演算法描述
如果存在迴路,則必存在一個子圖,是一個環路。環路中所有頂點的度>=2。
演算法:
第一步:刪除所有度<=1的頂點及相關的邊,並將另外與這些邊相關的其它頂點的度減一。
第二步:將度數變為1的頂點排入佇列,並從該佇列中取出一個頂點重複步驟一。
如果最後還有未刪除頂點,則存在環,否則沒有環。
有向圖是否有環的判定演算法,主要有深度優先和拓撲排序兩種方法。