很多同学投了华为的软件测试岗之后,收到机考邀请就慌了,不知道考什么、怎么准备。其实华为的机考没那么神秘,搞清楚规则再针对性练一练,通过的概率还是很高的。这篇文章就把机考的具体内容、题型、评分标准和备考方法一次讲清楚。
机考到底是什么形式
华为软件测试岗的机考和开发岗用的是同一套系统,一般是在牛客网上进行的ACM模式编程考试。收到邀请链接后,通常有几天时间可以自己约一个方便的时间段参加,考不完不用怕,但要找一个网络稳定、不受打扰的环境,因为考试过程中是有监控和切屏记录的。
考试时长一般是150分钟,共三道编程题。分值通常是100分、200分、300分,总分600分。听起来吓人,但其实你不需要满分,不同岗位和部门的通过线不一样,大部分情况下拿到150分左右就有机会通过,运气好的时候100多分也能过。所以就算第三题完全不会,把前两题做扎实也够用了。
三道题的难度分布
第一题最简单,基本是字符串处理、数组遍历这类入门题,相当于热身。比如给你一段文本让你统计字符出现次数、做格式转换、按规则拆分字符串等等。这一题只要会基本的编程语法就能做出来,目标是拿满100分。
第二题中等难度,常见的类型有模拟题、排序、哈希表应用、简单的动态规划或者图的基础操作。比如任务调度、日志解析、区间合并这类。这题需要一点算法功底,刷过一段时间的题目基本能应付。
第三题难度最高,通常涉及较复杂的算法,比如动态规划、深度优先搜索、广度优先搜索、图论、贪心等。很多人这题只能拿部分分数,这很正常,因为它本来就是用来区分顶尖选手的。建议先把前两题稳稳拿下,再回头挑战第三题,能拿部分分就拿部分分。
软件测试岗和开发岗考的一样吗
是的,目前华为软件测试岗的机考题目和开发岗基本一致,都是同样的三道编程题。有些同学以为测试岗会考测试用例设计、缺陷管理这类知识,机考里是没有的,那些内容放在后面的面试环节考察。所以别抱侥幸心理,编程能力这一关躲不掉,老老实实刷题才是正道。
支持的编程语言包括Java、Python、C++、C、Go、Javascript等主流语言,可以任选自己最熟悉的。如果没有特别偏好,推荐用Python,写起来快,很多处理逻辑几行代码就搞定,在限时考试里非常省时间。
评分和判卷规则要知道
华为机考是ACM模式,也就是说输入输出要自己处理,不像LeetCode那种核心模式给你写好函数框架。这一点很多新手栽跟头,平时练习时一定要习惯自己写输入输出的解析代码。
判分是按测试用例通过比例算的,比如一道题有10个用例,你通过了7个,就能拿到这题70%的分数。这意味着哪怕暴力解法超时了,也先交上去,能骗一部分分是一部分分。另外每道题交卷次数没有严格限制,但要留意整体的用时分配。
还有一个细节,本地IDE写代码的话,系统提供的是网页编辑器,也可以用本地IDE配合摄像头监控,具体看考试说明。建议提前熟悉牛客的ACM模式练习环境,避免考试时手忙脚乱。
备考应该怎么安排
刷题平台首选牛客网的华为机试真题专区,那里有大量往年真题和模拟题,风格和真实考试最接近。如果时间充裕,再配合LeetCode热题100补充算法基础。
复习重点建议放在这几块:字符串的各种操作和拆分、哈希表的使用、排序和自定义排序规则、双指针和滑动窗口、动态规划入门题、二叉树的遍历、DFS和BFS。这些是华为机考的高频考点,掌握了能覆盖大部分题目。
备考周期建议至少两到三周,每天保持两三道题的量。重点不是刷得多,而是每道题做完要总结:这题考什么知识点,我的解法哪里慢了,有没有更优雅的写法。另外要专门练输入输出的处理,比如一行读多个整数、处理不定长输入这些操作要练到条件反射。
考试当天的小提醒
考前把牛客网的考试须知读一遍,准备好身份证,确保摄像头和麦克风正常。开考后先花两三分钟把三道题都浏览一遍,心里有个难度排序,从最有把握的下手。
遇到卡壳的题不要死磕,先拿暴力解法保底交一版。写代码时注意边界情况,比如空输入、只有一个元素、超大数值等,很多测试用例就是专门卡这些地方的。变量命名清晰一点,方便自己排查逻辑错误。
总结
华为软件测试机考本质上就是一场标准化的编程考试,三道题150分钟,拿到150分左右基本稳过。它的难度对有算法基础的人来说不算高,对纯零基础的人则需要一个月左右的认真准备。核心就两件事:熟悉ACM模式的输入输出,掌握高频算法考点。机考通过后还有性格测试和面试,一关一关来,祝你顺利上岸。
