阿里巴巴C语言真实面试题(含口语化详细答案+面试官追问).docxVIP

  • 2
  • 0
  • 约4.6千字
  • 约 8页
  • 2026-07-24 发布于河北
  • 举报

阿里巴巴C语言真实面试题(含口语化详细答案+面试官追问).docx

阿里巴巴C语言真实面试题(含口语化详细答案+面试官追问)

适用岗位:阿里后端开发、嵌入式开发、基础架构岗C语言面试(一面手撕+笔试原题)

一、C语言基础概念(一面必问,5题)

1.说一说栈内存和堆内存的区别,平时开发怎么选型?

参考答案(口语版):

首先两者最核心的区别是内存管理方式不一样。栈是系统自动管理的,函数调用的时候自动分配内存,函数执行结束立马自动释放,不需要手动操作;堆需要程序员自己调用malloc/free去申请和释放,系统不会自动回收。

其次空间大小不同,栈空间很小,一般就几MB,递归太深、局部变量太大就会栈溢出;堆空间很大,受限于系统虚拟内存,几乎不用担心空间不够。

另外生命周期也不一样,栈变量随函数销毁,堆变量只要不free,程序运行期间一直存在。

开发选型:小变量、临时变量、函数内部局部数据直接用栈;不确定数据大小、需要跨函数使用、大数据缓冲区,一律用堆。

面试官追问:递归为什么会栈溢出?malloc失败怎么处理?

补充回答:递归每调用一次函数,栈就新增一帧,深度过大栈空间耗尽就溢出;malloc失败会返回NULL,代码里必须做非空判断,否则空指针直接崩溃。

2.static关键字三个用法分别是什么?

参考答案(口语版):

修饰局部变量:变量从栈搬到静态全局区,只初始化一次,函数多次调用会保留上一次的值,生命周期贯穿整个程序,但是作用域还是仅限当前函数内

文档评论(0)

1亿VIP精品文档

相关文档