2023年秋招,我投了腾讯音乐的技术测试岗,8月下旬参加了第一批笔试。两个小时的笔试做下来,最大的感受是:题型覆盖面比想象中广,难度不算夸张,但时间非常紧凑,很多题不是不会,而是来不及做完。这篇文章我把当时笔试的题型分布、踩过的坑、复盘思路整理出来,给后续投这个岗位的同学做个参考。无论你是科班出身还是半路转测试,只要目标岗位是技术测试、测试开发这类方向,这套复盘思路都可以直接用上。
1. 笔试前的岗位认知与准备思路
1.1 技术测试岗到底在考什么
在说笔试内容之前,得先搞清楚一件事:技术测试岗的笔试,和开发岗的笔试有本质区别。
开发岗笔试基本是纯算法题,数据结构与算法占大头,考的是写代码的能力。但技术测试岗不同,它既要你懂编程,又要你懂测试理论,还要你具备计算机基础知识,甚至行测逻辑题也会掺一脚。腾讯音乐的技术测试岗笔试,整体是“行测 + 技术基础 + 测试专项 + 编程题”的混合体,更像是在筛选“综合素质过关、有测试思维、代码能力不算差”的人。
这一点直接决定了复习策略:不能只刷算法,也不能只背测试理论,得几手抓。
1.2 笔试题型分布与复习方向
我那一场笔试,总时长120分钟,题量大致是这样:
- 行测逻辑题:10道左右,包含数字推理、图形推理、逻辑判断;
- 计算机基础选择题:15道左右,覆盖数据结构、计算机网络、操作系统、数据库;
- 测试专业题:10道左右,涉及测试用例设计、缺陷管理、接口测试、性能测试基础;
- 编程题:2道,一道偏数据结构,一道偏字符串处理。
从分值上看,选择题和编程题几乎各占半壁江山,选择题的正确率决定了你能不能进面试,编程题则决定了你的上限。
提示:针对技术测试岗笔试,复习重点优先级建议是:数据结构基础 > 测试理论 > 计算机网络 > 数据库 > 操作系统。不要把大量时间花在啃算法难题上,笔试中的编程题只要求AC一道就有基础分,两道全AC的难度并不大,属于“保一争二”的策略。
1.3 我的复习节奏与资料选择
我大概是笔试前两周开始集中复习的。前一周把数据结构的核心章节过了一遍,重点放在链表、栈、队列、二叉树遍历、字符串处理这些高频考点上。第二周开始刷测试理论题,同时每天固定做一套行测逻辑题练手。
资料方面,我没有买专门的笔试辅导书,用的是三样东西:牛客网的企业真题题库、一本计算机基础面试题汇总、还有自己之前上课记的软件测试笔记。实测下来,牛客网的题库最贴近真实笔试风格,尤其是行测部分,多刷几套就能找到感觉。
2. 题型全景拆解与得分策略
2.1 行测逻辑题:快速拿分的关键
很多人会忽略行测部分,觉得技术岗笔试应该全是技术题。但实际上,行测题往往是拉开差距的第一道关卡。
腾讯音乐笔试的行测题集中在数字推理、图形推理、逻辑判断三类。数字推理就是给你一串数字找规律,比如“2, 3, 5, 9, 17, ?”这种,规律通常是差值递增、倍数关系、奇偶位分开看等。图形推理则是给几个图形找变换规律,常见的有旋转、翻转、叠加、去同存异。逻辑判断就是给一段文字,判断推理是否正确。
我当时的策略是:能快速看出规律的就做,超过30秒还看不出来的直接蒙一个,然后标记后面再回来看。原因很简单,行测题分值不高,但很耗时间,一题卡2分钟,后面编程题就没时间写了。
经验分享:数字推理题有一个通用思路——先看相邻项差值,差值没规律就看倍数关系,倍数也没规律就尝试分组(奇偶位、三项一组),80%的题都能用这三步搞定。图形推理则优先看“元素数量变化”,这个规律在题库中出现频率最高。
2.2 计算机基础与数据库SQL
计算机基础部分,考察范围比较常规,但有几个点值得特别注意。
数据结构考的是链表与数组的区别、栈和队列的应用场景、二叉树的前中后序遍历、哈希表的冲突解决方法。这些都属于基础中的基础,只要上课认真听过,基本都能答对。
计算机网络主要考TCP三次握手与四次挥手、TCP与UDP的区别、HTTP状态码的含义。这里有一个容易丢分的细节:腾讯音乐笔试会连着出两三道HTTP相关的题,比如“301和302的区别”“HTTP和HTTPS的端口号”,这些知识点很碎,不专门背真的容易记混。
数据库考的是SQL语句和事务特性。SQL题不难,基本就是SELECT、JOIN、GROUP BY的组合查询,但又和开发岗笔试不同,测试岗会更倾向于考“如何通过SQL验证测试数据”,这个思路需要转换一下。
操作系统相对考得少,主要是有没有出现过死锁的判断,以及进程与线程的区别。
2.3 测试专业知识专项
测试专业题是技术测试岗笔试的“分水岭”,这部分答得好不好,能直接反映你有没有测试思维。我当时遇到的测试专业题,大致可以分为几类:
第一类是概念题,比如“黑盒测试和白盒测试的区别”“回归测试什么时候执行”“BUG的优先级怎么划分”。这类题只要背过测试理论,基本送分。
第二类是场景题,比如“给你一个登录功能,设计测试用例”“购物车功能如何做边界值分析”。这种题没有标准答案,但阅卷人能从你的回答中看出思路是否清晰。我的答题方式是“先输入、后处理、再输出”三段式展开,覆盖正常流程、异常流程、边界情况三个维度。
第三类是工具题,问“用过的接口测试工具有哪些”“如何定位一个接口返回500的问题”。这需要平时有实操积累,建议至少熟悉一种接口测试工具和一种抓包工具的使用。我常用的是Postman和Charles,这两个工具在测试岗笔试中出现频率极高。
注意:场景类测试用例设计题,一定要分点作答,用“编号 + 操作步骤 + 预期结果”的格式。不要用大段文字描述,阅卷人看一眼就能看到采分点,这才是拿高分的关键。
3. 编程题应对与实操复盘
3.1 编程题的整体难度与选题策略
腾讯音乐笔试的编程题,整体难度在LeetCode中等偏下,不涉及特别复杂的算法,但很考验编码速度和基础的代码功底。
我遇到的编程题有两道,一道是链表相关问题,一道是字符串处理问题。第一道可以用双指针解决,第二道可以用哈希表配合字符串遍历解决。整体来说,认真准备过数据结构基础的同学,AC一道是稳的,两道全AC需要一点运气和手速。
这里有一个非常关键的策略:编程题在试卷最后,但分值最高,所以一定要预留足够的时间。我当时给自己定的规则是——选择题最多花70分钟,剩下的50分钟全部留给编程题。如果选择题卡住了,果断先跳,确保编程题有充足时间。
3.2 链表去重题的解题全过程
我印象最深的一道编程题是:给定一个已排序的链表,删除链表中所有重复的元素,只保留原始链表中没有重复出现的数字。
这道题核心思路是“哑节点 + 双指针”。定义一个哑节点指向头节点,然后让前指针pre指向哑节点,当前指针cur指向头节点。遍历时判断cur指向的值是否与cur.next的值相等,如果相等就继续向后找,找到第一个不相等的位置,让pre.next指向这个位置;如果不等,pre直接移动一位。整个过程只需要一次遍历,时间复杂度O(n),空间复杂度O(1)。
我当时没有直接用代码编辑器,而是在草稿纸上先画了一遍链表指针的变动过程。这步很重要,因为测试岗的编程题不仅看结果,还看你对边界情况的处理能力。比如链表为空、只有一个节点、全部重复、首尾重复这三种情况,都必须考虑进去。
实操心得:技术测试岗的编程题,代码写出来只是及格线,AC了之后一定要回看一遍自己的代码,检查有没有边界情况没处理。测试思维在这里的体现方式,就是主动审查空链表、单节点、全是重复值这类特殊情况,这也是面试官在阅卷时比较关注的区分点。
3.3 字符串与动态规划的常见套路
第二道编程题是关于字符串处理的:给定一个字符串,找出最长不含重复字符的子串长度。
这道题的经典解法是“滑动窗口 + 哈希表”。用两个指针维护一个窗口,右指针不断向右移动,将字符加入哈希表。如果发现当前字符已经在哈希表中,就移动左指针,直到窗口内没有重复字符,同时记录窗口的最大长度。时间复杂度O(n),空间复杂度O(n)。
如果平时没刷过这类题,考试时临时想会比较吃力。但滑动窗口算是一个高频套路,刷过几道类似题目后,基本一眼就能识别出题型方向。测试岗笔试不太会考复杂的动态规划,能掌握“滑动窗口”“双指针”“哈希表计数”这几个基础套路,应对大多数场景就够了。
4. 时间分配与答题细节
4.1 两个小时的全局节奏
笔试时间是120分钟,看起来不算短,但分配到所有题型后,其实非常紧张。我是这样安排的:
- 前10分钟:快速浏览所有题目,标记出行测中一眼不会的题,后面统一蒙;
- 第10-60分钟:专注做选择题部分,遇到卡壳超过1分钟的题,先选一个“第一感觉”的答案并标记,不恋战;
- 第60-110分钟:全力做编程题,先读题、再想思路、最后写代码;
- 最后10分钟:回看标记过的题目,有把握的改掉,没把握的保持原答案。
整体节奏的核心思路是“先用确定性的分数稳住心态,再集中精力攻高分值题”。千万不要在选择题上耗尽所有时间,编程题空着没写是最亏的,因为只要提交了代码,哪怕不AC也可能有步骤分。
4.2 容易被忽略的答题界面细节
笔试平台的一些细节,也值得提前留意。
我当时用的是牛客网的笔试系统,整个答题过程是分模块的,模块之间可以自由切换,但每个模块内部不能返回修改已提交的答案。这意味着如果你在选择题模块里做完了并点了提交,就不能再回头修改了。所以我的习惯是:先做编程题,再做选择题,确保高价值部分优先完成。
另外,编程题部分有几种语言可以选择,包括C++、Java、Python。对于测试岗,建议优先选择自己最熟练的语言,而不是追求语言本身的功能强大。笔试拼的是思路和正确率,只要代码能通过测试用例,用什么语言影响不大。
还有一个小细节:笔试过程中系统会开启摄像头监控,建议考试前把桌面整理干净,不要放任何纸质资料,避免被系统误判为作弊。光线也要调好,我见过有同学因为光线太暗导致人脸识别不通过,最后耽误了十几分钟。
4.3 突发情况与应对心态
笔试过程中很可能遇到一些突发情况,比如网络波动、系统卡顿、不小心关了页面等。我当时就遇到了一次网络延迟,编程题提交后一直转圈,当时心里确实慌了一下。
这里分享一个实用的小技巧:万一遇到页面卡住,不要反复刷新,先截图保留现场,然后静置等待一两分钟。如果还是没反应,再尝试通过笔试系统的“在线客服”或“求助”功能联系人工客服处理。务必留存好完整的截图记录,后续申诉时可以作为凭证。
心态层面,我的体会是:遇到不会的题,最忌讳的是“死磕”。笔试考的是综合能力,个别题没答好不会直接影响整体结果。把能拿的分全部拿稳,才是秋招笔试的正确打开方式。
5. 笔试后的复盘与秋招衔接
5.1 错题复盘的具体做法
笔试结束后,我做的第一件事不是等待结果,而是趁记忆还热,把整个考试过程复盘了一遍。这一步对后续面试的作用非常大。
复盘分三个维度:知识维度的错题整理、时间维度的分配复盘、策略维度的答题顺序评估。
知识维度上,我把所有不确定的题目记下来,逐一查资料补全。比如当时有一道关于“TCP四次挥手为什么要等待2MSL”的题目我拿不准,笔试结束后专门去查了资料,把TIME_WAIT状态的设计原理彻底搞清楚了。这个知识点面试时真的被问到了。
时间维度上,我发现自己行测部分花了太多时间,导致后面的测试专业题有些仓促。这个教训我记在笔记本上,后面的每一场笔试都提醒自己控制答题节奏。
策略维度上,我评估了“先做编程题后做选择题”的方案,这个策略我后续多场笔试都沿用了,实测下来效果比按顺序做稳定得多。
5.2 笔试与面试的知识衔接
技术测试岗的笔试内容,往往就是面试的“预告片”。笔试中出现的知识点,面试时大概率会以更深度、更结合业务场景的方式再次出现。
比如笔试考了“登录功能的测试用例设计”,面试官就可能会追问“如果有验证码、第三方登录、异地登录提醒,你的测试用例要如何扩充”。笔试考了“HTTP状态码”,面试官就可能会问“你的接口测试框架中遇到502/504时会如何处理”。
所以笔试题不能做完就丢,最好把每道错题和不确定的题都整理成“面试预判题”,提前准备好更深入的回答。我当时就针对笔试中关于“测试左移”和“全链路压测”的题,额外准备了实际项目的落地案例,后来面试阶段果然派上了用场。
5.3 补充一些小建议
整个秋招笔试走下来,我最大的体会是:技术测试岗的笔试,考的不是天赋,而是“信息差”和“熟练度”。
信息差是指你知道这个岗位考什么、侧重点在哪里;熟练度是指你对高频题型的反应速度。这两点都是可以通过前期准备解决的。如果你现在还在备战阶段,建议多刷刷目标企业近两年的笔试真题,同时把自己的测试理论笔记整理成思维导图,考前快速过一遍就很管用。
最后再分享一个临场小技巧:笔试开始之前,先把编程题部分的语言环境和代码模板准备好。比如Python的话,先把输入输出模板、常用库(collections、itertools)的导入写好,这样进入编程题环节可以直接开始写核心逻辑,省下不少时间。这个习惯我后续每场笔试都用,实测能帮你在同样的时间里多写出几十行有效代码。