2026-10-29 16:50:19
华为OD测试岗面经总结如下:
一、面试流程与环节华为OD测试岗面试流程包含机考、HR面、技术面(三轮)、主管面,具体安排如下:
测试基础
测试流程、用例设计方法(如等价类划分、边界值分析)、缺陷管理流程。
保证测试无遗漏的方法:如覆盖所有需求分支、使用测试工具辅助、代码审查等。
Python编程
基础语法:函数作用域(局部/全局变量)、参数传递(值传递/引用传递)、多线程(GIL限制及线程池优化)。
高级特性:深拷贝(copy.deepcopy)与浅拷贝(直接赋值或copy.copy)、面向对象三大特性(封装、继承、多态)、数据结构分类(可变类型如列表/字典,不可变类型如字符串/元组)。
算法应用:回溯法(全排列)、双指针(三数之和)、模拟法(约瑟夫环)。
自动化测试工具
Web自动化测试框架:pytest(测试用例管理)、selenium(浏览器自动化操作)。
项目中Python多线程的应用场景:如并发执行测试用例、加速数据生成等。
约瑟夫环问题
思路:模拟报数过程,用列表存储人员编号,通过索引循环淘汰报数为3的人员,直至剩余1人。
代码:
def josephus(n): people = list(range(1, n + 1)) index, count = 0, 0 while len(people) > 1: count += 1 if count == 3: people.pop(index) count = 0 else: index = (index + 1) % len(people) return people[0]全排列问题
思路:回溯法递归生成所有排列,用used数组标记已选元素,避免重复。
代码:
class Solution: def permute(self, nums: List[int]) -> List[List[int]]: res, track, used = [], [], [False] * len(nums) def backtrack(nums, track, used): if len(track) == len(nums): res.append(track.copy()) return for i in range(len(nums)): if used[i]: continue used[i] = True track.append(nums[i]) backtrack(nums, track, used) track.pop() used[i] = False backtrack(nums, track, used) return res三数之和问题
思路:排序后双指针遍历,跳过重复元素以去重,根据和与0的关系移动指针。
代码:
class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: nums.sort() ans, n = [], len(nums) for i in range(n - 2): if i > 0 and nums[i] == nums[i - 1]: continue j, k = i + 1, n - 1 while j < k: s = nums[i] + nums[j] + nums[k] if s > 0: k -= 1 elif s < 0: j += 1 else: ans.append([nums[i], nums[j], nums[k]]) j += 1 while j < k and nums[j] == nums[j - 1]: j += 1 k -= 1 while k > j and nums[k] == nums[k + 1]: k -= 1 return ans技术准备
刷透CSDN华为OD机试题库(分语言卷),重点练习算法题(如双指针、回溯、动态规划)。
复习测试基础理论(如测试类型、用例设计方法)及Python高级特性(如多线程、拷贝机制)。
项目经验
准备1-2个测试项目案例,量化代码量、解决的问题(如缺陷发现率提升)、使用的工具(如pytest/selenium)。
突出技术难点及解决方案(如通过多线程优化测试效率)。
沟通策略
遇到不熟悉的算法题时,可主动沟通更换题目或请求提示(如“能否用更简单的方法实现?”)。
主管面时强调稳定性(如接受加班)及对华为文化的认同(如“以客户为中心”)。