當前位置:學問谷 >

職場範例 >筆試 >

2017年Java最新筆試題(附詳細答案)範例

2017年Java最新筆試題(附詳細答案)範例

下述二叉樹中,哪一種滿足性質:從任一結點出發到根;本題主要考查了選項中出現的幾種樹的結構特點;下面關於線程的敍述中,正確的是();一條tcp連接,主動關閉的一方不可能出現的連接狀;CLOSE_WAIT;FIN_WAIT2;TIME_WAIT;FIN_WAIT1;1)當客户端沒有主動close的時候就斷開連接,;1:這時候若客户端斷開的時候發送了FIN包,則服

2017年Java最新筆試題(附詳細答案)範例

下述二叉樹中,哪一種滿足性質:從任一結點出發到根的路徑上所經過的結點序列按其關鍵字有序():

本題主要考查了選項中出現的幾種樹的結構特點。對於選項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 題附 範例 筆試
  • 文章版權屬於文章作者所有,轉載請註明 https://xuewengu.com/flzc/bishi/6rpj0.html