MemoFlow 项目面试题库
围绕 MemoFlow 多端架构、Mastra Runtime、HTTP/IPC、Server State、401、可观测性、Monorepo 与 exact-SHA 发布组织的项目题库。
[!info] related notes
MemoFlow 项目面试题库
使用规则
- 先折叠题卡闭卷口述,再展开答案;
题源只描述问题如何进入题库,答案依据单独描述技术正确性;NC-H代表近期公开面经主题交叉出现,不代表公司官方题库;AI-D明确表示 AI 衍生的高价值追问;- 完整知识只维护在相关长期笔记,本页保存面试表达;
- 项目题必须在面试前回动态 evidence index 核验,不临场编数字。
题源定义见 面试题来源、置信度与答案依据;回答方法见 技术面试回答框架。
项目总览
[!question]-
P0MF-001请介绍 MemoFlow。 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答 MemoFlow 是我长期维护的多端个人效能系统,覆盖目标、任务、知识、日程和 AI 协作。它既有 Web,也有 Electron Desktop。前端以 Vue3/TypeScript 为主,后端是 Express + Prisma/PostgreSQL,AI Runtime 收敛到 TypeScript/Mastra。项目真正难点不是功能数量,而是 Web/Desktop 不分叉、Server State 不重复、AI 不能越权直接写业务、以及每次发布能确认所有端对应同一组代码和契约。所以我重点做了 host adapter、共享 contract、AI proposal/approval/execution 边界、并发 401 singleflight、跨服务 trace 和 exact-SHA release。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的代码和决策边界是什么?
- 失败路径和真实限制是什么?
- 哪一项证据能证明已经实现?
[!question]-
P0MF-002为什么长期维护这个项目? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答 它对我来说更像长期工程实验场,而不是一次性作品集。随着 Web、Desktop、AI、同步和发布都进入系统,很多问题只有长期演进才会出现:同一业务在两个 host 漂移、接口语义不一致、token 刷新竞态、release 资产半发布等。这些比“再做一个 Todo 页面”更有学习价值。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的代码和决策边界是什么?
- 失败路径和真实限制是什么?
- 哪一项证据能证明已经实现?
Mastra Runtime / AI 执行边界
[!question]-
P0MF-003为什么 MemoFlow 用 Mastra,而 BodySense 用 LangGraph? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:LangGraph · Interrupt / Resume 生命周期 · BodySense 项目 MOC · MemoFlow 项目 MOC30 秒回答 两个项目的技术环境不同。BodySense 的 AI 核心本来就在 Python 生态,知识处理和 LangGraph/PydanticAI 更自然;MemoFlow 的主要应用层、共享 contracts 和 API 都是 TypeScript,多端产品希望减少跨语言边界,所以把 runtime 收敛到 TypeScript/Mastra 更容易共享类型、上下文和业务接口。选型标准不是哪个框架“更强”,而是 runtime 与现有产品边界的耦合成本。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的代码和决策边界是什么?
- 失败路径和真实限制是什么?
- 哪一项证据能证明已经实现?
[!question]-
P0MF-004Agent Runtime 为什么运行在产品 API 内? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Agent · Agent Runtime · Agentic Workflow Patterns · RESTful API30 秒回答 对 MemoFlow 来说,AI 最终操作的是 Goal/Task/Knowledge 等产品能力。如果 runtime 与产品 API 完全分离,会多一层身份、contract 和网络故障边界。收敛在 TypeScript/API 侧可以直接通过 application port 调业务能力,同时仍然保持“AI 负责理解和 proposal,领域服务负责真正写入”的边界。代价是 API 进程需要隔离长任务、timeout/cancel 和资源消耗。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P0MF-005AI 为什么不能直接写 Goal / Task? 题源:RESUME-H(当前简历 / 项目材料) +AI-D(连续追问补全) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:浏览器 JS Event Loop · 浏览器与 Node.js Event Loop30 秒回答 模型输出只是意图和候选参数,不是授权。即使 JSON schema 合法,也可能语义错误、权限不符、重复执行或被 prompt injection 诱导。MemoFlow 把流程拆成 proposal → approval → execution:模型生成 proposal;需要时用户确认;最终调用正常产品接口,由业务层继续做鉴权、校验、幂等和持久化。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P0MF-006结构化输出已经有 Zod 了,为什么还需要业务校验? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答 Zod 只能证明“结构符合 schema”,例如 title 是 string、deadline 是 date;它不能证明用户有权限修改这个 Goal,也不能证明这个 Task 当前状态允许删除,更不能证明模型没有选错实体。所以要区分 syntax/schema validation、domain validation 和 authorization。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P1MF-007如何避免 proposal 被重复执行? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答
- proposal 有稳定 id。
- approval/execution 是状态机,只允许合法转移。
- execution 使用 idempotency key 或数据库唯一约束。
- 重复请求返回已有结果。
展开要点 / 原始迁移内容
- 工具调用日志与业务写入事务边界清晰。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
Web / Desktop Host 抽象
[!question]-
P0MF-008什么叫 AI Client Port? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答 业务组件依赖一个抽象接口,例如
runAgent() / cancelRun() / approveProposal(),而不是直接调用 fetch 或 Electron ipcRenderer。Web adapter 把这些操作映射到 HTTP/SSE,Desktop adapter 映射到 IPC。这样 proposal、错误码、取消和状态机是业务语义,transport 只是实现细节。回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P0MF-009为什么不直接在组件里判断if (isElectron)? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答 短期方便,长期会让 transport 逻辑散落在 UI:每个组件都重复处理错误、序列化、取消和返回结构,Web/Desktop 很快分叉。Adapter/port 把环境差异收敛到 composition root,业务组件只处理统一结果。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P0MF-010HTTP 与 IPC 最大的差异是什么?为什么还能统一? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答
- HTTP 跨进程/网络,有状态码、headers、序列化、超时/断网。
- IPC 通常本机进程间,transport failure 模型不同,也可能有 Electron security boundary。
- 能统一的是业务 contract:请求 DTO、返回 Result、错误 code、取消语义。
- 不能强行统一所有底层细节:连接状态、网络 retry 等应留在 adapter。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P0MF-011HTTP / IPC 契约一致性怎么测? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答 把 transport adapter 当两个实现,对同一组 contract cases 运行测试:合法输入得到同样业务结果;非法 DTO 都被拒绝;domain error 映射成同样稳定 code;取消和权限语义一致。这样不是测“HTTP 长得像 IPC”,而是测两个 host 对同一业务能力的可观察行为一致。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P0MF-012为什么 TypeScript 类型不能替代 Zod? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:TypeScript 高级类型 · 运行时输出校验30 秒回答 TypeScript 类型在编译后消失,外部 HTTP body、IPC payload、数据库 JSON 都是运行时数据。Zod 在边界处做 runtime parse,防止“编译器相信了,但真实输入不符合”。共享 TS 类型可以从 schema 推导或与 schema 保持单一来源。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
Server State / PowerSync / 多端一致性
[!question]-
P0MF-013Server State 和普通全局状态有什么区别? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:TanStack Query MOC · Server State vs Client State30 秒回答 Server State 的权威在服务器/同步层,本地只是缓存,会有 stale、refetch、并发 mutation、失效和多客户端变化;UI state 则由当前客户端自己拥有,例如侧栏是否展开。把 Server State 复制进 Pinia/Zustand 再手工同步,通常会制造第二份真值。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 谁拥有这份状态的真值?
- 并发 mutation 如何防旧响应覆盖新状态?
- 失效范围过大或过小会怎样?
[!question]-
P0MF-014MemoFlow 如何统一 Web / Desktop 的 Server State 语义? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:TanStack Query MOC · Server State vs Client State · MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答 尽量让两个 host 共用 query key、invalidation、mutation 生命周期和 domain DTO。底层数据来源可以不同,例如 Web 主要 HTTP、Desktop 可能结合 IPC/PowerSync,但业务 feature 不重新发明一套“任务是否 stale、修改成功后哪些列表失效”的规则。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 谁拥有这份状态的真值?
- 并发 mutation 如何防旧响应覆盖新状态?
- 失效范围过大或过小会怎样?
[!question]-
P0MF-015query key 为什么重要? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:TanStack Query MOC · Server State vs Client State30 秒回答 它定义缓存身份和失效边界。例如
['tasks', {goalId, page}]与['task', taskId]表达不同资源。如果 key 设计过粗,一次 mutation 会让大量无关数据 refetch;过细且不一致,会出现更新后某些视图仍显示旧数据。Key 应与资源和筛选参数稳定对应。回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 谁拥有这份状态的真值?
- 并发 mutation 如何防旧响应覆盖新状态?
- 失效范围过大或过小会怎样?
[!question]-
P0MF-016乐观更新怎么做 rollback? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答
- mutation 前取消可能覆盖本地乐观值的 in-flight query。
- snapshot 旧 cache。
- 写入 optimistic value。
- mutation 失败恢复 snapshot 或执行补偿。
展开要点 / 原始迁移内容 5. settled 后根据服务端真值 invalidate/refetch。
并发 mutation 时需要为每个 mutation 保留独立 context/时间戳/id,避免后完成的旧请求覆盖新请求。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P1MF-017PowerSync 是什么位置? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答 把 PowerSync 视为多端本地数据同步/离线能力的一层,而不是替代业务 API 和权限模型。同步解决“数据如何到客户端并最终收敛”,业务 command 仍需要领域规则、授权和服务端真值。具体到当前实现要按真实代码说明哪些实体走 PowerSync,哪些仍走 API。
展开要点 / 原始迁移内容 这题不要超出真实仓库实现。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
并发 401 / Token Refresh
[!question]-
P0MF-018多个请求同时 401 会发生什么? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Token 认证与刷新流程 · Promise · JWT · Token 认证流程30 秒回答 如果每个 interceptor 都独立发 refresh,会形成 refresh storm。更糟的是 refresh token 旋转时,第一个 refresh 成功后旧 refresh token 失效,第二个 refresh 可能失败,把刚恢复的登录态又清掉。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 为什么会出现 refresh storm?
- refresh 请求自己 401 怎么办?
- 多 tab / 多窗口如何协调?
[!question]-
P0MF-019singleflight / Promise lock 怎么解决? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Token 认证与刷新流程 · Promise · async / await30 秒回答 共享 HTTP Client 保存一个
refreshPromise。第一个 401 创建 refresh 请求;后续 401 发现已有 promise,就 await 同一个结果,而不是再次 refresh。成功后更新 token,并让等待请求各自 replay;失败则统一进入登录失效路径。最后清理 lock。展开要点 / 原始迁移内容 伪代码思路:
if (!refreshPromise) { refreshPromise = refreshToken().finally(() => { refreshPromise = null }) } await refreshPromise return retry(originalRequest)真正实现还要防:refresh endpoint 自己进入 interceptor 无限循环、请求不可安全 replay、body stream 已消费等。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 为什么会出现 refresh storm?
- refresh 请求自己 401 怎么办?
- 多 tab / 多窗口如何协调?
[!question]-
P0MF-020为什么这和“互斥锁”不完全一样? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Token 认证与刷新流程 · Promise30 秒回答 目标不是让所有 401 串行各 refresh 一次,而是把同一时刻的相同工作合并成一次,其他调用共享结果,所以更接近 singleflight/request coalescing。锁只是实现手段之一。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 互斥、singleflight 和缓存分别控制什么?
- refresh 失败时等待中的请求怎样统一结束?
- 怎样证明整个刷新窗口只发出一次 refresh?
[!question]-
P1MF-021多 Tab 怎么办? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Token 认证与刷新流程 · 浏览器多上下文状态30 秒回答 单页面内 Promise lock 只能管一个 JS context。多 tab 可以结合 BroadcastChannel、SharedWorker 或服务端 refresh token rotation 设计减少竞态;最重要的是服务端必须正确处理 token family / replay,不能把安全完全寄托在前端锁上。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 单个 JS context 的 Promise 为什么管不到其他 tab?
- BroadcastChannel 失效时服务端怎样兜底?
- Refresh Token Rotation 如何识别 replay?
可观测性与失败语义
[!question]-
P0MF-022requestId 和 traceId 有什么区别? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:多服务分布式追踪 · MemoFlow 多端 AI 应用架构30 秒回答 requestId 常对应一次入口请求;traceId 用来关联一次跨服务/跨 span 的完整调用链。实际实现可以让入口 requestId 同时作为 trace seed,也可以分别维护。关键是 Web/Desktop → API → AI Runtime → 下游模型/DB 能把关联字段继续传下去。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P0MF-023为什么 SSE 结束也要记录状态? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:前端流式响应模式 · Agent Runtime30 秒回答 SSE 不是“连接关了就等于成功”。连接可能因用户取消、代理断开、模型失败、服务器 crash 或正常 complete 结束。Run 必须有独立 lifecycle,并在 final event/持久化中明确 completed / failed / cancelled / interrupted,否则线上看到“流断了”无法知道业务结果。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 一次 reader.read 为什么不等于一个 event?
- 断线后如何恢复且不重复渲染?
- Run 的 durable state 与连接状态如何分开?
[!question]-
P0MF-024为什么客户端只接收稳定错误码? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:稳定 API 错误模型 · MemoFlow 多端 AI 应用架构30 秒回答 内部异常文本可能包含 SQL、路径、provider 信息,也会随实现变化。客户端真正需要的是稳定可分支的 domain/application code,例如
AUTH_EXPIRED、RUN_CANCELLED;内部日志保留 stack、cause、requestId。这样既避免泄露,也防 UI 绑定某个库的 error message。回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P1MF-025logs、metrics、traces 怎么分工? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答
- Logs:离散事件细节,适合查单次故障。
- Metrics:聚合趋势,如 error rate、latency、queue depth。
- Traces:跨组件调用链和耗时。
- 三者通过 trace/request id 关联更有价值。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
Monorepo / Dependency Boundary
[!question]-
P0MF-026为什么用 Nx / pnpm Monorepo? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查共享契约、依赖边界、任务图和 CI 收益是否真实。 相关知识:Nx + pnpm Monorepo · Monorepo 架构30 秒回答 项目有 Web、Desktop、API、共享领域包和 contracts,同仓能让一次业务改动跨包原子提交,pnpm workspace 管依赖,Nx 用 task graph 统一 lint/typecheck/test/build 并根据依赖关系执行。价值是共享和验证,不是“Monorepo 看起来更工程化”。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P0MF-027Monorepo 最大风险? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查共享契约、依赖边界、任务图和 CI 收益是否真实。 相关知识:Nx + pnpm Monorepo · Monorepo 架构30 秒回答
- 依赖边界失控,任何 package 随便 import 任何东西。
- CI 越来越慢。
- 根配置耦合所有应用。
- shared package 变成“垃圾桶”。
展开要点 / 原始迁移内容
应对:明确 domain/application/infra/host 层,lint/import boundary,affected tasks,稳定 contracts。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P1MF-028composition root 是什么? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查共享契约、依赖边界、任务图和 CI 收益是否真实。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答 真正把抽象接口与基础设施实现装配到一起的位置。例如 Web host 注入 HTTP adapter,Desktop host 注入 IPC adapter。业务 feature 只依赖 port,不应该自己 new PrismaClient、直接读 Electron API 或模型 SDK。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P1MF-029为什么要做 import/surface checks? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查共享契约、依赖边界、任务图和 CI 收益是否真实。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答 架构规则只写在文档里会慢慢失效。CI 可以检查业务包不能 import host/infra 包、公开 export surface 不能泄露内部实现,把“依赖方向”变成机器可验证的约束。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
Release / CI/CD
[!question]-
P0MF-030什么是 exact-SHA release? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:CI/CD MOC30 秒回答 Release 的源码 commit SHA 是唯一锚点。CI、tag、Desktop 安装包、Docker image、manifest 都必须能追溯到同一个 SHA。这样避免“PR 合并的是 A,打包时 main 又到了 B,Docker 用 latest C”的半发布状态。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 产物如何追溯到唯一 commit?
- 数据库 migration 为什么限制自动回滚?
- 健康检查通过是否就等于发布成功?
[!question]-
P0MF-031为什么 Release PR 与真正发布分开? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:CI/CD MOC30 秒回答 Release PR 负责版本/changelog 变更;合并后还必须验证 exact SHA 的 CI 通过,才能创建 tag/draft、构建资产并做 postflight。版本号准备成功不代表产物已经完整可发布。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 产物如何追溯到唯一 commit?
- 数据库 migration 为什么限制自动回滚?
- 健康检查通过是否就等于发布成功?
[!question]-
P0MF-032Draft Release 有什么价值? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:CI/CD MOC30 秒回答 多资产构建可能不同步。先 draft 可以上传 Desktop 安装包、manifest 等并校验完整性,只有全部 postflight 通过后再公开,避免用户看到只有一半资产的 Release。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 产物如何追溯到唯一 commit?
- 数据库 migration 为什么限制自动回滚?
- 健康检查通过是否就等于发布成功?
[!question]-
P0MF-033Docker image tag 为什么不能只用latest? 题源:RESUME-H(当前简历 / 项目材料) +AI-D(连续追问补全) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Docker30 秒回答
latest是可变指针,不能证明当前服务器跑的到底是哪次构建。应保留 commit SHA / digest 作为不可变标识,环境 tag 只能作为辅助别名。回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 产物如何追溯到唯一 commit?
- 数据库 migration 为什么限制自动回滚?
- 健康检查通过是否就等于发布成功?
[!question]-
P1MF-034如果 Desktop 构建成功但 Docker 构建失败怎么办? 题源:RESUME-H(当前简历 / 项目材料) +AI-D(连续追问补全) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Docker · STAR 行为题结构30 秒回答 不公开整个 release,保留 draft 和失败证据,修复后对明确 SHA 重新走完整门禁;不能因为一个平台成功就让版本处于半公开状态,除非产品明确支持独立版本线。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 产物如何追溯到唯一 commit?
- 数据库 migration 为什么限制自动回滚?
- 健康检查通过是否就等于发布成功?
Electron / Desktop
[!question]-
P0MF-035Electron main / renderer / preload 分别是什么? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答
- main:Node/Electron 主进程,窗口生命周期和系统能力。
- renderer:网页渲染进程,UI。
- preload:在隔离环境里通过 contextBridge 暴露最小安全 API。 安全原则:关闭不必要的 Node integration,开启 context isolation,IPC 做 channel 白名单和 payload validation。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P0MF-036为什么 renderer 不应该直接拥有全部 Node 权限? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答 Renderer 会处理远端/用户内容,一旦出现 XSS,Node 权限会把普通 Web 漏洞升级成本地任意文件/命令能力。Electron 安全的核心是最小权限边界,把系统能力限制在 preload/main 的明确接口。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P1MF-037Web 与 Desktop 共用 UI 时要避免什么? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答 不要让共享组件直接访问
window.electron。共享 feature 依赖抽象 service,host 在 composition root 注入。否则测试和 Web 构建都被 Desktop 环境污染。回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
AI 工程化追问
[!question]-
P0MF-038AI 工作流失败如何分类? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:STAR 行为题结构30 秒回答 至少分:
展开要点 / 原始迁移内容
- transport/network;
- auth/permission;
- model provider timeout/rate limit;
- structured-output parse;
- tool execution;
- domain validation;
- cancellation;
- persistence/conflict。
不同类的 retry、用户提示和告警策略不同。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P0MF-039模型调用什么时候可以自动重试? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答 只对可判定为 transient 的失败,例如部分 timeout/429/5xx;并使用有限次数 + exponential backoff + jitter。执行有副作用的工具不能因为模型调用层重试就重复执行,必须有 idempotency。validation failure 更适合修正 prompt/schema 或让模型 repair,而不是无限 retry。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
[!question]-
P1MF-040怎么做模型降级? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+KB考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构30 秒回答 先定义能力等级和业务 SLO,而不是“失败就换便宜模型”。可以按任务类型路由主模型/备用模型;fallback 要保留 trace、模型版本、原因,并保证结构化输出契约一致。对于高风险任务,宁可 fail closed,也不一定适合自动换弱模型。
回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。
继续追问
- 你个人负责的边界是什么?
- 当前实现的失败路径和限制是什么?
- 哪段代码、测试或 ADR 可以证明?
简历最高风险证据题
[!question]-
P0MF-S01MemoFlow 中 Redis 和 PowerSync 当前各自做什么? 题源:RESUME-H(最高风险 Claim) 答案依据:PROJECT-E2/E3(必须面试前重新核验) 考察意图:检查列出的基础设施是否有真实职责与失败策略。 相关知识:MemoFlow 项目 MOC · Redis30 秒回答 先以当前代码回答:PowerSync 如果承担离线/同步,要指出具体实体、同步规则和服务端权威;Redis 如果用于缓存、会话、队列或限流,要指出调用路径、key/TTL 和失效策略。任何未在主链路使用的依赖都不能用“未来可能”包装成已实现。
展开要点 同步层、业务 API 和 Agent Runtime state 是不同问题:PowerSync 不自动提供领域授权,Redis 也不应成为无法重建的业务真值。
继续追问
- PowerSync 冲突如何收敛?
- Redis 故障是否影响写入?
- 哪些实体仍只走 API?
覆盖说明
本页由 11-project-memoflow.md 中的 40 道编号题全量迁移,并从近期观察层去重补充 1 道独立高价值题,共 41 道;每题包含题源、答案依据、考察意图、知识链接和追问。近期题目趋势另由 题源注册表 管理,避免再次维护一套重复答案。