去年秋招那会儿,我投了掌阅科技的测试岗。整个笔试做下来,最大的感受是:这场笔试不是单纯考“会不会点按钮、会不会写用例”,而是把“测试工程师”这个岗位拆成了几个能力维度在考——基础理论扎不扎实、计算机功底深不深、能不能结合业务场景做测试设计、有没有自动化或者脚本的实操经验。
掌阅这家公司,产品形态大家应该都不陌生,核心就是数字阅读平台,既有手机App,也有自家的电纸书阅读器。这种业务形态决定了它对测试岗的要求:你光会Web端点点点是不够的,还得理解移动端App的专项测试、阅读器排版这类业务属性很强的功能,甚至要懂点硬件协同的场景。
这篇文章把这些考点和我的复盘思路完整整理出来。不管你是准备投掌阅,还是想面其他中大厂的测试岗,这篇内容都能帮你把备考框架搭起来,知道精力该往哪儿使。
1. 笔试全貌:一场覆盖面广但难度分层的测试工程师能力考察
1.1 题型结构与时间分配
掌阅秋招测试岗的笔试题型,和大多数互联网公司的测试笔试差别不大,但覆盖范围很广。我当时拿到卷子,大致是这么分布的:
| 题型 | 题量 | 考察方向 | 建议用时 |
|---|---|---|---|
| 单选题 | 15-20道 | 测试理论、计算机网络、操作系统、数据结构 | 20分钟 |
| 多选题 | 5-8道 | 测试方法、Linux命令、自动化框架细节点 | 10分钟 |
| 判断题 | 5道左右 | 基本概念辨析 | 5分钟 |
| 简答题 | 3-4道 | 测试流程、bug定位思路、用例设计 | 25分钟 |
| 场景分析题 | 1-2道 | 阅读类业务场景的测试方案设计 | 20分钟 |
| 编程/脚本题 | 1-2道 | 简单算法或自动化脚本编写 | 15分钟 |
要注意一个很现实的点:笔试时间通常只有一个半小时左右,题量却很大,基本不可能每道题都从容作答。我当时拿到卷子先快速扫了一眼,把有把握的选择题先做掉,简答题控制在每道5分钟以内,把大量时间留给场景分析和脚本题。这样做的原因是,选择题分值小,纠结太久性价比太低;而场景分析题和脚本题分值大、区分度高,是决定你能不能进面试的关键。
1.2 题目难度阶梯与得分策略
从难度上看,掌阅这套笔试题的梯度非常典型:
- 第一阶梯(基础送分题):考察基本概念,比如“等价类划分属于哪种测试设计方法”“HTTP 500状态码的含义”“TCP和UDP的区别”。这类题只要复习过,基本不丢分。
- 第二阶梯(理解应用题):给出一个具体场景,让你判断应该采用哪种测试方法,或者让你把一段需求拆成测试点。这需要你不仅背概念,还要理解概念在什么场景下使用。
- 第三阶梯(综合能力题):结合掌阅的产品业务出场景题,比如“书架同步功能从手机端到云端再到电纸书端,你会怎么设计测试方案”“阅读器打开一本书很慢,如何一步步排查”。这种题没有标准答案,考察的是你的测试思维和知识广度。
我个人的得分策略是:保第一阶梯,稳第二阶梯,冲第三阶梯。基础题绝对不许丢分,这是底线;理解应用题尽量答全,把设计思路写清楚;第三阶梯哪怕不能完全答上来,也要把排查思路和测试框架写出来,让面试官看到你的逻辑能力。很多人在基础题上丢分特别可惜,那些都是背了就有的分数。
2. 通用考点拆解:决定你能不能过线的硬基础
2.1 测试用例设计:等价类、边界值和场景法的组合拳
测试用例设计是测试岗笔试最核心的考点,没有之一。掌阅笔试里,简答题或场景题基本都会涉及用例设计。我当时遇到的一道典型题是:设计一个App登录功能的测试用例。这题听起来简单,但很多人拿不到高分,因为漏点太多。
我建议从几个维度去拆解:
- 功能维度:正常登录(正确账号密码)、错误密码、不存在的账号、空账号空密码、账号包含特殊字符、密码大小写敏感、记住密码、忘记密码、切换账号登录、退出登录。
- 等价类和边界值维度:密码长度边界(比如6-20位,要测5位、6位、20位、21位)、账号格式边界(手机号要测11位、10位、12位、非数字字符)。
- 异常场景维度:网络断开时登录、弱网超时登录、服务器返回500时登录、重复点击登录按钮导致重复提交。
- 安全维度:密码是否加密传输、登录态是否有效、抓包能否篡改请求、是否存在SQL注入风险。
- 兼容性维度:不同手机型号、不同系统版本、不同分辨率、不同屏幕尺寸下的登录页面展示和交互。
你看,一个登录功能就能拆出几十个测试点。笔试里写用例,不要只写“输入正确的账号密码能登录成功”这种谁都会写的,要按维度分类去写,体现出你的测试思维是系统的而不是零散的。
边界值法是测试用例设计里性价比最高的方法。我习惯把边界值理解为一句话:凡是涉及数值输入的地方,最小值、最大值、中间值、略小于最小值、略大于最大值,这五类数据一定要测。笔试时把这个思路写进去,面试官会觉得你确实有实操经验。
2.2 计算机网络考点:三次握手、HTTP状态码与接口测试
计算机网络是测试岗笔试绕不开的板块,掌阅也不例外。我梳理了几个高频考点:
第一个高频考点:TCP三次握手和四次挥手。这个基本上逢笔试必考,不只是背出“三次握手分别是SYN、SYN+ACK、ACK”就完了,还要理解为什么是三次而不是两次。简单来说,三次握手保证了双方都确认彼此的收发能力正常,防止历史重复连接初始化造成的混乱。答的时候我把每个步骤的客户端状态和服务端状态也写出来,显得更专业。
第二个高频考点:HTTP状态码。这里最容易混淆的是301、302、403、404、500、502、503。我当年备考的时候做了一个速查表,考前反复过:
| 状态码 | 含义 | 测试中常见场景 |
|---|---|---|
| 200 | 请求成功 | 接口正常返回 |
| 301 | 永久重定向 | 域名变更后旧地址跳转新地址 |
| 302 | 临时重定向 | 未登录用户跳转登录页 |
| 400 | 请求参数错误 | 传参格式不对 |
| 401 | 未认证 | 未携带token访问需登录的接口 |
| 403 | 禁止访问 | 权限不足,比如普通用户访问管理员接口 |
| 404 | 资源不存在 | 访问的URL路径错误 |
| 500 | 服务器内部错误 | 后端代码异常 |
| 502 | 网关错误 | Nginx代理的后端服务挂了 |
| 503 | 服务不可用 | 服务过载或维护中 |
| 504 | 网关超时 | 后端处理时间过长 |
第三个高频考点:接口测试。结合热搜词里频繁出现的“接口自动化测试框架”,可以推断掌阅对接口测试能力是比较看重的。笔试里可能会问“HTTP接口测试和UI功能测试的区别”“设计接口测试用例关注哪些点”。这类题我的答题思路是:接口测试关注请求参数校验、响应结果校验、接口的健壮性(异常数据、并发请求)、数据一致性、安全性(越权、SQL注入、敏感信息泄露)。
2.3 Linux、数据库与脚本能力:测试工程师的三板斧
你去看热搜词,“linux面试题测试”排在很靠前的位置,这不是偶然的。测试工程师日常工作离不开Linux环境:查看日志、搭建测试环境、操作服务器、跑自动化脚本,这些都要用Linux命令。掌阅笔试里Linux相关的题,我复盘下来主要是以下几个:
- 日志查看类:
tail -f实时跟踪日志、grep关键词过滤、awk按列提取。比如“查找日志中所有包含error的行并统计数量”,答案就是grep "error" app.log | wc -l。 - 性能排查类:
top查看CPU和内存占用、free -m查看内存使用、df -h查看磁盘空间、netstat -tlnp查看端口监听情况。 - 文件操作类:
ps -ef | grep java查找进程、kill -9强制结束进程、chmod修改权限、find查找文件。
我印象很深的一道题是:“线上服务响应很慢,你会用哪些Linux命令排查?”这题考的不是单一命令,而是排查思路。我的答题顺序是:先用top看系统整体负载和CPU占用,再用free -m看内存是否不足,接着用df -h看磁盘是否写满,然后用netstat看连接数是否异常,最后tail -f看应用日志有没有报错或慢SQL日志。
数据库方面,笔试一般不会考得太深,但增删改查、多表联查、聚合统计是必须掌握的。我当时遇到一道简单的SQL题:“查询book表中阅读量大于1000的书籍名称,按阅读量倒序排列”。这题只要会写SELECT name FROM book WHERE read_count > 1000 ORDER BY read_count DESC;就能过。但有些同学连基本的SQL语法都写不全,这就很吃亏了。我建议把SQL的增删改查、JOIN、GROUP BY、HAVING、ORDER BY、LIMIT都过一遍,笔试基本够用。
脚本能力这里,我多说一句:掌阅的测试岗笔试题里有编程/脚本题很正常,但不一定考算法题,更可能考的是“用你熟悉的语言写一个冒烟测试脚本”或者“写一个自动化脚本遍历某功能”。我当时遇到的题目是用Python写一段代码,模拟一个简单的登录接口测试,校验返回结果。这种题不考高深算法,考的是你能不能写出完整、可运行的脚本,能不能做好断言,能不能处理异常。
2.4 自动化测试框架:pytest、Selenium与接口自动化的结合
自动化测试相关的热搜词非常多,说明这也是掌阅测试岗笔试的关注方向。笔试里自动化相关的题,更多是考查你对框架原理的理解和对核心API的掌握,而不是让你现场搭一套完整框架。
pytest 是Python生态里最主流的测试框架,掌阅笔试如果考自动化,大概率会围绕pytest展开。重点看这几个点:
- 断言写法:
assert 结果为真,pytest里断言失败会抛出AssertionError并给出详细信息。 - fixture机制:用于测试前的准备和测试后的清理工作,比如
@pytest.fixture装饰器定义的函数可以在测试用例中作为参数传入。fixture 比传统的setUp/tearDown更灵活,支持作用域配置,比如scope="module"表示整个模块只执行一次。 - 参数化:
@pytest.mark.parametrize可以让你用一组数据跑同一个用例,很适合测试多组输入输出。比如登录测试,你可以把多组账号密码和预期结果放到参数列表里,一键跑完。 - conftest.py:存放公共fixture的文件,可以被同目录及子目录下的测试用例自动加载。
- allure报告:配合allure-pytest插件生成漂亮的测试报告,笔试答到这一点会加分。
Selenium/Appium 方面,重点理解定位方式和等待机制。笔试常考:id、class name、xpath、css selector这些定位方式的区别和适用场景;隐式等待和显式等待的区别。我答题时的标准答案是:隐式等待是全局的,设置后所有元素查找都会等待;显式等待是针对某个元素单独设置等待条件,更灵活也更高效。
接口自动化测试框架,这是掌阅笔试很可能考到的点。一个完整的接口自动化框架通常包含:测试用例管理(pytest)、请求封装(requests库)、数据驱动(yaml或Excel)、断言校验(pytest+jsonpath)、报告生成(allure)、持续集成(Jenkins)。笔试如果让你画出框架的调用关系或者描述框架的组成,你可以按照这六层来说,每一层的作用是什么、层与层之间怎么衔接。
3. 掌阅业务场景与阅读类App的测试侧重点分析
3.1 核心阅读链路:书架同步、书城加载与阅读器排版
掌阅的产品核心是什么?阅读。所以笔试里的场景题十有八九会围绕阅读链路出。我当时遇到的场景分析题,大意是:手机端书架上的书籍,如何同步到电纸书阅读器上?请设计测试方案。这种题如果对业务不了解,很难答到点上。
我先拆解一下阅读类App的核心链路:
第一条链路:书架同步。用户手机上收藏的书籍、阅读进度、书签,需要云同步到其他设备。这里面的测试点非常密集:
- 新增书籍后同步是否及时
- 阅读进度更新后,其他设备上能否拉到最新进度
- 断网情况下操作书架,网络恢复后是冲突还是覆盖
- 多设备同时在线时,同步是否发生数据丢失
- 同一账号在不同设备上登录,书架数据是否保持一致
- 同步数据时网络中断,重试机制是否生效
- 服务端修改数据后,客户端下拉刷新能否正确拉取
第二条链路:书城内容加载。用户打开书城,推荐位、排行榜、分类页等内容怎么加载、怎么刷新、加载失败怎么处理。关注分页加载机制(下拉加载更多时是否重复加载)、推荐位内容是否正确展示、书籍封面图加载失败时是否有默认图、搜索关键词是否能准确匹配。
第三条链路:阅读器排版。这是阅读类APP最核心的功能,也是掌阅测试笔试里最可能深挖的点。阅读器排版涉及字体大小切换、字号调整、行距调整、主题切换、翻页动画、EPUB格式解析、目录生成、书签添加、夜间模式切换。EPUB是电子书最常见的格式,解析起来坑很多:章节顺序错乱、图片无法显示、特殊字符乱码、内嵌字体不生效,这些都是测试重点。测试的时候我习惯准备一批不同格式的测试书籍文件,覆盖EPUB、TXT、PDF、MOBI等主流格式,每本都包含特殊字符、长章节、大量图片、空章节等边界情况。
3.2 弱网、离线与异常恢复:阅读App的可靠性测试
移动端测试里面,弱网测试和异常场景测试一直是重点,掌阅笔试也有很大概率考到。原因是阅读类App的使用场景非常碎片化,用户可能在电梯里、地铁上、地下车库里看书,网络状况很不稳定。
弱网测试怎么做?我在项目里一般用Charles或者Fiddler做网络限速,模拟3G、弱WiFi、高延迟、高丢包率等场景。Android端也可以用手机自带的开发者选项。弱网下重点看这几个表现:
- 书城页面加载时间是否在可接受范围内
- 加载失败时是否有友好的错误提示和重试按钮
- 阅读器翻页时是否需要等待下载,是否会卡死
- 图片加载是否采用渐进式加载,已经下载的章节是否可正常阅读
- 接口请求超时时间设置是否合理,超时后是否有重试机制
离线阅读是阅读类App的独有特色功能,测试时要特别关注。用户下载书籍后,在飞行模式下能不能正常打开阅读。我之前的测试经验是:离线不是简单地把书下载下来就行,要验证已下载章节在离线状态下完整可读、未下载章节点击时有明确的引导提示、下载中途断网后续传机制是否正常、多本书同时下载时任务调度是否正常。
异常恢复场景我列一个清单,笔试时可以直接用:
- App在阅读过程中被系统杀掉,重新打开能否恢复到上次阅读位置
- 阅读器加载到一半断网,恢复网络后能否自动继续加载
- 下载书籍过程中切换网络(WiFi切4G),下载任务是否中断或继续
- 云同步过程中杀掉App,重新进入后数据是本地版本还是云端版本
- 手机存储空间不足时下载新书籍,是否有空间不足的提示和清理引导
3.3 硬件协同场景:电纸书与App端的跨端测试
掌阅和其他纯互联网公司不一样的地方在于,它有硬件产品线(iReader电纸书)。如果你投的是掌阅测试岗,笔试里出现硬件协同相关的场景题也不奇怪。
我自己对电纸书测试的理解主要围绕这几个方向:
第一,设备端功能测试。电纸书的核心是墨水屏,区别于手机屏幕,刷新慢、残影重是天然特点。测试时要关注翻页刷新模式(全刷和局刷)、残影控制、屏幕在不同光照下的显示效果、字体渲染的锯齿情况、阅读灯亮度调节、触控操作的灵敏度。这些功能在真机上测试时,要重点关注长时间阅读后的体验,比如连续翻页半小时后是否出现记忆性的残影。
第二,数据传输与格式兼容。电纸书最常见的传书方式是WiFi传书、数据线连接电脑、云端推送。要验证不同方式传书的稳定性和效率、支持的文件格式是否都能正常打开、大文件(比如几百MB的PDF)传书后打开是否卡顿、TXT文件编码不兼容时是否乱码。
第三,设备老化与续航测试。这个点可以结合热搜词里“设备老化测试全自动执行脚本”来理解。硬件产品的测试离不开持续长时间运行,比如连续翻页测试电池续航、长时间待机测试耗电情况、反复充电放电测试电池寿命。这些场景不可能靠人手工点几千次,所以自动化脚本是绕不开的。
第四,跨端一致性测试。手机端和电纸书端登录同一账号,书架数据、阅读进度、书签、笔记要能实时或准实时同步。这里有个很烦的坑:电纸书因为墨水屏刷新慢,同步操作通常比手机慢,测试时要验证弱网环境下的同步超时机制是否合理,避免用户以为同步失败了又手动触发一次,导致两边数据冲突。
4. 经典题目答题示范与高频易错点
4.1 场景排查题:阅读器打开一本书很慢,怎么排查
这类题测试岗笔试里出现频率极高,掌阅笔试我印象中也有一道类似的。答题的时候不要只甩几个命令,要把排查思路按层次写清楚。
我提供一个标准答题框架:
第一层:客户端侧排查。测试机上的App版本是不是最新的,是否复现,其他书籍是否也慢?如果是所有书都慢,问题可能出在App本身的启动逻辑或者网络请求上;如果只有特定的书慢,要先检查这本书的文件大小、格式、章节数量,可能是PDF或EPUB排版导致渲染性能差。
第二层:网络层排查。打开一本书需要请求书籍元数据、封面、章节内容等接口。用抓包工具看这些接口的耗时分布,到底是DNS解析慢、TCP连接慢还是响应体太大传输慢。如果接口本身很快但页面渲染慢,问题在前端解析和渲染逻辑;如果接口就很慢,问题在后端。
第三层:服务端排查。后端服务响应慢,要看服务器的CPU、内存、磁盘IO,查慢查询日志,确认是否有数据库索引失效、缓存击穿、接口被刷等问题。看是否有大批量请求打过来导致服务过载。
第四层:兜底策略验证。这个点很加分也容易被忽略。排查问题不要只看“为什么慢”,还要看“遇到慢时产品怎么应对”。加载慢时有没有loading动画?有没有超时提示?失败后有没有重试按钮?弱网下会不会自动降级为低清晰度封面图?这些都是测试工程师应该在排查过程中注意的。
答题时我习惯把上面思路写成“客户端-网络-服务端-兜底”四段式,逻辑清晰,面试官一眼就看明白你的排查能力。
4.2 测试脚本题:写一个章节列表冒烟测试
编程题部分,我实际遇到的题目难度不大,但要求写出完整可运行的脚本。我举一个掌阅场景的示例:写一个冒烟测试脚本,验证一本书的章节列表接口是否可用。
import requests def test_chapter_list_api(): # 接口地址和参数 url = "https://api.example.com/book/chapters" params = { "book_id": "123456", "page": 1, "page_size": 20 } # 发送请求 try: response = requests.get(url, params=params, timeout=5) # 断言HTTP状态码 assert response.status_code == 200, f"接口返回异常状态码: {response.status_code}" # 解析响应 data = response.json() assert data["code"] == 0, f"业务返回码异常: {data['code']}" assert "chapter_list" in data["data"], "响应中缺少章节列表字段" chapter_list = data["data"]["chapter_list"] assert len(chapter_list) > 0, "章节列表为空" # 校验章节字段完整性 required_fields = ["chapter_id", "chapter_name", "word_count"] for chapter in chapter_list: for field in required_fields: assert field in chapter, f"章节数据缺少字段: {field}" print("章节列表接口冒烟测试通过") return True except AssertionError as e: print(f"测试断言失败: {e}") return False except requests.exceptions.RequestException as e: print(f"请求异常: {e}") return False except Exception as e: print(f"未知异常: {e}") return False if __name__ == "__main__": test_chapter_list_api()写脚本题的核心得分点是:有异常处理、有断言、有清晰的打印输出、能直接运行。很多同学会犯一个错误:只写主流程,不考虑接口超时、网络异常、返回数据异常这些情况,这样测试脚本本身就不够健壮,拿不到高分。
4.3 高频易错点速查
我在刷题和笔试复盘过程中整理了一份测试岗笔试易错点清单,分享出来,考前过一遍能少踩不少坑:
- 状态码记混:301是永久重定向,302是临时重定向;401是未认证,403是禁止访问。这两个组合特别容易混。
- TCP与UDP场景混淆:文件传输、网页访问用TCP;视频会议、直播、语音通话用UDP。简单记:需要可靠传输的用TCP,能容忍丢包的用UDP。
- 等价类和边界值混为一谈:等价类是把输入分成有效和无效的类别,边界值是取边界附近的数据。很多题会同时要求用两种方法,别写混了。
- 测试用例只写正常路径:这是笔试丢分最狠的地方。设计用例一定要覆盖正常流、异常流、边界值、性能表现、兼容性、安全性。
- Linux命令参数记错:查看进程用
ps,查看端口用netstat,实时看日志用tail -f,统计日志行数用wc -l。笔试里出现了“用一条命令杀掉所有java进程”这种题,标准答案是pkill -9 java。 - 断言和验证不分:断言是自动化脚本里的assert语句,验证是手工测试里的人工检查。答接口测试时,要说清楚“断言响应结果的哪些字段、哪些值”。
- 性能测试指标看不清:QPS是每秒查询数,TPS是每秒事务数,RT是响应时间,并发数是同时处理的请求数量。别把QPS和并发数搞混,一个是吞吐量,一个是同时在线量。
- 安全测试要点漏掉:越权、SQL注入、XSS、CSRF、敏感信息明文传输、接口未鉴权。答安全测试题时从这几个方向展开,基本不会漏。
5. 备考策略与踩坑经验
5.1 考前备考时间线
结合我自己的备考经历和踩过的坑,如果你的目标是秋招测开岗,我建议在笔试前按30天来规划复习节奏:
前两周:打基础。重点是测试理论(测试流程、用例设计方法、bug管理)、计算机网络(HTTP、TCP/IP)、数据库(SQL增删改查)。这段时间不用追求深,先把覆盖面拉满,保证选择题不丢分。我用的是“每天一个专题+刷题巩固”的节奏,比如一天搞定Linux基础命令,一天搞定pytest核心用法。
第三周:提能力。重点攻自动化和编程题。用pytest搭一个最简单的接口自动化框架跑通,练20道简单的Python脚本题。这周的核心目标是让自己在笔试时能写出完整可运行的脚本,而不是只会写伪代码。
第四周:看业务。重点研究目标公司的产品。我当时是提前一周把掌阅App下载下来,深度体验了书架、书城、阅读器、同步这几个核心功能,还特意开了会员体验付费功能。强烈建议你也这么做,因为场景题如果结合真实产品来答,会比凭空想出来的方案扎实得多。
5.2 面试官要的不是答案,是测试思维
笔试阶段,很多人以为把知识点背熟就行了,其实不然。我复盘掌阅这套笔试题时有个很深的体会:这套题筛选的是有测试思维的人,不是记忆力好的人。
什么叫测试思维?举个例子。场景题“设计书架同步功能的测试方案”,普通同学会写:登录账号、添加书籍、检查同步结果。而具备测试思维的同学会写:同步的触发时机是什么、同步失败的处理策略是什么、多设备同时操作的数据一致性怎么保证、不同网络环境下的同步表现是否一致、同步过程中用户切走再切回来状态是否保持。
差距在哪里?前者是按“正常流程”走一遍,后者是按“风险点”来思考。你答题时多问自己一句“这里会出现什么异常情况”,整个答题的深度就完全不一样了。
5.3 过来人避坑指南
最后分享几个我自己备考和笔试过程中踩过的坑,希望你能避开:
- 别太晚开始练编程题。我一开始觉得测试岗编程题不难,拖到笔试前三天才开始练,结果笔试时写脚本题虽然写出来了,但不够流畅,浪费了不少时间。建议至少提前两周,每天写一道小脚本题。
- 选择题也别放弃。有人觉得选择题分值低,随便选选就好,但笔试筛人的时候,有时候就是差那么几分没过线。我当时把不确定的选择题都标记了,答完其他题回头再琢磨。
- 场景题一定要写满。哪怕思路不完善,也要把你想到的测试维度一条条列出来。空着不写是零分,写出来至少能拿过程分。我当时的做法是:不管想到几点,先列一个测试维度清单,再对每个维度展开细说。
- 考前用掌阅App先刷一遍。这个真的重要。我当时把掌阅的阅读器、书城、书包、会员、签到、书评、书架同步这些功能都过了一遍,笔试遇到场景题时,脑子里能有真实的页面和操作流支撑,答题就不会空洞。
- 心态上别怂。掌阅这套笔试题一看覆盖面很广,但仔细分析,基础分占了很大比例,只要系统复习过,过笔试没有想象中那么难。
我后来复盘这场笔试,最大的体会就是:测试岗的笔试不像技术岗考算法那样拼智力,它更像是在考你的“职业素养”——有没有系统性的测试思路、有没有扎实的计算机基础、有没有对目标产品的业务理解。把这三个维度准备好,哪怕遇到没见过的题目,也能凭逻辑推个七七八八。