2019年快手实习面经
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面面试官只问算法:
- 给你1GB数据,数据都是字符串,按照字典序全排序怎么做?
- 快排的空间复杂度和时间复杂度?
- 如果是1TB,如何全排序?
- 多路归并的时间复杂度 推导一下
- 如果是1PB的数据量,给你100台机器你怎么做全排序?
- 你有100块,百分之50的概率投资可以赚200,百分之50的概率亏完,请问如何使得收益最大化?
3面
忘了