字节跳动实习面经
681
2 分钟
朝夕光年
1 面 2022-04-14(1h)
- 消息队列如何保证可靠。
- 消息队列如何实现延时消息。
- 死信队列
- 项目
- 分布式 id 生成方案
- OAuth2 原理
- 分布式 Session
- Cluster 和 哨兵的区别
- 算法:一个数组,[2, 3, 1, 5, -1],找到没有出现的最小非负整数(要求没有额外空间以及 O(n) 时间复杂度)。
- CSRF 攻击实现:有钓鱼网址,例如邮箱,通过点击附带 token 到网页中。
- CSRF 防御
2 面 2022-04-19(56min)
- 项目
- 为什么不用 Redis 的消息队列而用 RocketMQ
- Redis 数据类型
- SkipList 和 Hash 的区别
- Redis 的集群
- 主从集群能扩容吗?
- 哨兵集群的选举
- 主从集群是强一致性吗?
- 如何保证主从集群强一致性?
- Cluster 的 Hash 算法
- 分布式锁
- 如何实现限流
- Raft 算法选举
- 算法:添加、删除、随机取三个函数,都得 O(1) 复杂度
3 面 2022-04-21(50min)
- Url 输入的全过程
- DNS 和 HTTP 分别用了哪些协议
- HTTP3.0 QUIC,比 TCP 好在哪
- QUIC 如何保证可靠
- TCP 比 UDP 好在哪
- HTTP 如何分包
- 一般用 Redis 做什么,有用 Redis 做持久化存储吗?
- Zset 数据类型
- 项目
- RocketMQ 的底层设计
- RocketMQ 如何保证高可用
- Redis 为什么用单线程
- Redis 的吞吐量是多少
- 微博短链接的生成方案
- 朋友圈功能设计
- 写扩散,发朋友圈后,将这条朋友圈 id 都扩散到所有朋友的朋友圈列表中
- 新加好友如何更新朋友圈:添加后拉取新好友的朋友圈
- 朋友圈下的评论如何设计,如何保证只能看到好友的评论,而看不到其他人的评论
- 使用什么方式去存储这些数据
- Reactor 和 Proactor 的区别
- 多路复用,select、poll、epoll
- 阻塞和非阻塞
- Reactor 哪些线程是阻塞的,哪些是非阻塞的
- Linux 的使用程度
- Linux 的目录结构,/opt 目录主要是干什么的
- 虚拟文件系统(VFS)
- 如何看待 Linux 下万物皆文件
- 管道技术的底层实现
- 实习时间
hr 面 2022-04-21(15min)
- 什么时候能实习
- 家里情况
- 学习情况
- 工作地点