计算机工程师面试(压力面试)

cs-engineer-grill
分类编程
作者Alireza Rezvani
许可MIT
评分4.70/5
使用3.6K

/cs:engineer-grill — 跨角色工程强制性问题压力测试

在用户最终确定任何工程决策之前,引导其经历 Matt Pocock 的强制性问题训练。这是将 grill-with-docs 模式(基于权威标准、提供推荐答案、设定否决标准)应用于三个工程角色方向的实践。

$ARGUMENTS

路由协议

1. 检测用户提示词中的方向信号
- 全栈信号: "scaffold" (脚手架), "stack" (技术栈), "Next.js + Postgres", "monorepo", "deploy" (部署), "team size" (团队规模), "budget" (预算), "cadence" (节奏)
- 前端信号: "React", "Next", "Remix", "Vite", "Astro", "bundle" (包体积), "LCP", "INP", "CLS", "a11y", "WCAG", "Tailwind", "design system" (设计系统)
- 后端信号: "API", "REST", "GraphQL", "database" (数据库), "Postgres", "MongoDB", "schema", "migration" (迁移), "QPS", "tenancy" (多租户), "SLO", "Kafka", "queue" (队列), "microservice" (微服务), "monolith" (单体)

2. 如果提供了 --lane <name> 仅执行该方向的 7 个问题。
3. 如果某个方向的信号命中数 ≥ 3: 向用户确认,然后执行该方向的 7 个问题。
4. 如果信号模糊或使用了 --lane all 询问用户:“全栈(关于团队/技术栈/规模的 7 个问题)、前端(关于设备/渲染/包体积/a11y 的 7 个问题),还是后端(关于 QPS/多租户/模式/SLO 的 7 个问题)?或者输入 all 进行全部 21 个问题的测试。”

方向:全栈 (fullstack)

问题存储于 engineering-team/skills/senior-fullstack/references/forcing_questions.md。摘要:

1. 当前团队规模 + 未来 12 个月的人员计划?
2. 部署频率 —— 每个 PR 部署、每日、每周还是每季度?
3. 是面向客户的产品、内部工具还是营销网站?
4. 一年内的 p50 / p99 流量预测?
5. 是根据技术栈招聘,还是对现有团队进行培训?
6. 第一年每月云服务 + SaaS 的预算上限?
7. 三个可验证的成功标准及量化目标?

方向:前端 (frontend)

问题存储于 engineering-team/skills/senior-frontend/references/forcing_questions.md。摘要:

1. 主要设备 + 网络环境(移动端-4G / 桌面端-光纤 / 低端安卓 / 企业内网)?
2. LCP 目标值(单位 ms),以及 INP 和 CLS 的目标?
3. RSC / SPA / SSR / SSG —— 选择哪种并陈述理由?
4. 每个路由的 JS bundle 预算(KB-gzip)?
5. 依赖 SEO 还是有权限墙(auth-walled)?
6. 设计系统的唯一事实来源(Source of Truth)是什么?
7. WCAG 目标等级 + 指定的 a11y 负责人?

方向:后端 (backend)

问题存储于 engineering-team/skills/senior-backend/references/forcing_questions.md。摘要:

1. 读写比 + p99 QPS 预测?
2. 多租户模型 —— 单租户 / 共享 / 隔离?
3. 同步 / 异步 / 事件驱动 —— 默认模式及例外情况?
4. 数据敏感度等级 —— PII / PHI / PCI?
5. 单体 / 模块化单体 / 微服务 —— 基于团队规模的合理性证明?
6. RPO(恢复点目标)+ RTO(恢复时间目标)?
7. SLO(服务水平目标)+ 指定的错误预算(error-budget)消耗者?

执行纪律 (Matt Pocock, MIT, 完整保留自 engineering/grill-me)

1. 每轮仅提一个问题。 严禁打包提问。严禁默认询问“你怎么看?”。
2. 始终提供推荐答案。 格式:“推荐:<答案>,因为 <来自引用标准的单句理由>”。
3. 深度优先遍历。 在开启下一个方向前,必须完成当前方向的所有问题。
4. 揭示否决标准 (Kill Criterion)。 如果用户的回答触发了否决标准,立即停止并解决问题,然后再继续。
5. 记录答案。 写入 /tmp/engineer-grill-<lane>-<date>
.md 以确保对话在压缩后依然保留。

grilling(面试/质询)之后

1. 运行该赛道的决策引擎,并输入七个答案:
- Fullstack $\rightarrow$ python engineering-team/skills/senior-fullstack/scripts/fullstack_decision_engine.py ...
- Frontend $\rightarrow$ python engineering-team/skills/senior-frontend/scripts/frontend_decision_engine.py ...
- Backend $\rightarrow$ python engineering-team/skills/senior-backend/scripts/backend_decision_engine.py ...
2. 呈现匹配的画像(profile)及指定的审批人。
3. 根据能力组合图(composition map)推荐下一个子技能链。

输出预期

  • 每个走完的赛道生成一个 artifact,写入 /tmp/engineer-grill-<lane>-<date>.md
  • 一份最终摘要($\le 250$ 字),总结每个赛道的匹配画像以及三个最高杠杆的后续行动。
  • 绝不要 自动批准技术栈变更、Schema 迁移或架构选择。

相关命令

  • /cs:fullstack-review, /cs:frontend-review, /cs:backend-review —— 单赛道深度审查
  • /karpathy-check —— 提交前的 Karpathy 审查
  • /cs:grill-bizops, /cs:grill-commercial —— 兄弟跨领域质询(BizOps + Commercial v2.8.0)