华为面试基础测试题(含详细接地气答案).docxVIP

  • 0
  • 0
  • 约3.46千字
  • 约 5页
  • 2026-07-08 发布于河北
  • 举报

华为面试基础测试题(含详细接地气答案).docx

华为面试基础测试题(含详细接地气答案)

一、C/C++编程基础(华为必考核心)

1、全局变量和局部变量的区别,内存存储位置有什么不同?

详细答案:首先作用域不一样,全局变量整个项目所有文件都能调用,局部变量只在当前函数、代码块里生效,出了范围就失效。

内存层面区别很明确:全局变量、静态全局变量存在静态数据区,程序运行全程占用内存,不会自动释放;普通局部变量存放在栈区,函数执行结束后系统自动回收内存,效率高但空间有限。

补充:未初始化的全局变量系统会默认赋值0,局部变量不初始化的话是随机垃圾值,直接使用会出bug。

2、局部变量能不能和全局变量重名?怎么优先调用?

详细答案:可以重名,语法完全允许。

遵循就近原则:当前代码块内优先使用局部变量,如果想强制调用全局变量,需要用「::」作用域符(C++),C语言没有这个符号,只能通过修改变量名规避冲突。

实际开发中我会尽量避免重名,可读性太差,容易隐藏逻辑bug,不符合华为的代码规范。

3、栈溢出一般是什么原因造成的?工作中怎么规避?

详细答案:栈的内存空间是系统固定分配的,很小,溢出核心就是栈内存被撑满了。

常见三个原因:第一,函数递归死循环,无限压栈;第二,函数内定义超大数组、结构体等局部变量;第三,多层函数嵌套调用过深。

规避方式:递归一定要设置终止条件;大容量数据放堆区(malloc/new动态申请);控制函数嵌套层数,复杂逻

文档评论(0)

1亿VIP精品文档

相关文档