news 2026/9/8 15:09:42

小米测开笔试题复盘:从试卷结构到高频考点全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
小米测开笔试题复盘:从试卷结构到高频考点全解析

2. 试卷结构拆解:小米测开笔试到底在考什么

先说结论:2019年小米秋招测试开发笔试题(B),整体风格是**“基础扎实优先,工程思维并重”**,既没有像算法岗那样上来就是Hard级动态规划,也不会像部分公司那样纯考八股文背诵。它更看重的是你能不能像一个真正的测试开发工程师一样思考问题。

我当时拿到这套题的第一感觉是:题量不小,但难度梯度设计得还算合理。整套试卷大致可以分为四块:

模块考察方向题目类型大致占比
软件测试基础测试理论、用例设计、测试流程选择题+简答题30%
计算机基础操作系统、网络、数据结构选择题+填空题25%
Linux与数据库实际运维排查能力实操题+SQL题20%
编程与逻辑代码能力、算法思维编程题25%

记住这个分布很重要,因为它决定了你的时间分配策略。很多人在选择题上纠结太久,结果编程题没时间写,这是最亏的。后面我会详细说时间怎么分配。

2.1 为什么是这个结构:测开岗位的能力模型

从岗位职责反推,测试开发工程师在小米这样的公司,日常要承担三类工作:一是功能测试和用例设计,保证产品上线质量;二是搭建和维护自动化测试框架,提升回归效率;三是开发测试工具或平台,解决测试过程中的效率痛点。

这就决定了笔试必须覆盖三条能力线:测试专业度、技术基础深度、代码落地能力。只懂测试理论不懂代码,做不了工具开发;只会写代码不懂测试思维,写出的用例和框架又往往脱离实际场景。小米的这套题,本质上就是在筛选这两者兼备的人。

2.2 题目难度分布:基础题送分,进阶题拉差距

整套题的难度分布大约是这样的:60%是基础题,只要你认真准备过,基本都能答对,比如TCP三次握手过程、等价类划分方法、Linux常用命令这些;30%是中档题,需要你真正理解原理而不是死记硬背,比如给你一个场景让你设计测试用例、给定SQL表结构写查询语句;剩下10%是拉开差距的题,通常是编程题或者综合性设计题。

这里我要多说一句:不要小看那60%的基础题。正因为大家都觉得简单,反而容易粗心出错。我见过太多人在"以下哪个不是黑盒测试方法"这种题上翻车,回头一对答案才拍大腿。基础题的正确率,决定了你能不能进下一轮面试。

3. 高频考点逐个拆解:这些题背后都有套路

接下来我按模块把高频考点和典型题目思路拆开讲。我不会照搬原题(毕竟笔试题有版权,也不该原样传播),但我会把每类题的核心考法和解题套路讲透,你拿任何一套同类题目都能用上。

3.1 软件测试基础:用例设计是永远的C位

测试基础这块,小米尤其爱考测试用例设计。常见的出题形式是给你一个功能点,比如"登录功能""购物车结算""文件上传",让你写出测试用例。这题看似简单,实际是分水岭。

我举个典型例子:设计一个"用户注册"功能的测试用例,要求用户名6-16位字母或数字。

大部分人会写:输入合法用户名、输入非法用户名、输入超长用户名,然后交卷。这种答案在面试官眼里等于没写。正确的思路是分维度覆盖:

  • 功能维度:注册成功、用户名已存在、密码与确认密码不一致、验证码错误
  • 边界维度:用户名5位、6位、16位、17位(这是等价类边界值分析的核心)
  • 异常维度:用户名含特殊字符、含中文、全空格、SQL注入字符串"or 1=1"
  • 兼容维度:不同浏览器、不同操作系统、移动端和PC端
  • 体验维度:输入框是否限制字符数、错误提示是否友好、提交按钮是否防止重复点击
  • 安全维度:密码传输是否加密、返回信息是否泄露用户信息

你看,这么一拆,一个功能点至少能写出三四十条用例。这个思路练熟之后,考试时哪怕遇到没见过的功能,你也能套框架,不会漏项。

再有一个高频简答题是**"黑盒测试和白盒测试的区别",以及"常见的黑盒测试方法有哪些"**。这类题纯记忆,等价类划分、边界值分析、因果图法、判定表驱动法、正交试验法、场景法、错误推测法,七种方法要能默写出来,并且能说清各自适用场景。别只列名词,一定要有场景说明,比如"复杂度高的组合场景适合用因果图或判定表"。

3.2 Linux与数据库:测开的基本功考场

Linux这块,小米出题风格非常务实,不会问你"Linux内核有哪几种锁",而是直接给你场景:"线上日志文件报错,怎么快速定位关键信息?"核心考点就这些:

  • grep:按关键词过滤,结合管道符使用,比如grep -i "error" /var/log/app.log | tail -50
  • tail/head:查看日志尾部/头部,tail -f实时跟踪
  • awk/sed:按列提取、按规则替换,awk '{print $2}'这种是基本功
  • find/ls -l:查找文件、查看权限和文件属性
  • top/free/df:排查系统负载、内存、磁盘
  • kill/ps:进程管理,ps -ef | grep java定位PID再用kill -9杀进程

实际考法一般是给出一个日志文件内容,问你怎么统计某个接口的请求次数。答案就是grep "GET /api/user" access.log | wc -l。这三件套的组合使用要特别熟。

数据库这块,考的SQL都不难,但容易在细节上翻车。必考的是:

  • 多表联查(内连接、左连接的区别)
  • GROUP BY + HAVING(注意WHERE和HAVING的执行顺序差异)
  • 子查询(IN、EXISTS的区别)
  • 聚合函数(COUNT、SUM、MAX、MIN、AVG)

给你一道典型题感受一下:有两张表,学生表(student)和成绩表(score),查询每门课程的平均分,并按平均分降序排列。

SELECT course_id, AVG(score) AS avg_score FROM score GROUP BY course_id ORDER BY avg_score DESC;

这就是送分题。但小米会在后面加一道进阶题,比如"查询平均分大于80分的学生名单",这时候就必须用HAVING而不能再加WHERE了。这种细节就是筛人的地方。

3.3 编程题:不只是刷题,更要体现工程思维

编程题是整套试卷里最拉分的部分。小米的编程题不像字节那样追求极致算法,更看重你的代码规范性和边界处理能力。我印象中有几类题反复出现:

第一类是字符串处理。比如"实现一个函数,判断一个字符串是否是有效的IP地址"。这题不涉及复杂算法,但坑很多:IPv4地址是四个0-255的数字,不能有前导零,不能有多余的点。如果你的代码只判断了数字范围,忘了处理前导零和空段,就会挂掉部分用例。这就是考察你考虑边界是否周全。

第二类是数组/链表操作。比如"给定一个整数数组和一个目标值,找出数组中两个数之和等于目标值的索引"。这题最优解是哈希表,时间复杂度O(n),但如果考生写了个双层循环O(n^2),也不会给零分,因为测试开发更看重逻辑清晰、能跑通,优化属于加分项,关键是你得先保证正确性。

第三类是逻辑模拟题。给你一个实际业务场景,让你写代码模拟。这种题和测开工作最贴近,比如"写一个函数,判断一个字符串括号是否匹配",这类问题直接对应到配置文件解析、模板渲染的测试工具开发,实用性很强。

这里我要特别强调一个细节:笔试编程题一定要处理好输入输出和异常分支。很多线上笔试系统是有隐藏测试用例的,你只写了happy path,边界用例全挂,最后还是零分。我的习惯是,哪怕时间紧,也要把空值判断、非法输入判断写在最前面,这是成本最低的保分手段。

3.4 计算机网络与操作系统:选择题的重灾区

这套试卷的选择题里,网络和操作系统占了相当比例,都是基础但易混淆的考点。

网络这块必考的是:

  • TCP三次握手、四次挥手(尤其是TIME_WAIT状态的作用)
  • TCP和UDP的区别(面向连接vs无连接,可靠vs不可靠)
  • HTTP常见状态码(200、301、302、403、404、500、502、503)
  • HTTP和HTTPS的区别(TLS握手、证书)
  • DNS解析流程

操作系统这块常考的是:

  • 进程和线程的区别
  • 死锁产生的四个必要条件(互斥、持有并等待、不可剥夺、循环等待)
  • 内存管理的基本概念(分页、虚拟内存)
  • 进程间通信方式(管道、消息队列、共享内存、信号量、Socket)

这类题没有捷径,刷题加理解。但我有个建议:不要死记硬背定义,要能说出应用场景。比如问到TCP和UDP的区别,你如果只答"一个可靠一个不可靠"是拿不全分的,要补充"视频通话和直播场景为什么要用UDP因为实时性优先,文件传输为什么要用TCP因为不能丢数据"。这样改卷人一看就知道你是真懂,不是背的。

4. 从笔试反推面试:小米测开到底想要什么人

很多人会忽略一件事:笔试不只是分数,它暗含了这家公司的技术取向和团队文化。我在小米笔试的题目里,能明显读出几个信号。

4.1 内容全覆盖:你不是过来写用例的,你是过来做开发的

小米对测试开发岗位的定位,绝对不是"点点点"的功能测试。从题目里能看出来,他们要的是能写代码、能看懂系统日志、能直接上手排查线上问题的工程型测试。这就意味着你在准备笔试时,如果只复习测试理论,不碰代码和Linux,基本没戏。

我身边有朋友当年觉得"我测试用例设计得好,笔试没问题",结果成绩出来连面试都没进。后来复盘才发现,编程题空白、SQL写错、Linux命令题全区瞎猜,光靠理论题撑不住总分。这是个很典型的教训:测开笔试的应试策略必须是全科均衡,短板科目拉分非常严重。

4.2 场景化出题:面试官要的是"解决问题"而非"复述知识"

注意看这套题和大学期末考的区别:大学考卷问"什么是死锁",这套题问"数据库出现死锁怎么排查";大学考卷问"什么是等价类划分",这套题直接扔给你一个功能让你画用例。同样的知识点,换个考法,难度立刻不一样。

所以准备阶段,我强烈建议你把每个知识点都过一遍"场景化"的转化。比如学了TCP三次握手,就问自己"如果服务端连接池满了会出现什么现象,怎么排查";学了SQL联查,就问自己"如果查询巨慢,先查什么";学了死锁,就问自己"MySQL死锁报错日志怎么看"。这种训练方法比刷一百道选择题都管用。

4.3 软素质嵌入:用例设计题背后在考察的另一样东西

我后来做面试官才真正理解,小米这种用例设计题,表面上考技术,实际还在考察一个测试开发最重要的素质——结构化思维和写文档的能力。一份用例能不能分层分类、有没有覆盖边界和异常、逻辑顺序是否清晰,直接反映你未来能不能输出一份高质量的测试计划。

所以别只是列条目,要有分组、有优先级。考试时我建议这样组织答案:先写覆盖正常流程的主用例,再写边界用例,最后写异常和安全性用例,每一项用简短标题+测试步骤+预期结果的结构。这会让你的答案在一堆"点两下按钮看看能否成功"里,显得非常专业。

5. 备考与应试的实用策略:少走弯路的方法论

最后这部分,我把自己备考和带人过程中的干货总结一下,按时间线拆成考前准备和考场实战两个阶段。

5.1 考前30天怎么安排:按模块打基础,按时间做模拟

第一周和第二周:基础扫盲。过一遍测试理论、计算机网络、操作系统的基础概念,配合刷选择题。重点是积累错题,不要追求刷题量,要追求把每道错题背后的知识点吃透。SQL和Linux命令要动手练,光看教程根本没感觉。

第三周:专项突破。每天选一个模块做集中练习,尤其针对自己的薄弱点。比如我当年SQL联查不太熟,就连续三天只刷SQL题,从简单到复杂,直到不看答案能写出来。编程题保持手感也很重要,不需要刷难题,LeetCode的简单和中等难度就够用。

第四周:全真模拟。找一套往年的笔试题或模拟题,严格按考试时间做一遍。这一步非常关键。很多人的翻车点不是不会,而是做不完。模拟的目的就是找到自己的时间分配节奏。

5.2 考场上怎么分配时间:先拿稳拿分,再啃硬骨头

我的做题顺序是:

  1. 选择题和填空题快速过——会的直接勾选,犹豫的做个标记先跳过,绝不恋战。一道选择题超过2分钟还没把握,果断放弃,随便选一个写上标记,回头有时间再想。
  2. SQL题和Linux题二选一先做——如果两道都有把握,先做SQL题,因为SQL题逻辑强、容易得满分;Linux实操题如果是简答形式,注意条理清晰,一条命令一行,写清楚参数含义。
  3. 测试用例设计题认真做——这题是主观题,答案写得是否专业直接影响印象分,多花点时间是值得的。
  4. 编程题最后做,但必须留够40分钟——至少保证第一道编程题能完整写出来并检查边界,第二道实在没思路就写个暴力解,也比空着强。

整体节奏上,选择题尽量控制在25分钟内,简答和用例设计控制在40-50分钟,剩下40-50分钟给编程题。当然具体要看题量调整,但原则不变:先把必拿的分拿到手,再挑战高分题。

5.3 面试官不会告诉你的三个隐藏踩分点

以下是我作为面试官看卷时会下意识注意的隐藏评分点,很多人可能完全没意识到:

第一,字迹和排版。线上笔试的简答题一定要分段、分条、加序号。如果全是密密麻麻一大段,哪怕内容对了,改卷体验也非常差。印象分这个东西真实存在,别跟它对着干。

第二,编程题的注释。关键的逻辑分支写一句注释,既帮自己理清思路,也让改卷人更快地理解你的代码。有注释的答卷和没注释的答卷,在观感上完全不是一个档次。

第三,不会的题也要写思路。遇到不会的编程题,哪怕写不了完整代码,也要把你想到的解题思路、用到的数据结构、算法复杂度推导写出来。我的原则是:笔试最怕的不是做错,而是空白。做错了至少证明你思考过,改卷人知道你差在哪;空白等于主动放弃,连拉你一把的机会都没了。

6. 写在最后:这套题给我最大的启发

说实话,距离2019年已经好几年了,但回头看这套题,我依然觉得它对当下的测开岗位求职者很有参考价值。不光是小米,很多一线互联网公司的测开笔试题,核心考点都在这套题的框架之内。

而整套题背后最值得琢磨的一条逻辑是:测试开发岗位的门槛,已经不再是"懂测试"这么简单了。它要求你既是质量守护者,也是效率工具的开发者,还是线上问题的第一响应人。这就像一个全科医生,什么病都要能看,什么工具都要会用,而且还要能自己开发点新工具。

我个人的体会是,准备这类笔试,最忌讳的就是只背题不思考。刷题是手段,不是目的。每做一道题,多问自己一句"这个考点在实际工作中对应什么场景",长期积累下来,你收获的不只是一份笔试的高分,更是对测试开发这份工作真正的理解。

最后再分享一个小技巧:笔试结束后,不管你自我感觉好不好,一定要把题目和你的答案记录下来,趁记忆还新鲜的时候复盘一遍。这不仅是给后续面试做准备,更是你技术成长路上最珍贵的素材库。很多我现在写进自动化框架里的设计思路,都来自于当年复盘笔试时想通的某个瞬间。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 15:25:52

DBeaver 数据导入避坑指南:3 个关卡快速搞懂 CSV 导入失败

DBeaver 数据导入避坑指南:3 个关卡快速搞懂 CSV 导入失败 【免费下载链接】dbeaver Free universal database tool and SQL client 项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver 用 DBeaver 数据导入一个 10 万行的 CSV 文件,跑到…

作者头像 李华
网站建设 2026/9/6 1:13:10

DBeaver 数据比较实战:库对不上、库变慢,三步定位差异

DBeaver 数据比较实战:库对不上、库变慢,三步定位差异 【免费下载链接】dbeaver Free universal database tool and SQL client 项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver 生产库和测试库对账,差了 37 行&#xff1b…

作者头像 李华
网站建设 2026/9/6 21:46:43

DBeaver XLSX 导出实战指南

DBeaver XLSX 导出实战指南 【免费下载链接】dbeaver Free universal database tool and SQL client 项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver DBeaver 是一款免费开源的通用数据库工具,它的 XLSX 导出功能可以把任意查询结果直接落成能打…

作者头像 李华
网站建设 2026/9/6 3:03:58

北斗B1I扩频码Matlab生成原理与完整实现

简介:本资源是一份面向卫星导航信号处理初学者与MATLAB仿真实践者的北斗B1I路扩频码生成与基础接收链路仿真代码包,聚焦北斗系统核心调制技术,解决扩频码构造、BPSK调制、AWGN信道建模及粗同步(捕获)等关键环节的动手实…

作者头像 李华