快手凉经-基础工具开发
一面:6.25
#晒一晒我的offer##夸夸我的求职搭子##快手信息集散地##滴!实习打卡#
代码题:反转链表/快排,秒杀
1. cpu绑核的意义,细问对内存和cpu的影响 :没有答全
2. 虚函数表指针:八股答出来了,给例题判断结果做错了
3. new,malloc区别:答出来了
4. delete如何判断要删除内容的大小:不太会
5. Linux系统内存分配函数,内存分配器原理:不会
6. 如何在已经申请的内存里new:placement new,底层不会
7. vector中push_back和emplace_back的区别:答出来了
8. cpp内存分区:概念答出来了,给一道例题让我判断分区就无了
9. 如何把对象只分配到栈区:不会
10. 线程同步的办法:答出来了
11. 信号量的底层原理:不会
12. 原子变量的底层实现方式:不会
13. 大页表的原理,不太会
二面 6.29:
1. 场景题
如何测试性能优化后跑分提升不是随机波动导致的:
答:多次测试取方差,然后多组方差的均值成正态分布,用95置信区间算范围,范围落在合理区间内即可(瞎蒙)
2. 问实习
3. gdb中函数压栈报错如何实现的(猜了一个)
4. 计数器如何避免重复加(原子变量)
5. 原子变量底层(还是不太会
6. git中rebase和merge的区别
7. 防止编译器重排,防止cpu重排
中间忘了一些
代码题:手动实现一个memory allocator(不太会,说了思路)
只能说,是快手每个岗位都考这么难,还是只因为这个岗偏底层,才考这么难吗?