1面面试官非常的和善,问的问题也非常有意思有深度,最好的是还做了问题的解答,学习了一波新知识。。

全程大概聊了1个多小时。

问题:

Foo *p = new Foo;
std::shared_ptr<Foo> p1(p);
std::shared_ptr<Foo> p2(p);
// p2 = p1;
std::unique_ptr<Foo> p3(new Foo);
std::unique_ptr<Foo> p4;
p4 = std::move(p3);
map<int, Foo*> map1;
map<int, Foo> map11;
...
map<int, shared_ptr<Foo> > map2;
...
map1.clear();

1.c++智能指针说一下 ,几个智能指针的使用场景和区别
2.智能指针之间的转换
3.如何将unique_ptr赋值给shared_ptr
4.使用map存放的是指针会不会出现内存泄漏 如何避免
5.一个裸指针分别初始化2个智能指针会出现什么问题?
6.std::move说一下
7.tcp和udp之间的区别
8.基于udp如何实现稳定传输?有什么办法实现?
9.用户传输文件传输速率会受什么影响?推导公式
10.那么如何提升用户的传输速率?
11.tcp在计算RTT时会出现的问题是什么?如何改进?
12.编程题:使用2个mutex实现读写锁
13.这样的实现会有什么问题,读很多写很少会怎么样?
14.分布式锁知道么?
15.一个分布式场景 如何保证数据的一致性? 什么时候需要维持数据的一致性?
16.2阶段提交和3阶段提交知道么?
17.问他问题

2面

2面面试官只问算法:

  1. 给你1GB数据,数据都是字符串,按照字典序全排序怎么做?
  2. 快排的空间复杂度和时间复杂度?
  3. 如果是1TB,如何全排序?
  4. 多路归并的时间复杂度 推导一下
  5. 如果是1PB的数据量,给你100台机器你怎么做全排序?
  6. 你有100块,百分之50的概率投资可以赚200,百分之50的概率亏完,请问如何使得收益最大化?

3面

忘了