面试记录6 c++开发工程师
·
木仓
一面:
- 面试官介绍项目,问能否接受跨行业
- 对c++系统延时和程序延时有了解吗
- 哪些代码会造成系统的延时,这种有自己的了解吗
- 咱们这系统内最大的延时其实是内存分配,你对new和malloc了解吗
- 用malloc在堆上分配了一块很大的内存,想把这个内存转成c++的某个类型,对c++来说有几种处理方式(一个很大的内存取一部分转换为其他的类型)
- 强转吗,有没有什么限制,带构造函数怎么办
- stl库里面的map和unordermap用过吗
- 插入和查询哪个快
- 两个根据哪些情况去使用
- 可以预分配内存吗,包括stl库的其他容器
- 有没有相应的接口
- vector的resize和reserve的区别
- resize和reserve能使它的内存减小吗
- 使用过线程同步吗
- 多线程什么情况下用条件变量去处理,什么情况下用锁
- 条件变量第一个参数为什么是锁
- 有一个vector容器,存了十万条int型数据,把其中小于5000的值全部删除掉,怎么实现这个逻辑
- remove干了什么,限制是什么,容器必须在什么情况下才能这样做,排序之后可以这样做吗
更
二面:
- 自我介绍
- 是你主动提的离职吗
- c++用的什么版本,新的23版本的没有用过是吧
- vector、deque、list各有什么特点
- vector和 list各自在哪方面是有优势的
- vector和 list的迭代器分别在什么情况下会失效
- vector在扩容的时候,会优先掉用了移动构造函数,在什么情况下不会调用移动构造函数而是调用拷贝构造函数
- map和unordermap的区别
- unordermap底层是怎么存储的,内部是用什么存储value的,哈希函数用在哪里
- 哈希冲突是什么,怎么解决
- c++11 里面string有什么缺点,换个问法,c++14之后引入了string wiew,是为了解决什么问题
- 出个编程题,说一下思路:
题目:滑动窗口去重器 Deduper实现类Deduper(window seconds),方法bool accept(int ts, std:string id) :
ts 为秒级时间戳(非递增也可能乱序轻微波动)。
在任意时刻,仅保留最近window seconds 内见过的 id;
当id 在窗口内首次出现时返回 true,若窗口内已有该 id 则返回 false;
需要 O(1) 摊销时间、O(W) 空间;
给出单元测试样例。
#include <cassert>
int main()
{
Deduper d(60);// t=100:A 首次出现
assert(d.accept(100,"A")==true);
// t=110: A 重复(在窗口内)assert(d.accept(110,"A")==false)ǐ
// t=161:窗口滑出(161-100>=60),A过期,重新接受
assert(d.accept(161,"A")==true);
// t=162: B 首次
assert(d.accept(162,"B")==true);
}
更多推荐
所有评论(0)