作者: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.兼容性:检查接口在不同的客户端(如不同的浏览器、移动设备)和不同的网络环境下是否能正常工作。
只有当以上这些方面都满足预定的标准和要求时,才能认为接口测试是通过的。
业务主管面
没有技术相关问题,主要是询问工作地点的选择和个人的家庭情况