C++年前面试高频考点汇总

杰米粉2021-12-23 12:24

  众所周知,计算机现在是一个当之无愧的高薪行业,但所谓高科技的前提是你必须有能力在这个行业找到一份满意的工作,否则其他的都是无稽之谈,所以小编花了几天时间整理了一份C++的面试题。

C++面试题精选

  1、堆栈和堆栈的区别。

  1)栈stack存储函数的参数值。局部变量由编译器自动分配和释放。

  堆heap是由new分配的内存块,由应用程序控制,程序员需要手动使用delete释放。如果没有,程序结束后,操作系统会自动回收。

  2)由于堆的分配需要频繁使用new/delete,内存空间不连续,会有大量的碎片。

  3)堆的生长空间向上,地址越大,堆的生长空间向下,地址越小。

  2、关键字static的作用。

  1)函数体:static修改的局部变量范围为该函数体,不同于auto变量,其内存只分配一次,因此其值在下次调用时保持上次值。

  2)模块内:static修改全局变量或全局函数,可以访问模块内的所有函数,但不能访问模块外的其他函数,使用范围限制在声明其模块内。

  3)类:修改成员变量,表示变量属于整个类,所有对象只有一份副本。

  4)类修改成员函数,表示该函数属于整个类,不接受this指针,只能访问static成员变量。

  注意与const的区别!!!const强调值不能修改,static强调所有类别的唯一副本。

  3、STL中map和set的原理(关联容器)

  map和set的底层实现主要通过红黑树实现。

  红黑树是一种特殊的二叉搜索树。

  1)每个节点或黑色或红色。

  2)根节点为黑色。

  每一个叶节点(NIL)都是黑色的。[注:这里的叶节点,是指为空(NIL或NULL)的叶节点!

  如果一个节点是红色的,它的子节点必须是黑色的。

  5)从一个节点到节点后代节点的所有路径都包含相同数量的黑节点。

  特征4)5)决定没有一条路径比其他路径长两倍,所以红黑树是接近平衡的二叉树。

  4、#include#include“file、h”的区别。

  前者是从标准库路径中寻找的。

  后者是从当前的工作路径。

  5、什么是内存泄漏?面对内存泄漏和指针越界,你有哪些方法?

  动态分配内存开放的空间使用后未手动释放,导致内存一直占用,即内存泄漏。

  方法:malloc/free应匹配。赋值指针时,注意赋值指针是否需要释放;使用时记住指针长度,防止越界。

  以上就是小编为大家整理发布的“C++年前面试高频考点汇总”一文,更多相关内容尽在开课吧广场C++教程频道。

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享
全部评论快来秀出你的观点
登录 后可发表观点…
发表
暂无评论,快来抢沙发!
算法刷题核心能力提升营