
1. 笔试基本信息与整体印象说起2021年小米秋招测试开发方向的第一场笔试我的记忆挺清晰的。那会儿正值秋招高峰期各家大厂的笔试扎堆小米的这场笔试安排得比较早大概在九月初形式和很多互联网公司类似——线上笔试双机位监控全程大约两个小时题量不小。先说大家最关心的这场笔试到底考什么我做了之后最大的感受是它和纯后端开发岗的笔试有明显区别虽然也考编程题但更加侧重测试思维和工程综合能力计算机基础、测试理论、代码能力几乎是三足鼎立少一块都会觉得吃力。整体难度上数据结构算法题大约是LeetCode中等偏下到中等水平不算特别难但题目量偏大节奏紧张需要在平时就有足够的刷题速度和准确率。说实话秋招笔试和考研或者学校的考试完全是两种感觉。学校的考试是知识检验笔试则是筛选和竞争每一道题的时间都很宝贵很多时候不是“会不会”的问题而是“够不够快”。小米这场笔试给我一个很直观的感受它想筛的不仅是会写代码的人更是具备完整测试素养、能站在工程质量角度思考问题的人。这篇文章我就结合当年的真题回忆把题型分布、核心考点、答题策略和复盘经验完整梳理一遍给后来准备测试开发方向笔试的同学做一个参考尤其是那些打算投测试开发岗位、但还不清楚这个岗位笔试到底会考什么的人这篇应该能帮你少走不少弯路。2. 题型分布一场笔试考了什么2.1 整体题型构成2021年小米秋招测试开发第一场笔试的题型大致可以分成三块选择题、编程题和简答题。我记得选择题大概有二十道左右覆盖面比较广从计算机网络、操作系统、数据库到测试基础理论、软件工程甚至Linux命令都有涉及。编程题我记得是两道一道偏数据结构算法一道则带有测试开发的色彩比如给定一段代码让你设计测试用例或者让你补全一个测试方法。简答题是测试开发方向比较有区分度的模块通常两三道考测试用例设计、bug定位思路、自动化测试框架的理解等。这类题没有标准答案考察的是你的思维方式和工程经验这也是很多只刷算法题的同学容易翻车的地方——因为这不太能靠背八股文解决需要真正理解测试工作的逻辑。从题量配置来看选择题和简答题占据了大半壁江山编程题只占一部分。这和不少同学想象中的“笔试就是刷题”有偏差它更像是一场综合能力摸底考试既要看你的代码水平也要看你的专业素养。2.2 时间分配的初步策略两个小时做这样体量的题目时间上是偏紧的。我当时的大致策略是先快速把选择题过一遍遇到拿不准的标记一下不要纠结太久控制在四十分钟以内然后做编程题每道题给自己二十分钟左右的时间先写主体逻辑再补边界最后留出至少三十分钟写简答题这类题分值高、主观性强写好了很拉分。这个策略后来我复盘觉得是合理的。选择题属于“会就会、不会就跳”纠结再多也没用编程题要有取舍如果第二道太难先把第一道完整的、健壮的写出来比两道都只写一半要好得多简答题则是展示你测试思维的主战场一定要留足时间把思路写清楚能画图就画图能举例就举例。所以准备这场笔试之前我强烈建议你先做一次模拟掐表感受一下自己的做题速度。很多同学平时刷题或者在牛客网做专项练习都没问题一到限时、限环境的真实笔试就手忙脚乱这里面差的不是知识储备而是对时间维度的适应能力。3. 核心考点逐题拆解3.1 选择题模块计算机基础是“送分题”还是“送命题”选择题覆盖的知识面广但难度其实不大正经科班出生的同学应该都能拿个七八成。我印象比较深的几个方向计算机网络TCP三次握手、四次挥手的状态变迁TCP和UDP的区别HTTP和HTTPS的差异DNS解析过程。这些都是高频考点几乎每次笔试都会遇到。有一道题问的是TCP连接建立过程中SYN和ACK的序号关系考察的是对报文段序号和确认号的理解这个光背状态图不够要真正理解“确认号是下一次期望收到的序号”这个含义。操作系统进程和线程的区别、死锁产生的四个必要条件、页面置换算法、进程调度算法。有一道关于银行家算法的题给你一个分配矩阵问你系统是否安全这种题只要把安全序列推一遍就能得到答案关键是平时多练几道考试时就能算得又快又稳。数据库SQL语句的编写、事务的ACID特性、索引失效的场景、内连接外连接的区别。有一道题给了两张表让选出符合某个条件的学生姓名其实考察的就是一个简单的join加where查询属于基础中的基础。Linux常见的文件操作命令、权限管理的数字表示、进程查看命令。比如chmod 754的含义ps和top的区别这类题会就是送分题不会就很容易懵。我的建议是这部分不需要大量刷难题把大学课本里的核心概念过一遍配合牛客或者力扣上的专项练习题做几十道就够了。关键在于理解原理不要死记硬背比如死锁的产生条件你要能用自己的话解释为什么“循环等待”和“互斥”缺一不可而不是只会背“互斥、持有并等待、不可剥夺、循环等待”四个词。3.2 编程题不只是算法更是测试思维的试金石编程题我印象里是两道其中一道是比较经典的数据结构题大概是链表相关的操作另一道则很测试开发——给出一段有缺陷的代码要求找出可能出错的场景并设计测试用例。这两类题的应对策略完全不同。第一类算法题靠的是平时刷题的积累。链表反转、合并有序链表、二叉树遍历、栈和队列的应用这些都是常青树反复出现。我建议在秋招前至少把LeetCode的Top 100高频题刷一遍尤其是easy和medium的题目要做到看到题目就能快速反应出解题思路。第二类测试开发特色编程题就非常考验工程思维了。拿到一段代码你不能只从“能否运行”的角度去看要像真正的测试工程师一样列出正常路径、边界条件、异常输入、并发场景甚至要考虑代码的可维护性和可扩展性。这种题我最后写了很多从等价类划分到边界值分析确保覆盖了尽可能多的场景。比如那段代码如果是一个字符串处理函数那测试用例至少要考虑空字符串、只包含一个字符的字符串、包含特殊字符的字符串、超长字符串、Unicode字符、null传入等等。这个思路不是刷题能刷出来的它需要你真的动手做过测试写过测试用例踩过线上bug的坑才会形成那种“到处找茬”的条件反射。3.3 简答题拉开差距的关键模块简答题是整个笔试中区分度最高的模块也是测试开发岗位和纯开发岗位笔试最大的区别所在。我清楚的记得有一道题是针对一个登录功能设计完整的测试用例。很多人看到这题觉得简单但写出来的内容差距非常大。低分的答法通常是列几个常见场景输入正确账号密码能登录、输入错误密码提示错误、密码为空怎么办。这种答案虽然没毛病但太浅薄了。高分答案应该要分层设计功能测试部分覆盖正常路径和异常路径考虑密码加密传输、验证码校验、账号锁定策略安全测试部分要考虑SQL注入、暴力破解防护、session管理兼容性测试要考虑不同浏览器、不同分辨率、不同操作系统性能测试要考虑并发登录、数据库连接池耗尽的情况还要考虑弱网、断网等异常场景。这类题的答题思路就是“从点到面从功能到非功能”把测试思维完整地展现出来。我当时的方法是先写出测试维度再在每个维度下展开具体用例把测试方法等价类、边界值、场景法、错误推测法明确标注出来这样阅卷人一眼就能看出你是正经学过测试的而不是随便写几个用例来应付。3.4 测试理论与工程思维考点除了上面这些点简答题里还会出现一些测试理论相关的问题。比如什么是白盒测试和黑盒测试、什么是单元测试和集成测试、自动化测试框架的选型思路、如何保证测试覆盖率、如何定位一个偶现bug。这些问题看起来是送分题但要回答好也不容易。拿“如何定位偶现bug”来说很多同学的答案是“多跑几遍复现”这就是典型的没有工程经验。真正的思路应该是先收集现场信息包括日志、堆栈、环境信息、操作步骤、数据特征然后尝试缩小范围是特定环境才会出现还是随机出现是特定数据才会触发还是所有数据都受影响再用排除法逐个模块去隔离验证二分法定位实在复现不了可以在代码中增加埋点日志下一次出现时获取更多信息。如果你能写出这样的层次说明你是真的踩过坑而不是只会背概念。这也是测试开发这个岗位比较特别的地方它要求的不是纯理论的“做题家”而是能解决实际问题的工程师。笔试中这些开放性问题本质上就是在用低成本的方式筛选出有工程经验的人哪怕你没有正式工作经验做过课程设计、参加过比赛、在GitHub上有项目都可以把这些经历中的思考写进去帮你在答案中展现真实力。4. 备考路线与关键能力提升4.1 针对测试开发的系统性备考方案很多准备测试开发岗位的同学最迷茫的地方就是不知道这门课怎么复习也不知道该刷什么题。我结合自己的经验整理了一套相对系统的备考路线覆盖笔试和之后的面试基础。第一阶段是梳理测试基础理论大概需要三到五天。找一本经典的软件测试教材或者参考一些公开课资料把软件测试的生命周期、测试方法等价类划分、边界值分析、因果图、判定表、场景法等、测试级别单元、集成、系统、验收测试、测试类型功能、性能、安全、兼容性、易用性等过一遍。边学边做笔记尤其是测试用例设计的方法一定要亲手写几个案例来巩固光看不练等于没学。第二阶段是计算机基础巩固建议用两周时间。计算机网络、操作系统、数据库、Linux这四门课是笔试选择题的重灾区也是面试中必问的基础。每天固定时间刷对应科目的选择题做完及时复盘错题把错题背后的概念吃透。这个阶段不求快但求稳基础不扎实后面刷代码题和简答题都很容易崩。第三阶段是编程能力强化建议贯穿整个秋招周期每天至少一道算法题。测试开发的算法题比后端开发的整体难度要低一些但也不能掉以轻心因为有时候会考一些字符串处理、数组操作的题细节非常多容易在小地方翻车。另外强烈建议练习手写测试用例平时刷题时不要只满足于“代码过了测试”要多想想“哪些测试用例能暴露代码的bug”这个习惯能让你在后面遇到测试设计题时事半功倍。第四阶段是简答题和面试题专项训练。可以搜集往年的测试开发面试题和笔试简答题按照“先说结论、再分维度、每个维度给出具体例子”的答题套路来练习。练习的时候最好用笔写或者在电脑上打字而不是只在脑子里想因为真的考试时间紧张组织语言的速度也是能力的一部分。4.2 刷题平台与工具选择工具选得好备考效率能翻倍。笔试刷题我用得最多的是牛客网和LeetCode牛客网上的互联网公司真题非常全很多题就是原题或者变体建议把近两三年的测试开发真题都过一遍。LeetCode就集中刷高频题不用追求题量关键是同一个思路能用在不同题目上。算法这块推荐先过一遍《剑指Offer》这个大家都懂基础中的基础很多大厂的算法题都是从里面变形出来的。之后再有针对性地按专题刷比如数组、链表、字符串、二叉树、动态规划几个大类每个大类找十道左右的经典题吃透。测试开发岗位对算法的要求通常到动态规划中等难度就够了像红黑树、KMP这种偏竞赛向的题时间有限可以暂时放一放。简答题的准备模式比较特殊我推荐用“费曼学习法”——把每个测试概念用自己的话讲出来最好讲给不相关专业的人听能让他们听懂就说明你真懂了。比如“什么是回归测试”如果你只能说“就是重复测试”那理解还太浅了理论上应该能解释出回归测试的目的是防止修改引入新缺陷其核心价值在于验证系统的稳定性以及如何选择回归测试的范围等。4.3 学习路线图从入门到笔试通关这里专门说给从零开始准备测试开发方向的同学。如果你连测试开发是干什么的都还不清楚先别急着刷题花一两天时间了解岗位职责测试开发不是“点点点”的手工测试而是通过写代码、搭建工具、建立测试框架来提升测试效率和质量的工程岗位。自动化测试、性能测试、测试平台搭建、CI/CD集成都是测试开发的工作内容。了解岗位后按这个学习路线来第一周软件测试基础、数据库基础、Linux常用命令。第二周计算机网络体系结构、操作系统核心概念、常见算法入门。第三周到第四周刷题强化算法笔试真题每天保持手感。第五周起模拟笔试、复盘错题、练习简答题表达持续到笔试前。这条路线适合大多数计算机相关专业、有一定编程基础的同学。非科班的话建议提前补一补计算机基础时间周期拉长比如把计算机网络和操作系统各拆成两周来学。不用指望一口吃成胖子但每一步都要走扎实毕竟笔试只是第一关后面还有面试等着你。5. 实战踩坑与复盘5.1 那些年笔试踩过的坑希望你避开笔试过程中有几处我自己踩过的坑分享出来希望大家避免。第一个坑是选择题卡壳就破罐子破摔。有人遇到一两道不会的题就开始慌觉得这次笔试完了后面的题也不好好做了。我真实的经验是大部分人的笔试成绩都是一半实力一半运气你遇到的难题别人也未必会做稳住心态把能拿的分全部拿到结果通常不会差。我做选择的时候碰到一道关于数据库隔离级别的题当时不确定REPEATABLE READ和READ COMMITTED的区别果断标记了跳过最后再回来看反而想起来了。第二个坑是编程题只顾着写功能没考虑边界。笔试的判题系统非常严格不只是看逻辑对不对还要看各种边界条件。很多算法题你思路完全正确但忘了处理空链表或者数组越界直接就报错白白丢分。平时刷题时就要养成习惯写完代码后先自己脑测几个边界场景再提交。第三个坑是简答题内容太空洞。很多人写测试用例设计题只写正常场景不写异常场景只写功能不写性能只写操作步骤不写预期结果。每一条测试用例至少应该包含四个要素前置条件、操作步骤、输入数据和预期结果缺少任何一个都不完整。按照这个结构来写阅卷老师一眼就能看出来你有专业素养即使答案不完美分也不会低。5.2 时间管理与做题顺序的复盘笔试结束后我认真复盘了时间分配发现最需要优化的是简答题的答题节奏。我当时因为前面的选择题和编程题消耗了太多精力写简答题的时候尤其是最后一道测试设计题时间已经很紧张了有些场景考虑得不够全面。如果再来一次我会在拿到试卷的第一时间就用两分钟把全部题目看一遍对简答题的考察方向有个大概预判然后在做选择题时遇到和简答题相关的知识点会特别留心比如选择题考了session和cookie的区别简答题里正好有个登录功能的测试设计题这时候就可以把选择题里的知识点迁移过去让答案更有深度。还有一个小技巧是编程题如果一时没有思路先别死磕跳过去做简答题让大脑的潜意识去处理算法问题。这个听起来有点玄学但实际体验下来当你回头再看那道题时往往会有新的思路比干坐着盯着题目发呆有效得多。5.3 笔试之后的思考小米这场笔试结束后我最大的感受是测试开发方向的笔试从来都不是单纯的算法竞赛它是一面镜子照出你对测试这个领域到底理解多少、做了多少。曾经我以为测试开发就是“会写代码的测试员”后来才慢慢理解这个岗位的核心价值在于“用工程化的手段解决质量保障问题”。笔试中那些简答题、那些带有测试色彩的编程题都是在考察你是否有这种工程化思维。算法题只是敲门砖真正能让你在众多候选人中脱颖而出的是你在测试设计、缺陷分析、质量保障这些维度上的积累和思考。所以我的建议是不要只盯着题海战术刷题之外还要多写、多想、多沉淀。找一个小项目亲手搭建一套自动化测试框架感受一下用例设计、元素定位、测试报告生成的完整流程或者参加一些开源项目的测试工作哪怕是帮忙提issue、补充测试用例都是很好的实战经验。这些经历也许不会直接出现在笔试答案里但它们会内化成你的测试思维让你在遇到那些开放性问题时能写出真正有深度、有细节的答案。如果你还在准备笔试的路上希望这篇复盘能给你一些方向上的参考。秋招是一场马拉松笔试只是第一道关卡放平心态认真准备属于你的offer迟早会来。