快手 搜广推工程 面经
timeline:
- 08-08 投递
- 08-19 一面
- 08-28 二面
- 09-10 三面
- 09-15 四面
一面
1h15m
- 自我介绍
- 是本科吗
- 看你成绩不错,怎么不读研
- 建议你读个研探索更难的方向
- 实习拷打
- 讲讲 Linux 上的性能分析手段
- 如果一个线上程序卡死了,怎么分析原因
- 稳定复现
- 缩小范围:res->log->syscall
- 假设验证
- 用过哪些开源组件
- 讲讲 boost 的设计思想
- 内存屏障是什么(控制内存操作顺序的 CPU 指令)
- 读屏障:该屏障之前的读操作完成后,才会执行之后的读操作
- 写屏障:该屏障之前的写操作完成后,才会执行之后的写操作
- 全屏障:该屏障之前的读写操作完成后,才会执行之后的读写操作
- atomic 支持浮点数吗(C++20 起才支持 fetch_add、fetch_sub、+=、-=)
- 互斥锁和自旋锁的区别
- 哪些变量可以用 thread_local(静态成员变量和非形参变量)
- 内存泄漏的原因和解决方法
- 看代码找问题:基类析构函数非虚导致内存泄漏
- 看代码找问题:各种数据分配在哪些内存区域
- 看代码找问题:无符号整数溢出、整型提升
- 手撕:写一个函数管理器,可以动态注册和运行函数(类型擦除),要求单例和线程安全
- 手撕:力扣 1002
- 反问
二面
50m
- 自我介绍
- 项目拷打
- 虚拟内存的作用
- 互斥锁和读写锁的适用场景
- 讲讲移动语义
- TCP 连接,对端拔网线,能感知到吗
- 为什么投这个岗位
- 怎么分析一个服务的性能问题
- 手撕:k 个一组翻转链表
- 反问
三面
1h
- 自我介绍
- 实习拷打
- 手撕:力扣 887
- IO 多路复用
- Linux 内核启动过程
- 反问
四面
1h
- 自我介绍
- 实习拷打
- a和b势均力敌,七局四胜,求要打七场的概率
- 问题等价于前六场三胜三负
- 总共 2^6 种情况
- 三胜三负有 C(6, 3) 种情况
- 得概率为 20/64 == 5/16
- 一个文件包含 100 亿条记录,求 top1000 query,给一个最快的算法
- 手撕:1~n 中选 m 个数,求所有组合
- 反问
hr面
15m
- 自我介绍
- 实习介绍
- 性能优化方法论
- 游戏优化和服务优化的不同
- 如果让现在的你去做这些事情,跟之前相比会有哪些提升
- 职业规划
- 对下一份工作的期待
- 实习过的公司中,更喜欢哪种氛围
- 秋招进展如何
- 反问
- 后续流程:月底发意向,下个月中下开奖
查看8道真题和解析