C和C++作为底层编程语言,其在IT行业的笔试中占据重要地位。以下是一些经典笔试题目的知识点总结:
1. `static` 的用途:
- 在函数内部,static变量保持其在函数调用期间的值不变,用于存储局部状态。
- 在模块级别,static变量变为本地全局变量,仅限于模块内部可见,对外部函数不可见,增强了封装性。
- 函数级别的static限制了其作用域,使其只能在声明它的模块内部调用。
2. 引用与指针的区别:
- 引用一旦初始化就不能改变,而指针可以改变所指对象。
- 引用不允许为空,但指针可以指向空(NULL)。
- 初始化时引用必须明确指定目标,而指针可以在后续赋值。
3. 实时系统特性:
- 实时系统强调任务的确定性和快速响应,确保在规定时间内完成预定任务,对可靠性和时间约束有高要求。
4. 全局变量与局部变量:
- 全局变量存储在静态存储区,生命周期贯穿整个程序,占用相对固定的内存空间。
- 局部变量存放在栈上,每当函数调用时创建,函数结束时销毁,节省内存但不持久。
5. 平衡二叉树定义:
- 它是一种特殊的二叉搜索树,确保两个子树的高度差不超过1,提供高效的查找、插入和删除操作。
6. 堆栈溢出原因:
- 当程序递归过深或动态分配大量内存且未正确释放,可能导致堆栈空间不足,从而引发堆栈溢出。
7. 虚函数的限制:
- 构造函数不能被声明为虚函数,因为它们在编译时被隐式调用,与继承的多态性冲突。
8. 冒泡排序的时间复杂度:
- 冒泡排序算法的时间复杂度是O(n^2),效率较低,主要用于教学和小规模数据排序。
9. 浮点数比较:
- 使用if语句比较浮点数与零值的边界,例如检查是否在很小的正负范围(如0.000001)内。
10. Internet协议及层次结构:
- Internet采用TCP/IP协议,主要层次结构包括应用层、传输层、网络层、数据链路层和物理层。
11. 地址转换协议:
- ARP(地址解析协议)负责将IP地址映射到物理地址(MAC地址),实现不同网络之间的通信。
12. IP地址编码:
- IP地址由网络地址和主机地址组成,通过子网掩码区分网络和主机部分。
13. 循环数数问题:
- 用C语言编写循环链表,利用取余操作实现按条件输出循环序列。
14. switch语句的限制:
- C/C++的switch语句参数必须是整型或枚举类型,不能用于实型,这与指针相关的编程题目有关。
以上知识点涵盖了C和C++面试中常见的基础概念和问题类型,有助于准备IT公司的技术笔试。