文章目录
- 一、数据结构和算法
- 1、什么是数组?
- 2、Js中的数组是真正的“数组“么?
- 3、什么是队列?
- 4、 什么是链表?与数组的区别是?
- 5、什么是栈?
- 6、什么是哈希及哈希冲突?
- 7、二叉树有几种遍历方式?
- 8、简述冒泡排序?
一、数据结构和算法
1、什么是数组?
数组是由相同类型的元素(element)的集合所组成的数据结构,分配一块连续内存来存储。
特点:相同类型,连续内存,固定长度。
2、Js中的数组是真正的“数组“么?
不是真正的数组,因为js数组可以存放不同类型的值。
3、什么是队列?
一种遵循先进先出 (FIFO / First In First Out) 原则的一组有序的项;队列在尾部添加新元素,并从头部移除元素。最新添加的元素必须排在队列的末尾
4、 什么是链表?与数组的区别是?
存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的;每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(指针/链接)组成。
数组:连续且固定长度空间,不能动态扩展,查找高效,添加修改元素低效。
链表:不需要连续内存空间,大小可动态变化,查找低效,添加修改高效。
5、什么是栈?
一种遵从先进后出 (LIFO) 原则的有序集合;新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。
栈的特点:后进先出(last-in,first-out)
6、什么是哈希及哈希冲突?
Hash也称散列、哈希,对应的英文都是Hash。基本原理就是把任意长度的输入,通过Hash算法变成固定长度的输出。
哈希冲突:不同的内容的hash值相同,即哈希冲突。
7、二叉树有几种遍历方式?
三种:先序遍历,中序遍历,后序遍历
8、简述冒泡排序?
基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排