字节跳动实习面经

朝夕光年

1 面 2022-04-14(1h)

  1. 消息队列如何保证可靠。
  2. 消息队列如何实现延时消息。
  3. 死信队列
  4. 项目
  5. 分布式 id 生成方案
  6. OAuth2 原理
  7. 分布式 Session
  8. Cluster 和 哨兵的区别
  9. 算法:一个数组,[2, 3, 1, 5, -1],找到没有出现的最小非负整数(要求没有额外空间以及 O(n) 时间复杂度)。
  10. CSRF 攻击实现:有钓鱼网址,例如邮箱,通过点击附带 token 到网页中。
  11. CSRF 防御

2 面 2022-04-19(56min)

  1. 项目
  2. 为什么不用 Redis 的消息队列而用 RocketMQ
  3. Redis 数据类型
  4. SkipList 和 Hash 的区别
  5. Redis 的集群
  6. 主从集群能扩容吗?
  7. 哨兵集群的选举
  8. 主从集群是强一致性吗?
  9. 如何保证主从集群强一致性?
  10. Cluster 的 Hash 算法
  11. 分布式锁
  12. 如何实现限流
  13. Raft 算法选举
  14. 算法:添加、删除、随机取三个函数,都得 O(1) 复杂度

3 面 2022-04-21(50min)

  1. Url 输入的全过程
  2. DNS 和 HTTP 分别用了哪些协议
  3. HTTP3.0 QUIC,比 TCP 好在哪
  4. QUIC 如何保证可靠
  5. TCP 比 UDP 好在哪
  6. HTTP 如何分包
  7. 一般用 Redis 做什么,有用 Redis 做持久化存储吗?
  8. Zset 数据类型
  9. 项目
  10. RocketMQ 的底层设计
  11. RocketMQ 如何保证高可用
  12. Redis 为什么用单线程
  13. Redis 的吞吐量是多少
  14. 微博短链接的生成方案
  15. 朋友圈功能设计
    • 写扩散,发朋友圈后,将这条朋友圈 id 都扩散到所有朋友的朋友圈列表中
    • 新加好友如何更新朋友圈:添加后拉取新好友的朋友圈
    • 朋友圈下的评论如何设计,如何保证只能看到好友的评论,而看不到其他人的评论
    • 使用什么方式去存储这些数据
  16. Reactor 和 Proactor 的区别
  17. 多路复用,select、poll、epoll
  18. 阻塞和非阻塞
  19. Reactor 哪些线程是阻塞的,哪些是非阻塞的
  20. Linux 的使用程度
  21. Linux 的目录结构,/opt 目录主要是干什么的
  22. 虚拟文件系统(VFS)
  23. 如何看待 Linux 下万物皆文件
  24. 管道技术的底层实现
  25. 实习时间

hr 面 2022-04-21(15min)

  1. 什么时候能实习
  2. 家里情况
  3. 学习情况
  4. 工作地点
updatedupdated2022-06-232022-06-23