本文是霍格沃茨测试学院学生的学习笔记。本系列文章总结了一些软件测试工程师常见的面试题,主要来自个人面试、网络收集(提升)、日常工作讨论等,分为以下十个部分供大家参考。如有错误,请指正。如果大家有更多的面试题或者面试中遇到的坑,欢迎大家补充分享。希望大家都能找到满意的工作,互相鼓励!~软件测试工程师面试题测试常见问题及流程测试工具计算机网络知识与数据库Linux与Python编程技巧自动化测试(Selenium、Appium与接口测试)与性能测试软质(十魂拷问)及面试官反问Linux技巧1、工作中常用的Linux命令有哪些?awk、sed、vim、iotop、dstat、cp、top、ifconfig、pwd、cd、ll、ls、cat、tail、grep、mv、rm、mkdir、df、du2。什么命令可以帮助Linux执行Windows上传的脚本?更改编码格式vimtest.sh:setff?//如果是dos显示:setff=unix:wq3简介Linux三剑客grep命令根据过滤目标文本pattern用户指定的pattern,并显示与pattern匹配的行;grep[options]pattern[file]常用参数:-v显示与pattern不匹配的行-i忽略字符的大小写-n显示匹配的行numbers-c统计匹配行数-o只显示匹配行String-E使用ERE,相当于egrep(可以识别更多正则表达式规则)sed命令流编辑器,用于处理一行数据。在模式空间中存储一行数据->使用sed命令处理->发送到屏幕->清除空间。常用参数:-h显示帮助-n只显示脚本处理的结果-e指定脚本处理输入的文本文件-f使用指定的脚本文件处理常用的动作:a:addsed-e'4anewline'c:replacesed-e'2,5cNo2-5number'd:deletesed-e'2,5d'i:insertsed-ed'2inewline'p:printsed-n'/root/p's:replacesed-e's/old/new/g'g:表示全局awk命令逐行读取文件,每行分片以空格作为默认分隔符。将行作为输入赋值给$0->将行切段,从$1开始->匹配行上的正则模式/执行动作->打印内容;awk'pattern+action'[filenames]常用语法:filenameawk浏览的文件名begin处理文本前要执行的操作end处理文本后要执行的操作fs设置输入域分隔符,相当于命令行的-F选项nf浏览记录的字段(列)数nr读取记录数(行数)常用参数:ofs输出字段分隔符ors输出记录分隔符rs控制记录分隔符,换行符$0整条记录$1第一条分隔记录4.如何通过命令定位Linux服务器下的日志?如果要监控日志,使用tail-f|grepxxx命令过滤必填字段;如果想查看完整日志中的内容,使用catxxx.log|grepxxxx|awk'{print$1}'等命令过滤你需要的内容;5.简述项目中的环境建设和维护情况。结合自己的经验,从系统安装入手,比如常用的CentOS和Ubuntu,系统安装主要是磁盘分区和磁盘阵列问题;基础环境依赖,如MySQL、Redis、Jenkins、Docker、项目中使用的其他依赖环境等;维护的便利性主要从遇到的错误开始,比如远程连接失败、服务器加固等;方法的区别实例方法:由对象调用;至少一个自身参数;执行普通方法时,自动将调用该方法的对象赋值给self;类方法:由类调用;至少一个cls参数;当执行一个类方法时,自动将调用该方法的类复制到cls;静态方法:由类调用;没有默认参数;2.dict和tuple、list的区别(主要的区别这里罗列一下,面试就够了)tuple是不可变对象,而list和dict都是可变对象。这里的不可变指的是不可变的地址;list是有序的,dict是无序的,不能存储有序的集合;dict的查找速度很快,不管元素多少,时间都是一样的。搜索速度慢,需要有序搜索;dict的key是不可变对象,不能重复,而list可以重复,存储任意对象;3、JSON和dict的区别JSON是一种数据格式,纯字符串。dict是一个完整的数据结构;dict是一个完整的数据结构,是HashTable数据结构的一种实现,是从存储到提取的打包解决方案。它利用内置的hash函数来规划value对应的key的存储位置,从而获得O(1)的数据读取速度;JSON的key只能是字符串,Python的dict可以是任意hashable对象(immutableobject);JSON键可以有序且可重复;字典键是不可重复和无序的;任何JSONkey都有一个默认值undefined,dict默认没有默认值;JSON访问方法可以是[]或.,遍历方式分为in和of;dict的值只能通过下标访问;dict可以嵌套元组,json里面只有数组;4、Python会不会有内存泄漏,为什么?当对象相互引用然后删除时,可能会导致对象无法释放,造成泄漏;以上为个人理解,如有其他请补充;5.同步和异步Python直接得到最终结果,是同步调用。不是直接得到的最终结果是异步调用。同步和异步的区别在于:调用者是否得到了想要的最终结果。6.常见手撕代码题提取两个列表作为字典dict(zip(list1,list2))string反向输出str='1234567890'print(str[::-1])l=list(str)l.reverse()print(''.join(l))实现斐波那契数列defFibonacci(loop):ifloop==0:return'invalidparameter'elifloop==1:return0l=[0,1]foriinrange(2,loop):l.append(l[i-1]+l[i-2])returnl求驼峰数组的最大值li=[1,2,10,10,2,1]print([vforvinliifv==max(li)])水仙花数sxh=[]foriinrange(100,1000):s=0forjinstr(i):s+=int(j)**3ifi==int(j)**3:sxh.append(i)print(sxh)完全数a=[]foriinrange(1,1000):s=0forjinrange(1,i):ifi%j==0andj
