数据结构面试习题总结

数据结构面试习题总结

  • 有哪些数据结构?5
  • 大量数据,随机取,随机存用什么数据结构
  • 树的搜索 算法 有哪些?每一种有什么用途?
    • 树有哪些树 以及特征
  • 树有哪些用途
    • 树的层次遍历和深度遍历怎么用?
  • 链表有哪几种 2
  • 链表和数组的区别 3
    • 怎么给 链表 在某一位置插入一个元素
  • 链表取元素的时间复杂度、 如何优化这个时间复杂度 2
  • 链表的 结构、特点、怎么快速遍历
  • 怎么给链表在某一位置插入一个元素
  • 哈希 结构 底层rehash操作 删除先访问旧表还是新表 增加结点先访问旧表还是新表
  • 堆和栈的区别 2
  • 队列和栈的区别 2
  • 什么是二叉树
  • 什么是二叉搜索树
  • 二叉树的遍历都有哪些
      • 求一个 二叉树 任意两节点的距离,时间复杂度是多少
  • 二叉树 层序遍历
  • 查找有哪些
    • 一个比较有序的数组,用什么排序算法比较好
    • 手撕 选择 排序
    • 手撕快速 排序
  • 排序 有哪几种(6)
    • 解释一种排序算法
    • 哪些是稳定的
  • 各种排序算法的特点
    • 选择 排序 的时间复杂度(2)
    • 排序 算法 复杂度 以及什么时候最优 什么时候最差
  • 堆 和 排序 解释一下
  • 二分搜索(2)
  • 递归(2)
    • 递归怎么优化(2)
      • 动态规划(DP)(2)
      • 时间复杂度 空间复杂度(2)
  • 事件分发以及画图
  • 自定义UI
  • 图片有那些类型,区别是什么?图片第三方库用过那些?
  • 红黑树讲一下,五个特性,插入删除操作,时间复杂度?
  • AVL树和 红黑树 的区别在哪?
  • 快排的时间复杂度,最坏,平均,最好情况呢,
  • 快速排序是稳定的吗?或者解释一下什么叫稳定?
  • 堆排序的时间复杂度呢,建堆的复杂度是多少
  • .树的搜索 算法 有哪些?每一种有什么用途?

有哪些数据结构?5

大量数据,随机取,随机存用什么数据结构

树的搜索 算法 有哪些?每一种有什么用途?

树有哪些树 以及特征

树有哪些用途

树的层次遍历和深度遍历怎么用?

链表有哪几种 2

链表和数组的区别 3

不同:
1.链表是链式的存储结构;数组是顺序的存储结构。
2.链表通过指针来连接元素与元素,数组则是把所有元素按次序依次存储。
3.链表的插入删除元素相对数组较为简单,不需要移动元素,且较为容易实现长度扩充,但是寻找某个元素较为困难;
4.数组寻找某个元素较为简单,但插入与删除比较复杂,由于最大长度需要再编程一开始时指定,故当达到最大长度时,扩充长度不如链表方便。
5.数组从栈中分配空间, 对于程序员方便快速,但自由度小。
链表从堆中分配空间, 自由度大但申请管理比较麻烦. 
相同:
1.两种结构均可实现数据的顺序存储,构造出来的模型呈线性结构。
22.

怎么给 链表 在某一位置插入一个元素

链表取元素的时间复杂度、 如何优化这个时间复杂度 2

链表的 结构、特点、怎么快速遍历

怎么给链表在某一位置插入一个元素

哈希 结构 底层rehash操作 删除先访问旧表还是新表 增加结点先访问旧表还是新表

堆和栈的区别 2

1、堆空间的内存是动态分配的,一般存放对象,并且需要手动释放内存。当然,iOS引入了ARC(自动引用计数管理技术)之后,程序员就不需要用代码管理对象的内存了,之前MRC(手动管理内存)的时候,程序员需要手动release对象。另外,ARC只是一种中间层的技术,虽然在ARC模式下,程序员不需要像之前那么麻烦管理内存,但是需要遵循ARC技术的规范操作,比如使用属性限定符weak、strong、assigen等。因此,如果程序员没有按ARC的规则并合理的使用这些属性限定符的话,同样是会造成内存泄漏的。
2、栈空间的内存是由系统自动分配,一般存放局部变量,比如对象的地址等值,不需要程序员对这块内存进行管理,比如,函数中的局部变量的作用范围(生命周期)就是在调完这个函数之后就结束了。这些在系统层面都已经限定住了,程序员只需要在这种约束下进行程序编程就好,根本就没有把这块内存的管理权给到程序员,肯定也就不存在让程序员管理一说。
从申请的大小方面讲:
栈空间比较小;
堆空间比较大。
从数据存储方面来说:
栈空间中一般存储基本数据类型,对象的地址;
堆空间一般存放对象本身,block的copy等

队列和栈的区别 2

什么是二叉树

什么是二叉搜索树

二叉树的遍历都有哪些

求一个 二叉树 任意两节点的距离,时间复杂度是多少

二叉树 层序遍历

查找有哪些

一个比较有序的数组,用什么排序算法比较好

手撕 选择 排序

手撕快速 排序

排序 有哪几种(6)

解释一种排序算法

哪些是稳定的

各种排序算法的特点

选择 排序 的时间复杂度(2)

排序 算法 复杂度 以及什么时候最优 什么时候最差

堆 和 排序 解释一下

二分搜索(2)

递归(2)

递归怎么优化(2)

动态规划(DP)(2)

时间复杂度 空间复杂度(2)

  • 1到n的数字,组成二叉搜索树的个数,递归,如何优化,记忆化,dp时间复杂度,空间复杂度
  • 算法题,二叉树 搜索中,两个节点互换了位置,找到这两个节点;用rand3实现rand7
  • 算法题 ,整数数组无序,是否存在下标i 排序 的思路,

事件分发以及画图

自定义UI

图片有那些类型,区别是什么?图片第三方库用过那些?

红黑树讲一下,五个特性,插入删除操作,时间复杂度?

AVL树和 红黑树 的区别在哪?

快排的时间复杂度,最坏,平均,最好情况呢,

快速排序是稳定的吗?或者解释一下什么叫稳定?

堆排序的时间复杂度呢,建堆的复杂度是多少

.树的搜索 算法 有哪些?每一种有什么用途?

  1. zset采用什么数据结构
  2. 算法:十进制转化为二进制
  3. 逻辑:100个黑白球,最后剩哪种
    • 算法 :.第K大的数
  4. 算法: 队列调度问题。优化这个队列调度,把这个队列调度的任务封装成类。
  5. 算法:反转链表
  6. 算法 : 数组 从左到右递增 从上到下递增 找一个数是否存在
  7. 算法 合并两个有序 链表 最小子数组的和
  8. 算法:合并两个有序列表
  9. 算法:数组 排序
  10. 算法:C++实现栈
  11. 代码题:一个文件里有五亿个ip地址,用tab分隔,不同的ip有一亿个,统计登录次数,从大到小排列,输出到另一个文件,内存限制100MB
  12. 代码:(重点在考虑异常)无序数组,找最大值,下标 合并两个数组
  13. 手撕代码:列表分子,k1 对应的value相同的放在同一列表里面
    输入:[{‘k1’:1, ‘k2’:1}, {'k1 ‘:2, ‘k2’:2}, {‘k1’:1, ‘k2’:2}]
    输出:[{‘k1’:1, ‘k2’:1}, {‘k1’, 1, ‘k2’: 2}], [{k1’: 2,‘k2’: 2}]
  14. 手撕:括号匹配;对自己的代码写测试用例
  15. 算法 :(思路)怎么判断 链表 有环
  16. 算法:实现字符串的替换功能
  17. 算法:整数反转
  18. 算法题:单链表的反转
  19. 算法:1~n 自然数组排序,不能直接 arr[i] = i + 1,要求时间 O(n)O(n)
  20. 算法:连续子数组的最大和
  21. 算法:最长无重复子串
  22. .用Array实现FIFO(不限长度),实现push,pop,length要求只能用原生数组,pop,length要求O1,push最好保证O1
  23. 用已有数据结构完成以下操作:insert,delete random(随即返回一个数,要求概率相等) delete和random要求O1,insert最好O1(insert完全不知道咋保证O1),在面试官引导下用set+map+array做完,但是不知道咋保证insert O
  24. 寻找字符串中出现最多的字符
  25. 连续型和非连续型,使用场景
  26. 二维数组查找
  27. 最长重复字串
  28. 两个栈实现队列
  29. 排序 方法 快排思想 2
  30. .为什么索引用B+树
  31. 数据结构算法
  32. Hashmap哈希-处理哈希冲突的分析方法
  33. 堆排序,大堆,小堆,堆排序的原理

你可能感兴趣的:(数据结构,数据结构,面试,算法)