编程面试题解析:全局变量、预编译、静态、引用与指针等

需积分: 3 15 下载量 189 浏览量 更新于2024-09-19 收藏 29KB DOC 举报
"各大大公司面试题目 涵盖华为,亚信,浙大网新的面试知识点,包括编程基础,数据结构,内存管理,面向对象特性等" 在各大公司的面试中,特别是像华为、亚信、浙大网新这样的知名IT企业,面试官通常会考察应聘者的全面技术能力。以下是一些常见的面试知识点: 1. 引用全局变量: 全局变量可以在多个源文件中使用,可以通过`#include`头文件或使用`extern`关键字来引用。使用头文件时,编译期间会检查变量声明,错误会立即暴露;而使用`extern`则在链接阶段检查,错误会在链接时出现。 2. 预编译: 预编译是编译过程的一部分,主要用于处理宏定义、条件编译指令和包含的头文件,以便提高编译效率。当有大量不常变动的代码和多模块项目时,预编译头文件尤其有用。 3. `static`关键字: `static`可以限制变量的作用域,使其仅在当前文件可见,同时也可以设置变量为静态存储,即其生命周期贯穿整个程序运行期间,即使在函数结束后仍保留其值。 4. 引用与指针: 引用不是独立的对象,而是已存在对象的别名,必须在声明时初始化且不可改变引用本身;而指针是一个对象,可以改变它所指向的对象,还可以为NULL。 5. 平衡二叉树: 平衡二叉树是一种特殊的数据结构,如AVL树或红黑树,它的左右子树高度差不超过1,保证了搜索、插入和删除操作的时间复杂度为O(logN)。 6. 堆栈溢出: 主要由递归调用过深或大量局部变量占用堆栈空间引起,可能导致程序崩溃。堆栈溢出不同于内存泄漏,后者是由于未释放不再使用的内存。 7. 虚函数: 构造函数、静态成员函数、非成员函数以及部分模板函数不能声明为虚函数。虚函数主要应用于多态性,用于确定对象的实际类型并调用相应的函数实现。 8. 数组查找重复元素: 给定数组a[N],要求找出重复的数字,可以使用线性扫描法,利用额外的空间记录每个元素出现的情况。例如,可以创建一个大小为N的辅助数组p,p[i]表示元素i出现的标记,初始值为-1,当遇到重复元素时,p[arr[i]]将不为-1。 以上知识点是面试中常见问题,理解和掌握这些内容对于准备面试至关重要。在实际面试中,面试官还可能询问其他高级概念,如并发编程、算法分析、网络协议、数据库设计等,以评估候选人的综合技术能力。