爱奇艺测试开发校招笔试复盘:从题型拆解到测试思维养成
看到这份试卷的时候,我其实刚被上一套在线笔试折磨完,心态还没完全稳住就进来了。很多同学第一次实际接触测试开发的校招笔试题,普遍反馈是"蒙"——不是题难到做不出来,而是它和你之前刷的LeetCode套路不太一样:一大半题目在考"给你一个功能,你准备怎么测",剩下的一小半才是传统算法题。这篇复盘,我按当时的做题顺序和思考过程展开,把每一类题目背后的筛选逻辑讲透,顺便说说哪些坑是我自己踩过、也见过周围同学反复踩的。如果你正在准备测试开发方向的校招,这份拆解希望你能少走点弯路。
1. 拆题之前:这份考卷到底在筛选什么样的人
先说一个可能被很多人忽略的背景:爱奇艺这类视频平台,测试开发岗位的工作内容和你想象中的"点点点"完全不一样。视频业务涉及播放器内核、会员体系、推荐系统、弹幕、直播、广告投放、大数据分析等一堆模块,测试开发要做的是把测试过程自动化、平台化、智能化——你可能会去搭自动化测试框架,会去写性能测试脚本,会去做接口测试平台,甚至会参与到代码 review 和单元测试补全里。所以笔试不会只考"会不会写代码",它还要看你的测试思维、问题拆解能力、对边界条件的敏感度,以及面对复杂业务场景时能不能快速理出头绪。
当时这场笔试我印象比较深的有三点:第一,时间给得不算宽裕,题量却不少,客观题、编程题、测试设计题都有;第二,编程题本身难度不算高,但是对输入输出格式的要求很严格,字符串和边界条件处理不仔细很容易出事;第三,测试设计题占比非常重,而且不是那种背背概念就能答的题目,它给的是贴近业务的具体场景。后来我复盘才意识到,这张卷子本质上在筛查三种人:基础扎实的、有测试思维的、能扛住压力把题做完的。
还有一个细节,试卷写了"第二场",说明它是有多套题目的。这种设置一方面是为了防止泄题舞弊,另一方面也说明出题已经流程化、题库化了。这意味着你没法靠押题,只能靠能力。好在它考察的方向是稳定的:算法基础、计算机基础、测试理论、业务分析。把这几块吃透,不管抽到的是第几场,差别都不大。
1.1 从岗位画像反推考卷逻辑
很多人准备测试开发岗位,思路还是照着开发岗的"算法+八股文"去刷,这是最大的误区。测试开发虽然带"开发"两个字,但核心依然是测试,代码能力是工具,测试思维才是根本。所以你要同时准备好两套知识体系:一套是数据结构、操作系统、网络、数据库这些硬基础,另一套是测试用例设计、Bug 生命周期、自动化测试框架、接口测试、性能测试这类专业内容。
从岗位画像反推考试逻辑,你会发现它的题目配置是刻意设计过的。客观题筛基础,编程题筛代码能力,测试设计题筛专业素养和业务敏感度。任何一项有明显短板,总分都会被拉下来。我当时看到好几个算法刷得很溜的同学,笔试反而没过,为什么?因为测试设计题写得太空,每个题就写两三行,看起来像是没做过测试的人硬凑出来的答案,这种人就算代码写得好,公司也不敢收。
1.2 在线笔试环境的隐性考验
还有一点容易被忽视:笔试环境本身就是一个筛选器。爱奇艺用的是在线笔试系统,代码题需要自己处理输入输出,不能用本地 IDE 的调试功能,而且有的题目要求不能用浏览器切出去查资料。这种环境下拼的就不只是会不会,而是熟不熟。很多在本地能跑通的代码,一换到在线环境就可能因为格式问题得零分——这类教训见得太多了。
我自己的习惯是,牛客网和各类在线判题系统的输入输出格式,在正式笔试前一定要大量练习。尤其是处理多行输入、字符串包含空格、用空行分隔用例这类情况,光靠本地跑通远远不够。笔试现场没有人帮你调格式问题,你只有一次提交机会。
2. 选择题高频区:计算机基础与测试理论的博弈
客观题部分,爱奇艺这类中大厂基本不会出偏题怪题,考察的依然是那些"老八股",但角度会更贴近业务场景。比如计算机网络不会直接问你"TCP 三次握手是什么",而是给你一个视频卡顿的场景,让你判断跟哪些因素有关。这时候你要是只背了概念,不会迁移,照样做不对。
2.1 数据结构和算法:基础分不能丢
选择题里的数据结构考得比较常规,栈和队列的特性、二叉树的各种遍历方式、常见排序算法的稳定性和时间复杂度,这些都是高频中的高频。我的建议是别瞧不起这些基础题,它们往往是最能拉开差距的地方。有些人刷题刷多了,觉得基础概念简单,考试时反而大意失荆州。
举个例子,排序算法那一类题目,几乎每次笔试都会出现,比如"下列哪个排序算法的时间复杂度是 O(n log n)",或者"以下哪种排序是稳定的"。你以为很简单,但它其实在考你对算法本质的理解。比如快速排序在平均情况下的时间复杂度是 O(n log n),但在已经完全有序的数组上,如果选的基准值不当,它会退化到 O(n²)——这种细节如果你只背了"快排时间复杂度是 O(n log n)"而没有真正理解它的 partition 过程,遇到变体题就会慌。
我的复习思路是:把常用排序算法的代码自己手写一遍,然后画图走一遍流程,搞清楚每个算法的比较次数和移动次数在不同数据分布下有什么差异。这样做一遍之后,选择题基本不会再丢分,而且对后续的编程题也有帮助。
2.2 计算机网络与操作系统:视频场景下的经典陷阱
网络部分是爱奇艺这类视频公司笔试的重头戏。HTTP 状态码、TCP 握手挥手、DNS 解析、HTTPS 加密流程,这些都要熟。但我建议你不仅要知道概念,还要能结合视频播放的场景来理解。
比如 301 和 302 的区别,在视频里就有很典型的应用场景。资源地址迁移了,应该返回哪个状态码?CDN 防盗链、跨域请求、预加载,这些在视频网站里都是日常操作。我当时看到一道题,说用户在播放视频时拖动进度条到未下载部分,播放器应该做什么请求——这背后就是 HTTP Range 请求的知识点,也涉及服务器对 Range 头的支持。这种题目如果只背网络分层模型,不太容易答对。
操作系统选择题里,进程和线程的区别是必考的,死锁的四个必要条件也是高频。但在测试开发的笔试卷里,它还会往测试方向延伸,比如问你在多线程场景下,如何保证数据一致性,或者如何设计并发测试用例。这其实是在暗示你:即使当测试,也要懂并发编程,因为你以后要测的接口和系统到处都是并发的。
2.3 SQL 和测试理论:看起来能拿分,实际上容易丢分
数据库的选择题主要考察索引、事务隔离级别、SQL 语法,这部分整体不难,但细节陷阱很多。比如 SQL 里 COUNT(*) 和 COUNT(字段) 的区别,NULL 值的处理,LEFT JOIN 和 INNER JOIN 的结果差异。一个小建议是:不管笔试考不考手写 SQL,你都要能把常用的增删改查、聚合查询、分组过滤写得又快又对。测试开发工作中,造测试数据、校验测试结果、排查线上问题,哪一步都离不开 SQL。
测试理论基础大家都会去背,但真正做题时很容易暴露知识靠记忆而非理解的问题。比如问"等价类划分和边界值分析的区别",很多人会背定义,但给你一个"用户输入密码长度为6~16位"的功能,你真能完整地把有效等价类、无效等价类、边界值都列出来吗?很多人做不到。
这里分享一个答题模板,客观题中遇到测试概念题,先判断它考的是定义还是应用。如果考应用,先在心里把被测功能拆成"输入、处理、输出"三步,再套概念,准确率会高很多。
3. 编程题:测试开发笔试里的"代码考点"怎么抓
编程题是多数人最紧张的部分,但测试开发的编程题和开发岗有个明显区别——它很少考特别冷门的算法,更多是考察基本功和代码的严谨程度。字符串处理、数组操作、链表、哈希表、排序,基本就围绕这些。
在线笔试的编程题有一个特别现实的挑战:本地 IDE 有代码提示、有编译器报错、可以随时 print 看中间结果,在线系统却要求你在没有反馈的情况下写出正确的代码。尤其是很多题目要求从标准输入读数据、把结果打印到标准输出,格式错一个字符就是零分。我见过太多人在笔试题上浪费大量时间调输出格式,最后没时间做测试设计题的。所以平时训练一定要刻意练习"一次性写对、不依赖调试"的能力。
3.1 高频题目类型:字符串与数组的边界感
从历年测试开发笔试题来看,字符串类的题目出现频率极高,比如最长无重复子串、判断回文、字符串匹配、大数相加等。不是我猜测,而是业内几大公司测试开发岗位的笔试题里,这类题都是常客。为什么会这样?因为字符串处理的边界条件特别多,空串、单字符、全相同字符、包含空格、包含特殊字符、超长字符串,每一种情况都可能让程序崩溃,而这正好能筛选出对边界条件敏感的人——这种敏感恰恰是测试最需要的品质。
我记得有一次练题,题目要求计算一个字符串里第一个只出现一次的字符。很多人用哈希表统计,思路没错,但写法上忽略了一个问题:当字符串很长,哈希表统计完一遍之后,还要再遍历一遍字符串才能找到第一个出现次数为1的字符——第二轮遍历时你是该遍历原字符串,还是遍历哈希表的键?这直接决定了答案对不对。这种细节不仅笔试考,实际工作中写脚本处理测试数据也会遇到。
数组类的题目相对友好,但依然有它的小陷阱。比如数组下标越界,比如在循环里删除元素导致指针错乱。给测试开发同学的建议是:写循环时先把循环条件想清楚,是 i < len 还是 i <= len - 1,边界差一个数就会出问题;写完后用0、1、2、最大值几组数据在脑子里过一遍,很多 bug 就能提前发现。
3.2 时间复杂度和优化:暴力解法到底能不能用
笔试现场还有一个争议问题:"我只会暴力解法,能得分吗?"我的经验是:能得分,但拿不满。在线笔试的判题维度通常是运行时间和内存占用,暴力解法在小数据量下能通过一部分测试用例,但大规模数据下会超时。所以你得有一个基本判断:根据数据范围决定用什么算法。
比如看到数组长度 n <= 10^5,O(n²) 的暴力基本就不要想了,大概率超时,得准备 O(n log n) 或 O(n) 的解法。看到 n <= 500,暴力可能还能过。测试开发的编程题不像 ACM 那么极限,数据范围一般不会太夸张,但你要养成先看数据范围再动手的习惯。
我自己的做题顺序是:先确认题目需要的时间复杂度级别,然后快速构思最直接的解法,先保证功能正确,再考虑能不能优化。如果题目明确要求"尽量降低时间消耗",我会直接写高效解法;如果只是一般的功能题,简单直观的解法反而更安全,因为越复杂的代码越容易在笔试环境下出错。
3.3 给自己的代码写用例:测试开发笔试的独门加分项
这是我想特别强调的一点。普通开发做编程题,写完代码就提交了;测试开发不行,你得多做一步:在提交前用几组测试数据检查自己的代码。这个习惯在笔试中是能救命的。
我当时做题的习惯是,代码写完后,先在注释区域列出我想到的测试用例,包括正常输入、空输入、最小值、最大值、重复元素、包含空格等,然后用这些用例在脑子里走一遍代码逻辑。走查发现的问题,比编译器报错发现的问题还要多。笔试编程题写完,如果还有富余时间,我会把关键用例作为注释写在代码后面,这个操作不会影响判题,但在面试时如果有机会聊到笔试题,会是一个很好的加分素材——说明你真的有测试思维。
4. 测试用例设计题与场景题:真正拉开差距的地方
如果说选择题和编程题是入场券,测试用例设计题就是真正决定你能不能拿到面试机会的部分。这类题没有标准答案,恰恰因为这样,很多人不会答。有的同学把它当成"写几个测试步骤"的题,三两行就交卷了;有的同学则能写出一套完整的、有层次的测试方案。差距就在这里。
爱奇艺的测试设计题一定会结合视频业务,比如让你为视频播放器的"播放"功能设计测试用例,或者为一个会员购买支付流程设计用例。面对这种题,你不光要懂测试方法,还得对业务场景有足够的想象力。
4.1 视频播放场景的用例设计思路
首先,不要一上来就列用例,先画一根时间线:用户从进入播放页到离开,中间经历了哪些环节?依次是加载视频信息、获取播放地址、开始播放、播放中交互、异常处理、结束播放。沿着这条主流程去拆,用例就不会散。
然后在主流程上叠加测试维度。功能上,播放键点击是否生效、进度条拖动是否准确、暂停恢复是否无缝、倍速切换声音是否正常、弹幕开关是否即时生效。兼容性上,需要在 iOS、Android、PC Web、TV 等端上测试,网络环境还得分 WiFi、4G/5G、弱网、断网。性能上,冷启动耗时、首帧时间、卡顿率、内存占用、耗电量,这些都是视频播放质量的核心指标。再往下还有安全性和异常测试:非法输入、越权访问、服务器异常返回、播放器崩溃恢复。每一类展开都是一片用例。
我当时答题时会用表格来组织,比如"场景——操作步骤——预期结果",这样阅卷人一目了然,也能保证自己不漏项。这是一个非常实用的技巧:把用例组织成表格,而不是堆成一段文字。
4.2 等价类、边界值、场景法怎么落到答题纸上
测试设计题想拿高分,一定要在答案里体现出方法论。说了等价类划分是为了减少重复测试,边界值分析是为了抓最容易出错的边界,场景法是为了覆盖业务流程和异常分支。很多人背概念没问题,但答题时用不上。实际上,你在列用例表的时候,可以在用例旁边加一列"设计方法",写明这条用例用的是边界值还是场景法,这样考官会觉得你是受过专业训练的人,不是凭感觉写用例。
举一个很常见的题目:设计一个登录功能的测试用例。最低分的答法:输入正确账号密码能登录,输入错误账号密码提示错误,这个大概只能拿五分之一的分数。中等答法会补充:密码为空、账号为空、勾选记住密码、忘记密码。高分的答法是什么呢?它会按模块拆,UI 层(输入框长度限制、密码是否密文显示、错误提示是否友好)、功能层(正确和错误账号密码组合、回车键是否触发登录、多次失败是否锁定)、接口层(账号密码是否加密传输、服务器异常时前端如何提示、频繁请求是否触发验证码)、兼容性(不同浏览器、不同分辨率)、安全(SQL 注入、暴力破解防护)、性能(多用户同时登录的响应时间)。这个思路一出,差距立刻就出来了。
4.3 我最想提醒的事:千万别忽略异常和边界
从阅卷者的角度看,大多数同学丢分最严重的是异常和边界部分。比如视频播放场景,很多人想到了正常播放、暂停、倍速、全屏,但好多人没想到:断网了怎么提示?服务器返回 404 怎么处理?用户快速点播放按钮十次会不会卡死?内存不足时播放器会不会崩溃?进度条拉到视频结尾再按播放会发生什么?这些恰恰是真实用户天天会遇到的问题,也是 QA 面试官最看重的细节。
我记得当时在答题纸上专门留了最后一块写"异常情况",把视频播放相关的各种失败场景一口气列了出来。写完之后我自己心里就有底了——这类题考察的不是标准答案,而是你思考问题的周密程度。只要你把能想到的边界和异常都想到了,就已经超过八成考生了。
5. 复盘与建议:笔试之后到面试之前的几步关键动作
笔试不是终点,它只是整场招聘流程的第一道关口。比答题更重要的,是答完之后你怎么复盘、怎么把这次笔试的收获转化成下一步面试的谈资。这部分我结合自己的经验和后来面试他人的心得,给你一些实操建议。
5.1 时间分配:先易后难还是先攻大头
每个进入笔试系统的人都会面临时间分配问题。爱奇艺这套卷子题量不小,我个人的建议是优先做测试设计题,再做编程题,最后回头做选择题。原因很简单:测试设计题分值大、主观性强,只要写就有分,而且它考的是思维,不需要客观题那样的记忆精度;编程题只要有思路,编码时间其实不长;选择题虽然量大,但每题分值低,而且卡住的话很容易在两道题上浪费十分钟。
很多人习惯从第一题做到最后一题,结果被选择题里的某道难题卡了二十分钟,后面的大题全没时间写。这是笔试的大忌。正确的方式是:拿到试卷先花两分钟快速通读一遍,把题目的分值和难度在脑子里排个序,然后按"先保分、再争分"的顺序动手。先保证测试设计题写满,编程题至少有一道完整通过,选择题再用剩余时间慢慢磨。
5.2 考后复盘:把笔试题变成面试素材
笔试交卷之后,很多人就把它忘了。这个机会一定要抓住。我会在草稿纸上或者手机备忘录里,把还能记住的题目简单记下来,尤其是哪些题做得不确定、哪些题完全没思路,然后去搜相关资料把它弄懂。这件事的作用有两个:一是如果笔试通过进入面试,面试官很可能会拿着你的笔试答卷来问,你当场把自己当时不会的题讲明白了,会显得学习能力特别强;二是即便没通过,这些题目也是宝贵的校招题库资源,下个公司可能出类似的题。
我还见过一些同学会把笔试题里的场景改编后写进自我介绍或者项目经历里。比如笔试考了视频播放器的测试用例设计,你回头就可以去把"视频播放器测试"这个方向系统地整理一遍,面试时说"我专门研究过视频播放场景的测试设计",这比空口说"我热爱测试"要好得多。
5.3 针对视频类公司的储备建议
如果你瞄准的是爱奇艺这类视频公司,除了通用测试知识外,最好提前做一些针对性的功课。第一,理解视频播放的基本链路:数据从 CDN 分发到播放器解码,再到渲染显示,中间任何一个环节出问题都会表现为卡顿或花屏,你需要知道怎么定位是网络问题、服务器问题还是播放器问题。第二,了解常见的音视频概念,比如 H.264/AVC、H.265/HEVC、编码格式、码率、帧率、首帧时间,这些在测试播放器时都会用到。第三,熟悉弱网测试的思路,比如通过工具模拟丢包、延迟、带宽限制,观察播放器的表现是否符合预期。第四,了解广告和会员业务的测试场景,毕竟这是视频公司重要的商业模式。
这些内容不是说笔试一定考,而是说你能不能在答题时体现出你对行业的理解。同样是答一个"播放失败"的测试设计题,懂行的人会想到检查网络切换后播放器是否自动恢复、CDN 返回的播放地址是否过期、防盗链签名是否失效,而不懂行的人只能想到"提示用户检查网络"。这就是差距。
5.4 接下来这周重点补什么
笔试结束到收到结果,通常会有一个空窗期。空窗期不要只顾着等,我来帮你想清楚这段时间到底该干什么。
第一,把测试理论再过一遍,尤其是等价类划分、边界值分析、判定表、因果图、场景法、错误推测法。这些笔试考完面试还会考,而且面试官会问得更深,比如"你刚才提到的等价类划分,具体怎么划分?"如果你答不上来,笔试的分就白拿了。第二,把 SQL 的常用语法练熟,包括多表联查、子查询、聚合函数、索引相关的概念,很多测试开发岗位的面试现场会让你写 SQL。第三,准备一个自动化测试相关的项目或脚本。不一定是公司项目,自己写的接口测试脚本、UI 自动化脚本、性能测试脚本都可以。重点是要能讲清楚框架结构、参数化方法、断言处理、报告生成,这些是面试里高频考察的部分。第四,多看几篇视频网站质量保障相关的技术博客。了解业界是怎么做音视频质量评测的、怎么搭建自动化测试平台的,这些知识一旦在面试里聊出来,会让面试官觉得你是真正对这个行业有热情,而不是海投简历的求职者。
我当年就是这样过来的。笔试里那几道测试设计题让我意识到,自己在边界条件分析上的积累还远不够,于是后面花了整整一周时间去补齐视频场景的各种测试维度。这个查漏补缺的过程,比笔试本身教给我的东西多得多。如果你现在也在准备测试开发方向的笔试,希望这篇复盘能帮你把精力花在真正重要的地方——不是背更多的题,而是建立一套完整的、能迁移的测试思维。
