简介:这份资源是腾讯测试开发工程师笔试题的回忆版整理,面向准备互联网大厂测试开发岗位面试与笔试的求职者,尤其适合需要系统梳理Linux、开发技术、数据库、中间件与软件测试五大知识模块的初中级考生。压缩包内共1个docx文档,大小约18KB,以文字题目与参考答案的形式呈现,便于打印或导入笔记软件反复查阅。内容覆盖Linux常用命令与目录区别、HTML行块标签与JavaScript运行环境、Session与Cookie差异、数据库三范式与SQL增删改查、Apache日志重定向问题,以及用等价类划分法设计三角形测试用例等典型考点,基本还原了笔试的题型分布与考察深度。目前已有1550人学习下载,可作为考前查漏补缺、对照自测的参考材料,帮助读者快速定位薄弱环节并针对性复习。
1. 从一道“三角形等价类”题看这场笔试到底考什么
腾讯测试开发工程师的笔试题回忆版里,最后一道软件测试题是“输入三角形三边,判断能否构成三角形及类型,用等价类划分法设计测试用例”。很多人栽在这题上,不是因为不会等价类,而是因为前面 Linux、JS、SQL、中间件四块已经耗掉太多时间,到这里只剩十分钟,用例设计得七零八落。这场笔试的真实结构是:Linux 命令与系统概念、前端与 Web 基础、数据库 SQL 与理论、中间件日志行为、软件测试方法,五块拼盘,每块都不深但覆盖面广,考的是“测试岗该知道的基础面”而不是算法深度。拿分逻辑很清楚——命令和概念题靠记忆准确度,SQL 题靠手写不翻车,测试设计题靠分类完整度。适合正在准备测开岗笔试、手里有回忆版题目但不知道怎么把答案答到点子上的人。下面按考点模块拆开讲,每块都给答题思路和容易翻车的地方。
2. Linux 考点:五个命令题背后的系统观
2.1 动态看进程与内存:top、ps、free 的分工
回忆版第一题问“Linux 下动态显示当前系统进程用户的使用情况”,标准答案是top。但面试官真正想区分的是你知不知道top和ps的差别:top是动态刷新、带 CPU 和内存排序的实时视图,ps是某一瞬间的快照。答题时先给命令再补一句适用场景,比只写一个单词得分稳。第二题free看内存,要顺手写出free -m以 MB 为单位,并说明重点看哪一列——通常看 available 而不是 free,因为 buff/cache 占用的内存可回收。这类题最稳的答法是“命令 + 关键参数 + 看哪一列”,三句话说完。
# 动态查看进程与资源占用,默认 3 秒刷新一次 top # 只看某用户的进程快照 ps -u username # 以 MB 为单位查看内存,重点看 available 列 free -m上面三条命令对应三个不同场景:top用于实时排查谁在吃 CPU,ps -u用于确认某用户跑了哪些进程,free -m用于判断内存是否真的紧张。参数上-m只是单位切换,换成-g就是 GB;ps的-u按用户过滤,不加则看全部。失败时先看命令是否存在(有些精简镜像没有top),再看权限是否够看其他用户的进程。
2.2 周期任务与文件查找:crontab 和 find 的写法
“查看周期执行的任务”答crontab -l,注意是-l列出而不是-e编辑,很多人一紧张写成-e就变成打开编辑器,考试里算错。文件查找题要求“在 /usr/proc 下找名称含 test 的文件或文件名”,标准写法是find /usr/proc -name "*test*"。这里有个细节:-name匹配的是文件名不是文件内容,如果题目说的是“内容包含 test”,那要用grep -r "test" /usr/proc。回忆版原文写的是“名称中包含 test 串的文件或文件名”,所以-name是对的,但答题时补一句“若指内容则用 grep”能体现你分得清,属于加分动作。
# 列出当前用户的周期任务 crontab -l # 按文件名模糊匹配,注意引号防止 shell 展开 find /usr/proc -name "*test*" # 若题目问的是文件内容包含 test grep -r "test" /usr/procfind的-name参数对大小写敏感,要忽略大小写用-iname;路径写错会直接报“No such file or directory”,所以答题时路径照抄题目给的/usr/proc即可,不要自作主张改成/proc。crontab -l在没有任何任务时会输出“no crontab for 用户”,这也是正常结果,不是命令失败。
2.3 /etc 与 /proc 的区别:一个存配置,一个存状态
这题是概念题里最容易答得含糊的。/etc放的是系统和服务的静态配置文件,改完通常要重启服务生效;/proc是内核暴露出来的虚拟文件系统,里面的内容不在磁盘上,读的是内存里的进程和内核状态,比如/proc/cpuinfo、/proc/meminfo、/proc/<pid>/。答题时用“静态配置 vs 运行时状态”“磁盘上 vs 内存中”两组对比就能说清。面试官常追问一句“/proc 里的文件能改吗”,答案是部分可以,比如/proc/sys/下的内核参数可写,但多数进程相关文件只读。
提示:Linux 这块的失分大多不是不会,而是命令参数记混,比如
crontab -l和-e、find -name和grep。考前把这几个参数默写一遍比刷十道新题有用。
3. Web 与前端考点:从标签分类到 Cookie 上限
3.1 行标签与块标签:分类要成对给例子
行内标签答span、a、label、img、input,块级标签答div、p、h1~h6、ul、li、table。答题时每类给三到四个例子就够,关键是补一句区别:块级独占一行、可设宽高,行内不独占、宽高由内容撑开。面试官如果追问“img 是行内还是块级”,答行内但可替换元素、能设宽高,这个细节能拉开差距。
3.2 JS 运行位置与 DOM 操作语句
“JavaScript 运行在服务端还是客户端”这题,回忆版答案写的是客户端,但更准确的答法是“浏览器端是传统场景,Node.js 之后也可跑在服务端”。考试里如果只给一个空,填客户端;如果是简答,补一句 Node.js 的存在更稳。DOM 操作题document.getElementById("").style.fontSize="1.5em"要拆开讲:getElementById按 id 取元素,.style访问内联样式,fontSize是驼峰写法对应 CSS 的font-size,1.5em是相对父元素字号的倍数。答题时把“取元素 → 改样式 → 单位含义”三步说全,比只写“设置字体大小”得分高。
// 按 id 取元素,把字号设为父元素字号的 1.5 倍 document.getElementById("title").style.fontSize = "1.5em"; // 输出 helloworld 的两种常见写法 document.write("helloworld"); alert("helloworld");代码里getElementById的参数不能为空字符串,空串取不到元素会报Cannot read properties of null,这是实际写代码时最常见的翻车点。document.write会在文档流中插入内容,页面加载完成后调用会覆盖整个文档,所以考试答它没问题,真实项目里更常用textContent或innerHTML。
3.3 Session 与 Cookie、Get 与 Post:对比题按维度答
Session 和 Cookie 的区别,按“存储位置、安全性、生命周期、容量”四个维度答:Cookie 存客户端、可被查看篡改、可设过期时间、单个约 4KB;Session 存服务端、客户端只存 session id、随会话结束或超时失效、容量受服务器限制。Cookie 上限题直接答约 4KB,补一句“各浏览器略有差异”即可。Get 和 Post 的区别按“参数位置、长度限制、幂等性、缓存”答:Get 参数拼在 URL 上、受 URL 长度限制、幂等可缓存;Post 放请求体、理论上无长度限制、非幂等不缓存。IE 与 Firefox 样式差异题,举table、ul、ol的默认 margin/padding 不同即可,答题时点明“默认样式重置不统一”这个根因。IE 最大并发线程数答 2 到 6 个,说明随版本和配置变化,不要给死数字。
注意:对比类题目最忌只答一半。Session 和 Cookie 只写“一个服务端一个客户端”只能拿一半分,补上安全和生命周期才是完整答案。
4. 数据库考点:三范式、事务与手写 SQL
4.1 三范式与事务:概念要答准,别背串
三范式的常见答法:第一范式要求每列不可再分,即原子性;第二范式要求非主键列完全依赖主键,消除部分依赖;第三范式要求非主键列不传递依赖主键。回忆版原文对二、三范式的描述偏简略,答题时按“原子性 → 完全依赖 → 无传递依赖”这个链条说,比逐字背定义更清楚。事务答 ACID 四个特性:原子性、一致性、隔离性、持久性,每个特性用一句话解释,比如原子性是“要么全做要么全不做”。MySQL 优化题按“SQL 语句层面、索引层面、配置层面、架构层面”分层答:避免select *、建合适索引、调缓冲池参数、读写分离或加缓存,层次清楚就比罗列强。
4.2 三道 SQL 手写题:更新、删除、插入
回忆版给了 user 表(name、sex、birthday),要求把张三生日更新为当前时间、删除李四、插入王五。这三题考的是基本语法不写错:更新用UPDATE ... SET ... WHERE,当前时间用NOW();删除用DELETE FROM ... WHERE,千万别漏 WHERE;插入用INSERT INTO ... VALUES,列和值顺序对齐。
-- 张三生日更新为系统当前时间 UPDATE user SET birthday = NOW() WHERE name = '张三'; -- 删除李四,WHERE 不能漏,否则全表清空 DELETE FROM user WHERE name = '李四'; -- 插入王五,列顺序与值顺序一一对应 INSERT INTO user (name, sex, birthday) VALUES ('王五', '女', '2012-3-3');NOW()返回 DATETIME 类型,如果 birthday 列是 DATE 类型也能隐式转换。删除题最大的坑是漏写 WHERE,考试里写完整语句时务必检查条件。插入题注意字符串用单引号,日期格式与列类型匹配。
4.3 前 10 条记录与姓名拼接:ORDER BY 加 LIMIT、CONCAT 拼串
“查询访问 id 较高的前 10 条记录”标准写法是SELECT * FROM UserVisit ORDER BY id DESC LIMIT 10,先降序再截断,顺序不能反。姓名拼接题要求把 Firstname 和 familyname 拼成带点的形式,用CONCAT(Firstname, '.', familyname)。回忆版输出示例里“J.J.Jack”和“ABLucy”格式不完全一致,答题时按题目给的拼接规则写CONCAT即可,若要求中间加点就加'.',不要求就不加,关键是说明CONCAT遇 NULL 会返回 NULL,实际场景可用CONCAT_WS或IFNULL兜底。
-- 按 id 降序取前 10 条 SELECT * FROM UserVisit ORDER BY id DESC LIMIT 10; -- 拼接姓名,中间加点 SELECT CONCAT(Firstname, '.', familyname) AS name FROM user;LIMIT 10在数据量大时配合ORDER BY会走排序,id 有索引时效率较好;CONCAT的参数里只要有一个 NULL,整个结果就是 NULL,这是拼接题最常见的隐藏失分点,答题时主动提一句能加分。
5. 中间件与测试设计:日志去向和等价类划分
5.1 Apache access_log 被 mv 之后日志打在哪
这题是中间件部分的核心,考的是“文件句柄”概念。Apache 运行时执行mv access_log access_log.bak,日志会继续写入access_log.bak,因为进程持有的是文件描述符,重命名不改变 inode,写入目标还是同一个文件。重启 Apache 后,进程重新按配置打开access_log路径,此时会新建一个access_log文件并写入其中,原来的access_log.bak不再被写。答题时把“运行中看 inode、重启后看路径”这句话点出来,面试官就知道你懂原理而不是背答案。回忆版还提到“还有两种改文件名操作”,无论怎么改,判断逻辑都一样:不重启就跟 inode 走,重启就按配置路径重新打开。
提示:这题常被追问“那怎么让日志立刻切到新文件”,答“用 logrotate 发信号或重启服务”即可,不要展开成运维方案。
5.2 三角形等价类:分类维度决定用例完整度
三角形判断的等价类划分,先分有效等价类和无效等价类。有效类里再分:一般三角形、等腰三角形、等边三角形。无效类按“不构成三角形”的原因分:两边之和等于第三边、两边之和小于第三边、任一边为 0 或负数、非数字输入。答题时用表格列出输入组合和预期输出,比文字描述清楚得多。
| 类别 | 输入示例 | 预期输出 |
|---|---|---|
| 等边 | 3,3,3 | 等边三角形 |
| 等腰 | 3,3,4 | 等腰三角形 |
| 一般 | 3,4,5 | 一般三角形 |
| 两边和等于第三边 | 1,2,3 | 不能构成三角形 |
| 两边和小于第三边 | 1,2,5 | 不能构成三角形 |
| 含零或负数 | 0,3,3 | 非法输入 |
| 非数字 | a,3,3 | 非法输入 |
这张表的拿分点在于“无效类按原因拆开”,很多人只写一个“不能构成三角形”就结束,漏掉零、负数、非数字三类。面试官看等价类题,看的是你有没有把“无效输入”继续细分,细分越全说明测试思维越到位。
5.3 易错点:五类题最容易翻车的地方
第一类,crontab -l写成-e。错在把“查看”记成“编辑”,一执行就进编辑器,考试环境里直接卡住。正确做法是记口诀“l 是 list,e 是 edit”。第二类,find -name和grep混用。错在没分清“文件名匹配”和“内容匹配”,题目说名称就用-name,说内容才用grep -r。第三类,SQL 删除漏 WHERE。错在一紧张只写DELETE FROM user,整表数据没了,考试里直接判错。答对方式是写完语句回头检查 WHERE 条件是否存在。第四类,Session 和 Cookie 只答存储位置。错在对比维度不全,只拿一半分。答对方式是按位置、安全、生命周期、容量四维展开。第五类,等价类只分有效无效不分原因。错在无效类没拆细,用例覆盖不全。答对方式是把“不构成三角形”的原因逐条列出,每条至少一个用例。
6. 答题节奏:把五块拼盘拆成时间块来练
这场笔试的难点不在单题深度,而在五块知识切换时的节奏。我的建议是把 120 分钟拆成五个时间块:Linux 20 分钟、Web 前端 20 分钟、数据库 30 分钟、中间件 10 分钟、测试设计 25 分钟,留 15 分钟检查 SQL 和命令拼写。每块内部先扫一遍题目,把“一眼会”的先写完,再回头啃需要想的概念题。SQL 手写题一定要在草稿上先写 WHERE 再补 SET 和 VALUES,顺序反了容易漏条件。等价类题先画分类树再填表,比直接写用例快。
| 模块 | 建议用时 | 拿分优先级 |
|---|---|---|
| Linux 命令与概念 | 20 分钟 | 高,记忆题不丢分 |
| Web 与前端 | 20 分钟 | 中,对比题答全维度 |
| 数据库 SQL | 30 分钟 | 高,手写不翻车 |
| 中间件日志 | 10 分钟 | 中,原理说清即可 |
| 测试设计 | 25 分钟 | 高,分类完整度定档 |
| 检查 | 15 分钟 | 必留,查 WHERE 和参数 |
考前一周的练法:每天默写一遍top、free -m、crontab -l、find -name四条命令,手写三道 SQL 不看书,等价类表格限时 15 分钟画完。回忆版题目最大的价值是让你知道“考的都是基础但覆盖广”,所以复习策略是广撒网加手写熟练,而不是死磕某一块。从那以后我每次带人准备这类笔试,都强制让他们先按模块限时做一遍回忆版,再对答案标出错题类型,最后只练错的那一类。希望帮到你。
本文还有配套的精品资源,点击获取