2019小米手机测试笔试B卷复盘:核心考点与答题思路
2019年那会儿手机测试岗的秋招笔试还没像后来那么“卷”但小米的卷子已经很有筛选味道了。这里说的B卷是同一场笔试里与A卷并列的等价考卷题目维度基本一致具体出题点和选项顺序会有调整主要防止考生相互参考。现在回头看这份卷子几乎把手机测试工程师需要的几个核心能力都覆盖到了Android系统底层认知、硬件协议基础、测试方法论、实际场景分析。虽然时间过去几年但这类笔试的底子没有变对现在准备手机测试岗的同学来说依然有很强的参考价值。1. 为什么手机测试笔试的B卷值得单独拿出来讲1.1 2019年手机测试校招的环境与门槛2019年是智能手机竞争最激烈的一段时间各家厂商在硬件参数上拼得难分难解软件体验和系统稳定性就成了拉开差距的关键。小米作为硬件软件互联网服务一体化的厂商对测试工程师的要求远不是“会玩手机就行”而是需要懂Android系统、懂硬件底层、懂用户场景还得有工程化思维。那年的秋招流程一般是网申 - 在线笔试 - 技术面试 - HR面试。笔试是第一道硬门槛刷人比例很高。以手机测试岗为例笔试题目不是简单的八股文而是把测试理论、系统知识和实际产品场景揉在一起考察你有没有真正“做过事”的素质。B卷作为平行卷难度和A卷基本持平但侧重点可能有差异比如A卷偏系统应用测试B卷偏硬件外场测试这一点从题目分布上能感受到。1.2 B卷的出题逻辑稳定性、兼容性、用户体验三位一体复盘这套卷子的出题逻辑其实可以归结为三个关键词稳定性、兼容性、用户体验。稳定性考察的是对Android系统的深入理解比如进程管理、内存机制、ANR产生原因兼容性考察的是对碎片化生态的认知包括分辨率、系统版本、厂商定制、运营商网络之间的组合用户体验则更多体现在场景题比如某个功能在弱网下的表现、某个操作在特定条件下的异常这需要你站在用户的角度去设计测试方案。这一点非常小米——因为小米用户群体覆盖面广从极客到普通用户都有手机测试必须同时照顾到“技术深度的验证”和“小白用户的使用直觉”。笔试题目并不会直接告诉你“我在考稳定性”而是通过一道ANR相关的选择题或一道功耗分析的场景题让你不知不觉进入那个语境。2. 笔试核心知识模块你要会的远不止“点点点”2.1 Android系统底层与进程模型手机测试岗位的笔试Android系统知识是必考项而且考得不浅。我记得当时的题目里有不少涉及四大组件、进程优先级、Binder通信、内存回收机制的内容。这里要重点提一下进程优先级。Android系统在内存不足时会根据进程优先级去回收进程优先级从高到低大致是前台进程 - 可见进程 - 服务进程 - 后台进程 - 空进程。笔试里经常会出一道题让你判断某个场景下进程属于哪个优先级比如“正在播放音乐但屏幕熄灭”属于哪个等级答案就是服务进程。这类题看起来简单但实际上很多考生会混淆服务进程和后台进程丢分很多。还有ANRApplication Not Responding这也是高频考点。要注意ANR不是只有“界面卡死5秒”这么简单。实际上有三类ANR输入事件5秒无响应、BroadcastReceiver前台10秒/后台60秒未执行完成、Service前台20秒/后台200秒执行超时。2019年的笔试已经考到了这个细度如果只记一个“5秒”遇到具体选项就很容易翻车。内存泄漏和OOM也是必考。笔试会给你一段简单的代码或者场景描述让你判断哪里可能泄漏或者问“为什么Bitmap会引起OOM”。这块需要你对Android的内存模型有概念每个App有堆内存上限OOM不是物理内存不够而是App自己的堆空间被占满系统无法分配新对象。加上当时很多手机还在用32位虚拟地址空间内存紧张是常态所以测试时专门有一条用例就是“反复执行某操作观察内存是否持续增长”。2.2 手机硬件与外场基础如果说Android系统是软件侧的重头戏那硬件和外场基础就是手机测试笔试的差异化所在。这部分题目很多纯软件背景的考生会直接被劝退。最基本的你要知道手机里有哪些关键硬件模块AP应用处理器、BP基带处理器、射频前端、天线、屏幕、电池、各类传感器加速度计、陀螺仪、光线传感器、距离传感器、NFC、Wi-Fi/BT/GPS芯片。这里有一个容易忽视的考点AP和BP是分离的即使App崩溃手机基带仍然在工作所以电话短信功能不受影响。当年好多人不知道这个遇到“App卡死时还能不能打电话”这道题就懵了。外场测试的概念也会出现在笔试里。所谓外场就是走出实验室在真实网络环境里测。比如你在高楼密集区打电话因为信号反射和遮挡会出现“有信号但打不出去”的情况又比如地铁上基站切换频繁数据连接容易断开。笔试不会让你真跑去外场但会考相关概念比如弱网环境下TCP重传机制导致的卡顿以及GPS冷启动、热启动、温启动的区别。冷启动是没有星历数据定位时间最长一般要好几十秒热启动是刚用过GPS几秒就能定位温启动介于两者之间。传感器也是一个不容易注意的考点。光线传感器用来调节屏幕亮度距离传感器用来打电话时灭屏防止误触加速度计和陀螺仪用于横竖屏切换、计步、游戏操作。笔试可能会问你“手机屏幕自动旋转依赖哪个传感器”答案是加速度计很多考生会惯性写成光线传感器其实两个都不一样。2.3 测试理论与工程方法笔试里纯测试理论的部分占比不算特别高但一定会考而且考得偏实践。等价类划分、边界值分析、因果图、场景法这些基础方法你得能灵活用。比如有一道很典型的题让你为一个“输入4位数字验证码”的功能设计测试用例。等价类怎么划分有效等价类就是“4位纯数字”无效等价类包括“少于4位”“多于4位”“包含非数字字符”“为空”。边界值就是3位、4位、5位以及数字与字母交界的情况。就这么一道题很多考生连边界值的“上点、内点、离点”都说不清楚这其实是很基础的能力。缺陷生命周期也是必考的。从“新建 - 打开 - 修复 - 关闭”再到“重新打开”开发不修复/延迟修复/转需求的处理方式这些流程在笔试里会以选择题或判断题出现。再比如bug的严重程度和优先级是两回事严重程度指的是对系统的影响程度优先级指的是修复的先后顺序。一个按钮文案错别字严重程度低但优先级可以很高因为用户每次都能看到影响品牌形象。这个区分笔试里出过不止一次。兼容性测试也是手机测试的重头戏。那时小米手机分辨率已经很杂了从720P的入门机到2K的旗舰都有还有刘海屏、挖孔屏等异形屏。笔试会问“兼容性测试应该覆盖哪些维度”答案要答出网络兼容、硬件兼容指按键、屏幕、耳机孔、软件兼容OS版本、分辨率、厂商ROM、外设兼容蓝牙耳机、OTG设备几个方向。面试官看你的答案就能判断你是在实验室里跑过兼容性矩阵还是只会背概念。3. 典型题型复盘从知识题到场景题3.1 选择题考查概念的精准度B卷的选择题大概占了50分左右考察范围很广但每个选项都设计得很有迷惑性。比如一道关于Wi-Fi的题“以下哪种情况不会导致Wi-Fi频繁断开”选项可能是A. 路由器连接设备过多 B. 手机开启了省电模式 C. 附近微波炉在运行 D. 手机开启了蓝牙。这个题看着简单但BCD都有实际依据省电模式确实可能导致Wi-Fi休眠断开微波炉工作在2.4GHz频段会产生干扰蓝牙和Wi-Fi共用天线时可能互相抢占资源。而A“路由器连接设备过多”虽然会导致网络卡顿但一般不会直接让Wi-Fi断开除非路由器因为负载过高重启了——这就得看你对Wi-Fi机制的了解程度了。另一类常见选择题是“判断哪个操作会触发系统GC”或者“以下哪个不是性能测试指标”。性能测试指标我记得考过CPU占用率、PSS内存占用、启动时间、FPS、丢帧率、流量、耗电量这些都不难难的是区分“冷启动”和“热启动”的概念。冷启动是从点击图标到页面完全绘制完成中间经历了Zygote fork进程、Application创建、Activity创建、布局绘制全程热启动则是Activity已在后台只需从栈里恢复。测试App的启动性能两个指标都要记录因为用户既能遇到冷启动杀后台后重新打开也能遇到热启动从最近任务切回。3.2 用例设计题以“手机充电”为例笔试必考一道用例设计题主题可能是“手机充电”“文件传输”“闹钟提醒”这类日常功能。我印象最深的是“手机充电”这道题因为它考察的不是简单功能验证而是对真实用户场景的理解和数据线兼容性、充电协议、温度控制这些跨模块知识的掌握。拿到这类题怎么组织答案第一层基础功能充电功能是否正常显示的电量百分比是否与实际一致充电到100%后是否自动停止。第二层兼容性测试不同充电器5W/18W/65W、不同充电线普通线/快充线、无线充电座、移动电源、电脑USB口都要覆盖。第三层异常测试充电时玩大型游戏是否导致充电速度下降甚至越充越少电池温度过高时是否降流保护充电线松动或接触不良时系统是否给出提示零电量关机状态下插上充电器能否正常进入充电界面。第四层长稳测试持续充电多小时后电池温度是否正常是否有过充保护反复插拔充电线1000次后接口是否仍稳定。把这几层写出来不管谁看了都会觉得你是真正做过整机测试的人。我当时给这道题留了挺大篇幅把快充协议QC/PD/私有协议兼容、发热保护和充电指示灯状态都写了进去。3.3 综合性分析题App崩溃定位与外场问题分析综合性分析题一般是最后一道大题分值最高也是面试官重点看的部分。题目给出一个场景让你分析问题原因并写出排查思路典型的有两类。一类是“用户在论坛反馈App在某个页面上频繁闪退你作为测试工程师怎么定位”。这道题的关键是不要一上来就说“让开发看日志”。正确思路是第一步复现问题。先在测试机上尝试复现如果复现不了收集用户设备信息手机型号、系统版本、App版本、操作路径、用户是否升级过系统。第二步抓取日志。抓取logcat中与崩溃相关的堆栈信息重点看是否有空指针、数组越界、资源找不到这些常见异常。第三步分析共性。统计这个崩溃的设备分布如果集中在某个Android版本或某类屏幕分辨率基本锁定是兼容性问题如果集中在某个版本的App可能是新引入的代码问题如果是低内存设备可能是内存溢出导致被系统杀掉。把这三个步骤写完整基本就能拿到大部分分数。最怕的是只写“让开发看log”那就等于没答。另一类综合题是外场问题比如“用户在地铁上App加载不出内容但信号显示良好怎么排查”。这道题的考点在于“信号好”和“网络通不通”是两回事。信号强不代表数据业务正常可能是基站拥塞、网络切换失败、DNS解析超时、服务器端限流。排查思路要分几层先让用户看能不能打开其他App再换个网络环境试然后抓日志看TCP连接是否建立、HTTP响应码是多少最后结合后台数据看这个时间段该地区的网络质量。这样体现出你有端到端的问题排查思维。4. 实操视角如果让我现场做这份卷子我会这么答4.1 先易后难先把确定性分数攥在手里手机测试笔试的题量不算小时间很紧。我记得当时在线笔试大概是90分钟左右选择题加简答加大题如果每道题都想太久后面的大题基本没时间写。我的习惯是拿到卷子先浏览一遍全部题目像选择题、判断题这类有时间成本低的题快速过一遍把不确定的先做个标记。然后直接跳到用例设计题和综合题因为这些大题分值高需要充分思考即使时间不够写完整把框架和要点列出来也好过空白。最后再回头纠结那些标记的选择题。这个策略在考试中很管用。选择题就算错了也就是一两分大题空着就是十几二十分没了。哪怕你答得不完美只要把分析思路和测试点列清楚阅卷人就可以给分。4.2 简答题的答题结构分层写别堆一句话很多考生在简答题上丢分不是因为不会而是因为写得没有层次。比如“简述Wi-Fi测试的关注点”如果你只写一句“测试连接是否正常、信号是否稳定”那基本就是最低分。正确的写法是分层展开。第一层功能测试连接、断开、忘记网络、自动重连。第二层性能测试信号强度阈值、上下行速率、不同距离的衰减。第三层兼容性测试不同路由器厂商、不同加密方式WEP/WPA/WPA2/WPA3、2.4G和5G频段切换。第四层异常场景路由器重启后是否自动恢复、输入错误密码的提示是否友好、多个设备同时连接时的表现。这样写阅卷人能一眼看出你有系统的思维分数自然不一样。我后来帮同事看简历里的测试用例设计也会强调这种分层的写法它反映的不只是表达能力更是思考的完整度。4.3 哪些地方最容易丢分概念混淆、忽略边界、不留证据丢分点其实很集中我总结下来有三个。第一个是概念混淆。最典型的是把“内存泄漏”和“OOM”混为一谈。实际上内存泄漏是对象不再使用但没有被回收导致可用内存越来越少OOM是内存分配失败是内存泄漏达到一定程度后的结果。笔试里会有判断题专门挖这个坑。第二个是忽略边界值和异常路径。比如用例设计题很多考生写了一大堆正常流程但漏了空值、超长输入、网络中断、权限拒绝这些场景。在手机测试里异常路径往往比正常路径更容易出现问题笔试出的题目本身也有这个导向。第三个是答案里没有体现“日志和证据”。测试工程师的产出之一是可复现的问题描述和日志。笔试里凡是涉及“分析原因”的题你最好都带上“抓日志”“看堆栈”“复现步骤”这些关键字。这不是说每个场景都需要而是体现出你有实际工作的职业习惯。5. 从笔试到面试2019年的考点在今天的延伸5.1 当年考的基本功现在依然是核心把2019年的这套笔试和现在的手机测试要求对比来看你会发现核心能力要求没有变底层系统知识的权重反而更高了。现在的手机测试还要面对折叠屏的铰链与适配、5G/6G频段、AI大模型在端侧的部署、多设备协同手机、手表、耳机、汽车这些都是建立在当年那些基本功之上的。所以如果你现在正在准备手机测试岗别被各种新概念带偏。Android进程管理、内存机制、网络协议、测试用例设计方法这些还是稳的。澎湃OS也好MIUI也好底层的Android框架还是在的很多知识是可以直接迁移的。5.2 手机测试工具链的准备除了笔试面试时一定会问你会不会用测试工具所以工具链的准备很关键。手机测试最基础的工具链包括ADB命令adb devices、adb shell、adb logcat、adb install、adb pull/push这是测试同学的日常日志分析工具抓取logcat、kernel log、crash log通过关键字过滤Monkey压力测试adb shell monkey -p 包名 -v 5000用来做随机事件压测但要看懂报告里ANR和Crash的统计抓包工具Charles、Fiddler、Wireshark用来分析接口请求和弱网模拟性能监控工具PerfDog、自研性能工具用来获取FPS、CPU、内存、温度曲线弱网模拟通过路由器限速、工具模拟高延迟、高丢包环境笔试里不直接考工具操作但场景题里隐含着对这些工具的认知。比如让你分析App在某低端机上卡顿如果你不知道可以用adb shell top看CPU占用、用dumpsys meminfo看内存分配你的答案就会比较空。5.3 准备手机测试岗系统知识场景思维两手抓以我实际做手机测试的经验准备这类岗位最有效的方式是“系统化理论学习场景化实践”。不要只看《Android开发艺术探索》这种开发向的书测试向的切入点是“这个功能在什么极端情况下会出问题”而不是“这个功能怎么实现”。建议多去模拟真实的测试场景找一台Android手机装上开发者选项开启“不保留活动”“模拟辅助显示设备”用ADB去制造各种异常环境然后再设计用例去验证。这些实操经验在笔试和面试中都是能直接写出来的东西。再一个建议是多看看当前主流手机厂商的社区反馈、内测机制。比如小米系统内测的申请答题那些题目其实也是产品向技术向的结合考察如果你能混过内测答题说明你对系统机制的了解已经到了能区分“设置项路径”和“功能逻辑”的水平这在手机测试面试里也是很加分的。说到底手机测试这一行笔试只是起点真正拉开差距的是你有没有持续观察真实用户反馈的习惯。我看过太多同学背了一堆八股文遇到具体问题却无从下手反而是那些平时喜欢折腾手机、遇到问题会自己抓日志分析的人笔试面试都能轻松过关。这个行业从来不需要“背答案”的人它需要的是真的愿意蹲下来一点点把问题抠明白的人。