本文为霍格沃兹测试学院学员学习笔记。
本系列文章总结演绎了一些软件测试工程师常见的面试题,次要来源于集体面试遇到的、网络收集(欠缺)、工作日常探讨等,分为以下十个局部,供大家参考。如有谬误的中央,欢送斧正。有更多的面试题或面试中遇到的坑,也欢送补充分享。心愿大家都能找到称心的工作,共勉之!~
软件测试工程师面试题
- 测试常见问题与流程篇
- 测试工具篇
- 计算机网络常识与数据库篇
- Linux 与 Python 编程技能篇
- 自动化测试(Selenium、Appium 和接口测试)与性能测试篇
- 软素质篇(10 大灵魂拷问)与反诘面试官篇
Linux 技能篇
1. 工作中罕用的 Linux 命令有哪些?
awk、sed、vim、iotop、dstat、cp、top、ifconfig、pwd、cd、ll、ls、cat、tail、grep、mv、rm、mkdir、df、du
2. 什么命令能够帮忙 Linux 执行 Windows 上传的脚本?
- 扭转编码格局
- vim test.sh
- :set ff?// 显示 dos 的话
- :set ff=unix:wq
3 简述 Linux 三剑客
-
grep 命令
- 依据用户指定的模式 pattern 对指标文本进行过滤,显示被模式匹配到的行;
- grep [options] pattern [file]
-
罕用参数:
- -v 显示不被 pattern 匹配到的行
- -i 疏忽字符的大小写
- -n 显示匹配的行号
- -c 统计匹配的行数
- -o 仅显示匹配到的字符串
- -E 应用 ERE,相当于 egrep(能够辨认更多的正则表达式规定)
-
sed 命令
- 流编辑器,用来解决一行数据。将一行数据存储在模式空间中 -> 用 sed 命令解决 -> 送入屏幕 -> 清空空间。
-
罕用参数:
- -h 显示帮忙
- -n 仅显示 script 解决后的后果
- -e 指定的脚本来解决输出的文本文件
- -f 以指定的脚本文件来解决
-
罕用动作:
- a: 新增 sed -e ‘4 a newline’
- c: 取代 sed -e ‘2,5c No 2-5 number’
- d: 删除 sed -e ‘2,5d’
- i: 插入 sed -ed ‘2i newline’
- p: 打印 sed -n ‘/root/p’
- s: 取代 sed -e ‘s/old/new/g’
- g: 代表全局
-
awk 命令
- 把文件逐行的读入,以空格为默认分隔符将每行切片。把行作为输出,并赋值给 $0-> 将行切段,从 $1 开始 -> 对行匹配正则 / 执行动作 -> 打印内容;
awk 'pattern + action' [filenames]
-
罕用语法:
- filename awk 浏览的文件名
- begin 解决文本前要执行的操作
- end 解决文本之后要执行的操作
- fs 设置输出域分隔符,等价于命令行 - F 选项
- nf 浏览记录的域的个数(列数)
- nr 已读的记录数(行数)
-
罕用参数:
- ofs 输入域分隔符
- ors 输入记录分隔符
- rs 管制记录分隔符,换行标记
- $0 整条记录
- $1 第一条分隔后的记录
4. 如何通命令定位 Linux 服务器下的日志?
- 如果要监控日志,那么应用 tail -f | grep xxx 命令,过滤须要的字段;
- 如果在残缺日志中查看内容,应用 cat xxx.log | grep xxxx | awk ‘{print $1}’ 等命令过滤本人须要的内容;
5. 简述我的项目中的环境搭建和保护
- 联合本身教训先从零碎装置开始,如罕用的 CentOS 和 Ubuntu 说起,零碎装置次要是磁盘分区和磁盘阵列问题;
- 根底环境依赖,如 MySQL、Redis、Jenkins、Docker、我的项目中用到的其余依赖环境等;
- 保护不便次要从遇到的谬误说起,如无奈近程连贯、服务器加固等;
Python 编程篇
1.Python 中类办法,类实例办法,静态方法的区别
- 实例办法:由对象调用;至多一个 self 参数;执行一般办法时,主动将调用该办法的对象赋值给 self;
- 类办法:由类调用;至多一个 cls 参数;执行类办法时,主动将调用该办法的类复制给 cls;
- 静态方法:由类调用;无默认参数;
2.dict 和 tuple 及 list 的区别(这里列的是次要区别,面试足够)
- tuple 是不可变对象,list 和 dict 都是可变对象,这里的不可变指的是指向地址不可变;
- list 是有序的,dict 是无序的,不可寄存有序汇合;
- dict 查找速度快,不论有多少个元素工夫都一样,list 查找速度慢,须要有序查找;
- dict 的 key 为不可变对象,且不可反复,list 则能够反复,寄存任意对象;
3.JSON 和 dict 的区别
- JSON 是一种数据格式,纯字符串。dict 是一种残缺的数据结构;
- dict 是一个残缺的数据结构,是对 Hash Table 这一数据结构的一种实现,是一套从存储到提取都封装好了的计划。它应用内置的哈希函数来布局 key 对应 value 的存储地位,从而取得 O(1)的数据读取速度;
- JSON 的 key 只能是字符串,Python 的 dict 能够是任何可 hash 对象(不可变对象);
- JSON 的 key 能够是有序、可反复的;dict 的 key 不可反复,且无序;
- JSON 任意 key 存在默认值 undefined,dict 默认没有默认值;
- JSON 拜访形式能够是 [], 也能够是.,遍历形式分 in、of;dict 的 value 仅能够下标拜访;
- dict 能够嵌套 tuple,JSON 里只有数组;
4.Python 会不会呈现内存透露,为什么?
- 当对象之间相互援用的时候再删除的时候,可能会造成无奈开释对象的状况,呈现透露;
- 下面为集体理解,如有其它请补充;
5.Python 的同步和异步
- 间接失去最终后果的后果,就是同步调用。
- 不间接失去的最终的后果,就是异步调用。
- 同步与异步区别在于:调用者是否失去了想要的最终后果。
6. 常见手撕代码题
- 两个列表提取作为字典
dict(zip(list1, list2))
- 字符串反转输入
str = '1234567890'
print(str[::-1])
l = list(str)
l.reverse()
print(''.join(l))
- 实现斐波那契数列
def Fibonacci(loop):
if loop == 0:
return '有效参数'
elif loop == 1:
return 0
l = [0, 1]
for i in range(2, loop):
l.append(l[i - 1] + l[i - 2])
return l
- 找出驼峰数组的最大值
li = [1, 2, 10, 10, 2, 1]
print([v for v in li if v == max(li)])
- 水仙花数
sxh = []
for i in range(100, 1000):
s = 0
for j in str(i):
s += int(j)**3
if i == int(j)**3:
sxh.append(i)
print(sxh)
- 齐全数
a = []
for i in range(1, 1000):
s = 0
for j in range(1, i):
if i % j == 0 and j < i:
s += j
if s == i:
a.append(i)
- 幂的递归
def mi(a, n):
if n == 0:
return 1
else:
return a * mi(a, n - 1)
- 目录遍历
import os
def get_file(path, rule=''):
files = []
for fpath, dirs, fs in os.walk(path):
for f in fs:
if os.path.join(fpath, f).endswith(rule):
files.append(f)
return files
更多内容,咱们在后续文章分享。
收费支付:接口测试 + 性能测试 + 自动化测试 + 测试开发 + 测试用例 + 简历模板 + 测试文档