C/C++面试必备:经典笔试面试题解析

需积分: 49 2 下载量 131 浏览量 更新于2024-07-27 收藏 755KB PDF 举报
"C面试宝典包含了C和C++的经典面试题目和技巧,涵盖了企业常用的笔试面试内容,旨在帮助求职者准备技术面试。 1. 关键字`static`的作用: - 在函数内部,`static`变量在函数多次调用之间保持其值,即具有持久性。 - 在文件作用域(全局作用域)中,`static`变量只对本文件可见,实现局部全局变量的效果。 - 在函数外部,`static`修饰的函数只能在定义它的文件内部被调用,提供封装和隐藏。 2. 引用与指针的区别: - 引用必须在声明时初始化,而指针可以在任何时候被赋值。 - 引用一旦初始化后就不能改变引用的对象,而指针可以改变所指的对象。 - 不存在空引用,但指针可以为NULL,表示不指向任何对象。 - 引用作为函数参数或返回值时,提供了一种更安全和直观的接口,避免了指针可能带来的问题。 3. `#ifndef/define/endif`宏: 这是用来防止头文件被多次包含的保护机制。如果已经定义了指定的宏,则不会再次执行头文件中的内容,防止重复定义导致的编译错误。 4. `#include <file.h>`与`#include "file.h"`的区别: - 前者使用尖括号,通常用于标准库或系统头文件,编译器会先在标准搜索路径中查找。 - 后者使用双引号,通常用于用户自定义的头文件,编译器首先会在当前源文件的目录下查找。 5. 实时系统的基本特性: 实时系统需要在规定的时间限制内完成任务,同时保证系统的可靠性。其关键特性包括响应时间和确定性。 6. 全局变量与局部变量的存储位置: - 全局变量存储在程序的静态存储区,生命周期始于程序启动,终于程序结束。 - 局部变量存储在栈上,随着函数调用的开始分配空间,函数调用结束时自动释放。 7. 平衡二叉树的定义: 平衡二叉树是一种特殊的二叉树,每个节点的左子树和右子树都是平衡的,且它们的高度差不超过1。 8. 堆栈溢出的原因: - 堆栈空间有限,当递归过深或者局部变量过多时,可能导致堆栈空间耗尽。 - 忘记释放内存资源也可能导致堆栈溢出,尤其是动态分配的内存未被正确释放。 9. 冒泡排序的时间复杂度: 冒泡排序的最坏时间复杂度是O(n^2),对于n个元素的列表进行排序。 10. 虚函数的限制: 构造函数不能被声明为虚函数,因为虚函数的功能主要在于对象实例化后的多态性,而构造过程发生在对象创建阶段。 11. 队列与栈的区别: - 队列遵循"先进先出"(FIFO)原则,元素在队尾添加,在队首移除。 - 栈遵循"后进先出"(LIFO)原则,元素在栈顶添加和移除。 这些知识点是C和C++编程中常见的面试题目,掌握它们有助于提升面试表现,并在实际编程工作中避免常见错误。"