即刻社招全栈开发一面面经

即刻 · 全栈开发 · 一面 · 2026-03

面试题目

  1. 做一下简单的自我介绍,包括学校、技术栈、开发语言和框架?
  2. 介绍一下你实习期间负责的主要业务模块?
  3. 你在实习中主要负责哪些功能开发?
  4. 你擅长线上 Bug 排查,具体排查过哪些问题?
  5. 你做过哪些慢查询接口优化?
  6. 你使用过哪些大数据组件?
  7. 你之前做的 ETL 数据清洗流程是怎样的?
  8. 为什么选用 Redis 实现抽奖相关功能?
  9. 你使用过哪些 Redis 数据结构,为什么这样选?
  10. 为什么要为不同倍数维护独立奖池?
  11. 如何通过随机数和权重实现抽奖路由?
  12. 为什么用 lpop 拉取令牌来实现抽奖?
  13. 为什么要把抽奖逻辑写在 Lua 脚本里?
  14. Lua 脚本如何保证原子性和并发安全?
  15. 细粒度奖池如何保证概率稳定、防止超发?
  16. 线上出现异常时如何通过插入无效令牌做风控?
  17. 为什么中低价值礼物和高价值礼物要做推送分流?
  18. 中低价值礼物横幅推送,Redis 批处理为什么用 pipeline 而不用 Lua?
  19. pipeline 如何减少 IO、提升性能?
  20. 礼物连击的 Redis Key 是如何设计的?
  21. 为什么用前缀分类 Key,如何缩小扫描范围?
  22. 定时任务扫描频率和数据量大概是多少?
  23. Redis 出现 BigKey 导致 CPU 100% 怎么处理?
  24. 线上 Redis 打满如何第一时间恢复业务?
  25. 如何快速定位 BigKey 来源?
  26. 单个接口异常如何做限流保护?
  27. 你用过 Prometheus + Grafana 监控哪些内容?
  28. 链路追踪中 traceId 如何生成和传递?如果让你设计一个链路追踪器,你会考虑哪些问题?
  29. 你在 K8s 中如何查看日志排查问题?
  30. 你对 Docker、K8s 了解到什么程度?
  31. 你在项目中如何设计熔断降级策略?
  32. 熔断兜底为什么选择返回“未中奖”?
  33. 大量请求打垮下游服务时如何防止级联故障?
  34. 如果让你实现一个简单熔断器,你会怎么设计?
  35. 你主要使用 Java 还是 Go,业务比例大概多少?
  36. 对 Node.js、TS 全栈开发有什么看法?
  37. Redis MQ 和 Kafka 的区别与适用场景?
  38. MySQL 索引设计主要考虑哪些因素?
  39. 为什么离开上一家公司,为什么换工作?
  40. 你更倾向做什么类型的业务,对工作地点有要求吗?

参考解析

  • Redis 抽奖逻辑(Lua/原子性):Lua 脚本在执行过程中会阻塞其他命令,保证了操作的原子性,避免了在高并发下“先判断库存、再扣减”造成的超发问题。
  • BigKey 处理:优先定位(redis-cli —bigkeys 或 scan),处理上通常采用分拆(将一个 BigHash 拆为多个小 Key)、异步清理(unlink)以避免阻塞主线程导致 CPU 100%。
  • 熔断降级:通过滑动窗口统计接口失败率或延迟,超过阈值则断开连接。返回“未中奖”属于兜底策略,能有效防止级联故障,保护下游服务,牺牲部分体验换取系统可用性。
  • 链路追踪(TraceId):基于 ThreadLocal(Java)或 Context(Go)在当前线程/协程内传递;设计时需考虑埋点性能损耗、跨进程/跨语言的协议兼容性以及采样率控制。
  • Redis Pipeline vs Lua:Pipeline 适用于批量读写请求(减少网络 IO RTT),Lua 适用于需要服务端逻辑判断的复杂原子操作(减少多次往返请求且保证原子性)。