C++面试精华:基础概念与易错点解析

需积分: 19 9 下载量 155 浏览量 更新于2024-09-09 收藏 29KB DOCX 举报
在C++面试中,面试官常会针对基础概念和技术细节进行提问,以评估应聘者的理解和应用能力。以下是一些关键知识点: 1. 关键字`static`的作用: - 在函数内部,`static`变量保持其值在函数调用期间不变,有助于数据的持久性。 - 在模块内,静态变量提供局部全局性质,仅在模块内可见,增强数据封装。 - 静态函数则限制在其定义的模块内调用,体现代码的局部性和减少命名冲突。 2. 引用与指针的区别: - 引用一旦初始化就不能改变,强调直接操作目标变量,提高代码可读性。 - 指针允许未初始化和改变指向,存在空指针,操作间接对象。 - 流操作符`<<`和`>>`以及赋值操作等场景中,推荐使用引用而非指针。 3. #ifndef/#define/#endif的用途: - 这一组用于条件编译,防止头文件的多次包含,确保宏定义仅在一个编译单元中生效。 4. `<file.h>`与`"file.h"`的区别: - 前者遵循标准库搜索路径,后者从当前目录查找,注意路径问题。 5. 实时系统的基本特性: - 快速响应时间(实时性)和高可靠性,适用于需要严格时间控制的应用。 6. 全局变量与局部变量: - 存储位置不同:全局变量在静态数据区,局部变量在栈上,生命周期和作用域不同。 7. 平衡二叉树: - 定义为每个节点的左右子树高度差不超过1的二叉树,保持高效搜索性能。 8. 堆栈溢出的原因: - 未正确管理内存,如内存泄漏或递归调用过深。 9. 冒泡排序的时间复杂度: - O(n^2),效率较低,适合小规模数据。 10. 不能声明为虚函数的情况: - 构造函数,因为虚函数需要在运行时动态绑定,而构造函数执行是在对象创建时。 11. 队列与栈的区别: - 队列遵循先进先出(FIFO)原则,栈遵循后进先出(LIFO)原则。 12. switch()不适用的参数类型: - switch()通常用于整型表达式,不支持枚举、字符串或自定义类型作为参数。 掌握这些知识点可以帮助求职者准备C++面试,理解这些问题背后涉及的数据结构、内存管理和编程范式等核心概念。