快手CPP后台开发一二三面
快手数据平台部,三次技术面,许愿一个hr面
一面(8.12 50min)
- 自我介绍
- 主要问一下基础知识,都是一些常规的问题,没有什么难点,没有问项目相关的东西
- 算法题1:构造链表,并实现插入,删除,反转操作
- 算法题2:二分查找
- 算法题3:数组中和最大的连续子序列
二面(8.17 70min)
- 自我介绍
- 项目
- select,poll,epoll
- 线程切换开销
- 多进程服务器,多线程服务器,各自优缺点是什么
- 在多进程和多线程中,IO多路复用各有什么优缺点
- 从磁盘都文件,进行MD5加密,然后再写入到磁盘,硬件层面和系统层面都做了些什么工作
- page cache
- 如何衡量磁盘IO的性能,Linux下有什么命令查看IO读写速度
- 算法题1:实现一个LRU
- 算法题2:在一个有向无环图中,对节点进行遍历,遍历规则如下:
(1)深度优先
(2)先左孩子,后右孩子
(3)只有当前节点的所有父节点都遍历完之后才能遍历当前节点
节点类如下:
struct Node{ int val; Node* left; Node* right; };
三面(8.21 60min)
- 自我介绍
- 深挖项目,难点
- 场景题:一个很大的集群中,有很多任务需要执行,每个任务都是不同的,任务之间有先后约束关系(比如必须先执行A才能执行B),设计一个并发系统,使得资源利用率较高,任务完成时间较短。
- 算法题:二维矩阵从左上角到右下角的路径数量
三面主要是场景题,刚开始设计会有很多缺陷,面试官会一步步引导
许愿HR面!!!