快手 基础架构实习1,2,3面 hr面 面经
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如何实现稳定传输?有什么办法实现?
W(bytes), T(s), B (b/s)
speed = W/T b/s
9.用户传输文件传输速率会受什么影响?推导公式
10.那么如何提升用户的传输速率?
11.tcp在计算RTT时会出现的问题是什么?如何改进?
12.编程题:使用2个mutex实现读写锁
rwlock
mutex1, mutex2
write_lock()
{}
write_unlock()
{}
read_lock()
{}
read_unlock()
{}
13.这样的实现会有什么问题,读很多写很少会怎么样?
14.分布式锁知道么?
15.一个分布式场景 如何保证数据的一致性? 什么时候需要维持数据的一致性?
16.2阶段提交和3阶段提交知道么?
17.问他问题
2面
2面面试官只问算法:
- 给你1GB数据,数据都是字符串,按照字典序全排序怎么做?
- 快排的空间复杂度和时间复杂度?
- 如果是1TB,如何全排序?
- 多路归并的时间复杂度 推导一下
- 如果是1PB的数据量,给你100台机器你怎么做全排序?
- 你有100块,百分之50的概率投资可以赚200,百分之50的概率亏完,请问如何使得收益最大化?
3面
3面今天面完了 然后细节有时间我再补充。
hr面也是今天。。。
目前已经发了offer啦
#快手##实习##面经##C++工程师#