- 整理去哪儿 AI 全栈方向面试的 15 道问答 - 涵盖 GC、三色标记、项目经验、AI 工程实践等考察维度 - 新建「面经」章节,后续面经统一归档
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
# 面经
|
||||
|
||||
面试经验记录与总结。
|
||||
@@ -0,0 +1,198 @@
|
||||
# 去哪儿 AI 面 — AI 全栈方向
|
||||
|
||||
> 面试形式:双机位(手机也要开摄像头),共 8 轮问答,每轮内会提一个问题并根据回答进行追问
|
||||
> 以下内容仅根据回忆记录,未录音
|
||||
|
||||
---
|
||||
|
||||
## 1. 自我介绍
|
||||
|
||||
常规开场,简要介绍个人背景、技术栈和项目经历。
|
||||
|
||||
---
|
||||
|
||||
## 2. 语言选择(Java / TypeScript)
|
||||
|
||||
选项只有 Java 和 TypeScript 两个,后续问题会根据选择的语言侧重点展开。
|
||||
|
||||
---
|
||||
|
||||
## 3. 垃圾回收 GC 过程
|
||||
|
||||
!!! note "💡 关键点"
|
||||
- 对象从新生代 Eden → Survivor → 老年代的晋升路径
|
||||
- Minor GC / Major GC / Full GC 的触发条件
|
||||
- 分代收集模型:新生代(复制算法)、老年代(标记-清除 / 标记-整理)
|
||||
|
||||
---
|
||||
|
||||
## 4. 三色标记的第一阶段 STW 在干什么
|
||||
|
||||
三色标记法将对象标记为白色(未访问)、灰色(已访问但子对象未全部访问)、黑色(已访问且子对象已全部访问)。
|
||||
|
||||
第一阶段 STW(Stop The World)的主要工作:
|
||||
|
||||
- **根节点枚举**:暂停所有应用线程,扫描 GC Roots(栈帧中的局部变量、静态变量、常量池引用等)
|
||||
- **建立初始引用关系**:确保在并发标记开始前,堆中对象的引用关系是一个一致的快照
|
||||
- **防止并发标记期间的遗漏**:如果没有这个 STW,并发标记可能会漏掉某些从 GC Roots 新建立的引用
|
||||
|
||||
!!! tip "追问方向"
|
||||
- 为什么需要 STW?不 STW 会怎样?
|
||||
- CMS 和 G1 在三色标记上的差异
|
||||
- 写屏障(Write Barrier)如何解决并发标记期间的引用变更问题
|
||||
|
||||
---
|
||||
|
||||
## 5. 最有成就感的项目
|
||||
|
||||
讲述一个完整的项目经历,重点包括:
|
||||
|
||||
- **背景与目标**:为什么做这个项目,要解决什么问题
|
||||
- **技术选型与架构设计**:为什么选择当前方案
|
||||
- **关键难点与突破**:遇到了什么挑战,如何解决的
|
||||
- **最终成果**:量化的业务收益或技术指标
|
||||
|
||||
---
|
||||
|
||||
## 6. AI 提效成果
|
||||
|
||||
在项目开发过程中,AI 工具对效率的提升:
|
||||
|
||||
- **代码生成与补全**:减少重复性编码工作
|
||||
- **文档与注释生成**:自动化的文档维护
|
||||
- **问题排查与调试**:利用 AI 分析日志和定位问题
|
||||
- **设计与架构讨论**:作为技术方案的验证伙伴
|
||||
|
||||
---
|
||||
|
||||
## 7. 如何确保 AI 生成格式化内容的可靠性
|
||||
|
||||
生成 JSON 等结构化内容时,确保键的准确性和嵌套层级的正确性:
|
||||
|
||||
- **Schema 约束**:提供明确的 JSON Schema 或类型定义,约束输出格式
|
||||
- **结构化输出(Structured Output)**:利用模型的结构化输出能力,强制符合预定义 schema
|
||||
- **分步生成**:先生成骨架,再填充内容,降低单次生成的复杂度
|
||||
- **后处理校验**:解析 JSON 进行 schema 校验,不通过则重试或修正
|
||||
- **Few-shot 示例**:提供目标格式的示例,让模型学习结构模式
|
||||
|
||||
---
|
||||
|
||||
## 8. Agent 场景与目标达成
|
||||
|
||||
讲述实际构建的 Agent 场景:
|
||||
|
||||
- **场景定义**:Agent 要解决的具体问题
|
||||
- **工具链设计**:Agent 可调用的工具和能力
|
||||
- **任务分解与规划**:如何将复杂任务拆解为可执行步骤
|
||||
- **执行与反馈循环**:ReAct / Plan-and-Execute 等模式的应用
|
||||
- **目标达成评估**:如何判断 Agent 完成了任务
|
||||
|
||||
---
|
||||
|
||||
## 9. Agent 长期记忆管理
|
||||
|
||||
对于 Agent 长期记忆,应该放什么以及如何管理:
|
||||
|
||||
**哪些东西应该放进来:**
|
||||
|
||||
- 用户偏好与习惯
|
||||
- 历史交互中的关键决策和结论
|
||||
- 领域知识和经验
|
||||
- 任务上下文与状态
|
||||
|
||||
**管理策略:**
|
||||
|
||||
- **淘汰机制**:类似 LRU(最近最少使用)/ LFU(最不经常使用),对记忆条目按访问频率和时间进行淘汰
|
||||
- **优先级判定**:高优先级记忆(用户明确要求记住的、频繁使用的)不易被淘汰
|
||||
- **分层存储**:短期记忆(当前会话)→ 中期记忆(近期交互)→ 长期记忆(持久化知识)
|
||||
|
||||
---
|
||||
|
||||
## 10. 记忆部分冲突处理
|
||||
|
||||
当多条记忆之间存在部分冲突时:
|
||||
|
||||
- **建立知识图谱**:将记忆中的实体和关系组织成图结构,便于推理和综合判断
|
||||
- **综合判断**:结合多条相关记忆的上下文、时间、来源进行加权分析
|
||||
- **置信度评估**:对每条记忆赋予置信度,冲突时优先采信置信度更高的记忆
|
||||
- **主动澄清**:当无法自动判断时,向用户确认
|
||||
|
||||
---
|
||||
|
||||
## 11. 两条记忆完全冲突
|
||||
|
||||
当两条记忆完全矛盾时,根据环境风险等级采取不同策略:
|
||||
|
||||
| 环境类型 | 策略 |
|
||||
|---------|------|
|
||||
| **危险环境** | 直接输出两条冲突记忆,不做自动选择,由人工决策 |
|
||||
| **安全环境** | 可配置优先级规则:按时间(新的优先)、按来源(权威来源优先)自动采纳 |
|
||||
|
||||
!!! warning "核心原则"
|
||||
在高风险场景下,宁可暴露冲突也不做错误的自动选择。安全第一。
|
||||
|
||||
---
|
||||
|
||||
## 12. 如何评价是否达成目标
|
||||
|
||||
评估 Agent 目标达成情况的方法:
|
||||
|
||||
- **打分量化**:定义评分维度(准确性、完整性、效率等),对结果进行 1-5 分量化评估
|
||||
- **Critic 架构**:引入独立的评估 Agent(Critic),对执行 Agent 的输出进行审查和打分
|
||||
- **参考标准对比**:将输出与预期标准进行对比,计算相似度或匹配度
|
||||
- **多轮迭代评估**:通过多轮交互逐步收敛,评估是否达到满意的最终状态
|
||||
|
||||
---
|
||||
|
||||
## 13. 如何应对 AI 幻觉
|
||||
|
||||
在项目中应对 AI 幻觉的策略:
|
||||
|
||||
- **Context 工程**:提供精准、充分的上下文信息,减少模型需要"猜测"的空间
|
||||
- **Sub-agent 评估**:引入独立的子 Agent 对主 Agent 的输出进行事实核查
|
||||
- **Hook 机制**:基于 hook 进行必要的 CI 检查,在关键节点验证输出的正确性
|
||||
- **Skill 补充背景**:在未知领域使用 skill 注入领域知识,降低幻觉风险
|
||||
- **检索增强(RAG)**:将回答基于检索到的实际文档,而非模型的参数记忆
|
||||
|
||||
---
|
||||
|
||||
## 14. 如何遵守项目规范
|
||||
|
||||
确保 AI 遵守项目规范的方法:
|
||||
|
||||
- **明确的规范文档**:将项目规范写入 CLAUDE.md 或类似配置文件
|
||||
- **软件工程实践**:瀑布模型、敏捷开发等流程规范的约束
|
||||
- **统一约定**:如统一返回类、命名规范、代码风格等,通过配置和示例固化
|
||||
- **自动化检查**:Lint、类型检查、测试等自动化手段兜底
|
||||
|
||||
---
|
||||
|
||||
## 15. AI 工具选择与可靠性保障
|
||||
|
||||
**使用的 AI 工具及原因:**
|
||||
|
||||
- 选择标准:能力匹配、生态完善、可靠性高
|
||||
- 工具链搭配:不同工具在不同场景下的互补使用
|
||||
|
||||
**可靠性保障措施:**
|
||||
|
||||
- **好的 Harness**:构建可靠的执行框架,管理工具调用和状态流转
|
||||
- **达成目标的标准**:明确的任务完成标准和验收条件
|
||||
- **Hooks 机制**:在关键节点插入检查和干预逻辑
|
||||
- **Sub-agent 审查**:独立的子 Agent 进行交叉验证
|
||||
- **Code Review**:人工或自动化的代码审查,确保输出质量
|
||||
|
||||
---
|
||||
|
||||
## 面试总结
|
||||
|
||||
这次去哪儿的 AI 面试整体考察深度不错,涵盖了:
|
||||
|
||||
| 考察维度 | 题目 |
|
||||
|---------|------|
|
||||
| 语言基础 | GC 过程、三色标记 |
|
||||
| 项目经验 | 有成就感的项目、AI 提效 |
|
||||
| AI 工程实践 | 结构化输出、Agent 设计、记忆管理、幻觉应对 |
|
||||
| 系统设计思维 | 冲突处理、目标评估、规范遵守、可靠性保障 |
|
||||
|
||||
核心考察点在于 **AI 工程化能力** — 不只是会用 AI,而是如何可靠地将 AI 集成到实际项目中。
|
||||
@@ -84,6 +84,9 @@ extra_javascript:
|
||||
|
||||
nav:
|
||||
- 首页: index.md
|
||||
- 面经:
|
||||
- interview/index.md
|
||||
- 去哪儿 AI 面-AI 全栈方向: interview/qunar-ai-fullstack.md
|
||||
- 项目:
|
||||
- project/index.md
|
||||
- Open-API 计费平台:
|
||||
|
||||
Reference in New Issue
Block a user