木仓
一面:

  1. 面试官介绍项目,问能否接受跨行业
  2. 对c++系统延时和程序延时有了解吗
  3. 哪些代码会造成系统的延时,这种有自己的了解吗
  4. 咱们这系统内最大的延时其实是内存分配,你对new和malloc了解吗
  5. 用malloc在堆上分配了一块很大的内存,想把这个内存转成c++的某个类型,对c++来说有几种处理方式(一个很大的内存取一部分转换为其他的类型)
  6. 强转吗,有没有什么限制,带构造函数怎么办
  7. stl库里面的map和unordermap用过吗
  8. 插入和查询哪个快
  9. 两个根据哪些情况去使用
  10. 可以预分配内存吗,包括stl库的其他容器
  11. 有没有相应的接口
  12. vector的resize和reserve的区别
  13. resize和reserve能使它的内存减小吗
  14. 使用过线程同步吗
  15. 多线程什么情况下用条件变量去处理,什么情况下用锁
  16. 条件变量第一个参数为什么是锁
  17. 有一个vector容器,存了十万条int型数据,把其中小于5000的值全部删除掉,怎么实现这个逻辑
  18. remove干了什么,限制是什么,容器必须在什么情况下才能这样做,排序之后可以这样做吗


二面:

  1. 自我介绍
  2. 是你主动提的离职吗
  3. c++用的什么版本,新的23版本的没有用过是吧
  4. vector、deque、list各有什么特点
  5. vector和 list各自在哪方面是有优势的
  6. vector和 list的迭代器分别在什么情况下会失效
  7. vector在扩容的时候,会优先掉用了移动构造函数,在什么情况下不会调用移动构造函数而是调用拷贝构造函数
  8. map和unordermap的区别
  9. unordermap底层是怎么存储的,内部是用什么存储value的,哈希函数用在哪里
  10. 哈希冲突是什么,怎么解决
  11. c++11 里面string有什么缺点,换个问法,c++14之后引入了string wiew,是为了解决什么问题
  12. 出个编程题,说一下思路:
    题目:滑动窗口去重器 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);
}
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐