ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

爱奇艺校招测试工程师笔试复盘:从基础到用例设计的全栈考点解析

爱奇艺校招测试工程师笔试复盘:从基础到用例设计的全栈考点解析 爱奇艺2018秋季校招测试工程师第三场这场笔试放在今天看依然有很强的参考价值。不只是因为爱奇艺当时在视频流媒体领域的技术积累已经相当成熟更因为这场笔试的题型结构、考察重心基本代表了当年互联网大厂测试岗位校招的典型风格——测试理论基础、计算机网络、Linux操作、数据库、编程能力、逻辑思维一个都不少。对于现在准备测试工程师校招的同学来说把它当作一份“全栈测试入门体检表”来复盘比盲目刷题要有价值得多。我当时完整跟完了这场笔试的题目脉络也和不少参加过的同学对过答案。今天这篇文章就把它掰开揉碎了讲考察哪些能力、每类题目背后的用意是什么、哪些地方容易丢分、以及怎么顺着这套体系去做针对性准备。无论你是正在备战校招还是刚转行想进测试这行这篇文章都值得认真看完。1. 笔试整体格局不只是考“会不会点按钮”先说说这场笔试的整体结构。测试工程师的校招笔试和开发岗笔试有明显区别。开发岗上来就是算法题、代码题一套卷子写下来基本是在考编码能力和数据结构功底。而测试工程师的笔试题型要杂得多常见组合是“选择题 简答题 用例设计题 编程题”有些公司还会加一套性格测试或逻辑测试。爱奇艺这场第三场笔试题型大致可以分成五块计算机基础选择题网络、操作系统、数据结构测试理论与用例设计题Linux与数据库实操题编程题以算法和脚本为主逻辑推理与场景分析题这种结构背后反映的是测试工程师岗位的真实工作状态你既要懂业务、会设计用例又要能写脚本、看得懂日志、查得到问题。说白了测试工程师是个“既要又要”的角色笔试就是为了筛选出那些知识面够广、逻辑够清晰、手上也有活的人。当时很多同学栽在同一个误区上以为测试笔试就是考测试方法把等价类、边界值背得滚瓜烂熟就万事大吉。结果一拿到卷子发现大量题目在考TCP三次握手、Linux文件权限、SQL联表查询直接懵了。所以第一件事就是转变心态测试工程师笔试本质是“开发能力 测试思维”的综合考察。1.1 爱奇艺场景的特殊性视频业务带来的考点倾斜爱奇艺和其他互联网公司还有个不一样的地方——它的核心业务是长视频。长视频业务给测试带来的挑战非常具体视频播放涉及流媒体协议、CDN调度、播放器兼容性、清晰度切换、弹幕实时性、会员权限校验等。这些业务特性会直接反映在笔试题里。一个很典型的例子爱奇艺笔试里出现频率很高的题目是“设计一个视频App的播放页测试用例”或者“视频播放卡顿如何定位排查”。这种题如果你没有视频业务背景很容易答得泛泛而谈只写一些“检查网络”“重启App”之类的表面内容。但如果你能往深了想——卡顿是首帧慢、还是播放中卡顿、还是拖动后卡顿是特定清晰度才卡顿还是所有清晰度都卡WiFi环境和5G环境下表现是否一致不同机型是否有差异——这种分层思考的能力才是面试官真正想看到的。所以复盘这场笔试时不能只把它当成一场普通的技术考试还要结合视频业务的特殊性去理解每个考点背后的实际场景。2. 核心考察模块拆解每个板块都在筛什么人这一节我把笔试涉及的核心知识模块逐个拆开讲重点说明每个模块在测试工作中的实际用途以及对应的复习方向和常见丢分点。注意这里的排列顺序不代表题目顺序而是建议的复习优先级。2.1 计算机基础不考深但考宽爱奇艺笔试的计算机基础部分难度不会像开发岗那么深但覆盖面很广。主要集中在这几个方向计算机网络TCP/IP分层、TCP三次握手与四次挥手、HTTP状态码、HTTP与HTTPS区别、DNS解析过程操作系统进程与线程区别、死锁条件、常见Linux命令数据结构数组、链表、栈、队列的基本特性排序算法的时间复杂度二分查找等给你一个很真实的建议这一部分不需要像开发岗那样啃《深入理解计算机系统》但你至少要把《计算机网络》和《操作系统》的常见面试题背熟。尤其是TCP三次握手几乎每场测试笔试都会考而且喜欢换着花样考——比如“为什么不能两次握手”“第三次握手失败会发生什么”。一个容易被忽略的复习盲区是HTTP状态码。测试工程师天天和接口、页面打交道状态码是排查问题的第一语言。至少要把这些背到条件反射的程度200、301、302、304、400、401、403、404、500、502、503。我当年笔试时就遇到过一道题给出一堆状态码让你判断哪些是客户端错误、哪些是服务端错误。这种题不难但概念不清就容易混。2.2 测试理论与用例设计拉开分差的关键板块这是测试笔试的“主战场”也是真正能把不同考生区分开的板块。爱奇艺这场笔试重点考察的测试理论包括测试流程需求分析、测试计划、用例设计、执行、缺陷管理、测试报告测试方法黑盒测试、白盒测试、灰盒测试的区别与适用场景用例设计方法等价类划分、边界值分析、因果图法、判定表法、场景法、正交实验法缺陷管理Bug的生命周期、优先级与严重级别的区分用例设计题是笔试中的大头通常会给一个功能模块让你设计完整的测试用例。这题表面上考的是“你会不会写用例”实际上考的是“你有没有系统性的测试思维”。举个例子如果题目让你测试“爱奇艺视频搜索功能”初级答法是列出几个用例输入关键词能搜出结果、输入不存在的词提示无结果、网络异常时给提示。这种答法太零散没有章法。更好的答法是按维度拆解功能维度正常搜索、模糊搜索、拼音搜索、空格处理、特殊字符、超长输入、空输入数据维度热门词、冷门词、新上线内容、已下架内容、付费内容异常维度断网、弱网、服务器返回超时、搜索结果为空权限维度未登录、普通会员、VIP会员兼容维度不同操作系统、不同分辨率、不同App版本交互维度搜索历史、搜索联想词、清除历史、点击搜索结果后的跳转这样的答案才有结构性才能体现你的测试思维。这个思维模式是需要刻意训练的平时做题时就按这个套路练练成条件反射笔试才不会漏点。2.3 Linux与数据库测试的“手和脚”如果说测试思维是测试工程师的大脑那Linux和数据库就是手和脚。因为工作中你要看日志、查数据、定位问题这些都离不开这两个工具。Linux部分的高频考点包括文件操作命令ls、cd、cp、mv、rm、find、查看日志cat、tail、grep、awk、权限管理chmod、chown、进程管理ps、top、kill、网络命令ping、netstat、curl。笔试不会直接让你敲命令但会通过选择题和执行结果推断题来考。比如给你一段命令find /var/log -name *.log -mtime 7问你它的作用是什么。这种题考察的不只是命令本身还有你能否理解命令组合起来的逻辑。复习的时候不要死背命令参数最好自己在虚拟机里把命令跑一遍看看真实输出是什么样的。数据库部分以SQL为主重点是单表查询select、where、order by、group by、having、多表联查inner join、left join、子查询、聚合函数count、sum、avg、max、min、去重distinct。爱奇艺的题一般不会太复杂但很实用比如“统计每个分类下的视频数量”这种。这里必须提醒一个高频丢分点left join和inner join的区别。很多人笔试时一紧张就写错。记住核心区别就一句话——left join返回左表所有行右表没有匹配的就用NULL填充inner join只返回两个表都匹配的行。2.4 编程题不考难题考思路测试工程师笔试里的编程题整体难度明显低于开发岗。爱奇艺这场笔试的编程题更偏重基础算法和字符串/数组处理常见的有数组去重、排序字符串反转、判断回文统计字符串中字符出现次数简单的递归和动态规划二分查找编程题分值占比不低但考察的核心不是算法的深度而是编码的规范性和思维的严密性。换句话说测试工程师写代码不是为了做算法研究而是为了写脚本、写自动化用例所以能写清楚、写对才是关键。一个很实用的建议不管笔试用什么语言你都要把字符串处理、数组操作、文件读写这几类问题的标准写法练熟。Python的列表推导式、字典的get方法、字符串的split和joinJava的HashMap和ArrayList常用API都要达到不用想就能写出来的程度。我自己当年准备测试笔试时把LeetCode简单难度的题刷了三遍重点不是刷了多少道而是每道题都确保能一行不差地写在纸上。笔试时的手写代码能力和IDE里写代码完全是两码事。2.5 逻辑推理与场景分析藏在题目里的业务思维逻辑推理题是测试笔试里比较有意思的部分常见题型包括找规律填数、图形推理、真假话判断、赛马问题、燃绳计时问题等。这类题考点不在知识储备而在思维严密性。场景分析题则更贴近实际通常会给你一个线上问题让你分析可能原因并给出排查思路。比如“用户在播放视频时频繁卡顿列出所有可能原因并按优先级排序”“App闪退你如何一步步定位问题”“线上出现了一个只有特定机型才复现的Bug你怎么办”这类题目没有标准答案考察的是你面对未知问题时的思考路径。一个比较加分的答题框架是收集信息 → 分层排查 → 逐步缩小范围 → 定位根因 → 给出解决方案和回归建议。把这个框架刻在脑子里任何场景题都能答得有条理。3. 典型真题复盘从题目反推考察意图这一节我们来看几个具有代表性的真题我把题目还原出来然后讲解解题思路和答题要点。尽量还原当时的出题逻辑而不是简单给答案。3.1 网络协议题TCP连接状态排查这道题当年不少人折了。题目大意是在Linux服务器上用netstat命令发现大量TIME_WAIT状态的连接分析可能原因并提出解决方案。考点拆解是否理解TCP四次挥手的流程特别是主动关闭连接的一方会进入TIME_WAIT状态是否知道TIME_WAIT持续的时间是2MSL是否知道大量TIME_WAIT导致的后果端口资源被占用新连接无法建立是否有实际调优经验调整内核参数net.ipv4.tcp_tw_reuse、net.ipv4.tcp_tw_recycle或者开启长连接减少频繁建连这道题好在它贴近实际工作。测试同学排查线上问题时用netstat看连接状态是家常便饭。答题时如果能按“先在测试环境复现再确认是服务端还是客户端主动关闭最后调整内核参数并观察效果”的顺序来组织答案会显得特别扎实。3.2 用例设计题为“视频分享”功能设计测试用例这是爱奇艺笔试的经典题。视频分享功能是个很好的考察对象因为它涉及功能、UI、网络、权限、平台兼容等多个维度。我建议的答题框架是功能测试分享到站内外各个平台微信、微博、QQ、分享内容是否完整标题、封面、链接、分享链接打开后是否正确跳转权限测试未登录、登录状态、会员状态下的分享功能分享后对方是否可看区分免费内容和会员专享内容异常测试断网分享、弱网分享、分享取消、分享过程中来电话/切后台兼容测试iOS/Android不同系统版本、不同品牌机型、不同屏幕分辨率、低版本App性能测试多次快速分享是否卡顿、内存占用是否异常、分享图片加载速度安全测试分享链接是否包含用户隐私信息、是否可被篡改、是否存在越权访问这道题的核心是维度要全、颗粒度要细、并且要能看出你理解“分享”这个功能的业务逻辑。你如果只是写“分享成功、分享失败、分享取消”这三条基本就和下一轮说再见了。3.3 编程题字符串中的字符计数有一道编程题印象很深要求统计一个字符串中每个字符出现的次数并按出现次数从高到低输出。看起来很简单但考察点很多是否会用合适的数据结构哈希表/字典是否处理了空字符串和特殊字符排序逻辑是否正确出现次数相同的情况下是否按字符顺序排列代码是否简洁可读用Python的写法大概是这样的def count_chars(s): if not s: return counter {} for ch in s: counter[ch] counter.get(ch, 0) 1 sorted_items sorted(counter.items(), keylambda x: (-x[1], x[0])) return .join(f{ch}:{count} for ch, count in sorted_items)虽然代码简单但这里有一个很关键的细节counter.get(ch, 0)避免了每次都要判键是否存在这是Python开发者应该有的习惯。另外排序时用-x[1]实现降序再用x[0]作为次级排序键保证相同次数字符按字母序排列。这些细节才是笔试真正考察的东西。3.4 场景分析题线上视频播放失败这是套场景题说用户反馈App里所有视频都无法播放其他功能正常需要你排查。答题思路参考流程第一步收集信息确认是所有用户还是部分用户、是所有视频还是部分视频、是否有报错文案第二步用自己手机复现第三步分层排查先看网络请求是否正常返回HTTP状态码、再看CDN节点是否异常、看播放器日志有无报错、看服务端是否返回了错误码第四步定位到具体模块后再深入排查代码或配置。这道题答得好不好差别在于有没有“信息收集”这一步。很多人上来就猜是服务端挂了是CDN炸了是网络问题但真正成熟的测试工程师第一步永远是收集信息、确认影响范围。这就是让面试官觉得“这人靠谱”的关键。4. 测试工程师的完整技术栈不只是为了笔试第三场笔试其实是从一个侧面揭示了2018年测试工程师需要具备的技术栈。到了今天这个技术栈又往外扩了一大圈。面试官不会要求你每项都精通但你至少要对整个版图有清晰认知知道自己目前处于什么位置。我把测试工程师技术栈分成五个层次你可以对照自查第一层基础能力测试理论、用例设计、缺陷管理、Linux、SQL、网络基础第二层工程能力一门编程语言推荐Python或Java、接口测试工具Postman、抓包工具Charles/Fiddler、版本管理Git第三层自动化能力UI自动化Selenium/Appium、接口自动化框架pytest/TestNG、持续集成Jenkins第四层性能与专项性能测试工具JMeter/LoadRunner、性能分析、内存泄漏排查第五层前沿方向AI测试、大数据测试、安全测试、全链路压测2018年的校招笔试考察重点集中在第一层和第二层。这不代表后面的层次不重要而是校招岗位对候选人的定位就是“基础扎实、有潜力”。你如果能在简历上展示出第三层甚至第四层的项目经验那在面试中的竞争优势会非常明显。再回过头来说说最近热议的AI测试。2018年的时候AI测试还只是个概念大家都在讨论算法模型的评测指标。到了现在AI已经渗透到测试的各个环节AI生成测试用例、AI辅助定位Bug根因、AI自动生成接口测试脚本。所以如果你是个准备入行的新人除了夯实基础强烈建议把AI工具用起来。学习怎么用AI写出更高质量的测试用例怎么通过AI辅助做代码审查这些会成为你未来两年的核心竞争力。4.1 全栈测试工程师是个伪命题吗现在很多公司都在招“全栈测试工程师”要求既懂前后端、又会写自动化、还懂性能和安全。看起来像是个伪命题一个人怎么可能什么都精通。但仔细想想这个岗位要求的其实不是“什么都精通”而是“全链路测试思维”。什么意思就是你拿到一个需求不只盯着一个模块测而是能从前端页面的交互想到后端接口的逻辑再想到数据库的数据流向。出了问题你能在前端、后端、数据三个层面都做一些基础排查而不是把所有问题都甩给开发。这种能力的培养路径很清晰先把基础打牢然后刻意练习“跨层思考”。比如测一个登录功能不要只测页面提示正不正确要打开浏览器的开发者工具看看登录请求的参数、响应码、响应时间再用抓包工具改一下参数看服务端有没有做校验再查一下数据库里的用户表看登录状态是怎么记录的。这样坚持一段时间你会发现自己对系统的理解会有一个质变。4.2 游戏测试工程师和其他测试方向的区别还有一个热词是游戏测试工程师也值得聊两句。游戏测试和传统的软件测试有很多相通的地方但也有显著的差异。游戏测试更强调体验和兼容性。一个游戏版本要覆盖几百上千种机型不同GPU、不同内存、不同屏幕分辨率表现可能天差地别。再加上游戏有帧率、加载时间、发热、耗电这些性能指标这些在普通App测试里优先级没那么高在游戏测试里却非常关键。游戏测试的用例设计也更依赖“场景化思维”。你不能只写“点击XXX按钮后出现XXX结果”这种机械式用例而要像玩家一样去思考新手引导流程是否顺畅、充值按钮是否容易误触、副本里的Boss技能是否会导致玩家异常闪退。这对测试人员的要求是既要有技术能力还得懂游戏、懂玩家心理。如果你对游戏测试感兴趣建议从兼容性测试和性能测试入手这两个方向是游戏公司最缺人的地方而且有着清晰的方法论。我当年那批做测试的同学里选游戏方向的基本上都过得不错因为游戏行业对测试的重视程度比传统软件行业要高不少。5. 备考方法论针对校招笔试的系统训练路径复盘完具体考点最后聊一聊怎么系统备战一场大厂测试笔试。不是让你临时抱佛脚而是给一个可持续复用的准备框架这套方法对爱奇艺笔试和未来任何一场测试面试都有效。5.1 制定复习计划别把所有内容都放在最后两周至少拿出4到6周时间来准备把时间分成三个阶段第一阶段1-2周计算机基础 测试理论。题库量要大每天保证30道选择题量边做边整理错题第二阶段2周SQL Linux 编程题。每两天写一套SQL练习题每天手写3道编程题第三阶段1-2周用例设计 场景题实战。针对常见功能模块登录、搜索、下单、支付、播放器各设计一套完整用例找人帮你review这个时间安排的核心思路是记忆类的内容基础理论放在最前面通过反复刷题形成长期记忆技能类的内容SQL/Linux/编程放在中间通过大量练习形成肌肉记忆综合类的内容用例设计放在最后因为它是前面积累的综合运用。5.2 刷题要有策略不是题海战术刷题也要有策略我见过太多人刷了几百道题笔试分数还是上不去原因就是刷题方式有问题。比你刷了多少道题更重要的是你有没有形成自己的知识体系。最有效的刷题方式是这样的每做完一道题不管做对做错都去复盘这道题背后的知识点。比如你做错了一道关于TCP的题那就把TCP的三次握手、四次挥手、11种状态、常见调优参数全部复习一遍。这样做完20道题你就等于把整个TCP协议彻底复习了一遍。这个效率远比盲目刷200道题高。另外准备一个错题本非常关键。不是传统的抄错题而是记录知识点比如“TCP状态TIME_WAIT是主动关闭方进入的”。不用太详细自己看得懂就行。每三天翻一遍错题本加深记忆。5.3 面试中的AI技能从会用开始最后说说AI技能的问题。现在的测试工程师面试几乎必问AI相关的问题你有没有用过AI工具辅助测试你怎么看待AI对测试行业的影响你有没有用AI写过测试用例这里给大家一个真实的建议不要只是嘴上说“用过”要真的有实测经验。你完全可以在准备面试的阶段就把日常的测试工作记录丢给AI工具让它帮你补充测试用例的覆盖面你也可以把一个接口的文档发给AI让它帮你生成接口测试脚本。然后把生成结果自己review一遍看哪些合理、哪些不合理、哪些漏了关键的边界条件。这个过程本身就是最好的面试素材。面试官问你“怎么用AI辅助测试”你就可以直接给他说“我做过一个XX模块的测试我把需求文档和接口定义整理后输入给AI让它生成初步测试用例我再根据业务规则补充了权限和异常场景最终用例覆盖率从基础功能扩展到了全维度。”这种回答比背一段AI测试的理论要打动人得多。用AI测试有个基本心法AI是最高效的助手但不是最终决策者。它的价值在于帮你快速生成候选方案、减少重复劳动而测试的准确性和判断力永远要靠你自己。6. 写在最后的一些真实经验这篇文章写得比较长最后分享几个我从多次笔试和面试中总结出来的真实心得体会希望后来的人能少走弯路。第一不要把测试笔试当成“简单的开发笔试”。测试笔试更重视知识面的广度和思维的严密性你得学会用测试的眼睛去看一个系统。同样一个功能开发考虑的是“怎么实现”测试考虑的是“在什么情况下会出问题”。这个思维的转变比你多刷一百道题都重要。第二用例设计能力是最核心的竞争力。不管是笔试、面试还是入职后的实际工作用例设计能力是测试工程师最重要的基本功。这道题答得好不好基本决定了面试官对你的判断。所以建议把常用的用例设计方法背熟再结合具体场景反复练习直到形成条件反射。第三保持学习的状态。技术行业有个残酷的事实今天的“高薪技能”可能在几年后就变成“基础要求”。从2018年到今天测试行业经历了从手工测试到自动化测试、再到现在AI辅助测试的快速演变。那些在职场上走得远的人无一例外都是持续学习者。第四笔试考的是下限面试考的是上限。笔试往往能通过短期突击获得不错的结果但面试时候暴露出的思维深度、项目经验、解决问题的能力才是决定你能否拿到Offer的关键。所以不要只盯着笔试准备日常多做一些小项目、多记录自己的测试过程这些都会在面试时变成你的底气。如果你正在准备大厂测试岗的校招希望这篇复盘能帮你少走一些弯路。别怕题难怕的是你不知道题目背后的考察逻辑。把知识体系搭好、把基础能力练扎实任何事情都会顺理成章。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进