堆栈高频面试题及详细答案(真实面试版).docxVIP

  • 0
  • 0
  • 约2.98千字
  • 约 5页
  • 2026-09-02 发布于河北
  • 举报

堆栈高频面试题及详细答案(真实面试版).docx

堆栈高频面试题及详细答案(真实面试版)

一、基础概念面试题(入门必问)

1.简单说下什么是栈?什么是堆?核心区别是什么?

参考答案:

栈和堆是程序运行时两种最核心的内存空间,二者的存储特性、管理方式完全不同。

栈是一块连续、固定大小的内存空间,由系统自动分配、自动释放。主要用来存放局部变量、函数参数、函数返回地址、基本数据类型的值。它的存取规则是后进先出,就像一个弹夹,最后压进去的元素最先取出来。函数调用时会开辟栈帧,函数执行结束后,对应的栈帧会立刻被系统回收,速度非常快。

堆是一块不连续、动态可变的内存空间,需要开发者手动申请、手动释放(部分高级语言有垃圾回收机制)。主要用来存放对象、数组、引用类型的数据。堆内存没有固定的存取顺序,空间灵活、可动态扩容,但分配和回收速度比栈慢很多。

核心区别总结:

管理方式:栈由系统自动管理,堆由开发者/垃圾回收机制管理

存取速度:栈速度快,堆速度慢

空间特性:栈空间小、连续固定;堆空间大、离散动态

存储内容:栈存基本类型、局部变量;堆存引用对象、数组

生命周期:栈随函数调用创建、执行结束销毁;堆随对象创建,无引用后才会回收

2.栈的后进先出特性怎么理解?日常场景举例

参考答案:

后进先出就是最后存入栈中的数据,会第一个被取出、删除。栈只有一个出入口,所有操作都在栈顶完成,栈底是固定封闭的。

生活中最典型的例子就是叠盘子:我们放盘子是从上往

文档评论(0)

1亿VIP精品文档

相关文档