超超哥AI云计算超哥讲AI 出品

社群入口

AI 超哥 Codex 副业群

扫码加入群聊,一起交流 AI、Codex 与副业实践。

原图注明二维码于10月20日前有效;若提示过期或无法入群,请等待更新二维码。

AI 超哥 Codex 副业群入群二维码在新窗口打开原图

实操任务与综合面试场景

MySQL、SQLAlchemy 与数据库设计#Python全栈#第十四阶段#MySQL、SQLAlchemy 与数据库设计#实操任务与综合面试场景约 1871 字 · 5 分钟阅读
追问显示
点击任意追问卡片可收起 / 展开

实操:设计用户、题目、分类、标签和练习记录的数据库,并映射为 SQLAlchemy 模型。

追问 怎样提交关系图、字段说明、唯一约束、外键与索引?一位用户多次作答和每题仅一条进度记录应如何区分建模?

实操:编写按用户统计练习次数、最近练习时间和完成题数的 SQL。

追问 未练习用户、重复作答、空值与时间相同时如何处理?怎样用手算样例核对关联和计数语义?

实操:为题目列表实现分类筛选、稳定排序和分页,并减少关联查询。

追问 怎样记录 SQL、执行计划、查询数量与返回结果?页码与游标两种方案分别怎样说明限制?

场景:服务返回创建成功,重启后记录却不存在,如何排查?

追问 add、flush、commit、异常回滚、连接数据库与响应时机怎样逐一核对?为什么日志里出现 INSERT 不能独自证明提交成功?

场景:插入重复记录后,接下来的查询也报事务异常,如何处理?

追问 怎样确认唯一约束、异常捕获与 Session 回滚?如何提供稳定业务错误,并保证会话未被其他请求继续共用?

实操:模拟两个连接同时竞争最后一个课程名额,保证只能有一个成功。

追问 条件更新、锁定读或版本号方案如何选择?怎样构造同时提交、失败回滚和重试样例,核对最终库存与报名记录?

场景:上线后接口逐渐变慢,最终报连接池超时,如何定位?

追问 会话泄漏、长事务、外部等待和池容量怎样区分?扩池为什么可能只是把问题推到数据库连接上限?

场景:异步接口查询完成,但构造响应时触发 MissingGreenlet 或 DetachedInstanceError,如何修复?

追问 关系加载、属性过期、会话生命周期与输出模型分别怎样核对?怎样预加载并在明确边界转换数据?

实操:为已有题目表增加发布状态和组合索引,并验证升级过程。

追问 怎样审核 Alembic 脚本、处理旧数据、验证新旧应用兼容,并说明回退能恢复哪些内容、不能恢复哪些内容?

综合实操:把题库 API 的演示存储替换为 MySQL 与 SQLAlchemy 数据层。

追问 要求支持查询分页、题目及标签编辑、练习记录和归属校验;如何交付模型、迁移、会话管理、事务边界、初始化说明和验证记录,并展示唯一冲突、并发写入、关联查询与失败回滚?

面试评分参考

每题可按 0~3 分评价:

  • 0 分: 无法解释核心概念,SQL 结果、事务或会话使用错误,不能完成基本持久化。
  • 1 分: 能列出 SQL、索引和 ORM API,但缺少约束、查询语义、执行时机和失败处理的理解。
  • 2 分: 能设计合理表结构、编写正确查询、组织事务与会话,并处理常见冲突和资源清理。
  • 3 分: 能分析并发顺序与执行计划,比较索引和加载策略,控制迁移兼容性,并提供可复现的正确性与性能证据。

重点观察:

  1. 建模与约束: 是否理解实体、关系、NULL、唯一性和归属,能用数据库约束支撑并发正确性。
  2. 查询语义: 是否避免关联重复、统计错算和不稳定分页,能用具体样例证明结果正确。
  3. 事务与锁: 是否区分读写方式和隔离条件,明确失败、重试及外部副作用的边界。
  4. ORM 生命周期: 是否区分构造对象、flush、commit、过期和 close,避免隐式查询与并发共享会话。
  5. 交付与排错: 是否审核迁移、管理连接并基于日志和计划定位问题,说明目标数据库与实验条件。

使用建议: 分数用于课堂诊断和同组比较,不直接对应薪资或录用结论。优先掌握 CRUD、约束、分页和事务闭环;锁细节、异步加载和在线迁移作为渐进训练,不以背诵全部数据库内部实现作为入门要求。

课堂练习与组卷建议

  • 基础口试: 建模与类型 3 题、SQL 与索引 4 题、事务与 ORM 3 题,要求结合表结构和执行顺序回答。
  • 建模练习: 完成 91 题,提交关系图、DDL、模型与迁移,使用重复、空值和关联删除样例验证约束。
  • 查询练习: 完成 92~93 题,准备无记录、重复作答、多标签与相同时间数据,核对结果和分页语义。
  • 并发练习: 完成 96 题,使用隔离的练习数据库与独立连接,记录事务操作顺序和最终业务结果。
  • 故障练习: 从 94~95、97~98 题选 2 题,提交最小复现、SQL/事务记录、原因和回归验证。
  • 迁移练习: 完成 99 题,在空数据库与已有样例数据中分别执行,说明备份、兼容和失败处理方案。
  • 模拟面试: 基础题 4 题、查询或代码分析 3 题、排错与并发设计 3 题、综合实操 1 题;建议口试 40~50 分钟,实操 90~120 分钟。
  • 验收材料: 项目代码、数据库关系图、迁移与初始化脚本、配置示例、查询计划、关键验证及性能对照记录;注明版本、隔离级别、字符集、排序规则与数据规模,不交付真实凭据和业务数据。

下一阶段: Redis、缓存与异步任务,学习缓存模型、一致性、过期策略、限流与任务队列的业务应用。