【华为C++笔试题】是针对想要进入华为从事软件开发的求职者准备的,这份试题主要涵盖C++语言的基础知识,包括语法、数据结构、内存管理、程序设计等多个方面。以下将对其中的关键知识点进行详细解释: 1. `static` 关键字: - 在函数内部,`static`修饰的变量在函数每次调用时保持其上次调用后的值,不会重新初始化。 - 在函数外部,`static`修饰的变量是作用域限制在当前源文件内的全局变量,只能被本文件内的函数访问。 - 在函数内部,`static`修饰的函数称为静态函数,只能在定义它的源文件内被调用,不对外公开。 2. 引用与指针的区别: - 引用在声明时必须初始化,而指针可以在任何时候被赋值。 - 引用一旦初始化后就不能改变引用的对象,而指针可以改变所指向的内存地址。 - 不存在空引用,但指针可以是NULL,表示未指向任何对象。 3. 实时系统的基本特性: - 实时性:系统必须在规定的时间内完成任务。 - 可靠性:系统能够准确无误地执行任务,具有高容错能力。 4. 全局变量与局部变量在内存中的区别: - 全局变量存储在静态存储区,生命周期始于程序启动,终于程序结束。 - 局部变量存储在栈区,当所在函数调用结束,它们的内存空间会被自动释放。 5. 平衡二叉树: - 平衡二叉树是一种特殊的二叉树,每个节点的左子树和右子树的高度差不超过1,并且左右子树都是平衡二叉树。 6. 堆栈溢出的原因: - 当程序在栈上分配的内存过多,超过了栈的容量限制,就会导致堆栈溢出,通常是因为递归过深或大量局部变量的使用。 7. 不能声明为虚函数的函数: - 构造函数不能声明为虚函数,因为虚函数机制是在对象实例化后确定的,而构造函数在对象创建时执行。 8. 冒泡排序的时间复杂度: - 冒泡排序的时间复杂度是O(n^2),属于效率较低的排序算法。 9. 浮点数与零值比较的if语句: - 在浮点数比较时,由于精度问题,通常会设置一个很小的阈值,如`if(x > 0.000001 && x < -0.000001)`,以判断x是否接近零。 10. Internet采用的网络协议: - TCP/IP协议,它由应用层、传输层、网络层、数据链路层和物理层构成。 11. 物理地址与IP地址转换协议: - ARP(地址解析协议)用于将IP地址解析为物理(MAC)地址。 12. IP地址的组成: - IP地址由网络号和主机号两部分组成,通过子网掩码来区分这两部分。 13. 顺序循环数数的C程序: - 这个问题涉及到循环和取余操作,可以通过for或while循环,结合取余运算实现。 14. 不能作为switch参数的类型: - switch语句的表达式不能是浮点型,只能是整型、枚举类型或者枚举类型的指针。 15. C++中隐式类型转换的情况: - 类B公有继承类A。 - 类B实现了转化为类A的转换操作符。 - 类A有一个接受类B作为参数的非explicit构造函数。 - 赋值操作符虽然不算严格意义上的隐式类型转换,但可以看作一种形式。 16. sizeof的使用: - sizeof运算符用于计算数据类型的大小,对于数组,sizeof(str)得到的是整个数组的大小,即字符数组的长度;而sizeof(str[0])是单个元素的大小。在函数`UpperCase`中,`sizeof(str)/sizeof(str[0])`用来获取数组的元素个数,这种做法是正确的。 - 对于字符串常量,如`str5`和`str6`,它们都指向同一块内存区域,因此`str5==str6`会返回true。 17. 代码问题分析: - 未给出完整代码,但从`void char2Hex(char c)`函数来看,可能是要将字符转换为对应的十六进制字符。但问题可能在于如何输出十六进制字符,需要确保正确处理字符的ASCII值并将其转换为十六进制格式。
- 粉丝: 115
- 资源: 43
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助