1. 京东2024秋招测试岗笔试:第1批全流程回顾
1.1 这场笔试到底长什么样
收到京东测试岗第1批笔试通知的时候,距离发邮件只有三天时间。我印象比较深的是邮件里写得很清楚:牛客系统作答,70分钟,50道题,全程摄像头监控,手机要放在一边。这个节奏放在秋招里属于中等偏紧的,因为题量不小,而且涉及的知识面非常广。
先直接说结论:京东测试岗笔试不是那种只考测试理论的卷子,它的覆盖面几乎是整个计算机基础加测试专业知识的合集。从计算机网络、操作系统、数据库,到测试用例设计、自动化测试、接口测试,再到一部分编程逻辑题,都会涉及。如果你只复习黑盒测试方法就冲进去,大概率会碰壁。
我当时整理了一下自己记忆中的题型构成,大致是这样的:
| 考察方向 | 大致占比 | 典型出题方式 |
|---|---|---|
| 测试基础与测试设计 | 20% | 给一个输入框,选正确的等价类划分;给一个业务流程,判断缺陷优先级 |
| 计算机网络 | 15% | TCP握手、HTTP状态码、GET/POST对比、DNS过程 |
| 操作系统与Linux | 15% | 进程线程区别、常用命令输出含义、内存/CPU排查 |
| 数据库 | 15% | SQL查询、事务ACID、索引失效场景 |
| 编程逻辑与数据结构 | 15% | 数组链表复杂度、入栈出栈顺序、简单逻辑推理 |
| 工具与框架 | 10% | Selenium定位、Postman用途、Jenkins作用、Pytest断言 |
| 场景发散题 | 10% | 给一个购物车功能,让你说怎么测;给一个线上故障,让你判断原因 |
这个分布不一定每一批都完全一样,但大方向是稳定的。也就是说,你之前背了多少测试理论,只是你答题的地基,真正拉开差距的是计算机基础扎不扎实、有没有实际动手写过测试用例、有没有用过主流测试工具。
1.2 为什么京东要这么出题
很多同学拿到卷子会觉得“怎么这也要考”,但实际上站在测试团队的角度,这些考点每一道都有它的目的。
第一个目的,是筛选出真正理解系统的人。测试工程师日常面对的不是一个孤立的“登录按钮”,而是登录按钮背后的请求、接口、数据库校验、缓存策略、日志记录。如果一个人连HTTP状态码都分不清,线上出问题了连是前端问题还是后端问题都无法初步判断,那根本没法干活。
第二个目的,是判断候选人有没有自动化意识。京东的测试团队大概率已经在做自动化测试、接口测试平台、CI持续集成。所以笔试里出现Selenium、Pytest、Jenkins相关的题目,不是凑数,而是在试探你有没有往测试开发方向走的潜质。毕竟手点按钮终归会被替代,能写脚本、能搭框架的人才是团队真正需要的。
第三个目的,是看逻辑思维和问题拆解能力。测试用例设计题、场景发散题,没有标准答案,但能看出你遇到一个功能时,是先想正常流程还是先想异常分支,有没有边界意识,能不能按优先级排测试计划。这些是测试工程师最核心的软实力,靠临时背是背不出来的。
1.3 这批笔试的时间节奏与应试心态
京东这批笔试一共70分钟,50道题,平均每道题只有不到一分半钟。加上有些多选题和判断题需要反复斟酌,实际分配给每道题的时间会更少。所以考试过程中的核心策略就两条:第一,不恋战;第二,保证会做的全对。
我当时的做法是:先快速把整张卷子扫一遍,把明显会做的题先做掉,大概花30分钟;再回头攻克那些需要思考的题目,花25分钟;最后的15分钟用来检查多选题和不确定的题。实测下来,这个节奏基本能把会的分都拿到,不会的题也不至于影响心态。
还有一点值得提醒:牛客系统的多选题是“少选不得分、选错不得分”,不是部分给分的。所以面对多选题,宁可少选也不要乱选,拿不准的选项直接放弃。
2. 核心考点拆解:五个必攻方向
2.1 测试基础与用例设计:不只是背概念
测试基础这块,表面上考的是概念,实际上考的是你能不能把方法用到具体场景里。比如“等价类划分”,很多人会背定义,但题目会给一个注册页面的手机号输入框,让你选出哪一组是有效的等价类数据。这时候就需要你把有效等价类和无效等价类都划分清楚,还要注意长度区间、字符类型、是否包含特殊字符这些细节。
再比如“边界值分析”,题目可能会给一个“密码长度为8-16位”的校验规则,选项里有7位、8位、16位、17位、15位,考的就是你对边界条件的敏感度。测试岗笔试里这类题错不得,因为边界值测试是实际工作中最高频的用例设计方法,也是最能体现一个测试工程师基本功的地方。
缺陷管理也是常考点。通常会问“一个Bug被开发人员打回'无法复现',你应该怎么处理”,选项里会有一堆干扰项。正确的思路是补充必要的截图、日志、使用环境信息,然后尝试按步骤复现,必要时找开发当面确认,而不是直接关闭或者继续提。千万别选“自己再复现一次,复现不了就关闭”这种答案,那是测试大忌。
2.2 计算机网络:高频考点集中爆发
计算机网络在京东测试岗笔试里出现频率极高,而且和实际测试工作关联非常紧密。最常考的几个点我列一下:
- HTTP状态码的含义。301是永久重定向,302是临时重定向,403是服务器拒绝请求,404是资源不存在,500是服务器内部错误,502是网关错误。这个必须熟到条件反射的程度,因为查问题的时候第一步就是看状态码。
- TCP三次握手和四次挥手的过程。握手比较容易,稍微背一下SYN、ACK就能答上来;四次挥手容易考FIN和ACK的顺序,以及TIME_WAIT状态出现在哪一端,这里需要多留意。
- GET和POST的区别。这个几乎是必考题,重点在于:GET参数在URL里、长度受限、可被缓存、一般用于查询;POST参数在请求体里、相对安全、不可被缓存、一般用于提交数据。从测试角度还会延伸出一个问题:幂等性,GET是幂等的,POST不保证。
- Cookie和Session的区别。Cookie存在客户端,Session存在服务端;Cookie大小有限制,Session相对更安全。结合登录场景,这个知识是测试面试里绕不开的。
- DNS解析过程。浏览器输入域名后,先查本地缓存,再查本地DNS服务器,然后逐级向上查询。这道题出现频率不算特别高,但一旦出现,很多人会卡住。
我在备考阶段是用一个比较笨的办法记这些内容:每当学到一个新的网络知识点,就先问问自己“如果我是测试,我最关心这个知识点的哪一部分”。比如TCP握手,测试关心的不是三次握手的细节实现,而是为什么连接的建立是三次而不是两次,因为两次会有历史重复报文的问题。带着测试视角去学,记忆效果比死记硬背强很多。
2.3 操作系统与Linux:日志排查是硬功夫
Linux命令是测试岗笔试里的常客。2024年秋招这批笔试涉及的命令主要集中在:top、ps、netstat、grep、awk、find、tail这几种。
这里我强烈建议不要只看命令名称,要能看懂命令的“输出结果”。比如top命令输出里的load average、%CPU、%MEM分别代表什么;ps aux输出里哪个字段是PID,哪个字段是CPU占用率。这些细节笔试里真的会考,而且有时候会给一段top输出,让你判断系统当前是否负载过高。
内存测试相关的热词在这几年很火,笔试里也会跟着出题。比如“内存泄漏”在Linux下怎么排查,可以用top查看RES和VIRT,用free查看内存总量和剩余量,用ps看某个进程的内存占用趋势。还有系统OOM时,Linux会触发OOM Killer,杀掉某一进程,这也可能成为场景题。
进程和线程的区别也属于高频题:进程是资源分配的最小单位,线程是CPU调度的最小单位;同一进程的多个线程共享地址空间,进程之间地址空间隔离;线程切换开销小,进程切换开销大。理解这几个区别就够了,不用背太深。
在备考这块时,我自己的一个体会是:如果你身边有Linux环境,一定要动手敲一遍,尤其是在/var/log目录下用grep和tail组合去排查一个真实服务的异常日志。这个过程会让你把命令的记忆变成肌肉记忆,笔试遇到输出分析的题,一眼就能看出来。
2.4 数据库:SQL和事务各占半壁江山
数据库在测试岗笔试里的重要性被我严重低估过。第一轮做模拟题时,我被一道“多表联查统计订单数量”的SQL题卡了很久,才发现自己的SQL手感太生疏了。
备考数据库中,最值得花时间的是这几块:
第一,SQL基础查询。SELECT、WHERE、GROUP BY、HAVING、ORDER BY、LIMIT这套组合要能熟练写出来,尤其是GROUP BY和HAVING的配合,什么时候用WHERE、什么时候用HAVING,是高频易错点。多表关联里的INNER JOIN、LEFT JOIN也要能区分清楚。
第二,事务的ACID。原子性、一致性、隔离性、持久性这四个概念要能说出本质。从测试角度来看,最常考的是隔离级别,比如读未提交、读已提交、可重复读、串行化,分别解决什么问题,又分别会带来什么并发问题(脏读、不可重复读、幻读)。这些知识在做并发测试、数据一致性测试时特别有用,而且很容易错。
第三,索引相关。哪些情况会导致索引失效,比如在索引列上做函数运算、隐式类型转换、左模糊查询、OR连接等。笔试里会给一个SQL语句,问它是否走了索引,这个还是有一定区分度的。
第四,数据库的一致性校验。测试人员在实际工作中经常要做数据校验,例如下了一个订单后,数据库里的订单表和库存表是否同步更新。笔试里可能会用场景题的方式考这个概念,比如“一个支付成功但订单状态未更新,可能是什么原因”,这时就要从事务提交、缓存同步、代码逻辑多个角度来分析。
2.5 自动化测试与工具链:出现频率逐年上升
近几年的测试岗笔试,工具类题目比重明显在上升。2024年秋招第一批笔试里,我印象中出现了Selenium、Appium、Pytest、Postman、Jenkins、Docker相关的题目,虽然每道题分值不一定高,但架不住多,合起来也是一笔可观的分数。
Selenium最常考的是元素定位方式:id、name、className、xpath、cssSelector、linkText等。笔试题目会问你“以下哪种方式定位速度最快”,答案通常是id,因为id在页面中是唯一的。这个点虽然简单,但很多人只记得xpath,不知道id优先级最高。
Pytest这边,主要考断言、fixture、参数化。尤其是pytest的fixture机制,会和JUnit里的@Before、@After做对比。只要你能说清楚fixture的作用域(function、class、module、session),基本就够了。
Appium的出现频率也在增加,毕竟移动端测试是很多业务线的刚需。考点集中在:Appium和Selenium的关系(Appium是在Selenium基础上扩展的移动端自动化框架)、主要支持的平台(Android、iOS)、定位元素的方式。如果考得深一些,会问“为什么Appium不用每次都启动app”。这个是因为它采用了“一次安装,多次执行”的机制,通过driver来管理app进程。
Postman和JMeter的考点比较简单:Postman用于接口调试和接口自动化测试,JMeter用于性能测试和负载测试。只要分清两者的使用场景就够了。
Docker和Jenkins的题目不算难,考的是概念:Docker镜像是只读的,容器是镜像的运行实例;Jenkins用于持续集成,可以定时触发自动化测试脚本。这两个方向建议花半天时间了解核心概念,性价比很高。
3. 笔试中的编程题与实操环节:怎么拿到这15%的分
3.1 编程逻辑题的真实考察范围
京东测试岗笔试里的编程题比重不像开发岗那么大,但2024年秋招第1批里依然出现了。大部分情况下,这些题以选择题形式出现,偶尔会有一道完整的手写代码题。选择题型的编程题,重点在数据结构复杂度、栈和队列的应用、字符串处理。
数组和链表是必考基础。数组内存连续、支持随机访问、插入删除需要移动元素,时间复杂度是O(n);链表内存不连续、不支持随机访问、插入删除只要改指针,时间复杂度是O(1)。这个对比题目很经典,基本都会考。
关于栈和队列,常考的是“入栈序列1、2、3、4,以下哪个出栈顺序是不可能的”。这种题画个栈的示意图就能做出来,关键是记住一个点:想让后面的元素先出栈,前面的元素必须已经全部入栈。也可以考“用两个栈实现一个队列”,思路是入队进栈A,出队时若栈B为空则把栈A全部倒入栈B再弹出。
字符串处理题一般和测试场景结合,比如“给定一个手机号字符串,校验是否符合11位数字格式”。这种题从实现上不难,但笔试里可能会考正则表达式,需要你会用\d、^、$、{n,m}这些基础的正则符号。正则表达式在测试里用得非常多,无论是接口参数校验还是自动化测试里的断言,都离不开它。
手写代码题如果再出现,大概率是“手写一个方法,判断一个字符串是否回文”或者“手写一个冒泡排序”。这种题难度不高,但要求你代码风格规范,变量命名有意义,边界条件处理完整。建议备考时把这些基础算法都敲一遍,不求多,但求能一次写对。
3.2 测试用例设计题的答题套路
除了编程题,京东测试岗笔试还有一种题特别重要——测试用例设计题。它不要求你写代码,而是要求你针对一个功能,列出测试点。
我当时遇到的一道题是:“针对电商购物车页面,设计测试用例,至少写出10条。”
这种题没有标准答案,但能给分的高低取决于你是否有层次。我当时的答题思路是这样的:
- 功能测试:加购、删除、修改数量、清空购物车、勾选结算
- 边界测试:购物车数量上限、单件商品数量上限、数量为0时的表现
- 异常测试:商品下架后购物车里是否显示异常、库存不足时是否能结算、未登录时加购是否跳转登录页
- 兼容性测试:不同浏览器、不同手机型号的展示是否正常
- 性能测试:购物车商品数量多时,页面加载是否卡顿
- 安全测试:购物车接口是否存在越权风险,能否改变价格参数
这六类覆盖下来,至少能写出20条用例。关键是让判卷人看到你有清晰的测试分类意识,而不只是想到一个写一个。
3.3 一道典型SQL题的手写过程
备考SQL时我印象比较深的一道题是:“表orders(id, user_id, amount, create_time),统计每个用户下单总金额超过1000的用户ID和总金额,并按总金额降序排列。”
我的写法是:
SELECT user_id, SUM(amount) AS total_amount FROM orders GROUP BY user_id HAVING SUM(amount) > 1000 ORDER BY total_amount DESC;这里要注意几个容易错的地方:WHERE和HAVING的区别。WHERE是在分组前过滤,HAVING是在分组后过滤。因为“总金额超过1000”是对聚合结果的过滤,所以必须用HAVING,不能写WHERE SUM(amount) > 1000。这个点在笔试里属于高频送命题,错的人特别多。
另外,ORDER BY用的是别名total_amount,这在MySQL里是允许的,因为SELECT的执行顺序是先投影再排序。如果是SQL Server,用别名排序也没问题。所以可以直接写ORDER BY total_amount DESC,语义更清晰。
3.4 自动化测试脚本的简答思路
如果说笔试里有简答题,大概率会问你“如何设计一个自动化测试框架”或者“如何搭建一套接口自动化测试体系”。这类题的应对思路是:从用例管理、数据驱动、断言机制、报告输出、定时执行、异常处理这几个层面来展开。
我当时准备的框架回答是:使用Pytest作为测试框架,用YAML文件管理测试数据,实现数据驱动;用Requests库发送HTTP请求,断言响应结果;通过Pytest插件生成HTML报告;配合Jenkins定时任务实现自动化执行;测试代码和用例数据分离,保证用例的可维护性;失败用例实现自动截图和日志记录,方便复现。
这个答案虽然不算惊艳,但胜在完整。笔试里只要你能把这几个点说清楚,判卷人就知道你是真正做过事情的。
4. 常见题型、易错点与我的避坑经验
4.1 最容易答错的基础知识选择题
刷完京东这批笔试后,我整理了一批最容易踩坑的知识点,这里挑几个含金量高的分享给大家。
第一个,HTTP状态码的辨析。题目常常给你一个场景:用户访问一个需要登录的页面,未登录时被重定向到登录页,应该返回什么状态码?很多人会选401,但正确的答案往往是302(临时重定向)或301(永久重定向),因为服务端没有直接返回未授权,而是通过重定向把用户引导到登录页。401和403这类状态码常被误用,实际项目中区分它们要看“是否已经认证”和“是否有权限”。
第二个,TCP四次挥手的状态变化。如果你对四次挥手的过程不够熟悉,很容易在“主动关闭方最后进入的状态”上出错,正确的答案是TIME_WAIT。面试中追问时还会问你“为什么要TIME_WAIT”,关键点是保证最后一次ACK能到达对方、以及让旧报文在网络中自然消失。笔试里考到这个状态,一定不要选成CLOSE_WAIT。
第三个,SQL查询里COUNT、GROUP BY的默认行为。比如统计一个班级每个性别人数,写法是SELECT gender, COUNT() FROM students GROUP BY gender。有些人会忘记GROUP BY,直接写COUNT()然后得出一个总数,这题就妥妥错了。记得把分组字段带上。
第四个,Selenium里findElement和findElements的区别。findElement找不到元素会抛异常NoSuchElementException,findElements找不到元素返回空列表。笔试里常考“如果需要判断一个元素是否存在,应该用哪个方法”,答案是findElements,因为返回空列表不会抛异常,方便做条件判断。这个属于实战经验,不踩过一次坑很容易选错。
第五个,Linux里软链接和硬链接的区别。软链接相当于Windows的快捷方式,可以跨文件系统,链接失效原文件还在;硬链接是同一个inode的多个文件名,不能跨文件系统,不能对目录创建。笔试里给出硬链接和软链接的题目,关键看“原文件删除后,链接还能不能访问”:硬链接可以,软链接不可以。
4.2 实测有效的备考时间分配方案
我是从笔试前一周开始正式备考的,前后总共花了大约7天。这个时间很紧张,所以我给自己定了一个优先级明确的复习计划,分享出来供大家参考,完全可以照抄。
- 第1天:测试基础。主攻等价类、边界值、因果图、判定表、场景法,每个方法各找5道例题练习。晚上看一遍缺陷生命周期、Bug优先级和测试流程,这部分是送分题,必须拿稳。
- 第2天:计算机网络。重点突破HTTP、TCP、UDP、DNS、Cookie和Session。白天把状态码、握手挥手流程背熟,晚上用思维导图整理关键词,睡前看一遍。
- 第3天:Linux和操作系统。主攻top、ps、netstat、grep、awk、find、tail。白天在虚拟机里实际操作一遍,把每个命令的输出结果都截图存下来,晚上对着截图回忆每个字段的含义。
- 第4天:数据库。把SQL基础语法过一遍,重点练GROUP BY和HAVING、多表JOIN、索引失效场景。找牛客SQL题库做20道题,保持手感。
- 第5天:自动化测试和工具。主攻Selenium、Pytest、Postman、JMeter、Jenkins、Docker、Appium。不需要跑通代码,只要把每个工具的定位、核心概念、常用功能搞清楚。
- 第6天:编程逻辑和场景题。把常用数据结构复杂度、栈队列应用、字符串处理过一遍,再看几道测试用例设计题,训练自己的分类思维。
- 第7天:全面模拟。按照70分钟50道题的节奏做一套模拟卷,重点关注自己的时间分配,做完后把错题整理出一个清单。
这个安排看起来内容很多,但每天基本只要保证4到5小时的专注学习时间,关键是节奏要紧凑,不要在一个知识点上反复纠结。京东测试岗笔试很看重广度,先把面铺开,再深挖重点,比只死磕一个方向性价比高得多。
4.3 后续面试会往哪里延伸
笔试只是第一步,通过笔试之后大概率会进入一面二面,面试官往往会根据你的笔试答案继续深挖。我当时准备的一面常见追问方向,也一并列出来:
- 测试用例设计:你说你用了边界值分析,那请现场给一个日期输入框设计测试用例,边界值在哪几条。
- 自动化测试:你简历里写了熟悉Selenium,那请问显式等待和隐式等待的区别是什么,实际项目中更推荐用哪种。
- 数据库:你写了一条SQL,那如果这张表数据量到了千万级别,这条SQL会存在什么问题,你会怎么优化。
- 项目经验:你做过接口测试,那如果接口返回速度和预期不符,你会如何定位是网络问题、服务端问题还是数据库查询问题。
这些追问并不难,但要求你能把笔试里的知识点和实际业务场景结合起来。所以备考笔试时不要只为了应付选择题,把每个知识点理解到“能讲给别的听”的程度,后面面试会省很大力气。
4.4 最后说几句实在话
考完京东这批笔试,我发现一个现象:考场上最后能稳定发挥的人,往往不是知识点背得最多的,而是平时真正动手做过的人。测试这个岗位非常吃实战经验,你以为你理解了TCP握手,真让你抓包看一次,很多细节才会真正刻进脑子里。
所以,如果时间来得及,强烈建议在备考过程中随手做一些小实验:用Postman调一次真实接口、用Pytest跑通一个简单的自动化用例、在Linux下用grep和tail排查一个模拟日志。这些操作花不了几个小时,但带来的记忆深度是纯看书没法比的。
京东测试岗笔试的难度,横向对比其他大厂来说,属于中等偏上。题量确实大,范围也确实广,但它并不会出偏题怪题,所有内容都在计算机基础测试基础这个框架之内。你只要按照上面聊到的方向把知识面铺开、把高频考点的细节弄清楚、再配合一定量的模拟练习,拿一个不错的笔试成绩是完全有机会的。