尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

从老题新刷到测试思维:解析小米测试开发笔试客观题

从老题新刷到测试思维:解析小米测试开发笔试客观题 如果你正在准备测试开发工程师的校招多半见过“小米2018秋招测试开发工程师客观题合集”这类资源。我当年备战秋招时也把类似的一份题集翻来覆去看了好几遍。坦白讲这类合集并不长也不像某些机构资料那样堆砌海量题目但它特别适合用来感受“测试开发”这个岗位的笔试气质。2018年的题放到今天基础知识点照样通用只是技术栈和产品形态略有变化。所以这篇文章我想从刷题者、校招候选人和过来人的角度拆解这份客观题合集背后的考点逻辑和备考方法给那些正在准备大厂测试开发岗位的同学一点可落地的参考。1. 这份“客观题合集”放在今天还有参考价值吗2018年到现在的几年里测试开发的技术演进不小自动化框架从Selenium逐步转向PlaywrightCI/CD 的普及度也完全不同岗位描述里的要求水涨船高。但有些东西是没变的比如软件测试的底层方法论、网络协议栈的基础以及“用最少用例覆盖最多风险”的测试思维。小米的客观题合集里几乎每个板块都能映射到这些不变的东西。1.1 为什么说“老题新刷”是一笔划算的买卖先说结论如果要准备小米或者类似体量的公司校招这份2018年的客观题合集值得刷但别把它当成题库来背。它的价值有三个层面。第一是摸底。用一套真题快速找到自己的薄弱板块比盲目看教材高效得多。比如我一刷的时候发现自己在“缺陷严重程度与优先级”这组概念上总是犯错于是后面专门去补这块效果非常明显。第二是了解出题视角。小米的测试开发笔试不会只考概念它会结合手机系统、智能硬件场景来考察比如“升级之后需要重点回归哪些功能”“哪种查询方式效率更低”这类贴近业务的选择题。如果你只刷过通用的软测题库第一次看到这种题可能会愣一下但刷过小米合集之后你会发现它们的出题风格有很明显的硬件基因。第三是建立考点坐标。从这份合集你可以反过来推导出整个岗位的知识树知道笔试范围大概是软件测试基础、计算机网络、操作系统、数据库、数据结构和编程语言这些板块。之后再学习时就能按图索骥不用东一榔头西一棒。我见过不少同学刷题只看正确率刷完一套对完答案就完了当时记住了下次换一个问法又错。老题新刷的意义不在于把答案背下来而是通过题目去理解“为什么正确答案是这样其他选项迷惑性在哪”。比如一道题问“等价类划分时以下哪个选项属于无效等价类”如果你对有效性边界的理解不透彻下次换成“年龄输入框”就又会踩坑。1.2 什么样的候选人最需要这份合集如果你是以下三类人这份合集会比较适合你计算机相关专业但学校课程里没有系统讲测试设计方法只会写代码不知道测试用例怎么设计。自学测试、准备转岗测试开发对校招笔试的题型和难度没有概念需要一份真实案例来校准方向。已经在刷 LeetCode 或牛客网代码题但对软件测试的专业知识缺乏系统梳理怕笔试中遇到概念题丢分。当然如果你已经在一个成熟的测试团队里工作过两年再回看这些客观题可能会觉得部分题目偏基础。这很正常校招客观题本来就不是为了筛出“资深专家”而是要筛掉那些连基本概念都不扎实的人。而且有些题看似基础一旦结合具体场景仍然能看出一个人有没有批判性思维。我甚至建议有工作经验的人也拿它做“轻量自测”看看有没有知识盲区。1.3 刷题的正确姿势先自己动脑再对答案很多拿到合集的人第一反应是翻到最后看答案。千万别这样。客观题最大的价值在于逼你思考哪怕不确定也要先给出一个自己的答案再和参考答案对照。只有这样你才会发现哪些知识点是“好像知道但说不清”的。我的习惯是准备一个错题本把每道错题的知识点记下来并写下我当时为什么会选错。比如“我把 TCP 和 UDP 的应用场景搞反了”“忘记了确认测试和系统测试谁先谁后”。这种笔记越到复习后期越值钱。你不会想看大量题目的抄录你会需要一个浓缩的“易错点清单”。2. 透过选项看本质小米客观题最看重的五个基础板块一份客观题合集往往由几十道选择题和判断题组成题目之间看似零散背后其实有清晰的考察维度。我把小米这类硬件驱动型公司的测试开发笔试拆成五个板块每个板块都对应了不同的岗位能力要求。板块高频考点小米会怎么考软件测试基础测试流程、测试类型、用例设计、缺陷生命周期让你判断“某个用例属于黑盒还是白盒”“发现Bug后第一步该做什么”计算机网络TCP/UDP、HTTP状态码、DNS解析、Cookie/Session结合App接口测试问你“用户无网时打开App应该怎么表现”操作系统与Linux进程线程区别、内存管理、常用命令、权限让你选择“查看某个进程CPU占用率最高的命令”数据结构与算法复杂度、链表、栈队列、树、哈希、排序客观题多以时间/空间复杂度对比形式出现是后面编程题的铺垫数据库SQL基础查询、索引、事务特性、连接查询给一张表问“哪个SQL能正确统计每个用户的订单数”2.1 软件测试基础不是背概念是看你有没有全局观软件测试基础是客观题的大头。你可能会遇到这样的问法“下列哪种测试方法属于动态测试”“单元测试的主要目的是什么”“回归测试通常在什么时候进行”。答案本身不难难在有些选项描述得像教科书原文却又故意改了一个词。比如“确认测试是验证软件是否满足需求”和“系统测试是验证集成后的系统是否符合需求”两者长得很像但测试对象和目的不同如果不建立完整概念框架很容易被绕进去。我的建议是学的时候建立起一张测试活动的全景图从需求分析、测试计划、用例设计、执行、缺陷管理到测试报告每个阶段的输入输出是什么不同测试类型之间是包含关系还是并列关系。比如单元测试、集成测试、系统测试、验收测试是按测试粒度来划分的冒烟测试、回归测试是按测试目的来划分的。一旦有了全局观不管选项怎么改表述你都能识别出它在考哪个环节。另一个高频考点是黑盒和白盒测试的区分。黑盒测试不考虑内部实现比如等价类、边界值、判定表白盒测试需要分析代码逻辑比如语句覆盖、分支覆盖、路径覆盖。选择题常给一个测试用例让你判断属于哪一类这时候要抓住关键词用例里有没有提到具体函数内部逻辑有没有要求覆盖特定循环条件。提到源码、条件覆盖基本就是白盒只看输入输出就是黑盒。2.2 计算机网络与操作系统排查问题的底层功底测试开发日常工作中经常要定位线上问题网络和操作系统的知识决定了你看到日志后能不能迅速判断瓶颈。小米笔试中这一块往往会有结合实际场景的题目。比如“一个HTTP请求状态码是503最可能的原因是什么” 503表示服务器暂时无法处理请求通常是因为过载或维护而不是请求参数错误。这要求你不仅知道状态码的含义还能联想到服务端场景。再比如TCP和UDP的区别。选择题可能会问“以下哪种应用更适合使用UDP”直播、语音通话这类容忍少量丢包但要求低延迟的场景往往选UDP而要求可靠传输的文件上传、网页浏览应该选TCP。这类题目没有什么技巧理解了TCP三次握手、四次挥手、拥塞控制你自然能判断。Linux命令也是高频点比如区分ps -ef和top、用netstat查看端口监听、用grep和awk处理日志。这些命令在笔试中不会让你写完整命令而是给你几个选项判断哪个正确。没有实际用过的话光靠背很容易混淆。我备考时会把每条命令放在一台虚拟机上跑一遍记下输出格式比硬背强很多。比如top可以动态查看进程CPU和内存占用free -h可以看内存df -h看磁盘这几个命令的典型用途一定要区分开。2.3 数据结构与编程语言基础笔试里的“硬通货”数据结构在客观题里出现通常是为了筛选具备基本算法素养的候选人。比如“在长度为 n 的数组中查找某个元素顺序查找时间复杂度多少”“删除链表节点时已知前驱节点和删除节点本身的区别”。这些知识点不复杂但如果没有真正理解链表的内存结构光背复杂度很容易搞混。还有一类题会和编程语言语法绑定比如Python中列表和元组的区别、可变对象和不可变对象的区别、深拷贝和浅拷贝。测试开发工程师后续写自动化脚本时这些概念都是基础中的基础。小米的岗位往往要求Python或者Java至少掌握一门笔试题不会太深但会通过几个小的代码片段判断你有没有实际写过代码。比如给你一段Python代码问执行结果是什么其中夹杂了默认参数、可变性等小陷阱。这种题就要靠平时写脚本积累手感临时抱佛脚效果有限。2.4 数据库与SQL造数、查数、验证数数据库的考题一般是给一张表或者几行数据让你选择正确的SQL。常见的有GROUP BY配合HAVING的用法、LEFT JOIN和INNER JOIN的区别、索引什么时候会失效。这些内容在学校里学过但测试开发岗位的要求是不仅会写还要能从测试角度去设计验证数据的SQL。比如造测试数据时你会不会用INSERT批量插入统计测试结果时能不能写出聚合查询来验证某个数据是否落库。笔试中可能出现“有订单表order(id, user_id, amount, create_time)统计每个用户订单总金额超过1000元的用户ID”正确写法是SELECT user_id, SUM(amount) FROM order GROUP BY user_id HAVING SUM(amount) 1000。这里容易错的是用WHERE而不是HAVING来过滤聚合结果因为WHERE不能与聚合函数直接连用。客观题并不要求你手写SQL而是给你四个SQL语句让你选出正确的。这种题只要真的写过几次SQL就不容易错。3. 经典真题套路拆解从等价类边界值到缺陷分析在客观题里软件测试设计方法的题目往往会直接给一个小场景让你去选“针对这个输入条件以下哪个测试用例属于边界值分析”。别小看这种题它是测试工程师和非测试工程师的分水岭。如果你能系统掌握这些方法笔试至少能多拿十分后续面试中聊起测试设计也会更有底气。3.1 等价类与边界值看似简单坑在“有效”和“无效”的划分等价类划分的思路是把输入域划分成若干等价类同一类里的数据对程序来说处理逻辑等价因此只要测一个代表数据即可。这里面最常见的坑是关于无效等价类的覆盖一个无效等价类必须单独设计一条用例不能合并。举个例子一个注册表单要求输入“年龄”合法范围是18到60岁的整数。那么有效等价类就是18到60岁之间的整数无效等价类包括小于18的整数、大于60的整数、非整数如18.5、非数字字符、空值。看起来很简单但选择题里会给你四个用例组合问哪个能覆盖所有无效等价类。如果选了把“17”和“空值”放在同一条用例里的选项就错了因为一个用例一旦触发空值提示后面的“17”就不会被执行到无法验证两个不同错误提示。边界值分析是在等价类的基础上针对边界附近的值设计用例通常关注上点、内点和离点。上点是边界上的值内点是有效范围内的一个代表值离点是距离边界最近但属于无效等价类的值。如果需求是“18 ≤ 年龄 ≤ 60”那么边界值通常选17、18、60、61再配合一个内点比如30。选择题中常会问你“下列哪组数据属于典型的边界值”这是送分题但要注意边界值一定是结合具体输入域来判断的不能看到一个“0”就以为是边界值。3.2 条件组合类判定表和因果图的基本功当输入条件有多个而且存在组合关系时客观题可能问你“要覆盖所有条件组合至少需要多少条用例”。如果有 n 个条件每个条件只有真/假两种情况那么完全组合数就是2的n次方。但实际设计时很多组合是无效的需要用因果图剪枝再用判定表列出最终的测试用例。举个例子手机App的登录功能有四个条件已连接网络、账号存在、密码正确、验证码正确。如果四个条件都满足则登录成功否则根据不满足的具体条件给出不同提示。不考虑等价类合并粗算需要16种组合但其中“账号不存在”时“密码正确”和“验证码正确”已经没有意义所以判定表中可以去掉大量冗余行。这种题目考的不是你会不会算2的n次方而是你有没有“排除无效组合”的意识。解题时可以先画一张简单的判定表列出条件项和动作项然后标记哪些条件组合是可行且独立的再统计行数。客观题只要结果不要过程但你仍然需要熟练掌握这种方法因为后面面试中面试官很可能让你现场设计测试用例判定表就是很好的结构化表达。3.3 缺陷相关从Bug描述到严重等级缺陷管理是另一个高频考点。题目会给你一段Bug描述然后让你选择“该Bug的严重程度”或者“应该提交给哪个角色”。这里必须分清两个概念严重程度Severity和优先级Priority。严重程度是从用户角度出发衡量缺陷对功能的影响程度优先级是从项目角度出发决定缺陷需要被多快修复。它们之间有联系但不等价。一个严重程度很高的缺陷如果出现在一个几乎没人使用的冷门功能上优先级也可能很低而一个低严重程度但影响主流程演示的界面错乱可能因为发布在即而被设得很高。考察Bug单的题也不少见比如“以下哪项不是一份完整Bug报告所必需的内容”。一个完整Bug报告应该包含标题、预置条件、操作步骤、实际结果、预期结果、版本信息、日志截图等。但有些候选人对“环境信息”没有概念觉得可要可不要。在小米这种硬件产品线丰富的公司同一个Bug可能只出现在特定机型、特定系统版本、特定网络条件下没有环境信息的话开发根本无法复现。3.4 自动化与性能测试基础客观题里的实践导向这一块虽然考得不多但只要出现了都是大厂笔试中的拉分题。常见考点如“Selenium中通过什么定位元素”“pytest中如何跳过一条用例”“JMeter中聚合报告的哪个指标表示平均响应时间”。这些属于工具使用细节需要在平时写脚本时有所接触死记选项容易忘实际操作过一遍就记住了。对于小米这类做智能硬件的公司还可能会考稳定性测试和兼容性测试的基础概念。比如“Monkey测试主要用于发现什么问题”答案倾向于“随机事件产生的崩溃和无响应”而不是“功能逻辑错误”。再比如“系统版本升级后最需要关注哪类测试”当然是回归测试避免旧功能被新版本破坏。客观题考这些说明他们希望测试开发工程师对测试策略有基本认知而不是只会执行手工用例。4. 为什么说“客观题”其实是主观题测试思维才是分水岭很多同学做客观题的时候习惯从“这题选C”的视角去刷做完对答案就翻篇。实际上面试官出这些题不是为了考你唯一的标准答案而是在有限文字里考察你的测试思维方式。同一个选择题有的选项明显是错误的但比较有价值的是那些“都对但哪个最优”的题目。这种题目最有迷惑性也最挑人。4.1 最有效的用例不是覆盖最多代码而是覆盖最关键风险比如一道场景题一个支付功能给你四个待执行的用例——支付成功、余额不足、网络中断、支付金额为0。问应该最先执行哪个很多人会选支付成功因为这是主流程。但站在风险角度支付成功这条用例在开发自测阶段大概率已经跑过测试执行时要优先覆盖的是最容易出错且用户一旦遇到就会投诉的异常分支比如余额不足和支付金额为0。客观题考查的就是这种风险优先级判断。你选出的答案其实反映了你会不会把有限的测试资源投入到最需要关注的地方。再比如回归测试的范围选择。一个新版本修复了登录失败的问题那么你要回归的不仅是登录模块本身还要关注登录后页面的会话状态、权限变化等。如果客观题给你几个模块让你选哪些需要回归正确的思路不是“所有模块”或者“只测登录”而是分析修改点的影响范围。这就是基于风险的回归测试策略。4.2 缺陷定位中的“怀疑一切”精神有一类判断题会这样出“某个缺陷只出现一次且无法复现因此可以关闭该缺陷。”这句话显然是错的。无法复现不代表缺陷不存在可能是触发条件比较隐蔽也可能是测试环境不稳定。正确的做法是补充日志、获取设备信息、尝试复现步骤甚至让开发参与分析。这种题目不需要背只要你想一想“如果我是开发看到一个被关闭的Bug而没有说明原因会不会想打人”就能知道不能随便关闭。与“怀疑一切”相关的还有对“Bug分级”的理解。如果题目说“某App在后台运行时耗电异常增加”这种问题通常被评为中等或严重虽然不影响核心功能但会大幅影响用户体验尤其对于手机厂商来说耗电是一个用户感知极强的指标。小米做手机这类场景感和纯互联网公司不一样更能体现出对硬件特性的理解。4.3 稳定性与兼容性小米这类硬件厂商独有的考题调性小米的测试开发岗位有个特点你测的不只是一个纯软件而是软件和硬件结合的系统。所以客观题里偶尔会出现一些和硬件产品相关的考察比如“智能设备升级到新固件后原来的绑定关系是否保留”“在弱网环境下App端应该缓存数据还是等待超时”等。虽然这些看起来是产品逻辑题但背后的考点仍是稳定性测试和兼容性测试的原则。如果你遇到这类题不要慌把自己代入用户场景用户买了智能家居设备换了路由器App里设备离线这个时候他期望的是什么是App给出清晰状态提示并支持重新配置而不是一直转圈。这种题没有晦涩的理论考察的是共情能力和对用户体验的理解。恰恰是这种题最容易在客观题阶段拉开差距。小米的客观题不会直白地写“兼容性测试的原则是什么”而是用具体场景包装你需要剥离场景看到考察本质。5. 我的备考复盘从错题到Offer的实用方法说回备考。我当年准备秋招时拿到一份类似的客观题合集后没有一上来就整套整套地刷而是给自己定了一个四周计划。这个方法不一定适合所有人但我觉得对基础薄弱、时间紧张的同学挺有参考价值。5.1 刷题姿势先分类后限时再错题归档第一周我把题目按知识点分类比如测试基础、计算机网络、Linux、数据库、编程基础每个板块用两天左右集中攻克。这个阶段不追求速度而是要把每一道题涉及的原理弄清楚。遇到不会的概念直接去看教材或者官方文档然后把笔记写在题目旁边。第二周开始限时刷题。我会把客观题模拟成笔试环境60分钟做60道题左右。限时的作用不是训练你“蒙得快”而是让你感受考场上面对迷惑选项时的取舍。有些题目两分钟内没有思路就先跳过等最后再回来看。这种策略在真实笔试里非常重要因为后面还有编程题不能被客观题拖死。第三周我重新系统回顾了错题。我的错题本不是简单抄一遍正确答案而是会写一句“我当时为什么选错了”比如“混淆了严重程度和优先级”“忘记了TCP三次握手和四次挥手的状态差异”。这个习惯让我在第四周能快速复习而不是对着空白笔记发呆。第四周就是综合模拟和查漏补缺把错题对应的知识点再展开找到相关的变体题目巩固。比如错了一道边界值的题我就再去其他题库里找类似的边界条件题确保自己真的弄懂了而不是只记住了这一道的答案。5.2 客观题和主观题、编程题的衔接很多人会忽略一点客观题里出现的知识点往往是后面编程题和面试提问的“引子”。比如客观题考了“链表中倒数第k个节点”的复杂度后面手撕代码可能就真考这道题。所以不要做完客观题就扔到一边我习惯把每个考点标记成三类状态已经彻底掌握、知道概念但手写代码不熟、完全不懂。第三类会在周末用半天时间专项补习。另外小米的笔试一般会有简答题或编程题比如让你设计某个模块的测试用例或者写一段自动化脚本。客观题中训练出来的思考框架完全可以迁移过去。设计测试用例时先画等价类和边界值再考虑条件组合和异常场景这样写出来的答案结构和条理性都会好很多。如果你在客观题阶段已经习惯了这种思维模式主观题里自然也会流露出来。5.3 善用资料和讨论但别被“参考答案”牵着走刷题过程中一定会遇到答案有争议的题目。我的建议是把它标记出来去技术社区或者和同学讨论但最终要回归到原理。不要因为某篇博客说选B就迷信B也不要因为“网上答案一致”就不再深究。我印象最深的一道题是关于TCP TIME_WAIT状态的网上说法各不相同翻了不少资料后才理解这个状态是为了保证最后的ACK能够到达对端并在足够长的时间内避免旧连接的报文干扰新连接。弄明白之后无论题目怎么变我都能答对。还有一类题是“网上的答案过时了”。比如关于测试工具2018年的答案可能还在说Selenium 3的定位方式现在主流已经是4和Playwright了。这种时候要结合最新版本思考不要迷信旧答案。客观题考基础概念不容易过时但考工具细节时一定要以官方文档为准。6. 写在后面一些被忽略的细节和心态调整最后再聊几点备考时容易被忽略的细节。首先客观题的时间分配一定是“先易后难”遇到完全没有思路的先凭直觉选一个并标记最后有时间再回来验证。不要在单道题上花费超过3分钟哪怕你离正确答案很近因为后续题目的性价比可能更高。其次做题时不要忽略前提条件。很多选择题的坑藏在题目开头比如“以下哪种方法适用于黑盒测试”“以下哪个命令可以查看网络连接状态”。一旦漏掉“黑盒”这两个字后面选项再看都会觉得模棱两可。我认识一个同学拿到一道关于“白盒测试覆盖方法”的题被告知是“选择属于语句覆盖的描述”结果他满脑子都是边界值分析最后自然选错。本质上就是没有抓住题干限定词。第三留意综合场景题。小米的客观题里如果出现一段较长文字描述往往是在模拟一个真实的测试场景。这种题信息量大建议先把关键信息圈出来比如设备型号、网络类型、操作步骤、异常现象再去看选项。很多时候两个选项看起来都对但结合题干里的“用户反馈App闪退”这一句就能排除掉“数据库连接失败”这种无关选项。场景题考察的是你从混乱中提取关键线索的能力这也是测试工程师日常高频使用的技能。第四心态上不要被“模拟题”和“真题”的区别影响节奏。有些同学觉得不是最新题目就不愿意做其实大可不必。面试官看的是候选人的基础能力不是你是不是刷到过原题。你把一套老题的每个知识点都吃透比草草刷完十套新题而不复盘有效得多。我个人在经历过完整秋招后最大的体会是客观题不仅仅是考察知识储备更是在考察你在压力下快速调用知识的能力。刷题是必要的但更重要的是形成自己的知识体系和解题节奏。秋招时间有限不可能所有知识点都复习到极致学会抓主要矛盾、先建立框架再填充细节才是快速提分的核心。这份关于“小米2018秋招测试开发工程师客观题合集”的拆解希望能帮你少走一点弯路。抓住那些不变的基础知识再结合目标公司的业务特征去理解题目你会发现自己不仅在准备笔试也在真正走进测试开发这个角色。
返回列表