小米|测试开发日常实习面经

  • 日期:2025-03-06
  • 企业与岗位:小米|测试开发日常实习
  • 适用层级:初级/中级

本篇为社区对用户分享面经的整理汇编,旨在帮助求职者了解面试考察方向。问题部分力求忠实还原原帖问答脉络;「参考答案 / 复盘思路」为整理方结合工程实践原创补充,仅供交流参考,不代表官方标准答案。

1. 自我介绍

准备建议:

建议按“背景—最相关项目—个人贡献—可验证结果”组织,控制在一分钟左右。测开岗位不要只说用过哪些工具,更要说明怎样验证功能正确性、怎样复现缺陷、如何在时间和资源有限时做取舍。准备一条能展开追问的项目主线。

2. 介绍三个项目,先讲第一个

准备建议:

讲项目时先交代业务输入、输出和成功标准,再说自己负责的模块。比如机器人与知识库项目,要区分设备通信、检索、生成、评价四段,并说明实际测过什么、哪些指标来自测试集,避免只列技术栈。

3. ROS有哪些通信方式?有没有类似共享内存的机制?

参考答案 / 复盘思路:

ROS常见通信抽象有Topic发布订阅、Service请求响应、Action长任务反馈;ROS 2底层常用DDS进行发现和数据分发。共享内存属于特定中间件/实现可提供的传输优化,不能把它和Topic视为同一层概念。测试时验证节点发现、消息序列化、QoS不匹配、丢包和延迟。

4. DDS使用的是哪种实现?

参考答案 / 复盘思路:

ROS 2可通过RMW接入Fast DDS、Cyclone DDS等实现,具体取决于发行版和配置。回答应说明项目实际采用哪一种、为何选择、QoS和网络拓扑如何设置;不清楚时先查RMW_IMPLEMENTATION及运行环境,不能把“ROS组网”直接当作DDS厂商名称。

5. RAG如何构建?请介绍流程、原理和效果

参考答案 / 复盘思路:

完整流程包括文档清洗、分块、Embedding、向量/关键词索引、检索、重排、上下文拼接和答案生成。效果验证至少拆成检索Recall@k、引用命中率、回答事实正确率和拒答表现;固定测试集与知识库版本,才能比较不同切分或模型方案是否真的改善。

6. RAG效果不好,怎么优化?

参考答案 / 复盘思路:

先用失败样本定位在“没召回”“召回不相关”“证据正确但回答错误”哪一层。再针对性调整切分粒度、元数据过滤、混合检索、重排、Query改写和提示词。每次只改变少量变量,按问题类型做回归,避免总体分数提高却牺牲长尾问法和权限隔离。

7. 第一个获奖项目还可以改进哪里?

参考答案 / 复盘思路:

可以从端到端时延入手:记录传感器采集、预处理、模型推理、网络传输和界面渲染耗时,先找真正瓶颈。硬件受限时考虑量化、缓存、批处理或更小模型,同时比较准确率、峰值内存、功耗和P95时延;不能只凭体感说“推理慢”。

8. 面试过程中的停顿

准备建议:

交流间隙可以用来整理思路。提前准备项目结构草图和关键数据,遇到停顿时可自然补充“这部分最难验证的是……”,但仍以面试官节奏为主。

9. 介绍第二个项目

准备建议:

第二个项目要突出与第一个项目不同的能力,例如数据工程、服务稳定性或自动化回归。建议按需求、架构、个人实现、问题排查、指标结果组织,预先准备日志、样例输入输出和一次失败后的改进证据。

10. 文本切分的基本原理是什么?

参考答案 / 复盘思路:

切分是为检索建立合适的语义单元:固定长度实现简单但可能截断语义,递归分隔符适合一般文档,按标题/段落/结构切分适合规范资料。Chunk大小、Overlap和元数据会影响召回与噪声;评测时用同一问题集比较Recall@k、引用准确率与Token成本。

11. 准确率、召回率等指标是怎么得到的?

参考答案 / 复盘思路:

先定义正例、负例和判定单位,再构造有标注的测试集。Precision=TP/(TP+FP),Recall=TP/(TP+FN);RAG还需明确是在衡量检索文档还是答案事实,二者不能混用。报告应说明样本数、抽样方式、人工一致性和置信区间,避免只给一个百分比。

12. 评价是主观打分还是量化指标?

参考答案 / 复盘思路:

两者可以结合。主观评分适合流畅性、可用性等难以完全规则化的维度,但需要评分Rubric和多人一致性检查;量化指标适合检索召回、引用命中、延迟与成本。建议对关键错误设置单独拦截指标,不让平均分掩盖事实性风险。

13. 第三个项目未深入追问

准备建议:

即使没有展开,也应准备30秒版本:解决什么问题、自己做了什么、如何验收、最大的失败案例是什么。这个环节不需要强行扩写成技术题。

14. 大模型在哪里本地训练?使用什么训练框架?

参考答案 / 复盘思路:

说明训练设备、GPU显存、数据量、训练方式和框架,例如PyTorch配合Transformers/PEFT进行LoRA微调。要区分全量训练、参数高效微调和纯推理;复现实验需保存随机种子、模型版本、数据划分、超参及验证集结果,并警惕训练集泄漏。

15. 了解哪些大模型相关框架?

参考答案 / 复盘思路:

可以区分模型训练与推理框架(PyTorch、Transformers、vLLM)和应用编排框架(LangChain、LlamaIndex)。回答不必堆名字,重点说明一个真实使用场景:怎样组织检索链路、管理状态、记录调用轨迹、做失败重试和离线评测。

16. 现场编程:LeetCode 205 同构字符串

参考答案 / 复盘思路:

用两个映射同时约束s→t和t→s,逐字符检查已有映射是否冲突;长度不同立即返回False。也可用首次出现位置模式判断。时间复杂度O(n),额外空间O(字符集大小)。测试空串、重复字符、双向冲突、Unicode及长度不等;面试中注意明确是否允许使用辅助哈希表。

17. 现场编程要求:不切换页面、不使用AI助手,可用纸笔

准备建议:

这是考试规则,不是额外算法题。实操前确认输入输出格式、语言版本和可用库;独立完成并在纸上列边界样例。提交前至少运行正常、最小、重复、极端输入四类测试,避免思路正确却在边界条件失分。

延伸思考(社区补充)

如果你负责小米同类业务的自动化回归,如何把上述考察点转成可复现的测试数据、CI检查和上线监控?建议挑一个具体场景写出输入、断言、异常与回滚证据。

推荐学习