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

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

1. STL的组成部分

STL主要通过下面六大部分组成:

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

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在容量不足时会重新分配更大的内存空间
  • 通常新容

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

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

全部评论

相关推荐

发面经,攒人品6.04投递6.05笔试,笔试较为简单6.19一面,是HR面,都是问了一些个人情况,印象最深的有问了高考成绩,理综成绩,真是问到了我的记忆最深处,说实话,都快记不到这些成绩了,又给我回忆了一下远古记忆,哈哈哈,就是不知道这个对于招聘有什么帮助了,最后还问了有没有接触过其他公司提前批,问了期望薪资,顺便还聊了聊韶音的拒绝996的文化。7.09二面,技术面。本来是7.02二面,但是这边实习入职推后了,只问了我15分钟问题,说实话,好久没面试问过八股了,也有一个月没面试过了,有些东西都记得有点模糊,哈哈哈,但是基本都答上来了。1.&nbsp;指针占几个字节?2.什么情况下会造成堆栈溢出?3.C语言中编译到链接的过程有哪些?4.串口、IIC、SPI的优缺点有哪些?面试官还想问一下CAN协议,但是我实在没用过,只知道can的通信接口是什么样的,速率大概是多少,然后我说用过速率更高EtherCAT,但是面试官好像又不懂这个东西,也没有继续追问我最后二面面试官说我方向不合适,说我是搞电机方向的,他们不搞电机,hhh。筛简历没把我筛掉,HR面也没把我筛掉,二面了说我方向不合适。话说从实习看来没有哪一家因为说我简历里面搞过电机,而他们不搞电机给我挂的,应该就是随便找个理由给我打发掉了,hhh。实习那个寻星计划也不理我,提前批面试也是没有一个好结果,可能是与这家公司无缘了。
xwqlikepsl:老哥这个是纯面MCU吗
查看7道真题和解析
点赞 评论 收藏
分享
08-07 21:10
已编辑
门头沟学院 C++
7.16&nbsp;投递8.1&nbsp;一面全程八股,一点实习都不问啊😅,简历上有智驾实习都没问1、C++虚函数和多态实现原理2、C++智能指针3、编译和链接的区别4、链接阶段链接的是什么5、栈和堆区别,大小是多少6、malloc&nbsp;分配内存7、malloc了100M,实际上物理内存有100M吗8、虚拟地址到物理地址怎么映射9、内存分配回收策略10、系统调用是什么,有哪些11、怎么进行线程切换12、用户态线程怎么切换(因为我上一个答的都是内核态切换)13、数组和链表的区别14、红黑树和平衡二叉树区别,为什么map用红黑树15、vector&nbsp;&nbsp;reserve&nbsp;和&nbsp;resize&nbsp;的区别16、TCP&nbsp;怎么保证可靠17、什么时候用TCP,什么时候UDP代码:共享屏幕写&nbsp;lc:78.6&nbsp;二面1.&nbsp;&nbsp;聊实习,主要是聊&nbsp;momenta&nbsp;实习2.&nbsp;聊项目3.&nbsp;epoll实现4.读数据的时候新来一个就绪事件会发生什么5.读数据从哪里读6.fopen和open区别7.fwrite写到用户态还是kernel8.一个业务场景用线程和用协程有什么区别9.线程切换的过程,怎么保存上下文怎么切换10.什么时候发生线程切换11.tcp拥塞窗口12.建立连接第三次握手丢失发生什么13.某端crash了,对端能感知到吗代码:memcpy+单例14.&nbsp;我的实现把拷贝放到private下,问有没有什么办法发生拷贝15.单例类会发生内存泄露吗16.会调析构吗8.7&nbsp;已挂
秋招笔面试记录
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务