C++面试题 (Ⅱ章节)

C++面试题 (面试官们别再问什么是虚函数)

有一些C++岗位的面试官,在面试的时候总是问一下莫名其妙、烂大街,甚至不合逻辑的问题,万年不变的“指针和引用的区别”、“构造析构函数能否是虚函数”、“虚函数的原理”,听得都烦,根本看不出对C++的熟悉和理解程度。这里我整理了一些非传统的问题,摒弃那种细枝末节的语法,专注在使用和理解方向,可以适当参考。

(下面的问题并不严格按照小标题划分,更多的是连环问,彼此之间有关系)

======================

C++面试题 (Ⅰ章节)

C++面试题 (Ⅲ章节)

======================

模板

  • 什么是模板?为什么要使用模板?平时自己有没有基于模板做过coding?
  • 你了解哪几种模板形参?可以根据每一种,举一个你了解的例子吗?
  • 什么叫做模板的实例化?
  • 除了类模板和函数模板是否了解过其他的呢?比如变量模板?
  • 是否能举一个你使用过的变量模板?(is_same_v)
  • 那你是否了解is_same_v的原理呢?(inline constexpr ... = is_same<>::value)
  • 那你觉得为什么要引入变量模板呢?直接使用is_same不也可以么?
  • 这里的inline和constexpr为什么要添加呢?
  • 是否了解is_same的原理?能否自己写一个is_same呢?(偏特化)
  • 那你介绍一下什么是模板偏特化?最好从类模板或者函数模板两方面讲解一下?
  • 那除了这些,你是否用过一些偏特化或者全特化的模板类呢?举几个简单的例子即可?
  • 那如果让你写一个模板,在编译期求斐波那契数列可以实现吗?(简单实现即可)
  • 我们前面好像还提到了std::move吧,其中好像也用到了remove_reference?这个的原理你可以讲解一下么?
  • 形参包有了解吗?具体是用来做什么的呢?自己有没有使用过?或者有没有了解在哪些地方会使用?
  • 那如何获取形参包的元素数量呢?
  • 折叠表达式有没有了解过?使用在那里?
  • SFINAE是什么意思?解释一下?自己有没有针对这方面做过实践?
  • enable_if的目的是什么?

STL模板库

  • (老问题...) vector的底层逻辑?实现原理?
  • (老问题...) vector什么时候会迭代器失效?迭代器失效是什么意思?说说你的理解?
  • (老问题...) vector常见操作的复杂度?随机访问?末尾插入和删除?中间插入或删除?
  • (老问题...) vector的扩容机制?为什么要这么做?
  • 是否了解过vector有一种特化版本,vector< bool>,为什么要特化它呢?有什么区别?
  • vector中capacity和size的区别?
  • shrink_to_fit的作用是什么?(一些面试官,可以看看英文,文档或者源码,不要想当然)
  • vector中emplace_back是什么时候提出的?和push_back有什么不同?可以结合源码谈一谈?
  • (老问题...) 从vector中删除某个元素,你会怎么做?为什么要这么做?(一般可能回答for的时候erase,并接收迭代器)
  • 那你是否看过erase的源码呢?返回的迭代器到底是什么?所以你有什么想法呢?
  • 是否有了解其他的方式呢?(erase_if等)
  • (老问题...) list的底层逻辑?实现原理?
  • (老问题...) 和vector相比,list有什么区别?在读写元素时有什么优劣么?各自适用于什么场景?
  • list什么时候迭代器会失效?
  • (老问题...) 从list中删除某个元素,你会怎么做?和vector有什么区别吗
  • list中提供了几个函数,例如unique,merge,sort等等,那你说为什么要专门提供一个sort函数呢?std::sort不可以么?
  • 你刚才提到了迭代器,那你讲讲STL里面有几种迭代器类型呢?各自对应哪种模板类或者容器?
  • deque的底层逻辑?实现原理?和vector有什么不同?结合具体场景讲讲?
  • (老问题...) set有使用过吗?底层原理是怎么样的?
  • map有使用过么?底层原理是什么?它和set有什么区别?
  • emplace和insert有什么区别?
  • 有没有使用过try_emplace?它是用来做什么的?
  • map会不会迭代器失效?如果也是删除某些元素,你会怎么做?
  • array容器有没有使用过?有哪些模板参数?底层原理是怎么样的?
  • forward_list有没有使用过?它和list有什么区别?
  • C++11之后提供了哈希表库,有了解么?
  • 那unordered_map的底层原理是什么?发生哈希冲突怎么解决?
  • unordered_map什么时候会迭代器失效?
  • 什么是rehash?为什么要rehash?
  • 什么叫 load factors?一般这个值要保持在一个什么样的水平?谈谈你的理解?
  • 元素怎么计算hash code呢?
  • 计算完hash code之后,怎么选择放在哪个桶呢?
  • 如果想用unordered_map存储自定义类型,需要事先做哪些工作呢?
  • 了解哪些容器适配器?简单讲讲底层原理?
  • priority_queue默认什么堆?
  • 如果priority_queue的元素是自定义类型,需要事先做哪些工作呢?(自定义类型重载<运算符,或者定义函数对象比较类型)
  • 你自己更加倾向于哪种方法?
#我的实习求职记录#
C++面试题分享 文章被收录于专栏

C++面试题分享

全部评论
面试官不问那些,我怎么进去?
9 回复 分享
发布于 2023-09-21 11:07 江苏
面试官问这些,我怎么进得去?
5 回复 分享
发布于 2023-09-21 11:14 广东
有可能会问,但只能说概率太低太低了,秋招面了14次大厂C++了真的没问到过模板内存序,学这些还是不如美化项目和实习 ps:这里inline没有意义吧,目前的作用只是允许重复定义
2 回复 分享
发布于 2023-09-21 22:20 上海
感谢佬的总结,最近面试被问到了上面总结过的很多问题,不过以我个人的面试来看,感觉模板问的是最少的 另外佬有整理操作系统和计网面试题的计划吗
1 回复 分享
发布于 2023-09-30 19:09 山东
感觉基本都能答出来😂简历能写精通了吗(
点赞 回复 分享
发布于 2023-09-23 00:19 北京
点赞 回复 分享
发布于 2023-09-23 18:09 黑龙江
都能答的出来,然而0面试😅
点赞 回复 分享
发布于 2023-11-09 20:19 四川

相关推荐

点赞 评论 收藏
分享
18 165 评论
分享
牛客网
牛客企业服务