实操任务与综合面试场景
Redis、缓存与异步任务#Python全栈#第十五阶段#Redis、缓存与异步任务#实操任务与综合面试场景约 1804 字 · 5 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
实操:为题目详情实现 Cache-Aside,包含租户范围和有限 TTL。
追问 怎样编码键、区分缺失与空值、过滤公开字段,并验证缓存命中、过期和 Redis 故障时的行为?
实操:题目编辑后失效相关缓存,并验证并发读取。
追问 怎样构造更新、读取旧值和回填的时序?数据库提交、失效失败和重试如何处理,哪些一致性限制必须明确?
实操:实现一个热门题目缓存重建保护方案。
追问 怎样限制同时回源、检查锁持有者并处理超时?重建失败、锁过期与大量等待请求如何验证?
实操:按当前用户与接口实现带过期的限流。
追问 计数和 TTL 怎样原子配合?怎样测试窗口边界、并发、键增长和 Redis 不可用,向客户端提供什么反馈?
实操:用 Sorted Set 实现学习积分排行榜。
追问 用户唯一性、同分排序、分页和周期重置怎样约定?若积分关系到奖励,怎样保留可信记录与对账依据?
实操:通过 Celery 生成练习报告,接口立即返回任务标识。
追问 怎样保存任务归属、状态和结果位置,提供查询与下载?输入无效、资源已删除和结果过期怎样处理?
场景:任务重试或 Worker 重启后,报告生成两份、邮件发送两次,如何修复?
追问 确认时机、visibility_timeout、幂等记录和外部接口结果怎样核对?为什么一个简单缓存锁不能独自证明永不重复?
场景:数据库保存成功,但任务没有收到;或任务先执行却找不到记录,如何定位?
追问 提交与投递顺序、Broker 失败和 Outbox 分发如何检查?怎样构造失败窗口,验证补发与重复处理?
场景:Redis 内存上升、缓存命中下降,任务又突然积压,如何分层排查?
追问 键类型、TTL、淘汰、队列深度、Worker 吞吐和重试风暴怎样关联?如何判断是共用实例争抢还是独立业务故障?
综合实操:为题库平台增加缓存、限流和异步报告模块。
追问 要求包含题目缓存与编辑失效、请求限流、报告生成与状态查询、周期统计;如何交付键设计、TTL 与降级规则、任务幂等和重试策略、资源隔离、运行说明及故障验证记录?
面试评分参考
每题可按 0~3 分评价:
- 0 分: 无法解释核心行为,缓存键、原子操作或任务处理错误,不能完成基本业务流程。
- 1 分: 能列出 Redis 命令、缓存问题和 Celery API,但缺少生命周期、并发、失败及可靠性边界的理解。
- 2 分: 能实现合理缓存和任务流程,处理缺失、过期、重试及资源清理,并通过样例验证主要结果。
- 3 分: 能分析并发与故障窗口,比较一致性和可靠性方案,控制降级、容量及重复效果,并提供可复现证据。
重点观察:
- 数据与键设计: 是否根据访问模式选择结构,考虑参数、租户、权限、大小和过期。
- 缓存正确性: 是否明确数据源、失效顺序、回填竞态和陈旧窗口,避免把缓存当作天然最新数据。
- 并发边界: 是否区分命令原子、事务、锁租约与业务约束,不把锁当作跨系统万能一致性方案。
- 任务可靠性: 是否理解投递、执行、确认和业务完成的区别,设计幂等、有限重试和结果查询。
- 工程观察: 是否测量缓存与任务的真实收益,核对容量、隔离和版本,并验证重启及故障路径。
使用建议: 分数用于课堂诊断和同组比较,不直接对应薪资或录用结论。优先完成缓存读写失效和简单任务闭环;分布式锁、故障恢复和工作流作为渐进训练,不以背诵所有 Redis 命令或 Celery 配置作为入门要求。
课堂练习与组卷建议
- 基础口试: 数据结构与客户端 3 题、缓存与一致性 4 题、Celery 与任务可靠性 3 题,要求说明具体步骤和失败窗口。
- 缓存练习: 完成 91~92 题,记录命中、过期、编辑失效及并发回填的实际结果。
- 并发练习: 从 93~95 题选 2 题,验证并发、边界时间、权限范围和资源增长,说明近似或弱保证。
- 任务练习: 完成 96 题,在本地使用真实 Broker 与 Worker;直接同步调用或 eager 模式不能独自证明投递和恢复行为。
- 故障练习: 从 97~99 题选 2 题,使用隔离的练习环境模拟 Worker 退出、投递失败或资源不足,记录定位和恢复过程。
- 模拟面试: 基础题 4 题、流程分析 3 题、排错与设计 3 题、综合实操 1 题;建议口试 40~50 分钟,实操 90~120 分钟。
- 验收材料: 项目代码、依赖文件、缓存键表、任务状态与幂等说明、配置示例、启动步骤、性能对照及故障验证记录;注明 Redis、redis-py、Celery 版本,明确淘汰、持久化和确认配置。
下一阶段: WebSocket、消息队列与实时通信,学习连接管理、消息交付、消费确认、顺序、重放和实时业务状态同步。