背景:
- 学校背景:211本科
- 工作经验:1年半
- 转行目标:测试岗位
一、机考 (得分:350+)
二、01.04 hr面
- 自我介绍
- 选择东莞的原因
- 对OD(华为研发岗位)的看法
- 家庭情况
- 简历相关问题
- 期望薪资
三、01.11 技术一面(算法题没写出来)
- 测试八股文
- 项目介绍和细节
-
- 3.1 Python函数作用域
-
- 3.2 Python函数参数传递
-
- 3.3 Python多线程
- 手撕算法题:约瑟夫环问题
-
约瑟夫环问题 13个人围成一圈,从第一个人开始1、2、3顺序循环报数,凡数到3的人退出圈子,输出最后留在圈中的人的序号。 def josephus(n): # 创建人员列表 people = list(range(1, n + 1)) # 初始化索引和报数计数器 index = 0 count = 0 while len(people) > 1: count += 1 # 报数到3时淘汰当前人员 if count == 3: people.pop(index) count = 0 else: index = (index + 1) % len(people) return people[0] # 输入人数 n = 13 # 调用函数计算最后留下的人的编号 result = josephus(n) # 输出结果 print("最后留下的是原来第{}号的人".format(result))
四、01.13 技术二面
- 介绍项目
- Python深拷贝和浅拷贝
- Python面向对象的特点:封装、继承、多态
- Python的数据结构:可变类型和不可变类型
- Python多线程和线程池的优点
- Python值传递和引用传递
- 手撕算法题(通过):全排列
#给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
#[全排列问题](https://leetcode.cn/problems/permutations/description/)
class Solution:
# 主函数,输入一组不重复的数字,返回它们的全排列
def permute(self, nums: List[int]) -> List[List[int]]:
#记录结果
res=[]
# 记录「路径」
track = []
# 「路径」中的元素会被标记为 true,避免重复使用
used = [False for _ in range(len(nums))]
# 路径:记录在 track 中
# 选择列表:nums 中不存在于 track 的那些元素(used[i] 为 false)
# 结束条件:nums 中的元素全都在 track 中出现
def backtrack(nums, track, used):
#触发结束条件
if len(track)==len(nums):
# res.append(track[:])
res.append(track.copy())
return
for i in range(len(nums)):
# 排除不合法的选择
if used[i]:
continue
# 做选择
track.append(nums[i])
used[i]=True
# 进入下一层回溯树
backtrack(nums,track,used)
# 取消选择
track.pop()
used[i]=False
backtrack(nums, track, used)
return res
五、01.17 技术三面 (汗流浃背了)
- 深挖项目
- 介绍测试流程
- 保证无遗漏无重测的方法
- Python多线程在项目中的应用
- Web自动化测试:pytest、selenium
- 其他部分忘记了
- 手撕算法题(通过):三数之和
-
#给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,##同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。 #注意:答案中不可以包含重复的三元组。 class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: nums.sort() ans = [] n = len(nums) for i in range(n - 2): x = nums[i] if i > 0 and x == nums[i - 1]: continue j = i + 1 k = n - 1 while j < k: s = x + nums[j] + nums[k] if s > 0: k -= 1 elif s < 0: j += 1 else: ans.append([x, 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
六、01.17 主管面
- 自我介绍
- 项目介绍:代码量、解决的问题,解决问题的方式方法
- 遇到的最大困难及解决方法
- 对华为OD的了解,对工作加班的接受
- 薪资状况和期望薪资
- 适合这个岗位的优点
- 反问:部门的培养方式
七、感受
我面试的是测试岗位,只要充分准备,技术面不难。
机考的话可以刷一刷CSDN的题库:2023&&2024 最新最全机试题库及讲解,100%通过率。
Java题库: renjie.blog.csdn.net/article/det…
Python题库: renjie.blog.csdn.net/article/det…
C++题库: renjie.blog.csdn.net/article/det…
Js题库: renjie.blog.csdn.net/article/det…
C语言题库: renjie.blog.csdn.net/article/det…
面试手撕题库: renjie.blog.csdn.net/article/det…
后续和联系人沟通,他建议,如果遇到了不熟悉的算法题,如果实在不会,可以与面试官沟通更换题目。
现在正在等待后续审批。
# 更新
2月6日,终于收到offer