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

资讯详情

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

爱奇艺测试开发笔试题解析:从用例设计到编程与Linux

爱奇艺测试开发笔试题解析:从用例设计到编程与Linux 1. 这份笔试题到底在考什么1.1 从一份试卷看测试开发的岗位画像最近不少人翻出爱奇艺2019秋招测试开发方向笔试题A来练手我一开始挺意外毕竟年份有点久远了。但仔细看完题目结构才发现这份卷子放在今天依然有很强的参考价值甚至比很多培训机构出的模拟题更贴近真实工作场景。测试开发这个岗位名字里有两个词测试和开发。很多新人只盯着“开发”两个字以为笔试重点就是算法题、数据结构结果一上考场发现还有大量测试用例设计、Linux命令、数据库查询甚至逻辑推理题整个人就懵了。反过来也有同学觉得测试嘛不就是点点点结果看到编程题又傻眼了。爱奇艺这份题A其实就是典型的测开笔试样张它考的不是单一技能而是你作为“能写代码的测试工程师”是否具备完整的知识结构。说白了测开笔试是在筛选三类能力第一你有没有测试思维能不能设计出有效的用例把bug找出来第二你有没有工程能力能不能用代码解决测试过程中的自动化、数据处理问题第三你有没有全局视野懂不懂网络、操作系统、数据库这些基础设施遇到线上问题能不能快速定位。这三条线基本贯穿了整张卷子。1.2 全局拆解一张卷子的常见模块如果给这份题做个切片你会发现它大致分成六个模块。我根据自己的印象和同类题型的规律整理了一张表方便你对照自查模块典型题目方向考察目标测试基础与用例设计登录、搜索、播放器、推荐流测试用例测试思维、边界意识编程题字符串处理、数组操作、简单算法编码能力、逻辑严谨性Linux与数据库查看日志、统计接口耗时、SQL查询实际运维与数据处理能力计算机网络与操作系统HTTP状态码、TCP握手、进程线程基础理论扎实度逻辑推理与场景题找假币、估算题目、开放场景设计拆解问题、沟通表达开放题如何测试某个功能、如何搭建自动化框架项目经验、系统设计思维你发现没有这个结构其实特别像一份“测开岗位能力雷达图”。它不像纯后端岗位那样死磕算法也不像纯功能测试那样只问业务而是把工程能力和测试思维揉在一起考。所以准备这类笔试不能单刷LeetCode也不能只看测试理论书得两条腿走路。2. 测试基础与用例设计爱奇艺这类公司最看重什么2.1 等价类边界值永远是底层能力用例设计题在测开笔试里几乎是必考项爱奇艺这份题也不例外。很多同学觉得这种题简单不就是写几个输入输出吗但实际得分差距很大。差距不在你会不会等价类划分而在你能不能把边界条件想全。举个例子如果题目让你测试一个视频App的登录框要求用户名6到20位密码8到16位且必须包含字母和数字。普通人的第一版用例可能就是合法用户名加合法密码、用户名太短、密码太短、密码不含数字。这种答案能拿基础分但拿不到高分。会思考的人会怎么做先把输入域拆开看。用户名有长度边界5位、6位、20位、21位这四个值分别对应边界外、下边界、上边界、边界外。密码除了长度边界还有字符组合边界纯字母、纯数字、字母加数字、含特殊字符、全角字符、空格、Unicode字符。再往深一层登录本身还有状态维度未注册用户、已注册但未激活、密码错误次数达上限、账号被锁定、token过期、网络超时。这些组合起来才是一份真正有工程价值的用例。这里分享一个笔试中特别实用的技巧先用等价类把输入域切成有效类和无效类再针对每个类的边界值单独列用例最后再补上功能状态和异常场景。三步走下来用例基本不会漏。2.2 场景法在视频类产品中的实际应用爱奇艺是做视频的所以场景题经常围绕播放器展开。比如“请设计测试用例验证视频播放功能”这种题看似开放其实有固定的切入点。我建议大家按“用户操作路径”来拆而不是按功能模块来拆。一条完整的播放路径是这样的用户打开App搜索或点击推荐位进入详情页点击播放按钮播放器加载视频流开始播放中途用户可能做暂停、拖进度、切清晰度、全屏、锁屏、断网、来电话、切后台等一系列操作最后退出播放。每一个节点都是用例的触发点。这套路径里最容易丢分的是异常场景。比如播放过程中网络从Wi-Fi切到4G播放器应该怎么表现是弹窗提示还是静默切换视频加载失败时有没有重试机制拖进度条到未缓存区域会不会卡死后台播放被系统杀掉会不会记录播放进度这些场景面试官自己心里都有答案写出来就是加分项。我曾经在面试别人时问过这道题能答出“弱网切换”和“播放进度记忆”的候选人测试思维基本是过关的。2.3 用例设计的表达方式别只会写步骤很多同学用例设计题丢分不是因为想不到而是因为写出来不像一份能执行的用例。笔试里时间紧不可能按标准格式写完整用例但至少要包含四个要素前置条件、操作步骤、预期结果、优先级。我见过一种很可惜的答法只写“输入错误密码提示错误”。这句话信息量太低了测试执行人员拿到后要猜前置条件是什么错误密码具体指什么提示文案是什么正确的写法应该类似“前置条件已注册账号且未锁定步骤输入正确用户名 错误密码点击登录预期结果提示‘用户名或密码错误’不跳转首页优先级高”。在笔试中你可以不写那么完整但优先级最好标一下因为它能体现你对风险的理解。比如“正常登录成功”这种主流程用例优先级最高而“密码含特殊字符”这种可以标中优先级。面试官看一份用例设计题答案就是在看你的测试习惯是随手写几条还是有层次、有取舍地输出。3. 编程题从题目看代码能力要求3.1 高频题型与解题思路测开方向的编程题难度通常低于开发岗但也正因为难度不算高面试官对代码规范性和边界处理的要求会更高。爱奇艺这类公司的笔试编程题最常见的几类包括字符串处理、数组操作、链表基础题、简单动态规划偶尔会出一些和测试场景结合的题目比如写一个函数判断IP地址是否合法、实现一个字符串解析函数。这里有个很容易被忽视的点测开编程题经常考察“代码能不能处理脏数据”。比如题目要求写一个函数统计一段文本中每个单词出现的次数看起来很简单但隐含条件是大小写怎么办、标点符号怎么办、连续空格怎么办、空文本怎么办。这些恰恰是测试工程师在日常写自动化脚本时最常遇到的问题。所以答题时不要急着上手写主逻辑先在脑子里过一遍异常输入把这些判断写进去代码质量会明显上一个档次。3.2 一道字符串题目的现场推演拿一道很典型的题来说给定一个字符串找出第一个只出现一次的字符并返回它的索引不存在则返回-1。这个题有两种主流解法第一种是哈希表统计两次遍历第一次统计字符出现次数第二次找第一个次数为1的字符第二种是用有序哈希表一次遍历记录字符首次出现位置和次数最后遍历哈希表找最小值。笔试里我推荐第一种思路最清晰不容易写错。def first_unique_char(s: str) - int: from collections import Counter count Counter(s) for i, ch in enumerate(s): if count[ch] 1: return i return -1这个解法时间复杂度O(n)空间复杂度O(字符集大小)。但如果你只写完这段就交卷我作为面试官会追问一个问题如果字符串不是纯英文包含中文、emoji甚至组合字符这个方案还成立吗这其实是在考察你对字符编码的理解。Python里的Counter默认按Unicode码点统计处理emoji这种可能由多个码点组成的字符就会出现偏差需要提前做规范化处理。能在笔试中主动提到这一层是很不错的加分项。3.3 写代码时容易踩的坑测开笔试的编程题判题系统往往不比大厂开发岗的LeetCode环境有时候连编译报错信息都很简陋。我总结几个真实踩过的坑希望大家在考场里避开。第一个坑是不读题目就写代码。有些题目看着眼熟其实细节已经被改过比如要求返回索引而不是字符本身或者要求原地修改。少看一行可能整道题就偏了。第二个坑是边界条件不处理数组为空、字符串为空、目标值在端点这些情况平时写代码时就要形成条件反射。第三个坑是命名和缩进混乱笔试环境不会给你自动格式化代码读起来费劲面试官印象分会受影响。最实用的建议是正式写代码前花一分钟在草稿纸上把输入输出例子和边界条件列出来再动手。4. Linux与数据库测试开发的基本功4.1 Linux高频命令与查看日志无论哪个公司的测开笔试Linux命令都是保留项目。爱奇艺这份题的Linux部分也逃不开那几类文件操作、进程管理、日志查看、文本处理。这些命令不需要你背得多全但最常用的几个必须做到条件反射。文件操作里ls、cd、cp、mv、rm、find是基础find的-exec参数偶尔会考。进程管理里ps -ef和kill是必会的补充一个我工作中天天用的组合ps -ef | grep java先找到进程PID再看是否需要kill。日志查看这块是重头戏tail -f用于实时跟踪grep用于过滤关键字awk和sed用于格式化提取三个命令组合起来能解决绝大多数日志分析问题。举一个实际的例子线上反馈视频播放失败率升高你登上服务器第一步是tail -n 1000 playback.log | grep ERROR看最近1000行里有哪些错误。然后想按时间统计错误数量可以这样写tail -n 10000 playback.log | grep ERROR | awk {print $1} | sort | uniq -c假设日志每行以时间戳开头这个命令就是先取最近一万条过滤出ERROR提取第一列时间排序后统计每秒钟的错误次数。拍平到秒可能太细你可以把awk的$1改成更粗粒度的字段比如分钟。这类命令组合的能力不是背出来的是真正在服务器上敲出来的笔试考你的其实就是这个熟练度。4.2 SQL高频考点与典型题目数据库的笔试题目通常围绕单表查询、多表连接、聚合统计、子查询展开。语法本身不难难的是理解业务表结构写出正确的关联条件。测试开发写SQL的目的和数据分析师不太一样更多是为了造数据、查数据、验证测试结果。比如给测试账号批量造订单数据或者复查某个用户的操作记录。所以笔试里经常出现这类题有两个表用户表和订单表要求统计每个用户的订单数并按订单数倒序排列。这就是典型的LEFT JOIN加GROUP BY注意用LEFT JOIN而不是INNER JOIN因为你要保留没有订单的用户记录。另一个高频考点是去重和排序。SELECT DISTINCT、ORDER BY、LIMIT这三个关键字组合起来可以实现很多功能。我还遇到过一道印象很深的题从一个表中找出某字段出现次数大于3的记录。这个用GROUP BY加HAVING COUNT(*)3就能解决但很多人会漏掉HAVING和WHERE的区别。WHERE是在分组前过滤HAVING是在分组后过滤这个区别笔试经常考。4.3 这些题目在真实工作中怎么用可能有人会问现在测试平台都可视化操作了SQL和Linux命令还有必要学吗我的回答是必要而且是必须。你可以通过平台界面点按钮来完成80%的日常操作但剩下20%的疑难杂症比如排查线上日志、批量修改测试数据、写自动化脚本的断言逻辑这些能力全部依赖Linux和SQL功底。我印象最深的一次经历是某次测试环境数据被污染所有订单金额都多了0.1元。开发说修不了运营催着要环境这时候我写了一条SQL把金额字段批量回滚再写了一个shell脚本把受影响用户的缓存清理掉十分钟解决了问题。从那之后我就特别重视这些“基本功”因为它们才是你脱离工具也能解决问题的底气。笔试考这些本质上是在筛选有这种底气的人。5. 计算机网络与操作系统选择题背后的原理5.1 高频考点快速扫描计算机基础和网络知识在测开笔试中通常以选择题和简答题形式出现。考点范围很固定拉一条清单出来基本就是TCP三次握手和四次挥手、TCP与UDP的区别、HTTP常见状态码含义、HTTP与HTTPS的区别、进程与线程的区别、死锁产生的条件、内存分配方式、进程间通信方式。这些知识点看起来多其实可以串成一条线来记用户输入一个网址到看到页面的全过程。这个过程里包含了DNS解析、TCP连接、HTTP请求、服务器处理、HTTP响应、浏览器渲染每一个环节都对应一批考点。我复习的时候就是按这条线走的把每个环节的原理搞清楚再去做题感觉比死记硬背效率高不少。5.2 为什么面试官反复问HTTP爱奇艺这类视频公司核心业务都是基于HTTP/HTTPS协议跑的所以网络知识的考察重点往往落在HTTP上。状态码是最高频的题目背下来只是第一步关键要理解每种状态码背后的业务场景。200表示成功301是永久重定向比如网站换了域名302是临时重定向用户未登录时跳转到登录页就是典型场景403是服务器拒绝请求常见于权限不足404是资源不存在500是服务器内部错误502是网关错误通常是上游服务挂了504是网关超时上游服务响应太慢。这种考察方式是典型的“前后端分离”思维。一个测试人员看到这些状态码应该能快速判断问题是出在客户端、服务端还是网络层这就是基本的问题定位能力。还有一个常考点是HTTP和HTTPS的区别。核心就三句话HTTPS在HTTP和TCP之间加了一层TLS/SSL加密协议默认端口从80变成443需要证书验证服务器身份。理解了这三句话就能推导出大部分扩展问题比如为什么HTTPS更安全、握手过程会多几次往返。5.3 用“排查线上问题”的视角去记忆知识点操作系统知识如果脱离实际场景来记会特别痛苦。我建议换个思路把自己代入一个正在排查线上问题的测试开发工程师试着回答这些问题。服务突然变卡怎么用top和free看CPU和内存为什么多线程程序会出问题是不是线程安全没做好进程崩了怎么查核心转储文件为什么会出现死锁怎么避免这种视角的好处是知识点不再是孤立的而是挂在一条业务线索上。比如进程和线程的区别你从“浏览器为什么能同时打开多个标签页”切入就比直接背“进程是资源分配的基本单位线程是CPU调度的基本单位”更容易记住。笔试做选择题时哪怕记不清精确的定义也能通过场景判断出正确答案。6. 逻辑题与场景题测开思维的试金石6.1 逻辑题不只是算数是拆解问题这类题目在试卷里占比不高但往往是最容易拉开差距的部分。它考察的不是数学计算能力而是面对一个不熟悉的问题时你能不能快速把它拆解成可验证的小步骤。一个经典的例子是有9个外观完全相同的球其中1个质量略轻用天平最少称几次能找出来很多人第一反应是一个个称两次称完。但其实答案是两次第一次分成三组每组三个任意取两组上天平如果平衡轻球在第三组如果倾斜轻球在较轻的那组。剩下三个球再任意取两个称一次就能确定哪个是轻球。这道题的实质是“每次称重最多能提供三组信息”理解了这个规律就能从9推广到27个球。6.2 场景题怎么答才能加分场景题通常是最后的大题也是主观性最强的题。举一个爱奇艺风格的例子“请设计一个方案测试视频App的搜索功能。”这种题的得分点不在答案本身而在你的思考过程。我的答题框架是这样第一步明确测试范围和用户场景搜索功能的输入来源有哪些搜索结果的展示形式是什么搜索历史、热门搜索、联想词要不要覆盖。第二步按测试类型分层功能测试、接口测试、兼容性测试、性能测试、安全测试每层列出重点。第三步落到具体用例比如搜索关键词包含空格、包含特殊字符、超长、纯表情、SQL注入语句搜索结果为空、结果过多、数据延迟。第四步聊清楚自动化方案哪些用例适合自动化用什么框架数据怎么准备。6.3 结合AI测试开发的开放题趋势近几年测开面试明显多了一个方向AI相关的测试。爱奇艺这份2019年的题里可能还只是初步涉及但现在的笔试题已经有“如何测试一个推荐模型”这种角度了。这类题的答题思路是不要被“AI”两个字吓到本质上还是建模、训练、评估、上线、监控这条链路每个环节都有可以测试的点。数据层面要验证训练数据质量有没有样本偏差模型层面要关注准确率、召回率、A/B测试怎么设计上线后要做线上推理监控比如接口响应时间、模型预测结果分布是否异常。如果笔试遇到这题能把这套流程说出来就已经超过大多数人了。哪怕不打算转行做AI测试了解一下这个方向也会让你对测开岗位的边界有更清晰的认识。7. 复盘与备考建议7.1 刷题之外更重要的三件事把这份爱奇艺2019秋招测试开发方向笔试题A从头到尾看一遍之后你会发现它考的东西其实就三类知识、技能、思维。知识可以靠刷题补技能可以靠练代码练命令补思维却要靠长期的项目经验和复盘习惯来积累。第一件事是建立自己的测试checklist。项目里每测一个功能就有意识地把等价类边界值、异常场景、兼容性、性能这些维度过一遍形成肌肉记忆。第二件事是把自动化测试工具用起来不一定要用多复杂的框架先用Python写一个自动遍历核心流程的脚本感受一下从手工到自动化的过程。第三件是学会复盘线上故障。公司里出了线上问题不要看完热闹就完了去复盘这个bug是怎么被漏掉的、当时用例设计有没有覆盖到这些经验是书本上永远学不到的。7.2 一份可执行的考前复习路线如果现在离秋招还有三个月我建议这样分配时间。第一个月打基础系统过一遍测试理论、计算机网络、操作系统、数据库每天手写一两道用例设计题。第二个月练代码每天一两道中等难度的字符串、数组题刻意练习边界条件处理。Linux命令结合虚拟机实际操作至少把日志分析、进程管理、文本处理练熟。第三个月模拟实战每周固定时间做一套完整真题限时两个半小时掐表训练答题节奏。这份路线里最容易被忽略的是错题整理。我当年准备笔试时专门建了一个表格把每次做错的题按“考点、错误原因、正确思路、同类题型”四列记录下来。考前一个星期基本不刷题只看错题和思维导图效率比自己给自己出模拟题高得多。7.3 考前最后一晚的避坑清单最后分享一些考场上才用得上的细节。第一笔试时间很紧遇到不会的题不要死磕先跳过做后面的尤其是编程题宁可代码写得粗糙一些也要保证整份卷子做完。第二编程题如果不会最完美的解法写一个暴力解法也能拿部分分空着就是零分暴力解还能体现你的思路。第三用例设计题不要写得过于零散尽量分条分类让阅卷人一眼看到你的结构比不分条地写一大段得分高。第四开放题不要只给结论要把你的思考过程写出来哪怕是假设也写上去这类题考的就是过程分。我个人在带新人时经常说一句话笔试不是终点它只是帮你拿到面试入场券。真正决定你能否留下来的是你有没有解决问题的热情和把事情做扎实的习惯。一份笔试题能反映当年的考纲但反映不了你未来的成长速度。希望这篇文章能帮你把题目背后的考察逻辑看透然后带着这份理解去搭建属于自己的测开知识体系。
返回列表