C/C++面试精华:涵盖静态作用域、内存差异、实时系统等

需积分: 0 4 下载量 64 浏览量 更新于2024-09-26 收藏 484KB PDF 举报
本资源是一份关于C和C++面试题的PDF文档,包含了丰富的知识点,涵盖了C和C++编程语言的基础和进阶概念。以下是部分内容的详细解析: 1. C语言中的`static`关键字: - 作用域:`static`可以限制变量的作用域,使其只在文件或函数内部可见,防止变量被外部修改。另外,当`static`用于函数内部的变量时,它会在整个程序运行期间保持其状态。 - 存储域:静态局部变量(static inside function)存储在数据段,它们的生命周期贯穿整个程序执行,但仅在首次调用时初始化。 2. 引用与指针的区别: - 初始化:引用在声明时必须立即绑定到一个已存在的对象,而指针可以在任何时候被赋予`NULL`。 - 可变性:引用一旦初始化后,不能再改变所绑定的对象;指针可以改变指向的对象。 - 空值:指针可以有空值(`NULL`),而引用没有空值的概念。 3. 实时系统特性: - 实时性:确保系统能在预设的时间内完成任务,对响应时间和准确性有严格要求。 - 可靠性:在特定条件下,系统应能正确无误地执行任务,即使面对干扰或故障。 4. 全局变量和局部变量: - 内存位置:全局变量存储在静态数据区,而局部变量存储在栈空间,生命周期与函数关联。 - 区别:全局变量在整个程序中有效,局部变量只在函数内可见。 5. 平衡二叉树: - 定义:每个节点的左子树和右子树都是平衡的,即任意节点的左右子树高度差的绝对值不超过1。 6. 堆栈溢出原因: - 通常由于递归调用过深或者数据结构(如链表、栈)操作不当导致栈空间不足。 7. 虚函数: - 虚函数只能在基类中声明,派生类不能声明虚函数。 8. 冒泡排序算法: - 时间复杂度:冒泡排序是一种简单的排序算法,最坏情况下需要比较n(n-1)/2次,因此时间复杂度为O(n^2)。 9. 浮点数比较: - 使用if语句检测浮点数x是否接近零:`if (fabs(x) < 0.000001)`,这会检查浮点数的绝对值是否小于极小阈值。 10. Internet协议: - 使用TCP/IP协议,其主要层次结构包括应用层、传输层、网络层、数据链路层和物理层。 11. 地址转换: - ARP(地址解析协议)用于Internet物理地址和IP地址之间的转换。 12. IP地址结构: - 由网络号和主机号组成,通过子网掩码进行区分。 13. 循环计数问题: - 使用C语言编写一个循环链表程序,利用取余操作实现从1到N的循环数数。 14. switch语句限制: - switch的参数不能是实型数据,因为实型无法精确匹配。 15. 局部变量和全局变量: - 局部变量和全局变量可以同名,局部变量优先级高于全局,需用`::`明确表示全局变量。 16. 引用全局变量: - 使用`extern`关键字或包含头文件的方式引用已声明的全局变量,注意编译器可能对同名变量有不同的处理方式。 这份PDF文档提供了丰富的面试题,涵盖了C和C++语言的关键知识点,对于准备应聘或复习C/C++编程的面试者来说,是一个宝贵的参考资料。