说明:本文根据一面沟通纪要整理,角色已匿名化为“面试官 / 候选人”。目标是把过程型记录转成可复习的面试题清单。
面试体验
- HR 和面试官都非常好,整体沟通体验顺畅。
- HR 非常积极推动流程,反馈及时、对接清晰。
- 面试官很擅长提问,也给我提供了有价值的改进建议。
一、面试总体结论
- 候选人前端编码能力有基础,但“项目完成度”和“核心原理理解深度”不足。
- 面试官核心反馈是两点:项目要做完整、基础概念要讲透。
- 重点改进方向是聚焦一个主项目(AI 对话项目),补齐后端、持久化和知识库链路。
二、项目深挖题(deep SCAN / easy meeting)
1) 你这个 AI 对话项目的完整架构是什么?
- 当场暴露点:候选人能描述 UI 分区,但后端链路和数据闭环不清晰。
- 面试官关注点:是否具备从前端到后端再到模型服务的完整设计能力。
- 标准回答要点:前端负责交互和状态展示,后端负责鉴权、会话管理、模型转发、审计日志,数据库负责持久化。
- 改进动作:补一张架构图,明确“浏览器 -> 后端 API -> LLM Provider -> 数据库/向量库”。
2) 聊天请求为什么不应该由前端直接请求大模型?
- 当场暴露点:候选人提到前端发请求,未充分说明风险。
- 面试官关注点:安全与工程边界意识。
- 标准回答要点:前端直连会暴露密钥、难做限流和审计,且跨域与风控不可控;应由后端统一代理。
- 改进动作:在项目中实现后端转发层和统一错误处理。
3) 你说做了知识库,完整链路落地到哪一步?
- 当场暴露点:仅完成导入与部分 UI,Embedding 检索和向量库未真正接通。
- 面试官关注点:是否“真做过”而不是“只做展示层”。
- 标准回答要点:文档清洗 -> 切分 -> 向量化 -> 入库 -> 召回 -> 重排 -> 拼接上下文 -> 生成回答。
- 改进动作:先交付最小可用链路,至少做到“导入一批文档后可稳定召回”。
4) 会话与知识数据为什么不能长期只放浏览器本地?
- 当场暴露点:当前数据主要在浏览器本地,删除记录即丢失。
- 面试官关注点:数据可靠性、可迁移性和多端一致性。
- 标准回答要点:本地存储适合缓存,不适合权威数据;权威数据应在后端数据库持久化。
- 改进动作:引入后端存储模型,至少保留用户、会话、消息、知识文档四张核心表。
5) 流式输出场景里,如何避免页面高频刷新卡顿?
- 当场暴露点:候选人未给出可执行方案。
- 面试官关注点:对 React 渲染机制和性能优化是否理解。
- 标准回答要点:使用缓冲区聚合 token,按节流频率批量更新 state;拆分组件减少无关重渲染。
- 改进动作:实现“缓冲 + 定时 flush(如 16~50ms)”并用 profiler 验证渲染次数。
6) 你用了 Clerk,能讲清楚鉴权链路吗?
- 当场暴露点:知道“能登录”,但对 token 生命周期、服务端校验说明不足。
- 面试官关注点:是否只会接 SDK,还是能讲清鉴权边界。
- 标准回答要点:前端获取会话态,后端验证 token,服务端做授权判断并记录审计。
- 改进动作:梳理一页鉴权流程文档,包含登录、续期、登出、失效处理。
7) 你对工具调用、MCP 的理解和项目落地点是什么?
- 当场暴露点:概念知道得少,难解释接入原理。
- 面试官关注点:AI 应用工程化能力,不只是调用 chat 接口。
- 标准回答要点:工具调用是模型按 schema 触发外部能力,MCP 是工具能力标准化接入协议。
- 改进动作:做一个最小 demo,至少支持“模型触发一个查询工具并返回结构化结果”。
8) easy meeting 项目当前可证明的完成度是什么?
- 当场暴露点:音视频会议关键能力未跑通,亮点缺少真实数据支撑。
- 面试官关注点:项目真实性与可验证性。
- 标准回答要点:明确“已完成 / 未完成”边界,给出可复现实验数据(延迟、成功率、丢包表现)。
- 改进动作:阶段性降级目标,先跑通最小 P2P 通话链路再谈优化。
三、前端与工程基础题
9) 什么是跨域?为什么浏览器要限制跨域?
- 当场暴露点:能说部分解决方案,但边界不够完整。
- 面试官关注点:基础原理是否扎实。
- 标准回答要点:同源策略限制协议/域名/端口不同的请求读取,目的是隔离站点上下文、防止恶意访问。
- 改进动作:补全 CORS 预检、简单请求、凭证请求三个场景。
10) MVVM 为什么存在?解决了什么问题?
- 当场暴露点:只记住名词,讲不出设计动机。
- 面试官关注点:架构理解而非背术语。
- 标准回答要点:MVVM 通过 ViewModel 把视图与业务状态解耦,提升可维护性、可测试性和状态一致性。
- 改进动作:用自己的项目举一个“状态驱动 UI”的具体例子。
11) 事件循环模型你怎么解释?
- 当场暴露点:简历写“熟悉”,但现场难以完整说明。
- 面试官关注点:JS 运行时核心基础。
- 标准回答要点:同步栈先执行,异步任务入队;每轮循环先清空微任务,再取宏任务执行。
- 改进动作:准备 2 个常见输出题,确保能解释执行顺序原因。
12) Node.js 与浏览器事件循环有什么差异?
- 当场暴露点:只记概念,缺少对 Node 阶段模型理解。
- 面试官关注点:全栈岗位对运行时差异的把握。
- 标准回答要点:Node 有 timers、poll、check 等阶段;浏览器更强调 task/microtask 与渲染时机。
- 改进动作:补充一页“浏览器 vs Node 事件循环对照笔记”。
四、数据结构与算法题
13) 链表和数组(列表)怎么对比?
- 当场暴露点:能说随机访问差异,但实现细节表达不完整。
- 面试官关注点:数据结构选择能力。
- 标准回答要点:数组随机访问 O(1),中间插删成本高;链表插删灵活,但随机访问 O(n)。
- 改进动作:手写单链表节点定义和插入/删除伪代码。
14) 什么是树?二叉树最基础概念有哪些?
- 当场暴露点:仅停留在“树的概念”,二叉树细节较弱。
- 面试官关注点:基础广度与深度。
- 标准回答要点:二叉树每个节点最多两个子节点,常考遍历、深度、平衡与搜索树性质。
- 改进动作:准备前序/中序/后序遍历口述版。
15) 快速排序原理怎么讲?
- 当场暴露点:方向大致正确,但步骤不够细。
- 面试官关注点:是否能从“会背”到“能实现”。
- 标准回答要点:选基准值,分区后递归处理左右区间,平均复杂度 O(n log n)。
- 改进动作:手写一次分区函数,并解释最坏复杂度来源。
五、协作与经历题
16) 你在多人协作项目里具体做了什么?
- 当场暴露点:流程有提到,但个人产出可量化程度不足。
- 面试官关注点:真实协作贡献,而非“旁观参与”。
- 标准回答要点:说明负责模块、提交记录、PR 数量、联调问题与结果。
- 改进动作:整理一份“协作项目贡献清单”(功能、提交、结果)。
17) 你如何组织团队协作流程?
- 当场暴露点:提到群沟通、分支、PR,但缺少节奏和质量机制。
- 面试官关注点:工程协作习惯。
- 标准回答要点:需求拆分、分支规范、代码评审、联调验收、回归复盘。
- 改进动作:沉淀自己的轻量协作模板(Issue -> Branch -> PR -> Review -> Merge)。
六、本场高频追问清单(背诵版)
- 你的项目里,哪些功能是“已上线可用”,哪些是“仅 UI 未打通”?
- 为什么前端不应该直连 LLM API?
- RAG 完整链路每一步做什么?
- Embedding 不接向量库会有什么后果?
- React 流式输出如何做性能优化?
- MVVM 的设计动机是什么?
- 事件循环中微任务和宏任务执行顺序是什么?
- 链表与数组在什么场景下分别更合适?
- 快速排序的核心步骤与复杂度是什么?
- 你在团队协作中的可量化贡献是什么?
七、后续 2 周修复计划(建议)
- 只保留一个主项目作为面试主线(优先 deep SCAN)。
- 补齐后端转发、会话持久化、知识库最小可用链路。
- 准备 15 个基础题标准答案(事件循环、跨域、MVVM、数据结构)。
- 把每个项目亮点改为“有数据可验证”的表述。
- 每天做 20 分钟口述演练,重点修正“概念知道但解释不清”的问题。