1. 首頁
  2. 筆試

Java最新筆試題(附詳細答案

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 狀態,釋放網路資源。