牛客網校招全國統一模擬筆試(三月場)- Java方向

一、若二叉樹採用二叉鏈表存儲結構,要交換其全部分支結點左、右子樹的位置,利用()遍歷方法最合適html

A 前序   B 中序   C 後序   D 按層次java

解析:顯而後序遍歷比較合理。正常的邏輯應該就是:作好當前結點子樹內部的交換,而後交換當前結點的左右子樹。恰好符合後序遍歷的算法邏輯。
1. 交換好左子樹
2. 交換好右子樹
3. 交換左子樹與右子樹
其餘算法如先序和按層次其邏輯都差很少,即訪問當前結點時交換其左右子樹。從邏輯上來看稍顯彆扭一點點。所以說最合適應該是後序遍歷,可是從實現上來講先序和按層次都是能夠的。
1. 交換左子樹與右子樹
2. 遍歷左子樹
3. 遍歷右子樹
按層次遍歷
1. 根結點入隊列
2. 出隊列,交換其左右子樹,將子樹的根入隊列
3. 重複2直到隊列爲空
中序遍歷相對較難實現一些。node

二、鏈表不具有的特色是( ) linux

A 可隨機訪問任何一個元素 算法

B 插入、刪除操做不須要移動元素 數據庫

C 無需事先估計存儲空間大小 編程

D 所需存儲空間與線性表長度成正比網絡

解析:鏈表是線性表的鏈式存儲,是用結點來存儲數據元素。線性表採用鏈表做爲存儲結構時,不能進行數據元素的隨機訪問,其優勢是插入和刪除操做不須要移動元素。因此,本題應該選擇A。多線程

三、下列關於棧的敘述正確的是() 編程語言

A 棧是非線性結構

B 棧是一種樹狀結構

C 棧具備先進先出的特徵

D 棧有後進先出的特徵

解析:棧實際上也是線性表,是按照「先進後出」或「後進先出」的原則組織數據的。

四、某棵徹底二叉樹上有698個節點,則該二叉樹的葉子節點數爲

A 349   B 350   C 255   D 351 

解析:所謂徹底二叉樹是指除最後一層外,每一層上的結點數均達到最大值;在最後一層上只缺乏右邊的若干結點。具備n個結點的徹底二叉樹,其父結點數爲int(n/2),而葉子結點數等於總結點數減去父結點數。本題n=698,故父結點數等於int(698/2)=349,葉子結點數等於 698-349=349。

 五、輸入若已是排好序的,下列排序算法最快的是()

A 插入排序   B Shell排序   C 合併排序   D 快速排序

解析:A:插入排序只須要遍歷一遍,時間複雜度爲O(n)

B:希爾排序基於插入排序,只有好的狀況下才能達到O(n)

C:歸併排序時間複雜度爲nlogn

D:快速排序在排好序的狀況下,時間複雜度爲n^2
六、在網絡7層協議中,若是想使用UDP協議達到TCP協議的效果,能夠在哪層作文章?
A 應用層   B 表示層   C 會話層   D 傳輸層   E 網絡層
解析: 由於UDP要達到TCP的功能就必須實現擁塞控制的功能,並且是在路由之間實現,這個在底層明顯是作不到擁塞控制的,在應用層也是作不到的,由於應用層之間和應用程序掛鉤,通常只能操控主機的程序,而表示層是處理全部與數據表示及運輸有關的問題,包括轉換、加密和壓縮,在傳輸層是不可能的,由於你已經使用了UDP協議,沒法在本層轉換它,只有在會話層.
  會話層(SESSION LAYER)容許不一樣機器上的用戶之間創建會話關係。會話層循序進行相似的傳輸層的普通數據的傳送,在某些場合還提供了一些有用的加強型服務。容許用戶利用一次會話在遠端的分時系統上登錄,或者在兩臺機器間傳遞文件。 會話層提供的服務之一是管理對話控制。會話層容許信息同時雙向傳輸,或任一時刻只能單向傳輸。若是屬於後者,相似於物理信道上的半雙工模式,會話層將記錄此時該輪到哪一方。
七、主機甲和乙已創建了 TCP 鏈接,甲始終以 MSS=1KB 大小的段發送數據,並一直有數據 發送;乙每收到一個數據段都會發出一個接收窗口爲 10KB 的確認段。若甲在 t 時刻發生超時時擁塞窗口爲 8KB,則從 t 時刻起,再也不發生超時的狀況下,通過 10 個 RTT 後,甲的發送窗口是()
A 10KB   B 12KB   C 14KB   D 15KB
解析: 當t時刻發生超時時,把ssthresh設爲8的一半,即爲4,且擁塞窗口設爲1KB。而後經歷10個RTT後,擁塞窗口的大小依次爲二、四、五、六、七、八、九、十、十一、12,而發送窗口取當時的擁塞窗口和接收窗口的最小值,而接收窗口始終爲10KB,因此此時的發送窗口爲10KB,選A。

  實際上該題接收窗口一直爲10KB,可知無論什麼時候,發送窗口必定小於等於10KB,選項中只有A選項知足條件,可直接得出選A。

八、linux 系統中,給文件授予可執行權限的命令是()

A chown   B mv   C sudo  D chmod

解析:chown更改文件的擁有者,mv移動,sudo以管理員權限運行,chmod給文件授予可執行權限。

九、下面關於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"連接數"不會所以發生變化。
十、進程阻塞的緣由不包括________。
A 時間片切換   B 等待I/O   C 進程sleep   D 等待解鎖

解析:進程有3個狀態:就緒態。執行態、阻塞態。三種狀態的轉換包含有:

就緒->執行,執行->就緒,執行->阻塞,阻塞->就緒

等待I/O、進程sleep、等待解鎖等緣由都會致使進程暫停。關於"時間片切換",當進程已經得到了除cpu外全部的資源,這時的狀態就是就緒態,當分配到了時間片就成了執行態,當時間片用完以前一直未進入阻塞態的話,此後便繼續進入就緒態。因此進程的就緒與阻塞是徹底不一樣的。

 十一、如何減小換頁錯誤?

A 進程傾向於佔用CPU

B 訪問局部性(locality of reference)知足進程要求

C 進程傾向於佔用I/O

D 使用基於最短剩餘時間(shortest remaining time)的調度機制

解析:換頁錯誤又稱缺頁錯誤,當一個程序試圖訪問沒有映射到物理內存的地方時,就會出現缺頁錯誤, 這時操做系統就要去虛擬內存中加載這塊內存頁。

減小換頁錯誤的方法,即下降缺頁中斷率:
一、內存頁框數。增長做業分得的內存塊數。
二、頁面大小。頁面劃分越大,中斷率越低。
三、替換算法的優劣影響缺頁中斷次數
四、程序局部性。程序局部性好可減小缺頁中斷(爲何?)。
那麼B是對的,而對於D,最短剩餘時間調度是CPU調度就緒進程的方式,與頁面置換算法無關,不要搞混淆了。
局部性原理是一個經典的原理,分爲時間局部性和空間局部性,意思是應用一旦訪問了一個空間的數據,則這個空間中的相鄰區域的內容也極可能被訪問,一旦訪問了某一段代碼,則其周圍的代碼也極可能被訪問。局部性原理的運用就是根據這個,把可能訪問的數據和代碼都加在到內存中,之後訪問就不用加載了(由於主要的消耗在IO端)。這也是迪傑斯特拉提出的goto語句有害的依據,應爲goto語句能打破局部性原理,形成計算機的延遲加重。

十二、在內存分配的"最佳適應法"中,空閒塊是按()。

A 始地址從小到大排序

B 始地址從大到小排序

C 塊的大小從小到大排序

D 塊的大小從大到小排序

1三、某網站的數據庫有一個成績表myscore,但願找出成績表中平均得分小於90的全部試卷。

A select paper_id from myscore where sum(score) < 90 group by paper_id

B select paper_id from myscore group by paper_id having avg(score) < 90

C select paper_id from myscore where avg(score) < 90

D select paper_id from myscore where avg(score) < 90 group by paper_id

解析: 統計函數不能在Where後面當作限定條件使用,由於where的過濾時機是在查看每一行屬性的時候,而統計函數須要在全部數據都查看以後才統計,因此這裏用Where後面直接加什麼都不對。
1四、有土豆,蘿蔔各一筐,土豆有 240 個,蘿蔔有 313 個,把這兩筐平均分給一些小朋友,一直土豆分到最後餘 2 個,蘿蔔分到最後還餘 7 個,求最多有多少個小朋友 參加分水果?
A 14   B 17   C 28   D 34
1五、4個袋子,15個球,每一個袋子至少放一個球,並且袋子中的球數量不能重複,有多少種方式?
A 4   B 5   C 6    D 7
解析:1,2,3,9   1,2,4,8   1,2,5,7   1,3,4,7   1,3,5,6   2,3,4,6
1六、下列關於 java 語言的特色,描述錯誤的是()
A java是跨平臺的編程語言
B java支持分佈式計算
C java是面向過程的編程語言
D java支持多線程
解析:Java是面向對象的編程語言
1七、instanceof運算符可以用來判斷一個對象是否爲:
A 一個類的實例   B 一個實現指定接口的類的實例   C 所有正確   D 一個子類的實例
解析:此解析見我另一篇博客:Java中的instanceof關鍵字 http://www.javashuo.com/article/p-oftnfgws-be.html
1八、關於PreparedStatement與Statement描述錯誤的是()
A 通常而言,PreparedStatement比Statement執行效率更高
B PreparedStatement會預編譯SQL語句
C Statement每次都會解析/編譯SQL,確立並優化數據獲取路徑
D Statement執行掃描的結果集比PreparedStatement大
解析:此解析見我另一篇博客:PreparedStatement與Statement區別 http://www.javashuo.com/article/p-zrwhjemj-s.html
1九、有這麼一段程序:
請問以上程序執行的結果是()
A true,true   B true,false   C false,true   D false,false
20、對於一個已經不被任何變量引用的對象,當垃圾回收器準備回收該對象所佔用的內存時,將自動調用該對象的哪一個方法()
A finalize   B notify   C notifyAll   D hashCode
解析: 垃圾回收過程當中的對象銷燬–Finalization

  就在移除一個對象並回收它的內存空間以前,Java垃圾回收器將會調用各個實例的finalize()方法,這樣實例對象就有機會能夠釋放掉它佔用的資源。儘管finalize()方法是保證在回收內存空間以前執行的,可是對具體的執行時間和執行順序是沒有任何保證的。多個實例之間的finalize()執行順序是不能提早預知的,甚至有可能它們是並行執行的。程序不該該預先假設實例執行finalize()的方法,也不該該使用finalize()方法來回收資源。

  在finalize過程當中拋出的任何異常都默認被忽略掉了,同時對象的銷燬過程被取消

  JVM規範並無討論關於弱引用的垃圾回收,這是明確聲明的。具體的細節留給實現者決定。

  垃圾回收是由守護進程執行的

2一、【加減二叉樹】

  二叉樹是除了葉子節點以外全部的節點都最多有兩個子節點的樹。滿二叉樹則是除葉子節點外全部節點都有兩個子節點的樹,且全部葉子節點到根節點的距離都相 等。   如今有一棵無限大的滿二叉樹,根節點編號爲1。編號爲i的節點的左兒子編號爲2*i,右兒子2*i+1(好比根節點1的左兒子爲2,右兒子爲3,2的左兒子爲4,右兒子爲 5。)。牛牛在這棵樹上作一個遊戲,他從妞妞那裏獲得了兩個數n和k,妞妞但願他拿着數字0從根節點開始往下走,每次選擇一條邊移動,到達一個節點時選擇加 上這個節點的編號或者減去這個節點的編號。在走到第k個節點時所獲得的數字恰好等於n。

   這樣的路徑固然有不少。爲了增長難度,妞妞決定讓牛牛告訴她通過的節點的編號和最小的路徑。 妞妞很聰明,給出的問題都是必定存在答案的。

  你能幫幫牛牛嗎?

2二、【走斜線】

  有天他來到一張方格地圖上,整張地圖能夠看作一個二維座標軸。牛牛此刻處於原點(0,0),他想要到點(x,y)去。

  牛牛有強迫症,他規定本身必須剛好k步走到點(x,y),中途能夠通過任何點包括(x,y),可是第k步必定要到達(x,y)。 一步有八種走法,直線東(+1,0)南(0,-1)西(-1,0)北(0,+1),斜線東南(+1,-1)東北(+1,+1)西南(-1,-1)西北(-1,+1)。

  牛牛會在能k步到達目的地的基礎下儘可能走斜線,你能計算出牛牛到底走了多少條斜線嗎?

2三、【得分最大】

  牛牛和妞妞從他們的好朋友果果處獲得了兩個盒子,盒子裏是一些寫了分值的綵球。牛牛和妞妞發現兩個盒子裏的綵球數目是相等的,就決定一人一個。

  妞妞拿到本身的盒子以後,決定跟牛牛玩一個遊戲,規則以下:

  一開始兩我的盒子裏的綵球數目都是n個,由妞妞先手,兩人輪流實行下面兩個操做中的一個(只能選其中一個執行,不能不執行。),直到兩個盒子裏的綵球都被 拿完位置。

  一、從本身的盒子裏選一個球拿出來,把球上面的分值加在本身的總得分上邊。

  二、從對方的盒子裏選一個球拿出來,把這個球移出遊戲(對方不能再拿這個球)。

  妞妞和牛牛都十分聰明,不會出錯,而且儘量讓本身的得分比對方多。妞妞想知道,在遊戲結束的時候,他能比牛牛多得多少分呢?

相關文章
相關標籤/搜索