- 相關推薦
2017年Java最新筆試題(附詳細答案)
下述二叉樹中,哪一種滿足性質:從任一結點出發到根;本題主要考查了選項中出現的幾種樹的結構特點;下面關于線程的敘述中,正確的是();一條tcp連接,主動關閉的一方不可能出現的連接狀;CLOSE_WAIT;FIN_WAIT2;TIME_WAIT;FIN_WAIT1;1)當客戶端沒有主動close的時候就斷開連接,;1:這時候若客戶端斷開的時候發送了FIN包,則服
下述二叉樹中,哪一種滿足性質:從任一結點出發到根的路徑上所經過的結點序列按其關鍵字有序():
本題主要考查了選項中出現的幾種樹的結構特點。對于選項A,根據二叉排序樹的結構特點我們可以知道,二叉排序樹的中序遍歷結果是一個有序序列,而在中序遍歷中,父結點并不總是出現在孩子結點的前面(或后面),故該選項不正確。例如我們用關鍵字5,2,3建立一棵二叉排序樹,則從結點3出發到根的路徑上所經過的結點序列為3,2,5,并不是一個有序的序列。對于選項B,赫夫曼樹在后續的章節中會介紹,根據赫夫曼樹的結構特點我們可以知道,在赫夫曼樹中所有的關鍵字只出現在葉結點上,其非葉結點上并沒有關鍵字值,顯然不正確。對于選項C,AVL樹其本質上也是一種二叉排序樹,只不過是平衡化之后的二叉排序樹,故該選項也是不正確的。例如我們用序列5,1,8,6,9建立一棵AVL樹,從結點6出發到根的路徑上所經過的結點序列為6,8,5,也不是一個有序的序列。對于選項D,堆的概念我們會在堆排序中給大家介紹,根據建堆的過程,不斷地把大者"上浮",將小者"篩選"下去,最終得到的正是一個從任一結點出發到根的路徑上所經過的結點序列按其關鍵字有序的樹狀結構,故D是正確的。 本題中的A和C同時出現,沒有起到干擾的作用,因為AVL樹和二叉排序樹只是在平衡性上有區別,在結點的排列方式上沒有區別。
下面關于線程的敘述中,正確的是()。 正確答案: C 你的答案: D (錯誤) 不論是系統支持線程還是用戶級線程,其切換都需要內核的支持 線程是資源的分配單位,進程是調度和分配的單位 不管系統中是否有線程,進程都是擁有資源的獨立單位 在引入線程的系統中,進程仍是資源分配和調度分派的基本單位 A:用戶級線程,切換時不需要內核的支持 B:線程是資源調度和分配的單位,進程是資源擁有的單位 C:對 D:引入線程后,線程才是資源分配和調度分派的基本單位 在引入線程前,進程的兩個基本屬性是:1.可擁有資源的獨立單位。2.可獨立調度和分配的基本單位。 后來為了使多個程序更好的并發執行,人們把上述兩個屬性分開,引入線程作為可獨立調度和分配的基本單位。
一條tcp連接,主動關閉的一方不可能出現的連接狀態是() 正確答案: A 你的答案: A (正確)
CLOSE_WAIT
FIN_WAIT2
TIME_WAIT
FIN_WAIT1
1)當客戶端沒有主動close的時候就斷開連接,即客戶端發送的fin丟失或者失敗:
1:這時候若客戶端斷開的時候發送了FIN包,則服務端將會處于CLOSE_WAIT狀態;2: 這時候若客戶端斷開的時候未發送FIN包,則服務端處還是顯示ESTABLISHED狀態
2) 當client想要關閉它與server之間的連接。client(某個應用進程)首先調用 close 主動關閉連接,這時TCP發送一個FIN M;client端處于 FIN_WAIT1 狀態。
3) 當server端接收到FIN M之后,執行被動關閉。對這個FIN進行確認,返回給client ACK。當server端返回給client ACK后,
client處于 FIN_WAIT2 狀態,server處于 CLOSE_WAIT 狀態。它的接收也作為文件結束符傳遞給應用進程,因為FIN的接
收 意味著應用進程在相應的連接上再也接收不到額外數據;
4) 一段時間之后,當server端檢測到client端的關閉操作(read返回為0)。接收到文件結束符的server端調用close 關閉它的socket。這導致server端的TCP也發送一個FIN N;此時server的狀態為last――ack .
5)當client收到來自server的FIN后 。 client端的套接字處于 TIME_WAIT 狀態,它會向server端再發送一個ack確認,此時server端收到ack確認后,此套接字處于CLOSED狀態。
介紹一下TCP連接建立與關閉過程中的狀態。TCP連接過程是狀態的轉換,促使狀態發生轉換的因素包括用戶調用、特定數據包以及超時等,具體狀態如下所示:
1. CLOSED :初始狀態,表示沒有任何連接。
2. LISTEN : Server 端的某個 Socket 正在監聽來自遠方的 TCP 端口的連接請求。
3. SYN_SENT :發送連接請求后等待確認信息。當客戶端 Socket 進行 Connect 連接時,會首先發送 SYN 包,隨即進
入 SYN_SENT 狀態,然后等待 Server 端發送三次握手中的第 2 個包。
4. SYN_RECEIVED :收到一個連接請求后回送確認信息和對等的連接請求,然后等待確認信息。通常是建立TCP 連接的三次握手過程中的
一個中間狀態,表示 Server 端的 Socket 接收到來
自 Client 的 SYN 包,并作出回應。 ESTABLISHED :表示連接已經建立,可以進行數據傳輸。
5. FIN_WAIT_1 :主動關閉連接的一方等待對方返回 ACK 包。若 Socket 在 ESTABLISHED 狀態下主動關閉連接并向對方發送 FIN 包(表示己方不再有數據需要發送),則進
入 FIN_WAIT_1 狀態,等待對方返回 ACK包,此后還能讀取數據,但不能發送數據。在正常情況下,無論對方處于何種狀態,都應該馬上返回 ACK包,所以 FIN_WAIT_1 狀態一般很難見到。
6. FIN_WAIT_2 :主動關閉連接的一方收到對方返回的 ACK 包后,等待對方發送 FIN 包。處于 FIN_WAIT_1 狀態下
的 Socket 收到了對方返回的 ACK 包后,便進
入 FIN_WAIT_2 狀態。由于 FIN_WAIT_2 狀態下的 Socket需要等待對方發送的 FIN 包,所有常常可以看到。若
在 FIN_WAIT_1 狀態下收到對方發送的同時帶有 FIN 和ACK 的包時,則直接進入 TIME_WAIT 狀態,無須經
過 FIN_WAIT_2 狀態。
7. TIME_WAIT :主動關閉連接的一方收到對方發送的 FIN 包后返回 ACK 包(表示對方也不再有數據需要發送,此后不能再讀取或發送數據),然后等待足夠長的時間( 2MSL )以確保對方接收到 ACK 包(考慮到丟失 ACK 包的可能和迷路重復數據包的影響),最后回到 CLOSED 狀態,釋放網絡資源。
【Java最新筆試題(附詳細答案】相關文章:
ARM硬件筆試題附答案07-05
電工面試題附答案06-28
最新Java基礎面試題07-02
Java常見面試題(含答案)07-13
古詩試題訓練:途中見杏花(附答案)07-03
消防安全知識考試試題附答案07-04
32道java程序員面試題及答案07-13
《孔乙己》現代文閱讀附答案幾試題分析07-03
西塞山懷古古詩閱讀試題訓練(附答案)07-03