快手日常一面8.27

一、自我介绍 & 项目经历

  • 自我介绍(实习时长、技术栈、项目亮点)。
  • 项目级别:是学习项目还是实际生产项目?
  • 使用 Hutool 的体验?
  • 使用 Redis Lua脚本时要考虑哪些问题(性能、阻塞、调试难度、CPU 消耗等)?
  • Lua脚本与 Redis 分布式锁相比优劣?为什么选择 Lua?
  • 秒杀设计中如何防止超卖?(入口端、消费端、唯一索引等)。
  • 唯一索引在逻辑删除场景下的缺陷?

二、Redis 相关

  • Redis 存 Lua 脚本的风险点?
  • Redis 如何防止超卖?(库存预扣减 + 用户集合去重)。
  • Redis 存储结构有哪些?
  • 跳表数据结构原理。
  • Redis 字符串底层结构(SDS,动态扩容、二进制安全、长度字段)。
  • Redis 支持带空字符的 key,底层如何实现?
  • 可否用分布式锁替代 Lua?
  • 设计一个 可重入的 Redis 分布式锁(手写/伪代码)。

三、计算机网络

  • I/O 多路复用原理,整体链路如何串起来?(不会)
  • OSI 七层模型:每层作用。
  • TCP 拥塞控制:慢启动、拥塞避免、快重传、快恢复
  • 为什么丢包时要“窗口减半”
  • TCP 丢包如何处理?(超时重传、快速重传、选择确认SACK)
  • 浏览器输入 www.baidu.com 整个流程
  • HTTP 与 HTTPS 区别:TLS 握手过程、安全性代价

四、MySQL

  • MVCC 原理:undo log、read view、可见性判断
  • MySQL 锁分类:库锁、表锁、行锁
  • 悲观锁 & 乐观锁区别
  • 什么时候会命中表锁
  • MySQL 5.6 之前 DDL(加字段)会锁全表,MySQL 8.0 如何优化?(在线 DDL,没听过)
  • B+ 树索引命中链路:从二级索引到回表
  • 数据页 16K、目录槽 + 二分查找机制

五、Spring

  • 循环依赖问题,为什么需要三级缓存?
  • 为什么二级缓存不足以解决循环依赖?
  • 三级缓存工作流程。
  • 三级缓存的缺陷(注入的可能是半成品对象)。

六、其他

  • 算法题:手写 Redis 分布式锁(没A出来,只说了思路,面试官按我思路写了小20min给我演示)
  • 实习时长、可到岗时间、是否有其他 offer。

面试官给的压力非常大,跟之前美团/滴滴的完全不一样,算法题出来人直接傻了,八股和项目拷打也答得很一般,很多点答不出来,以为百分百g了,但是两天后约二面

#日常实习面试##java##后端#
全部评论

相关推荐

评论
2
13
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务