本系列文章总结归纳了一些软件测试工程师常见的面试题,主要来源于个人面试遇到的、网络搜集(完善)、工作日常讨论等,分为以下十个部分,供大家参考。如有错误的地方,欢迎指正。有更多的面试题或面试中遇到的坑,也欢迎补充分享。希望大家都能找到满意的工作,共勉之!软件测试工程师面试题测试常见问题与流程篇测试工具篇计算机网络知识与数据库篇Linux与Python编程技能篇自动化测试(Selenium、Appium和接口测试)与性能测试篇软素质篇(10大灵魂拷问)与反问面试官篇Linux技能篇工作中常用的Linux命令有哪些? awk、sed、vim、iotop、dstat、cp、top、ifconfig、pwd、cd、ll、ls、cat、tail、grep、mv、rm、mkdir、df、du什么命令可以帮助Linux执行Windows上传的脚本?改变编码格式vimtest。sh:setff?显示dos的话:setffunix:wq简述Linux三剑客grep命令根据用户指定的模式pattern对目标文本进行过滤,显示被模式匹配到的行;grep〔options〕pattern〔file〕常用参数:v显示不被pattern匹配到的行i忽略字符的大小写n显示匹配的行号c统计匹配的行数o仅显示匹配到的字符串E使用ERE,相当于egrep(可以识别更多的正则表达式规则)sed命令流编辑器,用来处理一行数据。将一行数据存储在模式空间中用sed命令处理送入屏幕清空空间。常用参数:h显示帮助n仅显示script处理后的结果e指定的脚本来处理输入的文本文件f以指定的脚本文件来处理常用动作:a:新增sede‘4anewline’c:取代sede‘2,5cNo25number’d:删除sede‘2,5d’i:插入seded‘2inewline’p:打印sedn‘rootp’s:取代sede‘soldnewg’g:代表全局awk命令把文件逐行的读入,以空格为默认分隔符将每行切片。把行作为输入,并赋值给0将行切段,从1开始对行匹配正则执行动作打印内容;awkpatternaction〔filenames〕常用语法:filenameawk浏览的文件名begin处理文本前要执行的操作end处理文本之后要执行的操作fs设置输入域分隔符,等价于命令行F选项nf浏览记录的域的个数(列数)nr已读的记录数(行数)常用参数:ofs输出域分隔符ors输出记录分隔符rs控制记录分隔符,换行标志0整条记录1第一条分隔后的记录如何通命令定位Linux服务器下的日志?如果要监控日志,那么使用tailfgrepxxx命令,过滤需要的字段;如果在完整日志中查看内容,使用catxxx。loggrepxxxxawk{print1}等命令过滤自己需要的内容;简述项目中的环境搭建和维护结合自身经验先从系统安装开始,如常用的CentOS和Ubuntu说起,系统安装主要是磁盘分区和磁盘阵列问题;基础环境依赖,如MySQL、Redis、Jenkins、Docker、项目中用到的其他依赖环境等;维护方便主要从遇到的错误说起,如无法远程连接、服务器加固等;Python编程篇Python中类方法,类实例方法,静态方法的区别实例方法:由对象调用;至少一个self参数;执行普通方法时,自动将调用该方法的对象赋值给self;类方法:由类调用;至少一个cls参数;执行类方法时,自动将调用该方法的类复制给cls;静态方法:由类调用;无默认参数;dict和tuple及list的区别(这里列的是主要区别,面试足够)tuple是不可变对象,list和dict都是可变对象,这里的不可变指的是指向地址不可变;list是有序的,dict是无序的,不可存放有序集合;dict查找速度快,不管有多少个元素时间都一样,list查找速度慢,需要有序查找;dict的key为不可变对象,且不可重复,list则可以重复,存放任意对象;JSON和dict的区别JSON是一种数据格式,纯字符串。dict是一种完整的数据结构;dict是一个完整的数据结构,是对HashTable这一数据结构的一种实现,是一套从存储到提取都封装好了的方案。它使用内置的哈希函数来规划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里只有数组;Python会不会出现内存泄漏,为什么?当对象之间互相引用的时候再删除的时候,可能会造成无法释放对象的情况,出现泄漏;上面为个人了解,如有其它请补充;Python的同步和异步直接得到最终结果的结果,就是同步调用。不直接得到的最终的结果,就是异步调用。同步与异步区别在于:调用者是否得到了想要的最终结果。常见手撕代码题两个列表提取作为字典 dict(zip(list1,list2))字符串反转输出 str1234567890print(str〔::1〕)llist(str)l。reverse()print(。join(l))实现斐波那契数列 defFibonacci(loop):ifloop0:return无效参数elifloop1:return0l〔0,1〕foriinrange(2,loop):l。append(l〔i1〕l〔i2〕)returnl找出驼峰数组的最大值 li〔1,2,10,10,2,1〕print(〔vforvinliifvmax(li)〕)水仙花数 sxh〔〕foriinrange(100,1000):s0forjinstr(i):sint(j)3ifiint(j)3:sxh。append(i)print(sxh)完全数 a〔〕foriinrange(1,1000):s0forjinrange(1,i):ifij0andji:sjifsi:a。append(i)幂的递归 defmi(a,n):ifn0:return1else:returnami(a,n1)目录遍历 importosdefgetfile(path,rule):files〔〕forfpath,dirs,fsinos。walk(path):forfinfs:ifos。path。join(fpath,f)。endswith(rule):files。append(f)returnfiles