诺瓦星云嵌入式工程师一面凉经
省流:不知道过没过,发了测评,测评随便做就交了,测评题目很恶心,不会做
体验:面试官还不错,我麦调试浪费了一些时间,面试官还是挺耐心的。我自己学过的都答上来了,没学过的就直接说不会,大概率是不匹配的
- 自我介绍
- 实习内容、难题
- c++多态
- stl容器map和unordered_map
- vector的capacity和size区别
- vector的resize和reserve的区别
- vector是怎么扩容的vector清空
- swap和clear区别
- 问gpu、客户端、渲染、图形学:都不会
- 反问:介绍业务,主要和大屏幕相关,涉及到图像处理
后记
- vector的capacity和size区别:
size是vector中已有元素个数,
capacity是vector在不扩容的前提下能容纳的最多元素个数。
若没有显示指定,vector初始size和capacity都是0
- 当vector的size等于capacity时,再插入就需要扩容。
linux,新的capacity就是旧的capacity的两倍。
- clear和swap:
clear:逐个析构vector中的元素,但它不会释放底层的内存,时间复杂度为O(n)(size变为0,capacity不变)
swap:可以迅速清空原vector,并将所有资源(包括内存)释放回系统。swap()的时间复杂度为O(1)(因为只涉及到指针交换)
想要删除vector中的所有元素:除了swap,可以clear+shrink_to_fit(shrink_to_fit会将capacity大小变为size的大小)
resize:传入的参数大于size时,会在尾部添加新元素。大于capacity就会扩容
传入的参数小于size时,就会析构尾部多次的元素
reserve:只是分配空间,不构造函数
#25秋招记录#