2012 10 11 迅雷筆試

2021-06-10 04:40:18 字數 993 閱讀 8853

1. 執行緒安全型別的快取儲存的實現,儲存int型別的鍵值對型別。要求考慮多執行緒下快取的訪問效率以及安全性、帶有一定的快取替換策略。提供了可直接呼叫的互斥鎖函式(lock, unlock),以及執行緒安全類的部分實現(insert方法和match方法).

簡略的思路:

資料儲存策略, 由於需要儲存的是一種鍵值對型別,所以肯定使用stl庫中的map型別儲存,查詢效率、插入效率和刪除效率都比較高。

快取替換策略,使用先入先出的策略,此處使用佇列實現。構造乙個結構體a,該結構體中有兩個變數key和time(key對應鍵值對中的鍵,time為該鍵值對插入的時間,佇列的構建以時間為基準,最先加入的肯定位於隊首),以及乙個過載的小於比較函式。插入新的元素的時候,如果優先佇列的元素個數已經為預先設定的限制大小時,則將隊首以及隊首變數key值所對應的快取物件從map物件中刪除,然後就將新的結構體插入佇列中。如果沒有達到限制,則直接插入佇列中即可。刪除時直接遍歷即可

執行緒加鎖策略,插入和刪除元素是需要加鎖,查詢物件是無需加鎖。

2. 字串匹配的問題,其實就是string類中的find函式和insert函式的組合。題目大概:從字串"abe****bf「找出與"ab"相同的字元字串,在對因的字串後再加入某一指定字串,如"123",使得原有字串變為「ab123e****b123f」,函式原型:void match_insert(char* source, const char* match, const char* in);, 不用考慮溢位問題

簡略的思路:

a.由於招的是c++工程師,所以筆試的時候偷懶將c字串轉換成為了string型別,然後使用該型別提供的find函式和insert函式實現,最後再將string中的字串重新寫回到source中。

b. 使用最笨的方法,乙個乙個的匹配,找到後新增指定串元素,然後繼續匹配直至結束。此方法需要使用o(n)的空間,時間為o(kn).

c. 請高人指點

程序狀態有三種:就緒態、執行態和等待態,其中執行態可以轉換成就緒態和等待態,等待態可以轉為就緒態,就緒態也可以轉為執行態。

迅雷筆試題

1 下面的程式可以從1.n中隨機輸出m個不重複的數。請填空 knuth int n,int m 分別為 rand n i 2 以下prim函式的功能是分解質因數。請填空 void prim int m,int n 分別為 m n 和 m n 3 下面程式的功能是輸出陣列的全排列。請填空 void p...

c 併發程式設計 迅雷筆試題

題目 編寫乙個程式,開啟3個執行緒,這3個執行緒的id分別為a b c,每個執行緒將自己的id在螢幕上列印10遍,要求輸出結果必須按abc的順序顯示 如 abcabc 依次遞推。採用c 11實現 cpp view plain copy 在code上檢視 片派生到我的 片 include includ...

迅雷筆試部分問題的記錄

function foo x foo 3 foo 0 3 foo 1 1 foo 1 1只要 符號前面的為false,不管 後面是true還是false,都返回 它後面的那個值。只要 符號前面為true,不管 後面是true還是false,都返回 前面的那個值。var x 1 var output ...