linux c c 面試題目整理 五

2021-09-21 13:29:17 字數 2323 閱讀 8478

有序資源分配法,就是大家申請資源時都按照相同的順序來;

使用銀行家演算法,程序首次申請資源時測試該程序對資源的最大需求量,若系統現有資源可以滿足,則按照當前申請量分配,否則推遲分配。當程序在執行中繼續申請資源時,先測試該程序,本次申請的資源數是否超過該資源所剩總量,滿足則分配,否則推遲分配。

斐波列函式:

int

fibo

(int n)

陣列法:

根據n來new乙個n大小的陣列,知道陣列第乙個數為1,第二個數也為1,再根據迴圈求後面的數。

演算法:先將整個句子反轉,再對每個單詞反轉

異或:^ 值相同為0,不同為1.

#include

#include

using namespace std;

void

inversestring

(char

* p,

char

* q)

}int

main()

p++;}

printf

(「%s\n」, str)

;return0;

}

直接捕捉的值,捕捉用的成員函式是catch。

返回型別是size_type,沒找到返回值是string::npos。

at()返回元素資料,如果越界,跑出out_of_range,返回容器中指定位置的乙個引用。

const成員函式不允許修改類的資料成員,只有被宣告為const的成員函式才能被乙個const類物件呼叫。

bool checkdbleq

(double dval)

給定乙個字串的集合,格式如:,,,,要求將其中交集不為空的集合合併,要求合併完成後的集合之間無交集,例如上例應輸出,,。

(1)請描述你解決這個問題的思路;

(2)請給出主要的處理流程,演算法,以及演算法的複雜度

(3)請描述可能的改進。

回答:集合使用hash_set來表示,這樣合併時間複雜度比較低。

1)給每個集合編號為0,1,2,3…

2)建立乙個hash_map,key為字串,value為乙個鍊錶,鍊錶節點為字串所在集合的編號。遍歷所有的集合,將字串和對應的集合編號插入到hash_map中去。

3)建立乙個長度等於集合個數的int陣列,表示集合間的合併關係。例如,下標為5的元素值為3,表示將下標為5的集合合併到下標為3的集合中去。開始時將所有值都初始化為-1,表示集合間沒有互相合併。在集合合併的過程中,我們將所有的字串都合併到編號較小的集合中去。

遍歷第二步中生成的hash_map,對於每個value中的鍊錶,首先找到最小的集合編號(有些集合已經被合併過,需要順著合併關係陣列找到合併後的集合編號),然後將鍊錶中所有編號的集合都合併到編號最小的集合中(通過更改合併關係陣列)。

4)現在合併關係陣列中值為-1的集合即為最終的集合,它的元素**於所有直接或間接指向它的集合。

演算法的複雜度為o(n),其中n為所有集合中的元素個數。

題目中的例子:

0:1:

2:3:

4:生成的hash_map,和處理完每個值後的合併關係陣列分別為

aaa:0。[-1,-1,-1,-1,-1]

bbb:0,1。[-1,0,-1,-1,-1]

ccc:0。[-1,0,-1,-1,-1]

ddd:1,4。[-1,0,-1,-1,0]

eee:2。[-1,0,-1,-1,0]

fff:2。[-1,0,-1,-1,0]

ggg:3。[-1,0,-1,-1,0]

hhh:4。[-1,0,-1,-1,0]

所以合併完後有三個集合,第0,1,4個集合合併到了一起,

給40億個不重複的unsigned int的整數,沒排過序的,然後再給幾個數,如何快速判斷這幾個數是否在那40億個數當中?

答案:unsigned int的取值範圍是0到232-1。我們可以申請連續的232/8=512m的記憶體,用每乙個bit對應乙個unsigned int數字。首先將512m記憶體都初始化為0,然後每處理乙個數字就將其對應的bit設定為1。當需要查詢時,直接找到對應bit,看其值是0還是1即可。

怎麼將對應的bit設為1?

也許通過結構體裡面設定占用bit位為1,然後以該結構體去申請512m的空間,這樣就相當於對陣列操作了。

解法二:

將要判斷的幾個數放到乙個hash中,然後遍歷40億個數,看是否有數包含在陣列裡面,若有則將該數刪掉並記錄下來。

這樣占用記憶體就很小,但是如果要判斷的數有變化,那麼就要重新做hash,重新遍歷40億個數了。

思路:通過bit位來解決問題。

hadoop面試題整理 五

一.問答題 1.hive如何調優?2.hive如何許可權控制?3.hbase寫資料的原理是什麼?4.hive能像關聯式資料庫那樣,建多個庫嗎?5.hbase宕機如何處理?6.hive實現統計的查詢語句是什麼?7.生產環境中為什麼建議使用外部表?8.hadoop mapreduce建立類datawri...

面試題目整理(MySQL系列 索引)

最近又開始面試了,整理一些面試的高頻考點吧。有幸參與一次社招面試,看的還是底層知識 1 資料庫儲存引擎分類 1 儲存引擎主要有 1.myisam 不支援事務 2.innodb 支援事務 行級鎖定和外來鍵 3.memory,4.archive,5.federated 預設為 innodb 引擎。inn...

面試題整理

2014.3.19日整理 1.建立一張表hack 裡面就乙個欄位num,然後用sql語句從1開始插入到100,怎麼寫?oracle 答 1.create tablehack num number 建表語句 2.begin for i in1.100loop insert intohack num v...