C/C++面试精华:涵盖基础、内存管理与系统原理

需积分: 0 1 下载量 44 浏览量 更新于2024-11-26 收藏 176KB DOC 举报
本文档涵盖了C和C++编程语言面试中常见的问题及知识点,旨在帮助求职者准备面试。首先,关于C语言的关键点: 1. `static`的用途: - 限制变量的作用域:`static`变量在文件或函数范围内保持有效,超出范围后不会自动销毁。 - 设置存储域:静态局部变量只在首次调用时初始化,后续调用保持其值。 2. 引用与指针的区别: - 初始化要求:引用必须在声明时初始化,指针可以不初始化。 - 变更性:引用一旦绑定到某个对象后就不能改变,指针可以改变所指对象。 - 空值处理:引用不允许空值,但指针可以指向NULL。 3. 实时系统特性: - 实时性:确保任务在规定时间完成,强调响应速度和确定性。 - 可靠性:系统稳定运行,错误率低。 4. 变量存储位置: - 全局变量:存储在静态数据区,生命周期贯穿整个程序。 - 局部变量:存储在栈上,函数结束时自动释放。 5. 平衡二叉树定义: - 满足左子树和右子树的深度差不超过1的条件,保持树的平衡性。 6. 堆栈溢出原因: - 内存管理不当,如递归调用过深或函数未正确释放局部变量。 7. 虚函数的限制: - 构造函数不能声明为虚函数,因为它们不能被多态地调用。 8. 冒泡排序的时间复杂度: - O(n^2),比较和交换元素多次,效率较低。 9. 浮点数比较: - 使用if语句检查浮点数x是否接近零:`if(x > 0.000001 && x < -0.000001)` 10. Internet协议结构: - TCP/IP协议:应用层、传输层、网络层、数据链路层和物理层。 11. 地址转换: - ARP协议用于物理地址到IP地址的转换。 12. IP地址结构: - 分为网络号和主机号,通过子网掩码进行区分。 13. 循环数数问题: - 通过循环链表实现,利用取余操作控制循环和输出。 14. switch语句限制: - 不支持实型作为参数类型。 15. 局部变量与全局变量: - 能重名,但局部变量优先,需使用`::`明确全局变量。 16. 引用全局变量: - 使用`extern`关键字声明,或者包含头文件。 这些知识点展示了C和C++编程的基础理论和实践应用,适合面试者复习和提升技能。