bd測試開發筆試題

2021-06-06 06:31:44 字數 1176 閱讀 1525

1.如果有個字串mary存在其字母轉換位置後的另乙個單詞存在,例如army,就說其存在兄弟單詞,設計資料結構與演算法,在單詞詞典中找到某單詞的所有兄弟單詞。

2.c/c++動態分配記憶體的方式,區別是什麼?

3.程序與執行緒的區別與聯絡,什麼是「執行緒安全」。

4.網路爬蟲演算法,鍊錶的建立規則,比較兩個鍊錶是否相同,處理有無迴圈的情況。(網頁有幾百億,不能用hash)

網路爬蟲,假定每個網頁至多有乙個頁面,爬蟲抓取的結果是乙個單向鍊錶x1.html -> x2.html -> ... -> null。現在給定兩個頁面a和b,經過抓取後得到兩個鍊錶,如何判定爬蟲抓取到了相同的url。(網頁有幾百億,不能用hash)。設計演算法,寫出實現的關鍵**,不用寫爬蟲的**。

5.兩個有序的子串a1[0~mid-1]和a1[mid~num-1]怎樣合成有序的陣列,設計乙個merge演算法,使用o(1)的空間使得陣列a[0,n-1]變為有序陣列,陣列元素支援'<'運算

請問如何實現這個功能,說明用到的資料結構和演算法。用什麼方法優化能夠使得時間和空間效率盡可能好。

1.第乙個題,我用的樹的深度搜尋,但是感覺應該用廣度優先搜尋,同學有用素數求解的,即每個單詞對應乙個素數,在字典中求乘積一樣的單詞。

2.區別是什麼?

3.執行緒安全是什麼?

4.如何處理迴圈的情況?

5.使用的時間複雜度比較高,需要測試寫寫

6.沒寫完,在第四個題上花費時間較長。

解答:如何找出字典中的兄弟單詞

給定乙個單詞a,如果通過交換單詞中字母的順序可以得到另外的單詞b,那麼定義b是a的兄弟單詞。現在給定乙個字典,使用者輸入乙個單詞,如何根據字典找出這個單詞有多少個兄弟單詞?

答案: 

使用hash_map和鍊錶。 

首先定義乙個key,使得兄弟單詞有相同的key,不是兄弟的單詞有不同的key。例如,將單詞按字母從小到大重新排序後作為其key,比如bad的key為abd,good的key為dgoo。 

使用鍊錶將所有兄弟單詞串在一起,hash_map的key為單詞的key,value為鍊錶的起始位址。 

開始時,先遍歷字典,將每個單詞都按照key加入到對應的鍊錶當中。當需要找兄弟單詞時,只需求取這個單詞的key,然後到hash_map中找到對應的鍊錶即可。 

這樣建立hash_map時時間複雜度為o(n),查詢兄弟單詞時時間複雜度是o(1)。

恆生測試開發筆試 2020 3 20

恆生測試開發筆試2020.3.20 第一部分c語言選擇 比較有印象的是常量指標,指標常量 1 常量指標 本質上是乙個指標,常量表示指標指向的內容,說明該指標指向乙個 常量 在常量指標中,指標指向的內容是不可改變的,指標看起來好像指向了乙個常量。const int p,int const p int ...

測試開發筆記(1)

測試開發 測試驅動開發 tdd 驅動這個流程前行的開發周期稱為 紅燈 綠燈 重構 具體如下 編寫乙個測試 執行所有測試 編寫實現 執行所有測試 重構 執行所有測試。編寫測試期間處於綠燈狀態昭示著存在錯報的問題,對於這樣的測試,應將其刪除或重構。注意 編寫測試時,應處於紅燈狀態。完成測試要求後,所有測...

2020 09 19公尺哈遊測試開發筆試程式設計題

1 旋轉字元遊戲 給定兩個整數m,n,生成乙個m n的矩陣,矩陣中元素取值為a z的26個字母中的乙個,a在左上角,其餘各數按順時針方向旋轉前進,依次遞增放置,當超過z時,又從a開始填充。例如,當m 5,n 8時。矩陣中的內容如下 a b c d e f g h v w x y z a b i u ...