前言
金三银四真的太卷了,最近小编在整理java面试题汇总的时候,无意中寻到了这份阿里面试官手册,这份面试题还真的与以往的java核心面试知识点有大不同,这份面试官手册是完全站在面试官出题的角度分析问题,要问它有多香我们且看目录就完事了,不过小编这里只摘取了一部分面试官会经常问的分享给到大家。
一、分布式
二、中间件
三、大数据与高幵发
四、数据库
五、设计模式与实践
六、数据结构与算法
六、数据结构与算法
1、树
树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。
把它叫做"树"是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点∶(01)每个节点有零个或多个子节点;(02)没有父节点的节点称为根节点;(03)每一个非根节点有且只有一个父节点;(04)除了根节点外,每个子节点可以分为多个不相交的子树。
2、BST树
二叉树的定义
二叉树是每个节点最多有两个子树的树结构。它有五种基本形态︰二叉树可以是空集;根可以有空的左子树或右子树﹔或者左、右子树皆为空。
二叉树的性质
二叉树有以下几个性质:TODO(上标和下标)性质1∶二叉树第i层上的结点数目最多为2**(i-1}**(i≥1)。性质2∶深度为k的二叉树至多有2k-1个结点(e1)。性质3∶包含n个结点的二叉树的高度至少为log2(n+1)。性质4∶在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1。
2.1性质1:
二叉树第层上的结点数目最多为2(l-1(≥1)
**证明︰**下面用"数学归纳法"进行证明。(O1)当i=1时,第i层的节点数目为2i-1]=2(0)=1。因为第1层上只有一个根结点,所以命题成立。(02)假设当i>1,第i层的节点数目为2i-1)。这个是根据(O1推断出来的!下面根据这个假设,推断出"第(i+1)层的节点数目为20)"即可。由于二叉树的每个结点至多有两个孩子,故"第(i+1)层上的结点数目”最多是"第i层的结点数目的2倍"。即,第(+1)层上的结点数目最大值=2x2(i-1=20)。故假设成立,原命题得证!
2.2性质2∶
深度为k的二叉树至多有2k)-1个结点(k≥1)
**证明︰**在具有相同深度的二叉树中,当每一层都含有最大结点数时,其树中结点数最多。利用"性质1"可知,深度为k的二叉树的结点数至多为:20+21+...+2k-1=2k-1故原命题得证!
2.3性质3∶
包含n个结点的二叉树的高度至少为log2 (n+1)
证明∶根据"性质2"可知,高度为h的二叉树最多有2h-1个结点。反之,对于包含n个节点的二叉树的高度至少为log2(n+1)。
2.4性质4∶
在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则nO=n2+1
**证明︰**因为二叉树中所有结点的度数均不大于2,所以结点总数记为n)="0度结点数n0)"+"1度结点数(n1)"+"2度结点数(n2)"。由此,得到等式一。(等式一)n=n0+n1+n2另一方面,0度结点没有孩子,1度结点有一个孩子,2度结点有两个孩子,故二叉树中孩子结点总数是:n1+2n2。此外,只有根不是任何结点的孩子。故二叉树中的结点总数又可表示为等式二。(等式二)n=n1+2n2+1由(等式一)和(等式二)计算得到:nO=n2+1。原命题得证!
3、BST树
定义∶二叉查找树(Binary Search Tree),又被称为二叉搜索树。设x为二叉查找树中的一个结点,x节点包含关键字key,节点x的key值记为keyx。如果y是x的左子树中的一个结点,则keyly]<=keyIx];如果y是x的右子树的一个结点,则keyy >= keyx。<