C++编程:笔试面试常见问题解析

需积分: 3 2 下载量 101 浏览量 更新于2024-07-29 收藏 313KB DOC 举报
"计算机专业必备笔试面试锦囊,包含了丰富的计算机知识,如C++、数据结构、内存管理、网络协议等,适用于准备IT行业笔试和面试的求职者。" 计算机专业求职者在准备笔试和面试时,需要掌握一系列关键知识点。以下是其中一些核心概念的详细解释: 1. `static` 关键字的用途: - 在函数内部,`static` 变量在函数每次调用之间保持其值,不会被重置。 - 在全局作用域内,`static` 变量限制了其可见性,只能在定义它的源文件内部访问,成为内部链接的全局变量。 - `static` 也可以用于修饰函数,使得该函数成为文件作用域的私有函数,只能在定义它的源文件内部被调用。 2. 引用与指针的区别: - 引用在声明时必须初始化,并且一旦初始化后就无法改变引用的对象。 - 指针可以不初始化,也可以在生命周期中改变所指向的对象。 - 没有空引用的概念,而空指针可以表示未指向任何对象的状态。 3. 实时系统的基本特性: - 实时性:系统必须在规定的时间内完成任务,延迟或错过截止时间可能导致严重后果。 - 可靠性:系统需要保证高可靠性和确定性,以确保任务的稳定执行。 4. 全局变量与局部变量的内存分配: - 全局变量存储在静态存储区,程序运行期间始终存在,直到程序结束。 - 局部变量存储在栈区,随着函数调用的开始分配空间,调用结束时自动释放。 5. 平衡二叉树: - 平衡二叉树是一种特殊的二叉树,每个节点的两个子树高度差不超过1,保证了搜索、插入和删除操作的时间复杂度为O(logn)。 6. 堆栈溢出的原因: - 当程序中的局部变量过多或者递归调用过深,导致栈空间不足,可能会引发堆栈溢出。 7. 虚函数与构造函数: - 构造函数不能声明为虚函数,因为虚函数机制在对象创建时无法工作,而构造函数在对象创建过程中被调用。 8. 冒泡排序的时间复杂度: - 最好情况(已排序)时间复杂度为O(n),最坏情况(逆序)为O(n^2),平均情况也是O(n^2)。 9. 浮点数与零值比较的if语句: - 通常为了避免浮点误差,比较浮点数与零时会设定一个极小的阈值,如示例所示。 10. Internet采用的网络协议及层次结构: - TCP/IP协议是Internet的基础,层次结构包括:应用层、传输层、网络层、数据链路层和物理层。 11. IP地址与物理地址转换: - ARP协议用于将IP地址解析为硬件地址,例如MAC地址。 12. IP地址的组成: - IP地址由32位的二进制数构成,分为网络号和主机号,通过子网掩码来区分。 13. 循环数数程序: - 可以利用循环和取余操作实现,根据M和N的关系输出特定数值。 14. switch语句的限制: - switch的表达式不能是浮点数,只能是整型、字符型或者枚举类型。 这些知识点涵盖了计算机科学的基础和进阶领域,对于准备面试的求职者来说是必不可少的复习材料。