"这份资料包含了中兴和华为公司的面试题,涵盖了C/C++相关的知识点,包括数据结构、内存管理、程序设计、算法分析以及网络协议等。这些题目旨在考察候选人的编程基础、问题解决能力和对计算机系统理解的深度。"
在这些题目中,我们可以看到以下几个重要的知识点:
1. `static` 关键字的用途:
- 限制变量的作用域:在函数内部使用`static`声明的变量,其生命周期跨越整个程序运行期间,只在第一次执行该函数时初始化,并保持其值直到程序结束。
- 设置变量的存储域:`static`变量存储在静态存储区,而不是在栈上,因此即使函数执行完毕,变量的值也不会丢失。
2. 引用与指针的区别:
- 引用必须在声明时初始化,之后不可更改引用的对象,而指针可以在程序运行时改变所指的地址。
- 引用没有空值状态,一旦初始化后总是引用某个特定对象;而指针可以是NULL,表示不指向任何对象。
3. 实时系统的基本特性:
- 实时性:系统必须在规定的时间内完成任务,否则可能导致系统失败。
- 可靠性:系统需要具备高可靠性,确保在规定时间内完成任务的同时,保证结果的正确性。
4. 全局变量和局部变量的内存分配:
- 全局变量存储在静态数据区,其生命周期从程序开始到结束。
- 局部变量存储在栈中,当所在的作用域退出时,它们会被自动销毁。
5. 平衡二叉树:
- 平衡二叉树是一种特殊的二叉树,它的左右子树高度差不超过1,且左右子树都是平衡二叉树,这保证了搜索效率。
6. 堆栈溢出的原因:
- 堆栈溢出通常是因为分配给栈的内存不足,当函数调用深度过大或者局部变量过多时,可能会超出栈的容量,导致数据溢出。
7. 虚函数:
- 构造函数不能声明为虚函数,因为虚函数是在对象实例化后才发挥作用的,而构造函数在对象创建过程中执行。
8. 冒泡排序的时间复杂度:
- 冒泡排序的时间复杂度是O(n^2),属于效率较低的排序算法。
9. 浮点数与零值比较:
- 在比较浮点数是否接近零时,通常会设定一个小的阈值,如`if(x > 0.000001 && x < -0.000001)`,以处理浮点计算的精度问题。
10. Internet采用的网络协议及层次结构:
- TCP/IP协议,分为应用层、传输层、网络层、数据链路层和物理层。
11. IP地址和物理地址转换:
- ARP(地址解析协议)用于将IP地址转换为物理地址(MAC地址)。
12. IP地址的组成:
- IP地址由网络号和主机号两部分组成,通过子网掩码来区分这两部分。
此外,题目还涉及到循环链表的实现、switch语句的参数限制、全局变量和局部变量的命名规则以及全局变量的外部引用方法等。这些内容全面展示了C/C++程序员应具备的基础知识和技能,是准备中兴和华为面试的重要参考资料。