最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

鎖屏面試題百日百刷-java大廠八股文(1)

2021-07-25 23:48 作者:zjlala96  | 我要投稿

為了更好的準(zhǔn)備面試,刷題方式正式改版,每日從各處收集的面經(jīng)中選擇幾道經(jīng)典面試題分享并給出答案供參考,答案中會做與題目相關(guān)的擴(kuò)展,并且可能會拋出一定問題供思考。這些題目我會標(biāo)注具體的公司、招聘類型(校招、社招、實(shí)習(xí))以及面試階段。這些面試題會收錄到鎖屏面試題app和小程序中并整理歸類好。其他面試題也同樣在持續(xù)更新中,多謝使用和支持。下面是今日面試題:


(一)b樹:======================================================

b樹的定義

b樹就是b-樹(b-tree),b樹是一種平衡多路查找樹,它在文件系統(tǒng)中很有用。

具有以下規(guī)則的樹是b樹(M階樹):

(1)首先強(qiáng)調(diào)的一點(diǎn)是b樹的階是由人為定義的,只有當(dāng)對一個(gè)b樹沒有明確指定多少階的時(shí)候,直接問你這個(gè)b樹的階數(shù),才可以通過一個(gè)b樹的所有節(jié)點(diǎn)的最多分支數(shù)來說這個(gè)b樹是多少階的。如下圖中,若沒有說明是幾階,我們可以看到w所在的節(jié)點(diǎn)的分支數(shù)最多,為5,則可以說這是個(gè)5階b樹。

(2)排序方式:所有節(jié)點(diǎn)關(guān)鍵字是按遞增次序排列,并遵循左小右大原則;

(3)子節(jié)點(diǎn)數(shù):非葉節(jié)點(diǎn)的子節(jié)點(diǎn)數(shù)>1,且<=M ,且M>=2,空樹除外;

(4)關(guān)鍵字?jǐn)?shù):枝節(jié)點(diǎn)的關(guān)鍵字?jǐn)?shù)量大于等于ceil(m/2)-1個(gè)且小于等于M-1個(gè)(注:ceil()是個(gè)朝正無窮方向取整的函數(shù) 如ceil(1.1)結(jié)果為2),這個(gè)是b樹插入和刪除操作時(shí)關(guān)鍵依據(jù)。

(5)所有葉子節(jié)點(diǎn)均在同一層、葉子節(jié)點(diǎn)除了包含了關(guān)鍵字和關(guān)鍵字記錄的指針外也有指向其子節(jié)點(diǎn)的指針只不過其指針地址都為null。

b樹


b樹的查詢:

比如查找F:

(1)?從根節(jié)點(diǎn)開始,F(xiàn)<M,所以從M的左邊子節(jié)點(diǎn)開始找

(2)?得到關(guān)鍵字D和G,D<F<G,所以從D、G中間節(jié)點(diǎn)找

(3)?最終找到F

b樹的其他操作由于篇幅的問題,以及與題目關(guān)系不大,不做表述,感興趣的可以到網(wǎng)上查找資料了解下。

(二)b+樹:======================================================

b+樹的定義:

b+樹與b基本相同,主要有以下區(qū)別(樹的階數(shù)為M):

(1)?b+樹中具有n個(gè)關(guān)鍵字的的節(jié)點(diǎn)含有n個(gè)分支,而b樹中具有n個(gè)關(guān)鍵字的的節(jié)點(diǎn)含有n+1個(gè)分支

(2)?B+樹中非根節(jié)點(diǎn)的關(guān)鍵字?jǐn)?shù)n取值范圍為ceil(M/2)≤n≤M,根節(jié)點(diǎn)的關(guān)鍵字?jǐn)?shù)n取值范圍為2≤n≤M,而b樹中這兩個(gè)取值范圍分別為ceil(M/2)-1≤n≤M-1和2-1≤n≤M-1

(3)?b+樹中非葉子節(jié)點(diǎn)中僅僅起到索引作用,即節(jié)點(diǎn)中索引只包含對應(yīng)子樹最大關(guān)鍵字和指向子樹的指針,不包含關(guān)鍵字對應(yīng)記錄的存儲地址。而b樹中每個(gè)關(guān)鍵字包含對應(yīng)的存儲地址。

(4)?b+樹中葉子節(jié)點(diǎn)包含信息,葉子節(jié)點(diǎn)包含所有關(guān)鍵字,關(guān)鍵字包含對應(yīng)的存儲地址信息。

(5)?b+樹中有一個(gè)指針指向葉子節(jié)點(diǎn)中最小的關(guān)鍵字所在的節(jié)點(diǎn)(如下圖中P),所有的葉子節(jié)點(diǎn)鏈接成一個(gè)線性鏈表,二b樹沒有

?

b+樹


從這些區(qū)別中可引申出一個(gè)問題,mysql中為什么使用b+樹,而不使用b樹:

1、B+樹的層級更少:相較于B樹B+每個(gè)非葉子節(jié)點(diǎn)存儲的關(guān)鍵字?jǐn)?shù)更多,樹的層級更少所以查詢數(shù)據(jù)更快;

2、B+樹查詢速度更穩(wěn)定:B+所有關(guān)鍵字?jǐn)?shù)據(jù)地址都存在葉子節(jié)點(diǎn)上,所以每次查找的次數(shù)都相同所以查詢速度要比B樹更穩(wěn)定;

3、B+樹天然具備排序功能:B+樹所有的葉子節(jié)點(diǎn)數(shù)據(jù)構(gòu)成了一個(gè)有序鏈表,在查詢大小區(qū)間的數(shù)據(jù)時(shí)候更方便,數(shù)據(jù)緊密性很高,緩存的命中率也會比B樹高。

4、B+樹全節(jié)點(diǎn)遍歷更快(全表掃描):B+樹遍歷整棵樹只需要遍歷所有的葉子節(jié)點(diǎn)即可,,而不需要像B樹一樣需要對每一層進(jìn)行遍歷,這有利于數(shù)據(jù)庫做全表掃描。

更多面試題或?qū)W習(xí)資源可查看我主頁或評論獲取


鎖屏面試題百日百刷-java大廠八股文(1)的評論 (共 條)

分享到微博請遵守國家法律
丹东市| 汉阴县| 英山县| 河源市| 龙陵县| 寿阳县| 嘉峪关市| 常州市| 兴业县| 麟游县| 东乌珠穆沁旗| 长宁县| 金沙县| 会东县| 合江县| 红河县| 名山县| 资中县| 那坡县| 榕江县| 彭州市| 西峡县| 龙泉市| 肇州县| 杭锦后旗| 册亨县| 宁远县| 沾化县| 兰西县| 阜康市| 会理县| 普安县| 类乌齐县| 思茅市| 昭平县| 偃师市| 南开区| 乾安县| 桐城市| 哈密市| 滕州市|