华为CC++笔试题目详解:编程与概念测试

需积分: 15 1 下载量 58 浏览量 更新于2024-11-23 收藏 33KB DOC 举报
"华为的CC++笔试题目涵盖了C++语言的基础知识、编程概念以及计算机网络原理,适合准备面试或自我提升的IT专业人士。题目包括了static关键字的用途、引用与指针的区别、实时系统特性、内存管理、数据结构、算法效率、网络协议等多个方面。" 1. static的用途: - 在函数内部,static变量可以在函数多次调用之间保持其值,而不是每次调用都重新初始化。 - 在模块(文件)级别,static变量限制了其作用域,仅能被同一模块内的函数访问,提供了一种隐藏变量的方式。 - 对于函数,static修饰符可以使函数成为私有函数,只能在声明它的模块内调用。 2. 引用与指针的区别: - 引用在声明时必须初始化,并且一旦初始化后就不可更改,它总是引用同一个对象。 - 指针可以不初始化,也可以改变所指向的对象。 - 没有空引用的概念,但指针可以是NULL,表示不指向任何对象。 3. 实时系统的基本特性: - 实时性:系统必须在规定的时间内完成任务,否则可能导致系统失败。 - 可靠性:系统需要保证高可靠性,确保任务的稳定执行。 4. 全局变量和局部变量的内存区别: - 全局变量存储在静态存储区,生命周期贯穿整个程序运行期间。 - 局部变量存储在栈区,随着函数调用结束而自动释放。 5. 平衡二叉树的定义: - 平衡二叉树是一种特殊的二叉树,每个节点的两个子树的高度差不超过1,且左右子树都是平衡二叉树。 6. 堆栈溢出的原因: - 堆栈溢出通常由于递归过深、局部变量过大或者无限分配栈空间导致。 7. 不能声明为虚函数的函数: - 构造函数不能声明为虚函数,因为虚函数的作用是在对象实例化后调用,而构造函数在对象创建时执行。 8. 冒泡排序的时间复杂度: - 最坏情况下,冒泡排序的时间复杂度为O(n^2)。 9. float x与零值比较的if语句: - if (std::abs(x) > 0.000001) 可以用来判断x是否接近零,考虑到浮点数的精度问题。 10. Internet使用的网络协议及层次结构: - TCP/IP协议是Internet的基础,层次结构包括应用层、传输层、网络层、数据链路层和物理层。 11. IP地址与物理地址转换的协议: - ARP(地址解析协议)用于将IP地址转换为硬件地址,如MAC地址。 12. IP地址的组成: - IP地址由网络号和主机号两部分组成,通过子网掩码来确定网络位和主机位。 13. 循环计数程序设计: - 该问题可以通过循环链表实现,利用取余运算确定何时输出M值。 14. switch()不能接受的参数类型: - switch语句的表达式不能是浮点数(实型)。 1. 表达式分析: - A) a+=(a++):a的值先自增1,然后a加上自增后的a,结果a=8。 - B) a+=(++a):a先自增1,然后a加上自增后的a,结果a=9。 - C) (a++)+=a:左侧不是一个有效的左值,因此这个表达式是非法的。 - D) (++a)+=(a++):a先自增1,然后a再次自增1,最后a加上自增后的a,结果a=10。但由于C表达式错误,所以这个部分不完整。