幾道筆試題

2021-05-25 06:33:34 字數 873 閱讀 8032

出處:

一、程式設計題(30分)

現代的處理器提供了compare-and-swap原子操作:

int compare_and_swap(int * pv, const int cv, const int nv);

即比較*pv與cv,如果相等,則把*pv值替換為nv並返回*pv原值,否則返回*pv的值。

請利用上述原子操作實現如下操作:

int inc_if_gt_zero(int * pv);

即如果*pv > 0,則把*pv加1並返回修改後的*pv,否則返回*pv。

結果要執行緒安全且不使用鎖、訊號燈、互斥量、臨界區或類似機制。

二、演算法題(35分)

假設有一台機器a,有1g記憶體,另外若干臺機器(b、c、d……)通過網路tcp向機器a傳輸資料,a機器把接收到的資料寫入硬碟。b、c、d等機器的資料按記錄傳輸,每條記錄大小範圍:1m~16m。

為了保證每條記錄的原子性,b、c、d等機器每次先向a匯報資料量大小,然後再進行資料傳輸。

匯報資料大小時,a機器會給記錄分配乙個序號,寫入檔案時每個記錄按序號順序、原子寫入。

b、c、d等機器處理速度和網路速度都不盡相同,因此匯報資料大小之後,記錄資料傳遞到a的順序可能不一定按分配好的序號順序到達。

現在要求給a上程式設計乙個資料結構,利用該資料結構能高效的接收資料並順序高效的寫入磁碟(也即是不能序號大的記錄先寫,然後再回寫序號小的記錄;也不能接收到幾十個位元組就寫一次磁碟)。

三、系統設計題(35分)

現有計算機的記憶體大部分為易失性記憶體,一旦斷電記憶體中的資料就會全部丟失,所以作業系統的設計充分的考慮了易失性記憶體的特點。

問:如果在以後記憶體全部為非易失性記憶體,那麼應該如何設計新的作業系統,或者說需要對現有的作業系統做哪些修改和改進?

幾道筆試題

1.在開啟的子視窗重新整理父視窗的 如何寫?window.opener.loaction.reload 2.寫出乙個ajax post請求伺服器資源並提公升返回資料的 片段,可以使用你熟悉的任何第三方js框架。ajax sucess function retval error function 3....

幾道C 筆試題

include using namespace std class a void fun virtual void print intm class b publica intmain 上例執行結果表明 1.建構函式中呼叫虛函式,無法實現多型。2.通過非虛函式呼叫虛函式,也可以實現多型。includ...

幾道策劃筆試題

室友策劃的筆試題 覺得非常有意思,分享一下 標題的鏈結是解題思路 有五個理性的海盜,a,b,c,d和e,找到了100個金幣,需要想辦法分配金幣。海盜們有嚴格的等級制度 a比b職位高,b比c高,c比d高,d比e高。海盜世界的分配原則是 等級最高的海盜提出一種分配方案。所有的海盜投票決定是否接受分配,包...