C/C++面试必备知识点:从基础到高级

需积分: 0 2 下载量 99 浏览量 更新于2024-12-01 收藏 176KB DOC 举报
"《C与C++面试题汇总》提供了丰富的C语言和C++面试题,旨在帮助面试者提升成功通过面试的概率。这份资料涵盖了C语言和C++的基础概念、语法特性、数据结构、算法以及操作系统相关的知识。" 1. `static`关键字的用途: - 限制变量的作用域:在函数内部使用`static`声明的变量,其作用域仅限于该函数,但生命周期贯穿整个程序执行。 - 设置变量的存储域:`static`修饰的全局变量只会在当前源文件内可见,避免了不同文件间的命名冲突。 2. 引用与指针的区别: - 引用必须在声明时初始化,之后不能更改引用对象,而指针可以随时改变所指的对象。 - 引用不存在空引用,一旦初始化后总是引用某个特定对象;而指针可以指向空值(NULL)。 - 全局引用和局部引用的行为类似指针,但不需解引用操作即可访问目标对象。 3. 实时系统的基本特性: - 实时性:系统必须在规定的时间内完成任务,否则可能导致严重后果。 - 可靠性:确保任务按预期准确执行,对时间约束的遵守至关重要。 4. 全局变量和局部变量的内存区别: - 全局变量存储在静态存储区,程序运行开始时分配,结束时释放。 - 局部变量存储在栈中,函数调用时分配,调用结束时自动释放。 5. 平衡二叉树的定义: - 平衡二叉树是一种特殊的二叉树,其左、右子树的高度差不超过1,并且左、右子树都是平衡二叉树。 6. 堆栈溢出的原因: - 主要是因为分配给堆栈的内存不足以存储新的数据,通常是由于递归过深或局部变量过多导致的。 7. 不能声明为虚函数的函数: - 构造函数不能声明为虚函数,因为虚函数是在对象实例化后发挥作用,而构造函数在对象创建过程中调用。 8. 冒泡排序的时间复杂度: - 最好情况(已排序)下为O(n),最坏(逆序)情况下为O(n^2),平均情况下也是O(n^2)。 9. 比较浮点数与零的if语句: - if (fabs(x) > 0.000001) 可以用来判断x是否接近零,这里使用了绝对值函数fabs和一个容差值。 10. Internet采用的网络协议: - TCP/IP协议,层次结构包括应用层、传输层、网络层、数据链路层和物理层。 11. ARP协议的作用: - ARP协议用于将IP地址转换为物理地址(MAC地址),实现IP数据包在局域网内的正确传输。 12. IP地址的组成: - IP地址由网络号和主机号两部分组成,通过子网掩码确定网络位和主机位。 13. C程序实现M/N数列输出: - 使用循环和取余操作,根据M和N的值控制何时输出数列中的数字。 14. switch()不能接受的参数类型: - switch语句的表达式不能是浮点型,只能是整型、字符型或者枚举类型。 15. 局部变量与全局变量重名处理: - 局部变量会屏蔽同名全局变量,若需使用全局变量,需使用`::`操作符明确指定。 16. 引用全局变量的方法: - 使用`extern`关键字在需要使用全局变量的地方进行声明,或者通过包含定义全局变量的头文件。 这些面试题涵盖了C语言和C++的基础知识,包括内存管理、数据结构、算法、网络协议以及编程规范等多个方面,有助于面试者准备技术面试。