- 2
- 0
- 约4.6千字
- 约 8页
- 2026-07-24 发布于河北
- 举报
阿里巴巴C语言真实面试题(含口语化详细答案+面试官追问)
适用岗位:阿里后端开发、嵌入式开发、基础架构岗C语言面试(一面手撕+笔试原题)
一、C语言基础概念(一面必问,5题)
1.说一说栈内存和堆内存的区别,平时开发怎么选型?
参考答案(口语版):
首先两者最核心的区别是内存管理方式不一样。栈是系统自动管理的,函数调用的时候自动分配内存,函数执行结束立马自动释放,不需要手动操作;堆需要程序员自己调用malloc/free去申请和释放,系统不会自动回收。
其次空间大小不同,栈空间很小,一般就几MB,递归太深、局部变量太大就会栈溢出;堆空间很大,受限于系统虚拟内存,几乎不用担心空间不够。
另外生命周期也不一样,栈变量随函数销毁,堆变量只要不free,程序运行期间一直存在。
开发选型:小变量、临时变量、函数内部局部数据直接用栈;不确定数据大小、需要跨函数使用、大数据缓冲区,一律用堆。
面试官追问:递归为什么会栈溢出?malloc失败怎么处理?
补充回答:递归每调用一次函数,栈就新增一帧,深度过大栈空间耗尽就溢出;malloc失败会返回NULL,代码里必须做非空判断,否则空指针直接崩溃。
2.static关键字三个用法分别是什么?
参考答案(口语版):
修饰局部变量:变量从栈搬到静态全局区,只初始化一次,函数多次调用会保留上一次的值,生命周期贯穿整个程序,但是作用域还是仅限当前函数内
您可能关注的文档
最近下载
- 2025年适航法规基础培训考试题及答案.doc
- 宣贯培训(2026年)《GAT 16.7-2012道路交通管理信息代码 第7部分:机动车号牌种类代码》.pptx VIP
- 深度解析(2026)《GAT 16.7-2012道路交通管理信息代码 第7部分:机动车号牌种类代码》.pptx VIP
- 高频精选:兵器工业笔试题库及答案.doc VIP
- TP-Link普联【配置实例】TP-LINK ER T系列企业级路由器产品主要功能配置实例 1.0.1.pdf VIP
- 诺瓦科技MicroLED视频拼接器视频切换台N6用户使用手册完整版.docx VIP
- 农副食品中小企业集聚区基础设施建设项目--交通工程施工图设计说明.docx VIP
- 现代大学英语_第二版_精读5_教师用书教案.docx VIP
- 文化旅游服务基础设施建设项目(一期)-游客服务中心交通工程设计说明.doc VIP
- 医疗卫生系统招聘《医学基础知识》真题汇编(含答案)(共4套).pdf VIP
原创力文档

文档评论(0)