
1. 笔试整体设计与考点拆解1.1 先搞懂闪送为什么要考这些我当时投闪送的测试开发岗坦白讲一开始是冲着即时配送这个业务场景去的。闪送的业务模式是点对点实时配送这意味着它对系统实时性、稳定性、异常兜底能力的要求非常高——每一分钟级别的延迟都可能直接影响用户体验和平台口碑。所以这家公司的测试开发笔试并不是单纯地考察你会不会写代码而是想确认你是否有能力支撑起一个高并发、强实时、多端联动的复杂系统质量保障体系。从岗位定位来看闪送测开岗要做的不是传统的点点点测试而是把测试工具化、平台化、自动化用代码去解决测试效率的问题。这就决定了笔试题目一定会覆盖三大维度第一是编程基本功第二是计算机基础理论第三是测试专业素养。你要是有任何一头短板笔试环节很容易被筛掉。2023年秋招的形势大家也知道海投简历的人多笔试筛人率非常高。我身边很多同学不是挂在不会写代码上而是挂在对测试开发岗位的理解还停留在写用例、跑回归这个层面。闪送这类互联网公司的笔试题目设置明显是有倾向性的它想筛选的是那种懂开发的测试或者懂测试的开发而不是只会点页面的功能测试。1.2 三个环节行测、编程、开放性问答先说笔试的整体环节划分。闪送的秋招测开笔试整体分成三块第一块是行测类的综合能力题第二块是编程题第三块是开放性的专业问答。行测部分不用太紧张大部分是逻辑推理、数字规律、言语理解这类题目本质上考察的是快速阅读和逻辑判断能力。这部分的备考策略就是刷一刷公务员行测的简单题练一下速度即可不用花太多时间。但要注意的是行测题量不小很多人容易在前面这环节磨太久导致后面编程题时间不够这是一个非常典型的失误点。编程题才是笔试的主菜。闪送在牛客网或者自研平台上出的题目一般是两道一道偏算法一道偏数据结构难度大概在LeetCode中等偏下。但别掉以轻心笔试时间限制是真实存在的你不仅要写出来还要保证能通过隐藏测试用例这就需要在平时养成主动考虑边界条件的习惯。开放性问答这块我觉得是测开岗笔试和开发岗笔试最大的区别所在。它会问你如何设计一个测试方案遇到线上故障你会怎么排查如何对一个功能模块进行测试用例设计这一类问题。说白了就是考察你有没有测试思维而这个思维不是临时刷题能刷出来的一定是平时在项目实践中积累起来的。我后面会详细拆几道典型题目给大家看看测开的思考和开发到底有什么不一样。2. 核心考点深度解析2.1 算法与数据结构不是ACM难度但基础必须扎实从题目分布来看闪送笔试的选择题部分会覆盖不少算法与数据结构概念题比如时间/空间复杂度对比、常见排序算法稳定性、树与图的遍历方式、队列与栈的应用场景等。编程题则集中在链表、数组、字符串、动态规划入门这几个方向上。以我当时遇到的情况为例编程题第一道是关于链表操作的问题——这其实是一个非常经典的信号。为啥爱考链表因为在业务测试里你和数据结构的接触非常高频比如订单状态流转、消息队列的数据结构、骑手路径规划等背后都依赖这些基础结构。你写测试框架的时候也需要对数据有操作能力而不是只会调接口。我建议准备闪送笔试的同学重点刷这几类题链表反转、链表环检测、合并有序链表、二叉树层序遍历、字符串最长公共前缀、经典DP入门题爬楼梯、最大子序和。我在牛客网刷到过几道原题变形所以有精力的同学还是尽量多刷不要抱侥幸心理。2.2 计算机网络与操作系统选择题重灾区这两块在笔试中的比重比较大而且考察得非常细。什么叫细他可能不会直接问你TCP三次握手是什么而是会给你四个关于TCP状态的描述让你选哪一个是正确的。这需要你真正理解协议背后的机制而不是背下来那几句口号。闪送的业务特点是移动端App发单后服务端要持续和骑手端进行位置、状态、消息的交互。这就意味着网络稳定性、数据传输可靠性、断线重连机制都是他们极其关注的点。所以计算机网络考点里面TCP的可靠性保障机制几乎是必考的包括滑动窗口、拥塞控制、超时重传、粘包拆包这些问题。还有HTTP/HTTPS的区别这一个考点我印象里几乎每年都有。操作系统那边常考的就是进程与线程的区别、死锁的条件与处理、常见的进程间通信方式、用户态内核态切换偶尔会有调度算法的选择题。这些知识点对测开来说确实有用因为你在做性能测试、排查线上问题的时候如果不懂操作系统层面的概念很可能连问题出在哪儿都不知道。2.3 数据库与SQL白给题也别丢分数据库考点在我看来是最容易拿分也最容易丢分的地方。说容易是因为考点极度集中翻来覆去就是索引、SQL优化、事务四大特性、隔离级别、线上慢查询排查这些。说容易丢分是因为很多测开同学对SQL的书写熟练度不够平时写测试脚本大部分都是查数据很少做联表复杂查询真到了笔试里SQL题一上难度就容易卡壳。闪送笔试里面数据库题目主要分两种一种是概念选择题比如问哪一个场景适合建索引涉及索引失效、最左前缀规则这类细节另一种是手写SQL题目通常涉及订单表、骑手表、用户表之间的联表统计。这个思路很符合业务场景毕竟测开做数据核对、造数据、验证数据一致性都是日常操作。写SQL题的时候我给大家一个经验先看清楚题目的统计口径宁可用笨办法写长一点也不要一上来就优化导致语句报错。笔试判卷一般能跑通就给分性能是加分项不是必需项。2.4 测试专业题用例设计与自动化基础如果说算法题决定了你的下限那么测试专业题直接决定了你的上限。我在笔试里碰到的测试题有给一个功能模块让你写测试用例的有问如何对接口做自动化测试的还有问如果线上出现了一个严重Bug你的处理流程是什么。这类题目答题的关键不在于写得多而在于你能不能体现出测试思维的结构化。什么是结构化就是拿到一个需求你不是东一榔头西一棒子地乱点而是按照功能、兼容性、性能、安全、异常场景、用户体验等多个维度来思考。这样呈现出来的测试方案才是一个有经验的测试工程师该有的思路而不是新手的直觉。举个例子如果题目让你测试一个登录功能很多人第一反应是写几个正确账号密码能登录、错误密码提示失败就完了。但在面试官眼里你要覆盖的至少包括正常路径、异常输入空值、超长字符、特殊字符、密码加密传输、验证码或短信接口限流、连续失败锁定策略、弱密码校验、多端登录冲突、Token过期处理、网络超时情况下的提示等。把这些维度写出来阅卷人自然能看出你的专业度。3. 笔试实操完整真题复盘3.1 编程题原题复盘反转链表我遇到的第一道编程题大概是这么描述的给定一个单链表的头节点head请反转该链表并返回反转后的链表头节点。要求不能使用额外的链表节点存储空间需要原地完成反转。同时需要考虑链表为空以及只有一个节点的情况。这道题一看就是LeetCode 206的原题。很多人觉得简单但笔试里丢分的人不在少数原因主要是两个一是递归写法没考虑空链表导致栈溢出二是迭代写法边界条件没处理好链表中途断了还拿不到正确的新头节点。我当时写的是迭代版本class ListNode: def __init__(self, val0, nextNone): self.val val self.next next def reverseList(head: ListNode) - ListNode: prev None curr head while curr: next_node curr.next curr.next prev prev curr curr next_node return prev这道题核心就是三指针变换。你需要在改变当前节点next指向之前先把下一个节点保存下来不然链就断了。然后prev指针作为反转后的头部不断推进。面试官后来越问越深的地方在于反转链表第m到n个节点怎么做以及每k个节点一组反转。这些都是在原题之上的进阶建议大家都要练到。3.2 编程题原题复盘全排列第二道编程题我当时遇到的是输出给定数组的全排列属于回溯算法的经典问题。题目一般会提示你可以使用任意编程语言输出顺序没有要求但不可以有重复排列。这题考察的点很明确递归回溯的模板掌握程度。你在写的时候要让阅卷人看到你有清晰的状态回溯意识就是尝试一个选择然后做完了记得撤销这一步选择不然结果会是一堆重复的排列。我给的参考解法是这样的def permute(nums): res [] n len(nums) used [False] * n def backtrack(path): if len(path) n: res.append(path[:]) return for i in range(n): if used[i]: continue used[i] True path.append(nums[i]) backtrack(path) path.pop() used[i] False backtrack([]) return res这道题在笔试中出现的概率非常高而且它可以变形出很多变种比如去重全排列、子集、组合总和、括号生成等。测开岗位的实际业务里用得最多的其实并不全是这些硬核算法而是字符串处理和状态流转的逻辑但算法题目的意义在于考察你的抽象思维尤其是能否把复杂逻辑拆解成一个可递归可回溯的状态机。这道题如果你能不看任何参考资料默写出来并且能解释清楚为什么用used数组那基本就能过关。3.3 测试用例设计题手写示范笔试开放性问答里有一道典型题目我是这么处理的题目请为闪送App用户下单功能设计一套完整的测试方案。我当时分成了几个层次来回答。第一层是功能测试覆盖用户从点击发送闪送按钮到支付完成、订单创建成功的全链路。要设计正常输入、边界输入比如寄件地址和收件地址重叠、非法输入比如手机号位数不对等场景。第二层是异常场景测试比如用户下单过程中网络断掉、支付超时、订单重复提交、定位权限被拒绝等。第三层是兼容性测试覆盖iOS和Android主流版本、不同屏幕分辨率。第四层是性能与体验测试比如下单接口的响应时间、高并发时的系统表现。下面是简单示范的用例表格用例编号测试场景前置条件操作步骤预期结果优先级TC001正常下单已注册并登录已授权定位填写寄件/收件地址、选择物品类型、预估价格并提交订单生成成功页面显示等待骑手接单P0TC002下单时网络断开已填写完所有信息点击提交按钮前开启飞行模式页面提示网络异常不生成订单恢复网络后可重试P0TC003重复点击提交按钮已填写完所有信息连续快速点击立即下单3次只生成一个订单其余请求被幂等拦截P0TC004寄件地址与收件地址相同已登录填写的寄件地与收件地一致页面明确提示寄件地址与收件地址不能相同P13.4 场景题如何测试验证码输入框这个题目看起来简单但非常能拉开差距。验证码输入框的测试绝不是输对能登录输错提示错误这一个维度。我当时把它拆成了八个维度这里分享给大家。第一个维度是输入规则。验证码一般是6位数字那么5位、7位、含字母、含特殊字符、空格、全角数字这些情况都要有对应预期。第二个维度是校验逻辑包括验证码正确、错误、超时过期、多次输错后是否需要重新获取。第三个维度是获取验证码的频率限制比如60秒内禁止重复点击获取按钮这个功能很多测试新人根本想不到。第四个维度是倒计时逻辑比如倒计时结束后按钮是否恢复可点击状态。第五个维度是验证码发送渠道的正确性尤其是逻辑漏洞比如手机号更换后验证码是否还发到旧号码。第六个维度是不同网络条件下的获取与提交表现。第七个维度是安全维度包括接口是否对验证码尝试次数做限制、是否防止爆破。第八个维度是UI/UX维度包括键盘类型、复制粘贴支持、错误提示的样式和位置。你这样写出来的答案阅卷人一看就知道你是有真实测试经验的人而不是只会背书的学生。笔试毕竟只是为了筛选真正拉开差距的其实是你对细节的敏感度。4. 常见问题与避坑指南4.1 时间分配的血泪教训我第一个要提醒的就是时间分配问题。行测类的题目会放在前面题量大且比较琐碎如果你每一道都想抠透彻很容易花掉四十分钟以上。我当时就吃了这个亏前面做得过于细致导致后面的编程题时间很紧张。建议的策略是行测题目限时二十分钟到了时间不管做没做完立刻跳到编程题。因为行测题的边际收益很低你对一道题的长期记忆和短期思考并不会改变结果太多但编程题只要你多写一行有效代码通过的可能性就能大幅提高。开放性问答题放在编程题后面如果你的编程题比较顺利留二十分钟给问答就足够。如果编程题写得不顺宁可把核心思路写出来也别死磕先把问答题的关键点写满因为问答题往往是人工阅卷有结构分而编程题只跑用例写一半的代码通常拿不到分。4.2 编程环境与输入输出的坑闪送笔试用的平台一般支持多种主流语言但要特别注意它给的代码模板有时候是带完整类结构的有时候就是白板让你自己读输入。这两种模式的写代码方式完全不同如果你平时自己刷题都是在LeetCode上填空那到了笔试平台很容易懵。我建议大家在准备秋招的时候一定要去牛客网的笔试模拟环境刷题尤其是训练一下自己处理标准输入输出的能力。很多时候你算法思路完全正确就是卡在处理输入格式上比如题目要求输入多行每行包含若干整数你没有用对读取方式直接崩了。这种丢分最可惜纯粹是环境不熟悉导致的。还有一个坑是语言版本选择。有的老平台默认的Java版本不支持var关键字有的Python版本不支持最新语法特性。我就见过有人在笔试时用了Python的match语法结果平台直接编译失败白搭了一道题。所以考前一定要看清楚平台支持的语言版本尽量用保守的写法。4.3 笔试后的跟进经验笔试结束不等于万事大吉。很多同学交卷后就直接关掉页面等通知这其实是浪费了一个机会。现在的笔试平台往往会提供本次答题情况的查看入口你可以看到自己的通过率和在候选人中的排名区间。如果有这功能建议认真看一下当作自我复盘参考。另外如果笔试后三天还没有收到任何反馈我是建议礼貌发邮件问一下HR的。不要频繁追问一封询问邮件表达一下你对该岗位的兴趣同时附上一句如果有后续环节需要配合随时可以安排就足够了。我身边就有同学因为主动问了一封邮件被HR从备选池里捞起来补了一轮面试机会。这不一定每次都有用但值得尝试。5. 写在最后测试开发到底需要学什么5.1 基础不牢地动山摇刷完这套笔试我最深的感受是测试开发这个岗位看起来是测试开发的复合岗但其实它要求的基础知识覆盖面非常广。计算机基础四门课—数据结构、计算机网络、操作系统、数据库每一门都不能有明显短板因为你日常工作中遇到的很多问题追根溯源都是这些基础理论的延伸应用。我举个具体例子。线上订单积压导致系统响应变慢你if else排查半天没结果但如果你懂操作系统和网络你会先去查线程池是否被打满、数据库连接池是否耗尽、消息队列的消息堆积量是否异常、全链路追踪的Span耗时分布在哪里。这些排查思路全部都建立在计算机基础之上不是靠拍脑袋猜出来的。所以如果你还在准备笔试阶段我强烈建议不要盲目追求刷难题怪题而是把四大基础课程重新过一遍。学的时候也别死记硬背要多问自己这个知识在真实业务里解决什么问题。比如学习TCP粘包拆包的时候想一想如果闪送骑手App实时上传位置数据服务端需要怎么处理才能准确解析出每一帧坐标。这样的学习方式能让你在笔试中面对任何场景题都能有自己的理解。5.2 AIGC时代测开的新机会与新挑战今年我身边很多人都在聊AI辅助测试开发这个方向比如怎么用大模型帮我们生成测试数据、自动生成测试用例、辅助分析缺陷报告。我觉得这确实是趋势但也不要因此焦虑到忽视基本功因为大模型目前还是助手而不是专家它生成的用例可能看起来很全但盲点依然存在尤其在复杂业务状态转换、异常恢复路径这些场景里还是需要人工兜底。我在笔试中有道开放题就问到了类似问题如果给你一个AI能力你最想把它应用到测试流程的哪个环节我当时答的是测试数据自动生成和线上故障关联分析这两个方向。前者能省掉大量人工造数据的时间后者能自动把线上告警、日志、发布记录串起来辅助定位问题根因。准备这个方向的同学平时可以多关注一下目前行业中AI辅助测试的实践落地案例笔试作答的时候能体现你对行业趋势的了解这往往是加分项。最后想对准备秋招的学弟学妹们说一句笔试只是一道门槛它考察的其实是你过去积累的厚度。与其焦虑题库刷得不够多不如扎扎实实把每一个知识点搞懂。我自己踩过的坑希望你们能避开。祝大家都能拿到心仪offer。