分享|华为测试OD岗面试流程

作者:DLAM

链接:leetcode.cn/circle/discuss/XpySJs/

抱着试一试的心态,面试了华为的OD岗位,误打误撞进入了总决赛,记录一下给各位友友,流程大概一个月,职级定D3,薪酬22K,坐标深圳龙岗,除了测试,前后端均内推捞捞人。

面试整体流程

机考(7.4)

机考成绩(7.9)

性格测试(7.16)

人力资源面(7.19)

技术两轮面(7.24上下午两轮)

两轮技术面完全独立,二面面试官不知道一面评价。

面试流程:准备自我介绍+复盘项目经历+背背八股文+手撕代码。

面试过程积极互动,可以引导面试官,展示自身优势的部分。

每轮都有手撕代码,多和面试官沟通,可以询问思路,实在撕不出来可以申请换题。

技术面试注意事项:

1.准备带有摄像头的电脑,面试过程中需开启摄像头

2.面试邮件中有会议软件,需提前下载安装

3.面试中需开启投屏,便于面试官手撕代码环节截图

技术加面(7.27 两轮评级不一致,加面)

技术复核(7.29)

业务主管面(8.2)

谈薪资和定级(8.5)

技术一面:

1.coding:80. 删除有序数组中的重复项 II
2.面试问题:

业务

测试用例由哪几个关键要素组成?

怎样才能写出一个好的自动化测试用例?

从需求到生产上线,中间包含哪些流程?

测试报告的目的是什么?

时间 人力 质量风险

TP90含义

测试覆盖率和漏测率提升,如何评判?

Python基础

单继承和多继承区别?

类方法,实例方法,静态方法区别?

python中如何反转字符串?

数据库

gruopby一般是在用在什么条件?如果指定条件的话,用什么关键字对分组进行指定条件?

左连接和右连接的区别?

技术二面

1.业务问题?

1.测试过程中针对HMI测试用例设计不完善导致漏测的,介绍一下?举一个实际的用例?

面试官觉得我回答的内容太虚了,没有具体到那个点上

2.手撕代码 coding:字符统计及重排

【字符统计及重排】给出一个仅包含字母的字符串,不包含空格,统计字符串中各个字母(区分大小写)出现的次数,并按照字母出现次数从大到小的顺序输出各个字母及

其出现次数。如果次数相同,按照自然顺序进行排序,且小写字母在大写字母之前。

输入描述:

输入一行,为一个仅包含字母的字符串。

输出描述:

按照字母出现次数从大到小的顺序输出各个字母和字母次数,用英文分号分隔,注意末尾的分号;字母和次数间用英文冒号分隔。

示例1:

输入

xyxyXX

输出

x:2;y:2;X:2;

加面

因为第二轮面试官觉得口头表达能力不太好,所以两个面试官评级不一致,于是7月27日又多了一场加试,目前通过了

讲一下面试内容吧

1.面试问题:
测试问题

说一下自动化开发过程中运用到的python库?

日常自动化测试,你是独立负责还是说你们一个团队去写?

实际测试过程中,如何查看哪些适合做自动化测试?哪些不适合做自动化测试?

写测试用例的时候,会有分析工作吗?就是如何判断写的这个测试用例得覆盖度?

a.

性能测试使用的工具或方法?

测试用例主要包含哪些内容?

有过跨团队合作吗?

你们的设计,对你们来说,可能是一个整体,那有可能还有个是周边模块或者周边的产品,这种有吗?

大家配合的一些场景或者发生有争执的,你跟开发的观点可能完全不一样,你认为是问题,他认为不是,如何解决?你觉得你在测试中充当什么角色?你是会让开发接受你的观点,还是会所,你会听取别人的建议?

如何测试下面这个测试系统,说一下测试的点?说完以后让回答如何保证上面的测试方法有效的测试?

总体说明,某学校图书馆为学生提供了图书借阅系统,本次备测程序模拟了该图书借阅系统,包括用户管理子系统、图书借阅和管理子系统。第二点系统详细说明有用户管理子系统。注册借书卡,用户名由 5 位 5 个字母组成,不区分大小写,不能少的命,不能重名。密码固定为 8 位,且至少为数字、字母、特殊字符的三种组合。注册借出证时,每个借阅人初始有 1,000 元押金。图书借阅和管理子系统里面有图书借阅功能,图书馆已收藏 1,000 本图书,编号是 book, ID 的格式为 book 加 3 位数字,从 000 开始顺序编号,如 book 000、 book 001、 book 002。图书呢,有两种状态,可借状态和借出,每本图书只有一本,每人总共可以借 3 本图书,借阅期限为 30 天,当押金小于等于 0 时,不能发起借出图书。归还图书,借阅后第二天及以后可归还图书,正常情况应在借阅期限内归还图书。若借阅多本图书,可分批或一起归还。若借阅者超期未能归还图书,超期后按一天按 1 元一本每本收取罚款,上限是 100 元每本。此外,图书馆会对借阅者借停,直到归还全部的图书后才能进行借出,超期罚金还会在还书时从押金中扣除并转到管理员账户,当押金不足抵扣罚款时变为负数,差额由借阅人补缴给管理员,如某借阅人当前的押金是 99,借阅图书超期 100 天,罚款 100 元,此时押金为-1 元,管理员对借阅人的罚款收入为 100 元。图书管理员,学校图书馆设有管理员 admin, 主要职责是负责收取各借阅者缴纳的罚款到管理员账户中,管理员的初始账户为零元。

你对未来的职业规划是什么?

python

说一下全局解释器锁,自动化测试有使用过吗?

装饰器和迭代器,平常会使用吗?

coding

某公司要举行运动会,共有 num 个运动员,编号从 1 开始。开幕前需要对运动员进行排队,规则如下:

首先按照身高由低到高排列

对于身高相同的运动员,按照体重由轻到重排列

对于身高和体重都相同的,按照编号由小到大排列。

现按编号升序给出运动员和身高和体重,请输出排队后的运动员编号序列。

输入

第一行是学生的人数 num,值的范围 [1, 100] ;

第二行是num个整数的数组,数组元素的值表示学生的身高,下标表示学生编号;数组元素值的范围 [1, 200];

第三行是num个整数的数组,数组元素的值表示学生的体重,下标表示学生编号;数组元素值的值范围 [1, 100]。

输出

排队后的结果,每个数值都是运动员编号

样例

输入样例 1 复制

4

100 100 120 130

40 30 60 50

输出样例 1

2 1 3 4

提示样例 1

编号1和2的身高都是最小值100,要排在前面;再按体重排,编号2的体重更轻,因此2排在1前面。 最终排队结果为 2 1 3 4 。

def sorted_athles(num_students,heights,weights):
    athletes = [(i+1,heights[i],weights[i]) for i in range(num_students)]
    athletes.sort(key=lambda x: (x[1],x[2],x[0]))
    
    return [athete[0] for athete in athletes]

num_students = 4
heights = [100,100 ,120 ,130]
weights = [40 ,30 ,60 ,50]

print(" ".join(map(str,sorted_athles(num_students,heights,weights))))

技术复核面

1、针对提交请假单这个接口,如何进行测试?

A:针对请假单接口,可以从以下几个方面进行测试:

1.功能测试:

• 输入合法的请假开始时间、结束时间和合理的请假原因,验证能否成功提交请假单。

• 检查不同的请假时长,如半天、一天、一周等,是否都能正确处理。

• 不输入必填项,如开始时间、结束时间或请假原因,验证系统是否给出相应的提示。

• 输入无效的日期格式(例如,月份超出 12 、日期超出该月最大天数等),检查系统的错误处理。

2.性能测试:

• 模拟大量用户同时提交请假单,检查接口的响应时间和系统的稳定性。

3.安全测试:

• 检查接口对用户输入的请假信息是否进行了适当的加密处理,以保护用户隐私。

4.兼容性测试:

• 在不同的浏览器、操作系统和设备上测试提交请假单接口,确保其正常工作。

5.边界值测试:

• 测试请假开始时间和结束时间的边界情况,如一年的开始和结束、节假日前后等。

6.异常情况测试:

• 网络中断时提交请假单,检查数据的完整性和恢复机制。

• 服务器出现故障时提交,观察系统的错误处理和恢复能力。

2、使用python的随机数函数,生成(500,550)之间的整数?

import random

random_number = random.randint(500, 550)
print(random_number)

3、python中数据类型转换时,有哪些数据类型转换需要注意?

A:在 Python 中进行数据类型转换时,以下几种数据类型的转换需要特别注意:

1.整数(int)和浮点数(float)之间的转换:将浮点数转换为整数时,会直接截断小数部分,可能导致数据丢失。

2.字符串(str)和数字类型(int、float)之间的转换:字符串必须能够正确地表示数字,否则会引发异常。

3.列表(list)、元组(tuple)和集合(set)之间的转换:这些数据结构的特性不同,转换时可能会改变元素的顺序或去除重复元素。

例如,将字符串转换为整数时,如果字符串不是有效的数字表示,会抛出 ValueError 异常。

在进行数据类型转换时,要确保转换的逻辑是合理的,并处理可能出现的异常情况。

4、pytest如何实现全局共享变量?

在 Python 中,可以使用一个单独的模块来创建全局变量,并在其他模块中导入和使用它。

以下是一个示例:

创建一个名为 global_variables.py 的模块来定义全局变量:

global_variables.py

global_variable = 0

然后在其他模块中使用这个全局变量,例如在 module1.py 中:

module1.py

import global_variables

修改全局变量的值

global_variables.global_variable = 10

print(global_variables.global_variable)

module2.py 中:

module2.py

import global_variables

print(global_variables.global_variable)

这样就实现了跨模块的全局共享变量。但请注意,过度使用全局变量可能会导致代码的可维护性和可读性降低,应谨慎使用。

5.常见的几种数据库删除方式?

常见的数据库删除数据的方式主要有以下几种:

1.DELETE 语句:这是最常见的删除数据的方式。可以根据指定的条件删除表中的部分行数据。例如:DELETE FROM table_name WHERE condition; ,如果不指定 WHERE 子句,将删除表中的所有行。

2.TRUNCATE TABLE 语句:它会快速删除表中的所有数据,并且重置自增列的计数器。但它不能与 WHERE 子句一起使用,并且不会触发删除行相关的触发器。例如:TRUNCATE TABLE table_name;

3.DROP TABLE 语句:这个语句不仅会删除表中的所有数据,还会删除表的结构,包括列、约束、索引等。执行后,表将不再存在。例如:DROP TABLE table_name;

这些删除方式在使用时需要谨慎,尤其是删除大量数据或重要数据时,最好先备份数据以防意外。

6.在测试过程中我发现有风险?举个例子,比如说我的需求写的不清晰,或者说开发没有及时给我转测?或者说开发过程中我发现开发的质量转测很差,这种情况下你们一般怎么处理?

以下是在测试过程中遇到这些风险时可能的处理方式:

1.需求不清晰:

• 及时与产品经理或需求提出者沟通,明确需求的细节和预期结果。

• 组织需求澄清会议,邀请相关人员共同讨论,确保对需求有一致的理解。

• 以书面形式记录需求的疑问和得到的答复,以便后续参考。

2.开发未及时转测:

• 与开发团队沟通,了解延迟的原因和预计的转测时间。

• 向项目经理汇报延迟情况,让其协调资源和进度。

• 如果延迟会影响项目整体进度,评估是否需要调整测试计划或采取临时的应对措施。

3.开发转测质量差:

• 整理并详细记录发现的质量问题,向开发团队反馈。

• 与开发团队一起分析问题的根源,是技术实现问题还是对需求理解有误。

• 如果问题严重,可能需要召开专门的会议讨论解决方案,甚至可能需要重新评估开发进度和测试计划。

• 在后续的开发过程中,加强对开发过程的监控和沟通,提前发现潜在的质量问题。

总之,在处理这些风险时,及时有效的沟通、准确的记录和问题的跟踪是非常重要的。

7、你去测接口的时候,你怎么判断接口?你怎么判断你这个接口测试是通过的?

在测试接口时,通常可以根据以下几个方面来判断接口测试是否通过:

1.响应状态码:常见的成功状态码如 200(OK)表示请求成功; 201(Created)表示创建成功等。如果返回的状态码符合预期,通常是一个好的迹象。

2.响应数据:检查返回的数据内容是否与预期相符。包括数据的格式、字段值、数据的完整性等。

3.业务逻辑:验证接口的处理逻辑是否符合业务需求。例如,计算结果是否正确,数据的排序、筛选是否准确等。

4.性能指标:如果有性能要求,需要评估接口的响应时间、吞吐量、资源利用率等是否满足规定的性能标准。

5.错误处理:对于异常情况,接口应该能够正确返回相应的错误码和错误消息。

6.兼容性:检查接口在不同的客户端(如不同的浏览器、移动设备)和不同的网络环境下是否能正常工作。

只有当以上这些方面都满足预定的标准和要求时,才能认为接口测试是通过的。

业务主管面

没有技术相关问题,主要是询问工作地点的选择和个人的家庭情况

相关推荐
滴水可藏海几秒前
Chrome离线安装包下载
前端·chrome
m512710 分钟前
LinuxC语言
java·服务器·前端
瓜牛_gn16 分钟前
依赖注入注解
java·后端·spring
Estar.Lee33 分钟前
时间操作[取当前北京时间]免费API接口教程
android·网络·后端·网络协议·tcp/ip
喜欢猪猪34 分钟前
Django:从入门到精通
后端·python·django
一个小坑货35 分钟前
Cargo Rust 的包管理器
开发语言·后端·rust
bluebonnet2739 分钟前
【Rust练习】22.HashMap
开发语言·后端·rust
uhakadotcom1 小时前
如何实现一个基于CLI终端的AI 聊天机器人?
后端
Myli_ing1 小时前
HTML的自动定义倒计时,这个配色存一下
前端·javascript·html
dr李四维1 小时前
iOS构建版本以及Hbuilder打iOS的ipa包全流程
前端·笔记·ios·产品运营·产品经理·xcode