面经基本信息:去哪儿旅行(发帖者自述)
- Agent应用开发—测试开发,AI面试
- 日期:2026-08-30
- 适用难度:初级—中级
内容说明
本篇为社区对用户分享面经的整理汇编,旨在帮助求职者了解面试考察方向。问题部分力求忠实还原原帖问答脉络;「参考答案 / 复盘思路」为整理方结合工程实践原创补充,仅供交流参考,不代表官方标准答案。
面试问题与参考答案 / 复盘思路
1. Java里的Exception与Error如何区分?追问:为什么OOM不一定能只靠修改业务代码解决?
参考答案 / 复盘思路: Exception表示程序可预期处理的一类异常,包括受检异常与运行时异常;Error通常代表更底层或严重的运行环境问题,例如OutOfMemoryError。不能把“Error不能处理”说成绝对规律。OOM可能由内存泄漏、一次性加载大对象、缓存无限增长、线程过多或容器内存限制导致,代码修改有时正是根治手段。排查先看JVM堆、GC日志、heap dump、进程RSS和容器OOMKilled记录,区分堆内、堆外与宿主资源限制,再决定修代码、调参数还是限流。
2. Redis缓存与数据库如何保持一致?追问:延迟双删的等待时间怎么确定?
参考答案 / 复盘思路: 先明确业务对一致性的要求:允许短暂旧值时可采用Cache Aside,写库成功后删除缓存;强一致关键路径不宜仅依赖缓存。延迟双删用于降低“读旧库并回填旧缓存”的竞态概率,但它不是严格一致性保证。延迟值应根据真实数据库提交耗时、并发读写时序、网络尾延迟和缓存回填时间压测确定,而不是拍脑袋填500毫秒。删除失败需重试或消息补偿,必要时用版本号、binlog订阅与监控检测长期不一致。
3. 后端部署失败怎么排查?追问:除了Docker日志与容器连通性,还检查什么?再追问:如何判断资源不足,用什么命令看哪些指标?
参考答案 / 复盘思路: 排查顺序建议从“失败发生在哪一层”入手:镜像拉取与版本、启动参数和密钥、配置中心、DNS与依赖服务、端口与健康检查,再看应用日志及变更记录。资源侧用 docker stats、docker inspect、free -h、df -h、top 或 vmstat 检查CPU、内存、磁盘、文件描述符与容器限制,必要时看 dmesg 的OOM事件。把启动失败、启动后探针失败和请求时超时区分开,复现时记录镜像摘要与环境差异,避免盲目重启掩盖根因。
4. 介绍你搭建的Jenkins流水线。追问:生产只跑冒烟测试,如何降低线上风险?
参考答案 / 复盘思路: 可以按提交触发、静态检查、单元测试、构建镜像、接口回归、部署测试环境、报告归档和人工/自动审批讲清流水线。生产只跑冒烟并不能保证零故障,真正的策略是把充分的回归放在上线前,生产只做最小高价值探测。上线时配合灰度、错误率与延迟监控、核心业务指标以及明确的回滚阈值;高风险变更增加契约测试、数据迁移验证和回放对比。要说明失败如何阻断发布、谁有权限放行,才算完整的质量门禁。
5. 设计微信式一对一聊天的测试:支持文字、图片、文件,并有1秒消息间隔要求。
参考答案 / 复盘思路: 先问清“1秒间隔”指发送节流、到达时延还是界面展示间隔,不同定义对应完全不同的断言。覆盖文字与多媒体大小/格式、顺序、去重、撤回、重发、离线补发、跨设备同步、权限和敏感文件处理。若要求相邻发送至少1秒,测试边界0.99、1.00、1.01秒以及并发设备;若要求端到端延迟不超过1秒,应使用同步时钟或同端测量并统计P95/P99,而不是只看一次平均值。补充弱网、断线重连和服务端限流。
6. 用Charles模拟弱网时,怎样判断一次请求从发出到收到响应是否小于1秒?
参考答案 / 复盘思路: 先定义计时范围:是客户端开始发送到首字节TTFB,还是完整响应体接收完毕;图片上传还要区分排队、连接建立、传输与服务端处理。Charles的Timing/Overview能观察请求时间分解,但代理本身和限速设置会引入额外开销。建议固定带宽、延迟、丢包档位,多次采样P95/P99,并用客户端埋点与服务端Trace交叉核对。需要注意Charles记录的是代理视角的时间,不能直接等同用户端体验;超时、重试与缓存命中应分别统计。
7. 请讲一个你做过的最难项目:承担了什么职责,遇到什么困难,怎样解决?
参考答案 / 复盘思路: 不要虚构大项目,挑自己最熟悉的真实难点。按背景、约束、本人动作、验证证据、最终结果来组织:例如测试Agent的UI定位在动态页面频繁失败,先用Trace分类失败原因,再替换不稳定定位器并加业务断言,最后用固定页面集合做回归。面试官真正想听的是你如何排除错误假设、为什么采用这个方案,以及是否存在尚未解决的边界。数据不确定就描述可复现证据,避免夸大“提升百分之多少”。
8. 最近学过哪些AI工具或模型,怎样用于开发或测试工作?
参考答案 / 复盘思路: 回答最好落到一个完整闭环:用什么工具处理哪类输入,生成什么产物,如何校验,哪些结果必须人工确认。比如用代码助手生成接口测试草稿,再根据OpenAPI契约校验字段、补充负向用例,接入CI并追踪误报漏报。要主动说明提示词注入、敏感代码外传、模型版本变化和幻觉断言等风险。即便目前只在个人练习中使用,也可以清楚区分试验与正式落地,而不是泛泛说“提高效率”。
延伸思考(社区补充)
当AI面试官会根据候选人提到的关键词连续追问时,怎样准备一个既真实又能经得起深挖的测试项目介绍?可以按项目目标、架构、本人职责、失败案例、验证指标五层准备证据,不要把没做过的框架写进简历。
