今天是CVTE的第一場筆試,做了CVTE2016年的筆試題,被虐成狗,寫這篇文章記錄一下,希望以后不要踩這些坑。也希望自己能夠在下周六的筆試中順利通過。
TCP協議
解析:考察的是計算機網絡
- 斷開的時候,客戶端發起中斷請求,就是Fin報文——(我沒有數據發送給你了哦)
- 這個時候服務器端可能還沒全部接受完數據,所以不能急著關閉socket,所以它會發送ACK告訴客戶端——(你的請求我收到了,但是我還沒準備好,請繼續你等我的消息)
- 此時客戶端進入FIN_WAIT狀態,繼續等服務器端的FIN報文
- 服務器端確認發送完成,則發送FIN報文給客戶端——(告訴Client端,好了,我這邊數據發完了,準備好關閉連接了)
- 客戶端接受到FIN報文后,準備關閉連接,但是還是不信任服務器端,所以它決定再確定一下,發送ACK,然后進入TIME_WAIT狀態
- 服務器端如果沒有接受到ACK則決定重新 傳,接受到了就知道要斷開連接了
- 客戶端等待了2MSL后依然沒有得到消息則說明服務器端已經關閉啦——(好的,那我也關閉好了)
編譯和體系結構
- 每條指令的功能
(1)讀取某存儲單元內容裝入給定寄存器。
(2)把一個數據從某個寄存器存入給定的存儲單元中。
(3)把一個數據從某個寄存器送到另一個寄存器或者ALU輸入端。
(4)進行某種算術運算或邏輯運算,將結果送入某個寄存器。
B答案:CPU在執行程序的過程中,總是在執行完一條指令、取下條指令之前,去主動檢測“中斷請求信號”,若發現有中斷請求,則執行一條“中斷隱指令”,以響應中斷請求。
CPU響應中斷請求后,就會跳轉到一個中斷服務程序去執行,以進行中斷處理。不同的中斷類型具有不同的中斷服務程序,進行不同的中斷處理。有些中斷處理非常簡單,例如“打印機缺紙”,其中斷服務程序只要在屏幕上顯示一個消息即可;有些中斷處理則比較復雜,例如,對于采用中斷方式進行打印輸出的情況,中斷服務程序中需要啟動外設進行I/O,通常在發出啟動外設的命令后進行中斷返回,以回到原先被中止的另一個進程代碼去執行。
二叉樹最小深度
解析:完全二叉樹時深度最小,這個時候用到了等比數列的運算方法。
Sn=na1 (q=1)
Sn=a1(1-q^n)/(1-q) =(a1-anq)/(1-q) (q≠1)
二叉樹、度數、節點數
解析:
- 二叉樹的第i 層上至多有2^(i-1) 個結點。
- 深度為k 的二叉樹至多有2^k-1 個結點。
滿二叉樹:深度為k,有2^k-1 個結點。
完全二叉樹:給滿二叉樹的結點編號,從上至下,從左至右,n 個結點的完全二叉樹中結點在對應滿二叉樹中的編號正好是從1 到n。 - 葉子結點n0,度為2 的結點為n2,則n0 = n2+1。
考慮結點個數:n = n0 + n1 + n2
考慮分支個數:n-1 = 2n2 + n1
可得n0 = n2+1 - n 個結點的完全二叉樹深度為。log2(n+1)
- n 個結點的完全二叉樹,結點按層次編號
有: i 的雙親是?n / 2?,如果 i = 1 時為根(無雙親);
i 的左孩子是2i,如果2i>n,則無左孩子;
i 的右孩子是2i + 1,如果2i + 1>n 則無右孩子。
網絡號
解析:
二叉樹
解析:
- A答案中二叉樹有可能是空的,所以可以沒有節點數為2
- B答案 10層最多節點為:2^10-1=1023,所以1025個節點最小為11層,最大是單只樹1025層
總結基本概念:
基本概念
二叉樹是遞歸定義的,其結點有左右子樹之分,邏輯上二叉樹有五種基本形態:
(1)空二叉樹——如圖(a);
(2)只有一個根結點的二叉樹——如圖(b);
(3)只有左子樹——如圖(c);
(4)只有右子樹——如圖(d);
(5)完全二叉樹——如圖(e)。
注意:盡管二叉樹與樹有許多相似之處,但二叉樹不是樹的特殊情形
分治算法
解析:分治算法的基本思想是將一個規模為N的問題分解為K個規模較小的子問題,這些子問題相互獨立且與原問題性質相同。求出子問題的解,就可得到原問題的解。即一種分目標完成程序算法,簡單問題可用二分法完成。
拓撲序列
解析:
不斷選取入度為0的節點,然后將其后繼節點的入度減一,依次計算。
拓撲序列的求解方法:
(1)、找到一個沒有后繼的頂點(如果有一條邊從A指向B,那么B是A的后繼)。
(2)、從圖中刪除這個頂點,在列表的前面插入頂點的標記。
(3)、重復步驟1和2.直到所有的頂點都從圖中刪除。這時列表顯示的頂點順序就是拓撲排序的結果。
判斷有向圖是否有環
判斷圖有無環的方法包括:1.DFS 2.拓撲排序 3.求最短路徑
判斷 無向圖 中是否存在回路(環)的算法描述
如果存在回路,則必存在一個子圖,是一個環路。環路中所有頂點的度>=2。
算法:
第一步:刪除所有度<=1的頂點及相關的邊,并將另外與這些邊相關的其它頂點的度減一。
第二步:將度數變為1的頂點排入隊列,并從該隊列中取出一個頂點重復步驟一。
如果最后還有未刪除頂點,則存在環,否則沒有環。
有向圖是否有環的判定算法,主要有深度優先和拓撲排序兩種方法。