天天看點

一些基礎知識的總結

1.連結清單和數組的比較

連結清單:連結清單可以支援動态記憶體大小,插入和删除的速度快,空間開銷大,不支援随機通路;

數組:數組的大小不能動态擴充,支援随機通路,數組在記憶體中逐個存放;

2.C++中為什麼用模闆類。

(1)可用來建立動态增長和減小的資料結構

(2)它是類型無關的,是以具有很高的可複用性。

(3)它在編譯時而不是運作時檢查資料類型,保證了類型安全

(4)它是平台無關的,可移植性好

(5)可用于基本資料類型

3.程式什麼時候應該使用線程,什麼時候單線程效率高。

(1)耗時的操作使用線程,提高應用程式響應

(2)并行操作時使用線程,如C/S架構的伺服器端并發線程響應使用者的請求。

(3)多CPU系統中,使用線程提高CPU使用率

(4)改善程式結構。一個既長又複雜的程序可以考慮分為多個線程,成為幾個獨立或半獨

立的運作部分,這樣的程式會利于了解和修改。

4.群碩智力題:

有101個硬币,其中有一個是假币,假币重量和真币不同。現有一個無砝碼的天平,隻允許稱2次。請你告訴我,假币比真币重還是輕?

答案:平分成50,稱一次;取重(輕)的50個出來,再平分稱一次,如果相等,那麼假币輕(重)了;如果不相等,那麼重(輕)了;

5.(作業系統)

(1) 說明程序的三個基本狀态之間轉換的原因

a.處于就緒狀态的程序,當程序排程程式為之配置設定了處理機後,程序便由就緒狀态轉為執行狀态;

b.目前程序因發生某事件無法執行,如通路了已經被占用的臨界資源,就會由執行态轉為阻塞态;

c.目前程序的時間片用完而暫停執行或者有更高優先級的程序到來,該程序便由執行态轉為就緒态;

(2) 什麼是死鎖?産生死鎖的原因是什麼?必要條件是什麼?

死鎖是多個程序競争資源造成的,若無外力的作用,這些程序将永遠不能向前推進;

産生死鎖的原因:一是競争資源;二是程序推進順序非法;

産生死鎖的必要條件:互斥條件;請求和保持條件;不剝奪條件;環路等待條件

(3) 建立程序的必要步驟

a.建立一個PCB(程序控制塊);

b.為程序配置設定記憶體等必要資源;

c.将PCB接入程序就緒隊列;

(4) 程序間的互斥

多個程序需要使用臨界資源,獲得資源的程序可以運作,沒有獲得資源的程序必須等待,程序間的這種關系叫互斥

可以采用信号量和P,V操作來實作程序間的互斥

繼續閱讀