云阁科技(Evose)前端面试面经

发布于 2026-11-13 00:00 1947 字 10 min read

hainoir avatar

hainoir

记录 React、Vue、TypeScript、算法与 AI 工程实践,以及值得复盘的项目问题。

  1. 至今

    超星

    前端研发工程师

  2. 至

    好未来

    硬件运维工程师

首页 周刊 时间线 关于 歌单
一次 Agent 应用方向前端面试复盘,涵盖项目表达、AI 开发工作流、RAG 与 SSE,以及 React 和 Vue 基础。

2026 年 11 月 10 日线上面试,岗位是前端开发工程师(Agent 应用方向,初中级),约 28 分钟。结果未当场告知。以下是根据录音整理的提问、现场反馈和事后复盘;“下次怎么讲”是复盘后的表达,不代表现场原话。

1. 对方透露的信息

面试官介绍,他们在做 ToB 产品 Evose,让企业接入 AI、搭建工作流。平台提供 Agent、Workflow、Chat Flow、知识库、工具和 Skill,用来组配和解决企业实际问题。如果入职,主要参与这个 AI 产品的开发。

公司对 AI 工具的使用比较开放,面试官提到可以报销 Codex 等工具的订阅和额度。

面试官的核心反馈是:用 AI 没问题,但必须把基础和原理搞清楚,才能指挥它。要理解 LLM、Skill、MCP、harness 如何工作,知道 AI 写了什么,并且能自己做决策。

2. 问了什么(按现场顺序)

  1. 自我介绍,大约 2 到 3 分钟。
  2. 许昌职业技术学院管理系统:项目做什么,负责哪些模块。
  3. 它和“群”有什么关系?解决什么问题,有哪些功能。
  4. 数据源是怎么来的。
  5. 从做过的项目里挑一个最能代表真实水平的,讲遇到的问题、解决办法和心得。
  6. 借助 AI 开发功能时,怎么搭建、打理项目的 harness,让 AI 更快实现目标。
  7. 项目里的 AGENTS.md 有什么作用。
  8. 现在做 AI 开发常用什么工具;有没有用过 Claude Code。
  9. 用 Codex 时,它怎么知道要用某个 Skill,上下文是怎么载入的。
  10. 有没有自己接过 LLM,在页面上做简单的对话和模型回复。
  11. 前端对接模型时怎么发请求、后端返回什么、怎么渲染;有没有用 SSE。
  12. Vue 和 React 最大的不同;useState 是做什么的、为什么需要;Vue 的双向绑定和 v-model。
  13. 反问:会接触什么业务、AI 工具怎么支持、后续学习建议。

3. 现场回答与复盘

开场

现场自我介绍偏短,2 到 3 分钟几乎只讲了实习做的专业群和低代码表单,社团平台和校园 RAG 是后来被追问才讲到的。专业群讲成了能走完选专业、审核、出培养方案,但没说清它尚未交付;国际化只说接触过,没说已经搁置。

下次开场可以先讲社团平台的权限和复杂交互,再讲校园 RAG 的知识库问答和来源展示,最后补充 ToB 低代码和复杂表单。项目状态要主动说明:专业群未交付,国际化搁置,AI 字段已提交但未使用。不能把实习和项目经历合起来说成两年工作经验。

许昌专业群

面试官两次打断,是因为我没有先讲背景、问题和功能。后来补充的内容是:给学校老师提供专业群搭建能力;在页面上选择负责的专业和领域,搭建专业流程,经管理员审核后生成培养方案。数据由第三方提供,后端定期拉取并同步到自己的数据库,再通过接口给前端。整个前端由我负责。

下次先按“背景、要解决什么、有哪些功能、我负责哪块”讲完整,再补一句这套系统尚未交付,不能说成已经上线。

社团平台(代表作)

现场讲了早期把数据交互集中在一个 Hook 上,交互要等两三秒,后来拆成五六个 Hook;也讲了刷新后按钮卡住和锁有关。但锁的机制说偏了,表现也不该说成白屏十几秒。

准确的说法是:登录回调还持有 lock:sb-127-auth-token,同时又要读取 session,形成了自己等待自己的死锁。修复时让回调先返回,等锁释放后再同步。实际表现是刷新后按钮假死。权限可以讲 RLS / RPC;签到只能校验身份和时间,客户端坐标仍可伪造。Expo 三屏尚未上线,不能讲成已上线功能。

下次先把背景、负责部分和一条真实踩坑讲完整,再提 AI 在定位或验证中起了什么作用。

AGENTS.md、harness、Skill

面试官问的是 AGENTS.md,现场只答了“约束不要乱写 any”,太窄。它在社团仓库里承载项目约定和审查规则,让生成代码按约定接受检查。

harness 和“Codex 怎么载入 Skill”是两道不同的问题。前者可以从项目约定、检查流程和工具边界讲;后者是可复用的操作说明由工具按规则载入上下文。没弄清楚的具体环节应如实说明,不靠模糊术语填空。

工具使用上,可以如实说目前 Codex 用得最多,Claude Code 试用过。重点应放在如何核验生成代码,而不只是列工具名字。

校园 RAG、模型对接与 SSE

现场真正的问题,是把主搜索和后来的 Agent 功能混成一句“没做 SSE”,还把模型用途和后端职责讲混了。

准确链路是:前端用 Next.js;主搜索请求 /api/search,等独立 search-service 返回完整 JSON 再渲染。检索、入库和混合检索(关键词加向量)都在这个服务里。可选的 LLM 补全是一次 Chat Completions,没有开启 stream,所以主搜索确实是等完整结果生成后显示。

项目里也有 SSE,但用于后来的 Agent 功能:/api/agent 返回 text/event-stream,前端通过 EventSource 接收检索、工具和整段答案等步骤事件,并非逐字输出 token。被问怎么发请求、后端返回什么时,先讲主搜索;被问到 SSE,再单独讲 Agent 这条链。千问三在仓库里用于 embedding / rerank,聊天模型由 LLM_MODEL 配置,不能说成接了千问三做流式输出。

还要准备三种情况:证据足够时返回答案和来源;证据不足时拒答或返回空结果,不编造;search-service 故障时明确提示检索失败。离线曾用 54 条黄金查询看 Recall@10、MRR、nDCG@10,但这个小集不能代表线上效果。检索指标好不等于答案正确;Agent 连接断开也不等于回答成功。

选择 Next.js 是为了在同一仓库里用 TypeScript 写页面和 BFF,把密钥与鉴权留在服务端,方便部署。长任务和检索放在独立 search-service。Vite 也能做交互端,Next.js 不是唯一选择,更不是因为主搜索必须流式出字。

React / Vue 基础

现场说 useState 是为了避免直接更新页面造成刷新和性能开销,这个解释不准确。useState 用来保存组件状态,调用 setter 后触发重新渲染。Vue 和 React 都能做组件化;被问到双向绑定时,对应 Vue 的 v-model。做过低代码表单,不宜说自己没用过 v-model。

4. 下次的答题顺序

项目题按“背景、要解决的问题、功能、我负责的部分、一个真实的坑”来讲。先解释机制,再说 AI 如何帮助定位或验证。

开场不能只讲实习。代表作优先社团平台或校园 RAG,不要还没讲完项目就把话题转成“我很会用 AI”。

反问可以围绕三点:入职后具体做 Evose 的哪一层;工具和模型额度如何支持;根据刚才的表现,最该先补哪块基础。

本文作者:hainoir · CC BY-NC-SA 4.0

喜欢的话,留下你的评论吧~

评论加载中…

相关文章