面试表达
面试时怎么讲
一句话:我围绕「AI 后端中间件(MySQL / Redis / Kafka)」做过从问题拆解、方案设计、工程落地到效果验证的闭环。
追问重点:为什么这么设计、指标怎么验证、失败案例如何定位、上线后怎么观测和回滚。
证据建议:准备 README、架构图、关键代码片段、评测表和 2 个坏例复盘。
AI 应用工程的后端地基:数据真相层、缓存层、异步链路与幂等保障。
本地学习进度
只保存在当前浏览器,不上传服务器。
学习产出
进阶能力,P1。阅读时尽量把知识点转成可演示项目、面试回答和简历证据。
能回答
为什么这是必备项 / 课程目标 / 认知地图
能交付
整理一页项目笔记,记录问题、方案、指标和取舍
下一步
把本篇总结成 90 秒面试讲述
面试表达
一句话:我围绕「AI 后端中间件(MySQL / Redis / Kafka)」做过从问题拆解、方案设计、工程落地到效果验证的闭环。
追问重点:为什么这么设计、指标怎么验证、失败案例如何定位、上线后怎么观测和回滚。
证据建议:准备 README、架构图、关键代码片段、评测表和 2 个坏例复盘。
简历表达
围绕 AI 后端中间件(MySQL / Redis / Kafka) 场景,完成「AI 应用工程的后端地基:数据真相层、缓存层、异步链路与幂等保障。」相关能力建设,沉淀可复用工程方案、测试样本和面试表达材料。
岗位追问常常是:“你不只是调模型,任务怎么落库、怎么重试、怎么不重复扣费、Redis 挂了怎么办?”
本课把中间件补到可画架构、可写表结构、可讲故障。
客户端 → API →(同步短路径 | 异步投递 MQ)
↓
Worker 消费 → 调模型/工具链 → 更新 MySQL 状态
↓
Redis:幂等、限流、热点缓存、短 TTL 结果ai_task(或你命名的表),字段至少包含:task_id, user_id, status, progress, input_ref, output_ref, error_code, retry_count, trace_id, created_at, updated_at, idempotency_key, cost_tokensstatus 枚举与合法迁移。user_id + created_at、status + updated_at 设计索引;写 2 条慢查询优化思路。user_id + request_hash 幂等(TTL 与冲突返回策略)。conversation_id 并发写)。trace_id 从 API 贯穿到 MQ 消费与模型调用日志。task_id,能说明要从哪些存储查链路。task_id → 轮询或 WebSocket 推送(可先 mock)。stale 状态)。status 随意字符串,无法做监控与告警。ai_task 表结构说明 + 状态机图为什么抽出这一节:AI 应用市场从 2025 开始大量 B2B 落地,多租户隔离 + 审计成为招标硬指标,但大多候选人只会写普通后端的权限。
| 层 | 方案 | 强度 | 适用 |
|---|---|---|---|
| 数据库 | 独立数据库每租户一套 | 最高 | 大客户 / 合规 |
| Schema | 共享实例各 schema | 中 | 中型 SaaS |
| Row-level | 共享表,所有查询带 tenant_id + RLS | 基础 | 初期 / 小客户 |
ALTER TABLE ai_task ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_iso ON ai_task
USING (tenant_id = current_setting('app.tid')::uuid);t:{tid}:...,容量配额单独统计;避免共用 SCAN。User → Role(客服/分析师/管理员) → Scope(行为权限) → Tool 白名单
+ Attr(tenant, dept, pii_level)read:doc, write:order, invoke:refund,和 ai-application-security 一致。tools ∩ user.scopes,模型根本看不到越权工具。redact_secret() 中间件。各租户两条线:软限(预警)+ 硬限(打回)。
# Redis 记 token 和 cost
key_tok = f"t:{tid}:tok:{today}"
key_usd = f"t:{tid}:usd:{today}"
pipe.incrby(key_tok, tokens)
pipe.incrbyfloat(key_usd, cost)
pipe.expire(key_tok, 86400 * 35)ai_bill,支持分模型 / 功能粒度。必录字段:
audit_id, trace_id, ts, tenant, user, role, action,
resource, scope, input_hash, output_hash, risk_flags[],
ip, user_agent, approval_ref, result, cost_usd用户 → 网关(trace_id 生成)
→ LLM(模型决定调 delete_user)
→ Tool 层(权限校验 → 需审批)
→ interrupt 暂停(写 checkpoint + 推送审批)
→ 主管点击通过 → resume
→ Tool 实际执行 → 写 audit + 审批 ref每步写一行;任何一步失败,都能用 trace_id 回放。这套是 agent-state-persistence-hitl 中 HITL 的必配。
fallback=true 标记。current_setting 未设置可能导致串租户数据;必须在连接初始化时写入,并在 test fixture 中覆盖此场景。user 字段计数。schema/multi-tenant-rls.sqlmiddleware/tenant_context.py(统一注入 tid)libs/quota.py(软/硬限)docs/audit-log-spec.mdtests/security/cross-tenant.py与 ai-application-security、agent-state-persistence-hitl、backend-system-design-for-ai 互补。