数据结构(Java面试题)

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:沿着树的宽度进行遍历,可以用队列实现

发布了51 篇原创文章 · 获赞 2 · 访问量 1853

猜你喜欢

转载自blog.csdn.net/qq_42972645/article/details/105658073