1.自我介绍、离职原因
2.职业规划:https://www.zhihu.com/question/63930675/answer/1095741575
测试员 | 执行测试用例,记录bug,并回归测试,通过QTP等测试工具录制回归测试脚本,并执行回归测试脚本。 |
测试工程师 | 有1~2年工作经验。具有初步的自动化测试能力,完善自动化测试脚本。 |
高级测试工程师 | 帮助开发或维护测试或编程标准与过程,分析软件需求,获得测试需求。确定测试需求相应的测试方法,获得测试策略方案。参与同行的评审 (软件需求,软件测试计划等),并为其它初级的测试工程师或程序员充当顾问。 |
测试组负责人 | 负责管理1~3名测试工程师或程序员。集中于技能方面,担负一些进度安排和工作规模/成本估算职责。分析性能瓶颈的原因,为开发团队提供bug解决策略。 |
性能测试工程师 | 负责管理8~10名技术人员。性能测试整体方案设计,软件系统性能问题定位和性能优化,内存优化及分析数据溢出等,分析系统的安全漏洞等。负责进度安排、工作规模/成本估算、按进度表和预算目标交付产品。负责开发项目的技术方法。为一些用户提供支持与演示。 |
测试/质量保证/开发(项目)、经理 | 管理8名或更多的人员参加的1个或多个项目。负责这一领域(测试/质量保证/开发)内的整个开发生存周期业务。为一些用户提供交互和大量演示。负责项目成本、进度安排、计划和人员分工 |
公司级质量总监 | 管理从事若干项目的人员以及整个开发生存周期。负责把握项目方向与盈亏责任 |
3.测试流程
测试需求分析阶段 | 阅读需求,理解需求,主要就是对业务的学习,分析需求点。参与需求评审会议 |
测试计划阶段 | 主要任务是编写测试计划,参考软件需求规格说明书、项目总体计划,内容包括测试范围(来自需求文档)、进度的安排,人力物力的分配,整体测试策略的制定,和风险的评估与规避措施有一个制定,一般有测试负责人编写,当然我们也会参与相关的评审工作。 |
测试设计阶段 | 主要任务是编写测试用例,会参考需求文档(原型图)、概要设计、详细设计等文档,有不明确的也会及时和开发、产品经理沟通。用例编写完成后会进行评审。 |
测试执行阶段 | 首先搭建测试环境,执行预测(冒烟),以判定当前版本可测与否,如果预测通过,正式进入系统测试,遇到问题提交Bug到缺陷管理平台,并对bug进行跟踪,直到被测软件达到测试需求要求,没有重大bug,测试结束。 |
测试评估阶段 | 出测试报告,对整个测试的过程和版本质量做一个详细的评估。确认是否可以上线。 |
4.数据库:索引、事务、给一个字段,从小到大排序,取前十行
索引:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。例如:主键索引、唯一索引、普通索引、全文索引、联合索引
事务:是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成
SELECT FIELD FROM TABLE ORDER BY FIELD DESC LIMIT 10;
5.数据库三范式:https://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html
第一范式(确保每列保持原子性)
第二范式(确保表中的每列都和主键相关)
第三范式(确保每列都和主键列直接相关,而不是间接相关)
6.Linux查看最近修改过的文件?
参考链接:https://www.cnblogs.com/hechunhua/p/4860544.html
find ./ -mtime 0:返回最近24小时内修改过的文件。
find ./ -mtime 1:返回的是前48~24小时修改过的文件。
那怎么返回10天内修改过的文件?find还可以支持表达式关系运算,所以可以把最近几天的数据一天天的加起来:
find ./ -mtime 0 -o -mtime 1 -o -mtime 2 ……虽然比较土,但也算是个方法了。
7.Linux查看cpu信息
终端命令:cat /proc/cpuinfo,查看CPU详细信息
数据太多,不方便查看,可以加个管道符
https://www.jianshu.com/p/a0ab0ccb8051
8.Linux查看进程内存占用情况
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
查看 RAM 使用情况最简单的方法是通过cat /proc/meminfo。这个动态更新的虚拟文件实际上是许多其他内存相关工具 (如:free / ps / top) 等的组合显示。
/proc/meminfo 列出了所有你想了解的内存的使用情况。进程的内存使用信息也可以通过 /proc//statm 和 /proc//status 来查看。
9.给你两部手机,在一幢100层的大厦,怎么知道这部手机在第几楼摔下会坏
原文链接:https://blog.youkuaiyun.com/hlh522521/article/details/27055499
Answer:第一部手机是用来决定在1-100层之间需要划分几个区间,第二部手机是用来在已发现可以导致手机摔坏的区间内一级一级往上加楼层,具体测试是哪一层。
假设第一部手机划分的区间为a个,每个区间包含的层数为b。则可以得出a*b=100。所谓的最优化,即是让测试的次数尽量最小,即让a+b次数尽量最小。由不等式知a=10,b=10.
具体做法就是:将第一部手机从10楼扔下,如果坏,则拿第二部手机从一楼开始,逐层往上试,则实验最大次数为10+1=11次。如果没坏,则将第一部手机从20楼仍下,如果坏,则将第二部手机从11楼开始,逐层往上试,实验最大次数为10+2=12次。以此类推,当第一部手机从第90层扔下时,如果坏,则从81曾逐层往上,如不坏,也不用从第一百层扔了,从91层开始吧。
10.有两个字符串类型的数字,实现一个方法将它们进行相加,并返回相加后的数值
简单:强制类型转换实现相加。复杂:写个算法实现大数据相加的问题,故输入的都是字符串类型
回想到加法所列的算式,采取进位相加。先判断两个字符串的长度,取长度小的那个,采用倒序遍历,对长度相等的那一部分采用进位相加。最后做拼接,注意做拼接时可能会存在进位值。
也可以缺位补零使字符串长度一致后,倒序遍历,进位相加。
11.Python多线程
线程是指进程内的一个执行单元,也是进程内的可调度实体;进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程是进程中的一部分,进程包含多个线程在运行。
Python subprocess模块:https://www.cnblogs.com/lincappu/p/8270709.html
Python thread/threading模块:https://blog.youkuaiyun.com/daiyu__zz/article/details/81912018
12.adb内存分析命令
dumpsys meminfo:查看进程的oom adj,或者dalvik/native等区域内存情况,或者某个进程或apk的内存情况,功能非常强大;
procrank:查看进程的VSS/RSS/PSS/USS各个内存指标;
cat /proc/meminfo:查看系统的详尽内存信息,包含内核情况;
free:只查看系统的可用内存;
showmap:看进程的虚拟地址空间的内存分配情况;
vmstat:周期性地打印出进程运行队列、系统切换、CPU时间占比等情况;
参考链接:http://gityuan.com/2016/01/02/memory-analysis-command/
13.性能测试:
参考链接:https://zhuanlan.zhihu.com/p/109635546
https://blog.youkuaiyun.com/test_xhz/article/details/79354628
https://blog.youkuaiyun.com/jiangshangchunjiezi/article/details/80832222
14.快速排序(Quick sort):通过多次比较和交换来实现排序(挖坑填数+分治)
(1)首先设定一个分界值pivot(或基准,通常取首元素),通过该分界值将数组分成左右两部分。
(2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。
(3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。
(4)重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。
def quick_sort(data):
"""快速排序"""
if len(data) >= 2: # 递归入口及出口
mid = data[len(data)//2] # 选取基准值,也可以选取第一个或最后一个元素
left, right = [], [] # 定义基准值左右两侧的列表
data.remove(mid) # 从原始数组中移除基准值
for num in data:
if num >= mid:
right.append(num)
else:
left.append(num)
return quick_sort(left) + [mid] + quick_sort(right)
else:
return data
# 示例:
array = [2,3,5,7,1,4,6,15,5,2,7,9,10,15,9,17,12]
print(quick_sort(array))
# 输出为[1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 9, 9, 10, 12, 15, 15, 17]
15.面试总结,供参考:
https://blog.youkuaiyun.com/he_haiqiang/article/details/7566576
强推:https://www.cnblogs.com/summer-sun/p/5490889.html