基础数据结构高频面试题及详细答案(真实面试版).docxVIP

  • 0
  • 0
  • 约2.88千字
  • 约 6页
  • 2026-07-10 发布于河北
  • 举报

基础数据结构高频面试题及详细答案(真实面试版).docx

基础数据结构高频面试题及详细答案(真实面试版)

一、数组

1.数组的特点和优缺点是什么?

答案:

特点:数组是连续的内存空间,存储相同类型的数据,下标从0开始,长度固定(静态数组)。

优点:随机访问速度极快,通过下标可以直接定位元素,时间复杂度O(1)。

缺点:

插入、删除元素效率低,需要移动大量元素,时间复杂度O(n);

静态数组长度固定,无法动态扩容,容易出现内存浪费或溢出;

只能存储单一类型数据,灵活性较差。

2.为什么数组查询快、增删慢?

答案:

查询快的核心是内存连续,系统可以根据数组起始地址+下标偏移量,直接计算出元素内存地址,一步定位,不需要遍历。

增删慢是因为数组空间连续,中间插入或删除元素后,后面所有的元素都必须向前或向后移位,数据量越大,耗时越多,所以时间复杂度是O(n)。

3.动态数组(ArrayList)的扩容原理?

答案:

以JavaArrayList为例,底层是固定长度的数组。当元素个数达到数组容量阈值时,会触发自动扩容:

创建一个新的、容量更大的数组(默认扩容1.5倍);

把原数组所有元素复制到新数组;

丢弃原数组,将引用指向新数组。

扩容和数组拷贝比较耗性能,所以开发中如果提前知道数据量,一般会手动指定初始容量,减少扩容次数。

二、链表

1.链表的特点、优缺点,和数组的核心区别?

答案:

链表是不连续的内存结构,每个节点包含数据和下一个节

文档评论(0)

1亿VIP精品文档

相关文档