- 0
- 0
- 约2.88千字
- 约 6页
- 2026-07-10 发布于河北
- 举报
基础数据结构高频面试题及详细答案(真实面试版)
一、数组
1.数组的特点和优缺点是什么?
答案:
特点:数组是连续的内存空间,存储相同类型的数据,下标从0开始,长度固定(静态数组)。
优点:随机访问速度极快,通过下标可以直接定位元素,时间复杂度O(1)。
缺点:
插入、删除元素效率低,需要移动大量元素,时间复杂度O(n);
静态数组长度固定,无法动态扩容,容易出现内存浪费或溢出;
只能存储单一类型数据,灵活性较差。
2.为什么数组查询快、增删慢?
答案:
查询快的核心是内存连续,系统可以根据数组起始地址+下标偏移量,直接计算出元素内存地址,一步定位,不需要遍历。
增删慢是因为数组空间连续,中间插入或删除元素后,后面所有的元素都必须向前或向后移位,数据量越大,耗时越多,所以时间复杂度是O(n)。
3.动态数组(ArrayList)的扩容原理?
答案:
以JavaArrayList为例,底层是固定长度的数组。当元素个数达到数组容量阈值时,会触发自动扩容:
创建一个新的、容量更大的数组(默认扩容1.5倍);
把原数组所有元素复制到新数组;
丢弃原数组,将引用指向新数组。
扩容和数组拷贝比较耗性能,所以开发中如果提前知道数据量,一般会手动指定初始容量,减少扩容次数。
二、链表
1.链表的特点、优缺点,和数组的核心区别?
答案:
链表是不连续的内存结构,每个节点包含数据和下一个节
原创力文档

文档评论(0)