牛客網錯題集錦9

2021-08-17 17:22:23 字數 1757 閱讀 5778

1.管道

管道實際上是一種固定大小的緩衝區,管道對於管道兩端的程序而言,就是乙個檔案,但它不是普通的檔案,它不屬於某種檔案系統,而是自立門戶,單獨構成一種檔案系統,並且只存在於記憶體中。它類似於通訊中半雙工通道的程序通訊機制,乙個管道可以實現雙向 的資料傳輸,而同乙個時刻只能最多有乙個方向的傳輸,不能兩個方向同時進行。管道的容 量大小通常為記憶體上的一頁,它的大小並不是受磁碟容量大小的限制。當管道滿時,程序在 寫管道會被阻塞,而當管道空時,程序讀管道會被阻塞。

由於管道採用半雙工通訊方式。因此,資料只能在乙個方向上流動

管道是由核心管理的乙個緩衝區,其容量受多方面因素影響,包括緩衝區的大小、磁碟容量大小等問題 

當管道中沒有資訊的話,從管道中讀取的程序會等待,直到另一端的程序放入資訊。當管道被放滿資訊的時候,嘗試放入資訊的程序會等待,直到另一端的程序取出資訊。當兩個程序都終結的時候,管道也自動消失。程序對管道進行讀操作和寫操作都可能被阻塞,因此c正確 

管道的一端連線乙個程序的輸出。這個程序會向管道中放入資訊。管道的另一端連線乙個程序的輸入,這個程序取出被放入管道的資訊,管道可以同時進行讀程序和寫程序 

參考**:  2.

先來看一段**:

public abstract class test 

public static int beforefinally() finally

}} /**

* output: 1*/

從結果上看,貌似`finally` 裡的語句是在`return` 之後執行的,其實不然,實際上`finally` 裡的語句是在在`return` 之前執行的。那麼問題來了,既然是在之前執行,那為什麼`a` 的值沒有被覆蓋了?

實際過程是這樣的:當程式執行到try{}語句中的return方法時,它會幹這麼一件事,將要返回的結果儲存到乙個臨時棧中,然後程式不會立即返回,而是去執行finally{}中的程式, 在執行`a = 2`時,程式僅僅是覆蓋了a的值,但不會去更新臨時棧中的那個要返回的值 。執行完之後,就會通知主程式「finally的程式執行完畢,可以請求返回了」,這時,就會將臨時棧中的值取出來返回。這下應該清楚了,要返回的值是儲存至臨時棧中的。

再來看乙個例子,稍微改下上面的程式:

public abstract class test 

public static int beforefinally() finally

}} /**

* output: 2

*/

在這裡,finally{}裡也有乙個return,那麼在執行這個return時,就會更新臨時棧中的值。同樣,在執行完finally之後,就會通知主程式請求返回了,即將臨時棧中的值取出來返回。故返回值是2.

再對比下面一題

(單選題)

下面程式的輸出是什麼?

public class test 

} catch (exception e) finally output += "4";

}public static void main(string args)

}

答案 3423

參考如下**

public class test 

} catch (exception e) finally output +="4";

return output;

}public static void main(string args)

}

牛客網錯題集錦6

1 在rhel5系統中使用vi編輯檔案時,使用 末行命令可以像下圖一樣顯示出每一行的行號。答案 set nu 2 一台主機要實現通過區域網與另乙個區域網通訊,需要做的工作是?答案 定義一條本機指向所在網路閘道器的路由 答案 本機只需設定本地網路預設閘道器,至於到目的網路,是閘道器路由器的工作。3 下...

牛客網錯題集錦5

1.下列方法中那個是執行緒執行的方法?a run b start c sleep d suspend 答案 a。start是進入就緒狀態。suspend使執行緒掛起,要通過resume 方法使其重新啟動。public class demo2 public static void changed2 s...

牛客網錯題集錦6

1.length是陣列長度 int a int b a.length length 是字串長度 string c fasdfasdfla c.length size 是集合長度 2.靜態方法裡只能訪問本類方法中的靜態成員,不能直接訪問非靜態的屬性和方法。這是因為靜態方法不依賴於物件,所以當類載入成功...