C++面试题 (面试官们别再问什么是虚函数)有一些C++岗位的面试官,在面试的时候总是问一下莫名其妙、烂大街,甚至不合逻辑的问题,万年不变的“指针和引用的区别”、“构造析构函数能否是虚函数”、“虚函数的原理”,听得都烦,根本看不出对C++的熟悉和理解程度。这里我整理了一些非传统的问题,摒弃那种细枝末节的语法,专注在使用和理解方向,可以适当参考。(下面的问题并不严格按照小标题划分,更多的是连环问,彼此之间有关系)======================C++面试题 (Ⅰ章节)C++面试题 (Ⅲ章节)======================[mark一下][offer喷雾][帮顶]模板什么是模板?为什么要使用模板?平时自己有没有基于模板做过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的元素是自定义类型,需要事先做哪些工作呢?(自定义类型重载<运算符,或者定义函数对象比较类型)你自己更加倾向于哪种方法?
点赞 18
评论 7
全部评论

相关推荐

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