C/C++面试精华:重点概念与试题解析

需积分: 0 0 下载量 132 浏览量 更新于2024-10-09 收藏 176KB DOC 举报
"这是一份关于C和C++面试题目的集合,涵盖了基本概念、语法特性、数据结构、算法和网络协议等方面。" C语言部分: 1. `static` 关键字有两个主要用途:一是限制变量的作用域,使其只在当前作用域(如函数内部)可见;二是设置变量的存储域,使变量在程序运行期间持续存在,而不是在函数调用结束后消失。 2. 引用与指针的区别: - 引用必须在声明时初始化,而指针可以在任何时候被赋值。 - 引用一旦初始化后就不能改变,它总是引用同一块内存;指针可以改变所指的对象。 - 没有指向空值的引用,但指针可以为空。 3. 实时系统的基本特性包括:在规定的时间内完成任务以及高度的可靠性和确定性。 4. 全局变量和局部变量在内存中的位置不同,全局变量存储在静态存储区,程序执行开始时分配,结束时释放;局部变量则存储在栈中,函数调用时分配,调用结束时自动释放。 5. 平衡二叉树是一种特殊的二叉树,其左右子树都是平衡二叉树,并且左右子树的高度差不超过1。 6. 堆栈溢出通常由于动态分配的内存未被及时释放,导致栈空间耗尽。 7. 构造函数不能被声明为虚函数,因为构造函数在对象创建时调用,此时多态性还未建立。 8. 冒泡排序的时间复杂度为O(n^2),属于效率较低的排序算法。 9. 浮点数x与零值比较的if语句示例:`if (std::abs(x) < 0.000001)`,这里使用了绝对值函数确保x非常接近零时也被视为零。 10. Internet 使用TCP/IP协议族,其主要层次结构包括应用层、传输层、网络层、数据链路层和物理层。 11. ARP(地址解析协议)用于将IP地址转换为物理地址,即MAC地址。 12. IP地址由网络号和主机号两部分组成,通过与子网掩码进行按位与操作区分这两部分。 13. 用户输入M和N,从1到N顺序循环计数,每数到M输出该数值的C程序可以通过循环和取模运算实现。 14. switch() 语句的参数不能是浮点型,因为switch语句不支持浮点数比较。 15. 局部变量可以与全局变量同名,但在函数内部,局部变量会遮蔽全局变量。若需访问全局变量,需使用作用域解析运算符`::`。 16. 引用已定义的全局变量,可以使用`extern`关键字或者包含定义全局变量的头文件。 这份面试题集全面覆盖了C和C++的基础知识、编程技巧和问题解决能力,适合准备面试的开发者参考学习。通过深入理解这些知识点,开发者可以增强自己的编程功底和面试表现。