2021C++面试题精选

95272021-12-27 14:09

  互联网的寒冬,正在悄悄的进行着,年还没有到,但是自己却已经失去饭碗,很多人都在拿到赔偿后,马不停蹄的找工作,希望这份资料可以对大家有所帮助。

2021C++面试题精选

  1、C++标准库vector以及迭代器

  每种容器类型都定义了自己的迭代器类型,每种容器都定义了一队命名为begin和end的函数,用于返回迭代器。

  迭代器是容器的精髓,它提供了一种方法使得它能够按照顺序访问某个容器所含的各个元素,但无需暴露该容器的内部结构,它将容器和算法分开,让二者独立设计。

  2、C++ 11有哪些新特性

  C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL),并入了大部分的C++ Technical Report 1(TR1)程序库。C++11包括大量的新特性:包括lambda表达式,类型推导关键字auto、decltype,和模板的大量改进。

  auto

  C++11中引入auto第一种作用是为了自动类型推导

  auto的自动类型推导,用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推导,可以大大简化我们的编程工作

  decltype

  decltype实际上有点像auto的反函数,auto可以让你声明一个变量,而decltype则可以从一个变量或表达式中得到类型,有实例如下:

  nullptr

  nullptr是为了解决原来C++中NULL的二义性问题而引进的一种新的类型,因为NULL实际上代表的是0.

  lambda表达式类似Javascript中的闭包,它可以用于创建并定义匿名的函数对象,以简化编程工作。Lambda的语法如下:

  [函数对象参数](操作符重载函数参数)mutable或exception声明->返回值类型{函数体}

  3、C++中vector和list的区别

  vector和数组类似,拥有一段连续的内存空间。vector申请的是一段连续的内存,当插入新的元素内存不够时,通常以2倍重新申请更大的一块内存,将原来的元素拷贝过去,释放旧空间。因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的拷贝,时间复杂度为o(n)。

  list是由双向链表实现的,因此内存空间是不连续的。只能通过指针访问数据,所以list的随机存取非常没有效率,时间复杂度为o(n); 但由于链表的特点,能高效地进行插入和删除。

  vector拥有一段连续的内存空间,能很好的支持随机存取,因此vector::iterator支持“+”,“+=”,“<”等操作符。

  list的内存空间可以是不连续,它不支持随机访问,因此list::iterator则不支持“+”、“+=”、“<”等

  vector::iterator和list::iterator都重载了“++”运算符。

  总之,如果需要高效的随机存取,而不在乎插入和删除的效率,使用vector;

  如果需要大量的插入和删除,而不关心随机存取,则应使用list。

  4、C语言的函数调用过程

  函数的调用过程:

  1)从栈空间分配存储空间

  2)从实参的存储空间复制值到形参栈空间

  3)进行运算

  形参在函数未调用之前都是没有分配存储空间的,在函数调用结束之后,形参弹出栈空间,清除形参空间。

  数组作为参数的函数调用方式是地址传递,形参和实参都指向相同的内存空间,调用完成后,形参指针被销毁,但是所指向的内存空间依然存在,不能也不会被销毁。

  当函数有多个返回值的时候,不能用普通的 return 的方式实现,需要通过传回地址的形式进行,即地址/指针传递。

  传值:传值,实际是把实参的值赋值给行参,相当于copy。那么对行参的修改,不会影响实参的值 。

  传址: 实际是传值的一种特殊方式,只是他传递的是地址,不是普通的赋值,那么传地址以后,实参和行参都指向同一个对象,因此对形参的修改会影响到实参。

  5、C++中的基本数据类型及派生类型

  1)整型 int

  2)浮点型 单精度float,双精度double

  3)字符型 char

  4)逻辑型 bool

  5)控制型 void

  基本类型的字长及其取值范围可以放大和缩小,改变后的类型就叫做基本类型的派生类型。派生类型声明符由基本类型关键字char、int、float、double前面加上类型修饰符组成。

  类型修饰符包括:

  >short 短类型,缩短字长

  >long 长类型,加长字长

  >signed 有符号类型,取值范围包括正负值

  >unsigned 无符号类型,取值范围只包括正值

  以上就是小编为大家整理发布的“2021C++面试题精选”一文,更多相关内容尽在开课吧广场C++教程频道。

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