Java架构技术进阶Java

程序员小伙这样跟阿里面试官解释B+树,成功收下35k的offer

2020-04-24  本文已影响0人  Java余笙

前言:

上周我通过阿里一面,岗位是客户端开发工程师(是的,还是java岗!)。面试过程中面试官问了B+树,回答时面试官一直点头(应该回答得还不错所以过了),今天详细讲一讲B+树。

平衡二叉树

它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

B树(B-树)

m阶B树定义

m阶B树是一棵平衡的m路搜索树,或者是空树,或者是满足以下条件:

ceil(m/2) 即是 (m+1)/2,向上取整

非叶子结点

时间复杂度:O(nlogn)。

优点

B树相对于B+树的优点是,如果经常访问的数据离根节点很近,而B树的非叶子节点存储关键字数据的地址,所以这种数据检索的时候会要比B+树快。

B+树

m阶B+树定义

B+树是B树的一种变形形式,m阶B+树满足以下条件:

(1) 每个结点至多有m个孩子。

(2) 除根节点和叶结点外,每个结点至少有(m+1)/2个孩子。

(3) 如果根节点不为空,根结点至少有两个孩子。

(4) 所有叶子结点增加一个链指针,所有关键字都在叶子结点出现。

(5) 除了叶节点,结点的孩子数目等于关键字数目。**** 注意,B+树中非叶子结点存储的不是关键字数据的地址,而是指向叶子结点中关键字的索引。(所以任何关键字的查找必须走一条从根结点到叶子结点的路)

非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树(B-树是开区间)

优点

适应场景:

通常用于数据库和操作系统的文件系统中。

结点的分裂:

优点

能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度

总结

咱们玩归玩,闹归闹,别拿面试开玩笑。

B+树在面试中几乎被问烂了。除了本文提到的平衡二叉树、B树和B+树外,B+树的应用场景还有很高的话题性,比如MySQL和一些文件系统中使用的是B+树结构。本文篇幅有限,希望大家面试前要把知识点记全记牢。

分享

本文主要讲解的在面试过程中被问到的B+树问题该如何回答,面试过程中会有各种各样的灵魂拷问等着你,因此希望大家不要忽视任何一个知识点,哪怕是你认为最基础的内容或者你认为很熟悉的内容,因为这只是你认为而已。希望大家还是能够认真的学习,不要停下学习的脚步!

因此,为了督促大家能好好的学习并且能够高效的学习,我为大家整理出一份高频面试宝典以及Java核心知识点可供大家做面试前的复习,内容很全面,对大家会很有帮助。

需要的小伙伴关注+点赞+转发三连,私信【面试】或者点击右方链接:https://shimo.im/docs/QVy8HrQgPYkx9Ddg/即可免费获取。

核心知识整理

同时,有的小伙伴有更渴望的学习欲望,希望能成为架构师,拿高薪,这里我也为大家整理了一份阿里大牛独创的“互联网年薪50W+资深架构师学习路线”,里面的知识集广度+深度+细节于一身,希望学习这份大纲的小伙伴可以私信【架构】。

上一篇 下一篇

猜你喜欢

热点阅读