一、若二叉樹採用二叉鏈表存儲結構,要交換其全部分支結點左、右子樹的位置,利用()遍歷方法最合適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
實際上該題接收窗口一直爲10KB,可知無論什麼時候,發送窗口必定小於等於10KB,選項中只有A選項知足條件,可直接得出選A。
八、linux 系統中,給文件授予可執行權限的命令是()
A chown B mv C sudo D chmod
解析:chown更改文件的擁有者,mv移動,sudo以管理員權限運行,chmod給文件授予可執行權限。
解析:進程有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
就在移除一個對象並回收它的內存空間以前,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個,由妞妞先手,兩人輪流實行下面兩個操做中的一個(只能選其中一個執行,不能不執行。),直到兩個盒子裏的綵球都被 拿完位置。
一、從本身的盒子裏選一個球拿出來,把球上面的分值加在本身的總得分上邊。
二、從對方的盒子裏選一個球拿出來,把這個球移出遊戲(對方不能再拿這個球)。
妞妞和牛牛都十分聰明,不會出錯,而且儘量讓本身的得分比對方多。妞妞想知道,在遊戲結束的時候,他能比牛牛多得多少分呢?