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 四川

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
18 165 评论
分享
牛客网
牛客企业服务