1、八大排序算法有哪些?
2、查询算法有哪些?
3、zset的底层实现知道吗?
4、对B树,avl树和红黑树了解吗?知道有性能接近红黑树的数据结构吗?
5、Java里常用的数据结构有哪些
数组、链表、栈、队列、堆、树
6、数组和链表有什么区别?
数组数据在内存空间中存放是顺序的,链表是无序的,数组不能修改大小,链表可以,
数组通过索引查询快,但是增删慢,需要移动内存地址,链表只需要改变指针就好了,所以链表
增删快,就是查询慢,需要遍历。
7、快速排序原理、时间空间复杂度
(1)取一个基准数
(2)小的放左边,大的放右边
(3)两边各取中间值
(4)重复以上步骤
(5)时间复杂度O(nlogn),空间复杂度O(logn)
8、堆排序原理
(1)堆是一种特殊的完全二叉树,完全二叉树是树的一种,除了最底层,每一层都是满的
(2)大顶堆:所有的子节点都比父节点小,小顶堆:所有的子节点都比父节点大
(3)从小到大排序建立大顶堆,从大到小排序建立小顶堆
(4)逻辑二叉树,不需要真的去建立二叉树,底层还是数组
(5)时间复杂度O(nlog2n),空间复杂度O(1)
9、以二叉树为例子,如何实现深搜(栈)和广搜(哈希表)
深度优先搜索DFS:前序遍历、中序遍历、后序遍历,可以使用栈实现
广度优先搜索BFS:沿着树的宽度进行遍历,可以用队列实现