Tadori1zanai 推云科技面试

作者:Tadori1zanai 时间:2026.4.27

注:

  • 回答多数为 AI 生成,仅供参考。
  • 只记录部分面试和部分问题,部分问题暂无回答。

假设有万人级别的学生选课,在开课前需要发送上课提醒,粒度是分钟级别的,如何实现?#

  • 这个问题本质是延迟任务调度问题,可以通过延迟队列实现。
  • 常见方案是使用 Redis ZSet,把提醒时间作为 score,任务内容作为 value。
  • 后台 worker 定期扫描当前时间之前的任务,然后批量发送提醒。
  • 发送阶段可以通过消息队列解耦,实现异步发送和削峰。
  • 可靠性靠任务持久化、失败重试和幂等设计,避免漏发和重复发送。
  • 规模进一步扩大时,可以按时间分片 ZSet、增加 worker 数量并加入限流,降低单点压力。

实际工程里可以按时间分桶,例如每分钟一个 key,降低单个 ZSet 过大的风险。

你认为 AI 编程和人手写代码的本质区别是什么?#

  • AI 编程和人工编程的核心差异在于问题建模和系统决策的责任主体。
  • AI 更擅长在明确需求下生成代码,通常关注局部实现。
  • 工程师需要把模糊需求抽象成问题,并在系统层面做性能、一致性和可维护性权衡。
  • AI 生成代码具有概率性,边界条件和复杂场景需要人工 review 和测试兜底。
  • 实际开发中可以先由人确定设计,再用 AI 辅助生成部分代码,最后由人负责正确性和系统行为。