【秋招】嵌入式面试八股文- C++的STL库

【秋招】嵌入式面试八股文 - 最全专栏

1. STL的基本组成部分

STL主要由六大组件组成:

  • 容器(Containers):存储数据的数据结构
  • 算法(Algorithms):操作容器中数据的方法
  • 迭代器(Iterators):连接算法和容器的桥梁
  • 函数对象(Functors):可以像函数一样被调用的对象
  • 适配器(Adapters):修改其他组件接口的组件
  • 分配器(Allocators):负责空间配置与管理

2. 常见容器及其特点

2.1 顺序容器

  • vector:动态数组,支持随机访问,在尾部插入/删除元素效率高
  • list:双向链表,支持双向顺序访问,在任何位置插入/删除效率都很高
  • deque:双端队列,支持随机访问,在两端插入/删除效率高

2.2 关联容器

  • set/multiset:基于红黑树实现的有序集合,set中元素唯一,multiset允许重复
  • map/multimap:基于红黑树实现的键值对集合,map中键唯一,multimap允许重复键

2.3 无序容器(C++11)

  • unordered_set/unordered_multiset:基于哈希表实现的无序集合
  • unordered_map/unordered_multimap:基于哈希表实现的无序键值对集合

3. vector与list的区别

vector

list

内存布局

连续存储

非连续存储

插入/删除

尾部O(1),中间O(n)

任何位置都是O(1)

随机访问

支持O(1)

不支持

迭代器失效

插入可能导致所有迭代器失效

只有被删除的元素迭代器失效

4. map与unordered_map的区别

map

unordered_map

实现方式

红黑树

哈希表

元素顺序

按键排序

无序

查找复杂度

O(log n)

平均O(1),最坏O(n)

插入复杂度

O(log n)

平均O(1),最坏O(n)

内存消耗

较少

较多

5. STL迭代器种类

  • 输入迭代器:只读,单向,一次性遍历
  • 输出迭代器:只写,单向,一次性遍历
  • 前向迭代器:可读写,单向,多次遍历
  • 双向迭代器:可读写,双向,多次遍历
  • 随机访问迭代器:可读写,双向,多次遍历,支持随机访问

6. vector的内存管理

// vector扩容机制示例
vector<int> v;
cout << "初始容量: " << v.capacity() << endl;
for(int i = 0; i < 10; i++) {
    v.push_back(i);
    cout << "添加元素后容量: " << v.capacity() << endl;
}
  • vector在容量不足时会重新分配更大的内存空间
  • 通常新容量是旧容量的1

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

双非本,211硕。本硕均为机械工程,自学嵌入式,在校招过程中拿到小米、格力、美的、比亚迪、海信、海康、大华、江波龙等offer。八股文本质是需要大家理解,因此里面的内容一定要详细、深刻!这个专栏是我个人的学习笔记总结,是对很多面试问题进行的知识点分析,专栏保证高质量,让大家可以高效率理解与吸收里面的知识点!掌握这里面的知识,面试绝对无障碍!

全部评论

相关推荐

星期一(5.12)&nbsp;boss&nbsp;投递简历星期三&nbsp;&nbsp;业务面&nbsp;30min星期五&nbsp;hr&nbsp;面&nbsp;星期五下午发&nbsp;offer(已经接了,问了是有转正机会的)星期二和星期三的时候特别焦虑。心里想着影石过了我就不面了,我这周再也不要面了,想再沉淀一段时间(好多面试题我还没背下来)。面筋(其实也没啥):面试了&nbsp;30&nbsp;分钟20&nbsp;多分钟是在讲我的商城项目1.怎么设计用例的?说下对于增加商品成功,增加商品失败,减少商品成功,减少商品失败这几个场景你会怎么提取测试点?有没有考虑到例如“未登录提醒后面要有登录链接”“购物车增加商品到达上限按钮要置灰”等情况?我说:“…(设计的过程,此处省略)…没有考虑,需求文档上没写”2.你有没有对这个商城项目做接口测试?我答:“没有,因为没有接口文档”面试官:“平时可以用抓包工具多看看前后端是怎么运作的,看看接口是怎么样的”3.“讲讲你用&nbsp;appium&nbsp;对核心场景实现自动化是怎么做的,比如说断言具体是断言什么”主要问题就是这些,还有性格和到岗时间等问题,30min&nbsp;也说不了多少。总体来说就是只问了项目,没问任何八股。所以大家一定要对自己做的东西熟悉。面试之前我跑遍了整栋教学楼,没有一间空教室!所以我只能去楼顶天台楼梯口(这里不会有人来),很热,而且我只能把电脑放凳子上然后蹲着面,蹲一会动一会。再加上因为失眠一天只睡了两个小时的大脑⊙﹏⊙,哈哈哈哈()。面试官还是很好的,给我提了很多建议,我也学到了不少。
查看3道真题和解析
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务