牛客網校招全國統一模擬筆試(三月場)- Java方向
1、若二叉樹采用二叉鏈表存儲結構,要交換其所有分支結點左、右子樹的位置,利用()遍歷方法最合適
A 前序 B 中序 C 後序 D 按層次
解析:顯然後序遍歷比較合理。正常的邏輯應該就是:做好當前結點子樹內部的交換,然後交換當前結點的左右子樹。剛好符合後序遍歷的算法邏輯。
1. 交換好左子樹
2. 交換好右子樹
3. 交換左子樹與右子樹
其他算法如先序和按層次其邏輯都差不多,即訪問當前結點時交換其左右子樹。從邏輯上來看稍顯別扭一點點。因此說最合適應該是後序遍歷,但是從實現上來說先序和按層次都是可以的。
1. 交換左子樹與右子樹
2. 遍歷左子樹
3. 遍歷右子樹
按層次遍歷
1. 根結點入隊列
2. 出隊列,交換其左右子樹,將子樹的根入隊列
3. 重復2直到隊列為空
中序遍歷相對較難實現一些。
2、鏈表不具備的特點是( )
A 可隨機訪問任何一個元素
B 插入、刪除操作不需要移動元素
C 無需事先估計存儲空間大小
D 所需存儲空間與線性表長度成正比
解析:鏈表是線性表的鏈式存儲,是用結點來存儲數據元素。線性表采用鏈表作為存儲結構時,不能進行數據元素的隨機訪問,其優點是插入和刪除操作不需要移動元素。所以,本題應該選擇A。
3、下列關於棧的敘述正確的是()
A 棧是非線性結構
B 棧是一種樹狀結構
C 棧具有先進先出的特征
D 棧有後進先出的特征
解析:棧實際上也是線性表,是按照“先進後出”或“後進先出”的原則組織數據的。
4、某棵完全二叉樹上有698個節點,則該二叉樹的葉子節點數為
A 349 B 350 C 255 D 351
解析:所謂完全二叉樹是指除最後一層外,每一層上的結點數均達到最大值;在最後一層上只缺少右邊的若幹結點。具有n個結點的完全二叉樹,其父結點數為int(n/2),而葉子結點數等於總結點數減去父結點數。本題n=698,故父結點數等於int(698/2)=349,葉子結點數等於 698-349=349。
5、輸入若已經是排好序的,下列排序算法最快的是()
A 插入排序 B Shell排序 C 合並排序 D 快速排序
解析:A:插入排序只需要遍歷一遍,時間復雜度為O(n)
B:希爾排序基於插入排序,只有好的情況下才能達到O(n)
C:歸並排序時間復雜度為nlogn
D:快速排序在排好序的情況下,時間復雜度為n^2 6、在網絡7層協議中,如果想使用UDP協議達到TCP協議的效果,可以在哪層做文章? A 應用層 B 表示層 C 會話層 D 傳輸層 E 網絡層 解析:因為UDP要達到TCP的功能就必須實現擁塞控制的功能,而且是在路由之間實現,這個在底層明顯是做不到擁塞控制的,在應用層也是做不到的,因為應用層之間和應用程序掛鉤,一般只能操控主機的程序,而表示層是處理所有與數據表示及運輸有關的問題,包括轉換、加密和壓縮,在傳輸層是不可能的,因為你已經使用了UDP協議,無法在本層轉換它,只有在會話層. 會話層(SESSION LAYER)允許不同機器上的用戶之間建立會話關系。會話層循序進行類似的傳輸層的普通數據的傳送,在某些場合還提供了一些有用的增強型服務。允許用戶利用一次會話在遠端的分時系統上登陸,或者在兩臺機器間傳遞文件。 會話層提供的服務之一是管理對話控制。會話層允許信息同時雙向傳輸,或任一時刻只能單向傳輸。如果屬於後者,類似於物理信道上的半雙工模式,會話層將記錄此時該輪到哪一方。 7、主機甲和乙已建立了 TCP 連接,甲始終以 MSS=1KB 大小的段發送數據,並一直有數據 發送;乙每收到一個數據段都會發出一個接收窗口為 10KB 的確認段。若甲在 t 時刻發生超時時擁塞窗口為 8KB,則從 t 時刻起,不再發生超時的情況下,經過 10 個 RTT 後,甲的發送窗口是() A 10KB B 12KB C 14KB D 15KB 解析:當t時刻發生超時時,把ssthresh設為8的一半,即為4,且擁塞窗口設為1KB。然後經歷10個RTT後,擁塞窗口的大小依次為2、4、5、6、7、8、9、10、11、12,而發送窗口取當時的擁塞窗口和接收窗口的最小值,而接收窗口始終為10KB,所以此時的發送窗口為10KB,選A。實際上該題接收窗口一直為10KB,可知不管何時,發送窗口一定小於等於10KB,選項中只有A選項滿足條件,可直接得出選A。
8、linux 系統中,給文件授予可執行權限的命令是()
A chown B mv C sudo D chmod
解析:chown更改文件的擁有者,mv移動,sudo以管理員權限運行,chmod給文件授予可執行權限。
9、下面關於Linux文件系統的inode描述錯誤的是: A inode和文件是一一對應的 B inode描述了文件大小和指向數據塊的指針 C 通過inode可獲得文件占用的塊數 D 通過inode可實現文件的邏輯結構和物理結構的轉換 解析: 一般情況下,文件名和inode號碼是"一一對應"關系,每個inode號碼對應一個文件名。但是,Unix/Linux系統允許,多個文件名指向同一個inode號碼。這意味著,可以用不同的文件名訪問同樣的內容;對文件內容進行修改,會影響到所有文件名;但是,刪除一個文件名,不影響另一個文件名的訪問。這種情況就被稱為"硬鏈接"(hard link)。 除了硬鏈接以外,還有一種特殊情況。文件A和文件B的inode號碼雖然不一樣,但是文件A的內容是文件B的路徑。讀取文件A時,系統會自動將訪問者導向文件B。因此,無論打開哪一個文件,最終讀取的都是文件B。這時,文件A就稱為文件B的"軟鏈接"(soft link)或者"符號鏈接(symbolic link)。 這意味著,文件A依賴於文件B而存在,如果刪除了文件B,打開文件A就會報錯:"No such file or directory"。這是軟鏈接與硬鏈接最大的不同:文件A指向文件B的文件名,而不是文件B的inode號碼,文件B的inode"鏈接數"不會因此發生變化。 https://www.cnblogs.com/zsh-blogs/p/10570277.html 10、進程阻塞的原因不包括________。 A 時間片切換 B 等待I/O C 進程sleep D 等待解鎖解析:進程有3個狀態:就緒態。執行態、阻塞態。三種狀態的轉換包含有:
就緒->執行,執行->就緒,執行->阻塞,阻塞->就緒
等待I/O、進程sleep、等待解鎖等原因都會導致進程暫停。關於"時間片切換",當進程已經獲得了除cpu外所有的資源,這時的狀態就是就緒態,當分配到了時間片就成了執行態,當時間片用完之前一直未進入阻塞態的話,此後便繼續進入就緒態。所以進程的就緒與阻塞是完全不同的。
牛客網校招全國統一模擬筆試(三月場)- Java方向