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

资讯详情

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

大厂测开笔试怎么准备?美团真题拆解四大核心考点

大厂测开笔试怎么准备?美团真题拆解四大核心考点 最近后台收到不少同学问测试开发的笔试题怎么准备尤其点名要聊大厂的真题。老实说测试开发这个岗位近几年的热度一直没降过各大厂校招里基本是标配需求量甚至比纯开发还大。原因很简单业务迭代越来越快质量保障不能只靠手工点一点需要能写代码、能做工具、能搭平台的测试开发工程师。我自己当年也走过这段路刷过不少大厂的笔试真题美团这套2017秋招测试开发工程师卷B算是比较有代表性的今天认真拆一拆它背后的考察逻辑和备考思路。先说清楚一件事这套卷子虽然是2017年的但它的考点结构放在今天依然很能打。大厂笔试不像网上说的那样随便刷刷题就能过它考察的东西是成体系的。你去看现在的测开岗位要求算法、测试理论、计算机网络、操作系统、数据库、Linux再加上代码能力几乎一模一样。也就是说这套卷子不是用来背答案的而是帮你理解测试开发这个岗位到底要什么样的能力模型。这篇文章适合谁看两类人。一类是正在准备秋招春招、打算投测试开发岗位的应届生你可以把它当作一份复习地图照着查缺补漏。另一类是已经入行但想跳槽大厂的测试同学你会发现笔试的底层逻辑和日常工作是打通的很多题其实是在模拟真实工作里的场景。1. 岗位解码测试开发究竟在做什么在聊笔试题之前得先把岗位本身搞清楚。我见过太多人投了测试开发结果面试被问到你觉得测试开发和功能测试有什么区别时支支吾吾答不上来。连岗位本质都没理解笔试怎么可能答到点子上。1.1 测试开发不是高级点点点很多外行对测试的印象还停留在找个人把功能点一遍就行这是最大的误解。测试开发简称测开的核心是用工程化的手段解决质量保障问题。注意是工程化手段不是手工操作。具体到日常工作测开会做这些事情写自动化测试脚本覆盖核心业务链路开发测试平台让业务同学自助做冒烟测试搭建CI/CD流水线让代码在合入前自动跑测试分析线上日志定位问题根因甚至要做性能压测和稳定性治理。这些工作没有代码能力根本做不起来。所以你能理解为什么笔试要考算法、考编程题了。测开首先是开发其次才是测试。一个写不了代码的测开在现在的技术团队里几乎没有生存空间。尤其是移动互联网时代版本迭代按周计算每次发版前靠人工回归核心用例根本不现实自动化是唯一出路。1.2 笔试为什么这样设计从能力模型反推考察逻辑大厂笔试的出题人脑子里是有一套能力模型的。以美团为例测试开发工程师要具备的能力大概分四层第一层是技术基础包括数据结构、算法、操作系统、网络、数据库。这些是计算机专业的基本功决定了一个人的上限。第二层是测试专业能力包括测试理论、用例设计方法、缺陷管理流程。这一层是测开区别于开发的根本也是笔试卷里最体现岗位特色的部分。第三层是工程实践能力比如写代码解决实际问题的能力、对Linux和Shell的熟练度。第四层是逻辑思维和问题分析能力对应的是卷子里那些开放题、场景题。你看这套2017年卷B的结构就清楚了它既有选择题考基础也有编程题考代码能力还有测试设计题考察专业素养。这四层能力是层层递进的笔试就是在筛选技术底子不差、测开思维在线、代码能力过关的人。所以备考的时候不能只刷LeetCode也不能只背测试理论两边都要抓。2. 核心考点拆解测开笔试的四大金刚我把历年大厂测开笔试的高频考点总结成四大金刚这套卷子基本也是围绕这些来出题的。逐个拆开看你才知道每一块到底在考什么。2.1 数据结构与算法为什么测开也要刷题这里先泼一盆冷水测开的算法题难度确实一般比纯开发低一些但低不等于不考。从这套卷子来看算法和数据结构相关的题约占三成左右常见题型包括数组、字符串处理、链表操作、二叉树遍历、动态规划入门、排序算法等。笔试里的算法题主要考察两个维度一是coding能力能不能把思路用代码干净地写出来二是复杂度意识数据规模大了你的解法能不能扛得住。我见过不少同学测试理论背得滚瓜烂熟一写代码就拉胯边界条件想不完整循环条件写错这种在笔试里基本是送人头。给个实用建议测试开发准备算法题不用往死里刷难题把LeetCode上的简单题和中等题刷扎实就够了。重点练这几类数组和字符串操作双指针、滑动窗口、哈希表的使用、链表和树的遍历、简单的动态规划比如爬楼梯、最大子序和。大厂的测开笔试很少出hard级别的算法题除非是那种对算法要求特别高的部门。还有一点很关键代码要写得规范。变量命名有意义、函数拆得清晰、边界条件有注释这些在笔试里是加分项。因为笔试考的不只是正确答案还看你的工程素养而这恰恰是测试开发这个岗位非常看重的。2.2 测试理论与用例设计拉开分差的关键这是测开笔试里最有区分度的部分也是纯开发背景的同学最头疼的部分。美团这套卷B里就有一道典型的测试设计题给出一个功能需求让你设计测试用例。你光会说输入正常的能过输入不正常的报错是拿不到分的。这里我要特别强调几个必考的核心概念第一个是等价类划分把输入数据按有效性分成若干等价类每个等价类取一个代表值进行测试。比如一个登录框要求输入6到12位密码那有效等价类包括恰好6位、恰好12位、6到12位之间的任意长度无效等价类包括5位及以下、13位及以上。第二个是边界值分析这是等价类的补充专门测边界上的值因为很多bug都出在边界上。还是拿密码举例6位和12位是边界5位、13位是相邻边界都要测。第三个是场景法按用户的操作流程来设计用例覆盖主流程、备选流程和异常流程这在实际工作中用得特别多。这还只是基础笔试里常考的设计题往往还要求结合因果图、判定表来解决多条件组合的情况。当时美团就有类似的需求要测一个优惠券系统涉及用户类型、订单金额、优惠券类型、使用时间等多个条件的组合。这种就考验你能否用系统化的方法覆盖全而不是靠拍脑袋写20条用例然后还有一堆漏网之鱼。那怎么练这部分我的经验是看到一个新的功能需求先分析它的输入域、输出域、前置条件和状态流转再结合等价类、边界值、场景法、判定表这些方法去设计用例最后把用例按优先级排序。这个过程练熟了以后不管笔试还是面试里遇到什么开放题都能答得有章法。2.3 计算机网络与操作系统被低估的基础分很多测开备考的同学忽视计算机网络和操作系统觉得和测试关系不大这是大错特错。你去美团做测开Web端、App端、接口测试哪个不涉及网络线上问题排查哪个不涉及系统底层原理网络这块的高频考点集中在HTTP协议、TCP三次握手与四次挥手、HTTPS的加密流程等。测开尤其要熟HTTP协议因为接口测试是日常工作中最核心的环节之一。状态码的含义要记牢200、301、302、401、403、404、500、502、503这些是基础中的基础。请求方法GET、POST、PUT、DELETE的区别要说清楚GET传参在URL上、POST传参在body里但现在很多框架里GET也能带body这类细节就可以体现一个人是不是真的做过。cookie和session的区别也是高频题简单说cookie存在客户端、session存在服务端但进一步要能说出session的实现机制和分布式场景下session同步的问题。操作系统重点看进程和线程的区别、死锁的产生条件和解决策略、内存管理、进程间通信方式。笔试常见形式是选择题加简答题。比如给你一个场景多个线程同时读写同一个变量问要不要加锁用什么锁。这种题其实是在考察你对并发问题的敏感度而并发问题恰恰是测试中非常容易出现bug的地方。别把这部分当成单纯的八股文背最好能结合实际情况理解。比如HTTP是明文传输的HTTPS在HTTP和TCP之间加了一层TLS/SSL加密那手抓包的时候看到的请求为什么是加密的HTTP的能看到header和body这些在你做接口测试、抓包定位问题的时候都是实打实要用的。2.4 Linux与数据库送分题也要稳拿这两块在测开笔试里属于送分题但很多人拿不到分原因是平时用得少。Linux核心考点包括文件操作ls、cd、cp、mv、rm、find、权限管理chmod、chown、文本处理工具grep、awk、sed、进程管理ps、kill、top、日志查看tail、head等。笔试里要么直接给命令让你选结果要么给一个场景让你写命令。比如找出目录下所有名字包含test的日志文件并统计行数基本答案就是用find加grep加wc组合。数据库部分重点仍然是SQL的增删改查尤其多表查询。测开的工作中写SQL查数据、造数据、核对数据是家常便饭。笔试里常见的SQL题包括给出两张表查询满足条件的记录聚合函数group by加having的组合使用子查询和join的写法。还有一个高频考点是数据库事务的ACID特性以及隔离级别的概念这个在测试并发场景时会用到。我的建议是这两块不用花太多整块时间利用零碎时间刷一刷题就好。但要注意Linux和SQL不能只背命令和语法最好在本地搭个环境实操一遍。MacOS和Linux本身就有终端Windows可以装WSL或者用Docker跑一个Linux容器数据库可以装个MySQL或者直接用SQLite也行。笔试里这种题属于纯记忆加熟练度练到了就是稳拿分。3. 实操策略线上笔试的时间分配与答题技巧聊完考点再说说什么最重要——怎么在真实的线上笔试里把会的都变成分数。我当年也参加过不少次线上笔试踩过的坑比很多同学想象得多。笔试不仅考你会不会还考你在限定时间、限定环境里能不能稳定发挥。3.1 选择题与编程题的时间配比大厂测开的线上笔试通常120分钟题量大概是20道左右的选择题加2到3道编程题加1道测试设计题。很多同学的失败都是从时间分配开始的在选择题上纠结太久导致编程题没时间写结果一败涂地。我的经验是选择题平均每题不超过2分钟遇到卡壳的先标记跳过。一份卷子里总有几道题是故意拉开区分度的不会很正常死磕不值得。编程题至少要留出60到70分钟因为读题、思考、写代码、调试都需要时间。测试设计题虽然篇幅大但往往是在编程题之后一般留15到20分钟就够了。还有一点编程题提交前务必自测边界条件。我看过太多同学代码逻辑主流程没问题但一提交就是通过率0%。原因不外乎数组越界、空指针、大数溢出这些边界问题。写完之后自己脑子里跑几个用例空的输入、最大值、最小值、重复值这4个边界过了至少能拿到一半以上的分。3.2 测试设计题的答题规范化表达测试设计题是测开笔试的特色题它的答题方式是有套路的。很多同学答这题时把所有的用例堆在一起没有分类没有优先级阅卷人看着就觉得这人思路不清晰。这个题其实每道题都在考察你的结构化思维应该把用例按功能模块或者测试类型分组再列出来。分享一个我自用的答题模板基本能应付大多数测试设计题第一步需求分析简单复述题目要测的系统列出核心功能点说明测试范围。第二步测试策略说明采用哪些测试方法比如功能测试、兼容性测试、异常场景测试以及为什么选这些方法。第三步用例设计按模块列出用例每条用例包含用例编号、前置条件、输入数据、操作步骤、预期结果、优先级。第四步风险分析指出这个功能最可能出问题的地方以及测试的盲区。比如题目是设计一个登录模块的测试用例。照着这个模板来答需求分析就是登录模块涉及用户名输入、密码输入、验证码、登录按钮、错误提示、记住密码等功能点测试策略就是功能测试为主加上兼容性和安全性测试用例设计则包括正常登录、密码错误、用户不存在、验证码过期、连续多次失败锁定、并发登录同一个账号等场景风险分析则是要考虑SQL注入、密码明文传输、session安全等问题。这样结构清晰的答题分数不可能低。3.3 代码题通过率是硬门槛我在和一些做校招的朋友交流时听过一个说法笔试这关编程题通过率是要看总体的。如果2道编程题一道都没ACAccepted全部测试用例通过即使选择题答得再好基本也进不了面试。如果AC了一道就还有希望AC了两道基本上稳了。这虽然不是所有公司的统一标准但反映了编程题在笔试里的权重。测开的编程题难度通常是LeetCode简单到中等但题面和业务场景结合比较紧。比如给定一个订单列表计算每个用户的订单总金额并排序这种本质是数组加排序但包装了一层业务背景。这种题考察的就是你在业务约束下用代码解决问题的能力跟实际工作里写自动化脚本、处理测试数据的场景高度一致。备考时我建议每周至少保持3次以上的手写代码练习控制在45分钟一道题的节奏。写完后不要急着看题解先自己跑测试用例去发现问题这样到了笔试的时候调试能力才跟得上。4. 从笔试到面试测开的高频追问与项目准备笔试只是第一关过了之后面试才是重头戏。但是面试里问的东西其实很多在笔试里已经有铺垫了。所以我建议笔试之后立刻开始准备面试内容不要等结果出来再动。4.1 项目经历怎么讲才有亮点测开面试必问项目哪怕你只有实习经历或者学校课程项目。很多同学讲项目的时候喜欢从技术细节讲起什么我用Pytest搭了一个接口自动化框架然后开始背框架细节。这其实是典型的自嗨式回答面试官听不出你的思考。讲项目要有正确的打开方式。首先讲清楚项目的背景和要解决的问题。比如当时业务方反馈回归测试耗时太长每次发版需要手动执行500条用例大约要半天时间所以我想搭一个自动化框架来替代手工回归。你看背景有了问题也明确了面试官能立刻理解你的出发点。其次讲方案的时候要讲为什么选这个方案而不是只讲用了什么技术。为什么选Pytest而不是Unittest因为Pytest的fixture机制更灵活参数化能力更强断言更简洁。为什么用Selenium做UI自动化而不用Appium因为当前项目是Web端App端的自动化可以后续再扩展。这种对比分析能体现你的思考深度。最后讲效果一定要有数据。自动化用例覆盖了核心流程执行时间从半天缩短到20分钟版本发布后线上故障率下降了30%用数字说明价值说服力远强于效果很好。还有一个加分点主动讲项目的不足和下一步计划。比如目前的框架对异步请求的处理还不够好有时候会误报我打算引入显式等待机制来优化。这种反思能力在面试官看来非常珍贵因为这代表你有持续改进的意识而这在测试这个岗位上极其重要。4.2 开放题与八股文怎么平衡现在的测开面试除了问技术八股文还喜欢出开放题。比如给你一个电商App的购物车功能你怎么测试、线上有个bug你排查的思路是什么、你怎么衡量测试工作的价值。这些题没有标准答案考察的就是你面对真实问题的分析能力。应对开放题核心是建立自己的思考框架。以购物车测试为例不要想到哪说到哪而是按层次系统地拆功能层面加购、删减、改数量、清空、结算、价格计算、优惠券叠加、库存校验交互层面各种极端情况下的表现、网络异常、弱网环境、断网重连兼容性层面不同机型、不同操作系统、不同分辨率数据一致性层面App端购物车和服务端数据是否同步、多端登录时购物车是否一致。把这些层次说清楚面试官对你的系统性思维能力就有了判断。至于八股文我的建议是不要死背。比如面试官问HTTP和HTTPS的区别标准答案大家都背过但你如果能补充一句我在实际工作中用Charles抓包时HTTP的接口能直接看到明文请求而HTTPS的需要安装证书才能解密所以涉及到敏感信息的接口一定要走HTTPS这种结合实践的作答会让面试官觉得你是真的做过而不是临时抱佛脚。不要以为测开面试就只问测试问题。Java/Python的基础语法、常见框架、设计模式这些也都会问。你要呈现出的是既有测试专业深度又有扎实的开发功底的立体形象这才是公司想要的测开工程师。5. 学习路线与AI时代的新变化写到最后我想结合这套2017年的卷子给正在准备测试开发方向的你一条清晰的路线也聊聊这几年行业的变化。5.1 一条可落地的测开学习路线如果你是从零开始准备测开我建议按这个顺序来学习每一步都有明确的目标。第一步打好语言基础主攻Python或JavaPython上手快适合入门Java在大厂后端栈里更有优势选一个深入即可目标是用语言实现常见的数据结构和算法。第二步补计算机基础数据结构、计算机网络、操作系统、数据库配合刷题来巩固目标是笔试里基础题不丢分。第三步系统学习测试理论软件测试流程、用例设计方法、缺陷管理、接口测试、性能测试的基本概念可以用如果让我测一个微信红包功能这种题目来检验自己是否真的掌握了。第四步上手自动化测试框架UI自动化选Selenium或Playwright接口自动化用Requests或RestAssured定位是能独立写一个冒烟测试脚本。第五步做项目攒经验可以从开源项目入手做测试或者自己搭一个小项目给它写测试用例和自动化脚本目标是在面试时有东西可讲。这套路线走下来正常需要三到六个月的时间。不要急于求成每个阶段的配套练习必须跟上。尤其是算法和编程光看不练等于白学。5.2 AI对测试开发的冲击与机会最后聊聊热词里提到的AI测试开发。这几年AI工具对各行业的冲击都有测试领域也特别明显。简单说AI已经在改变测试开发的工作方式了。一方面AI辅助测试生成正在成为新的方向。过去写自动化用例要人工逐条设计现在利用大模型输入需求和代码就能自动生成测试用例和测试脚本甚至可以辅助定位失败用例的根因。GitHub Copilot可以帮你写测试代码ChatGPT可以协助分析报错信息和设计边界测试用例。你要会用这些工具让它们成为效率放大器。另一方面AI应用本身的测试带来了新的挑战。AI系统的测试方法和传统软件不一样没有明确的预期输出需要新的验证思路。比如怎么评估一个推荐系统的准确性怎么测试一个图像识别模型的鲁棒性这些正在成为测开工程师新的技能要求。所以你会看到现在的大厂测开JD里开始出现熟悉机器学习基础知识有AI产品测试经验这类要求。我的判断是未来测开的核心竞争力依然是技术深度加解决问题的思路AI是放大器而不是替代者。会用AI工具的测开会比不会用的同行多出至少一倍的产出。说回这套2017年美团秋招卷B它里面的数据结构、测试设计、网络数据库这些核心知识到今天依然是测开的立身之本。把基本功打扎实再去拥抱新工具、新方法这条路依然是最稳妥的。当年和我一起进大厂做测开的同事现在有的在带团队做质量平台有的转去做AI产品测试但无一例外都感激当时下功夫啃基础的自己。备考的过程中如果你做完题发现某些知识点比较薄弱欢迎一起交流。测开这条路很长值得认真走。
返回列表