测试工程师面试——记录自己的一次面试

发表于:2019-7-23 10:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:夏天里的Jasmine    来源:博客园

  10点刚到,先进行笔试,笔试的题目很基础,涉及到linux,涉及到oracle数据库,涉及编程基础,涉及测试理论,但是你读完题目和写完也要是花时间的。我花了40分钟左右的时间才写完。。
  Linux基础
  1. 查看a.txt文件中bbb字符串
  grep 'bbb' a.txt
  2. 改变a.txt的所属者为Lisa
  chown Lisa:Lisa a.txt
  chown Lisa a.txt 【只让改所属者,没让改所属组】
  3.查看conrob进程的命令
  ps -ef | grep conrob
  4.vi命令下,向上移动光标,向下移动光标
  上下左右 kjhl【这四个键盘很好记,右手习惯的几个键,h最左右所以向左,l最右边,jk是先下后上】
  5.将文件a.txt排序生成b.txt
  sort a.txt >b.txt
  6. 不保存文件退出命令
  末端模式下输入q!【Esc : q!】
  7. 查找当前目录以及子目录下文件后缀是xxx的文件
  find ./ -name *.xxx
  8. 显示日期的命令
  date
  Oracle基础
  【oracle数据库我好久没有遇到了,查询sql根据mysql和sqlserver写的,也不敢太用别名,怕错】
  1.给a表创建联合索引 name+bb+cc
  create index ind_name on tablea(name,bb,cc)
  2.赋予用户alex update delete a表的权限
  grant update,delete on tablea to alex
  3.查看a表中的所有记录且姓名不在b表中的
  select * from tablea where name not in (select distinct name from tableb) 【我想了想加了个distinct在b表中】
  4. 查询b表中的唯一的卡号
  select cardnum from tableb group by cardnum 【起初不小心加了distinct,然后想想把它给划了】
  5. 查询b表中币种是RMB且地区是深圳的贷款总和
  select sum(amount) from tableb where city = 'shenzhen' and bizhong='RMB'
  【起初没看到只要差RMB,还多此一举,
  select bizhong, sum(amount) from where city = 'shenzhen' group by bizhong, 也不知道后来有没有多划掉】
  6. 复制b表的结构到新表
  create table tablec as select * from tableb where 1=2
  【之前没印象,用的mysql格式CREATE TABLE 新表 LIKE 旧表 】
  7. 查询b表中姓名和卡号,要求同一个卡号既有人民币消费,又有美金消费
  select name, cardnum from tableb group by name, cardnum having count(*) >=2
  【我做这样的题目有各种疑问,比如消费金额为0的记录,算不算?虽然解决办法很简单,加上一个where amount> 0 即可,
  但是proc测试多了,一眼瞄过,对各个字段就不免想多了,
  我10点钟才到,11点半吃饭,又怕做题太长,最终影响人家interviewer的情绪,也让我。。。】
  8.用一个select查询表表中姓名和卡号,要求美金中显示2条消费最大的记录,rmb中显示两条最大的记录
    select name , cardnum ,rownum from tableb where bizhong = 'dollor' and rownum<=2
  order by amount desc
  union all
  select name , cardnum ,rownum from tableb where bizhong = 'rmb' and rownum<=2
  order by amount desc
  编程基础
  1.java中==和equals的区别
  ==是表示值和内存地址完全一致
  equals判断值是否相等
  详细的判断https://www.cnblogs.com/qianjinyan/p/10553414.html
  2.一个java中能有多个类吗?为什么?
  一个.java源文件中可以有多个类吗?(内部类除外)有什么条件?
  可以的
  但是只能有一个public类, 而且如果有public类的话,这个文件的名字要和这个类的名字一样。
  如果都没有public类,名字可以不和这个类一样。
  3.将x/y/z 从大到小输出
   int[] a ={x,y,z}
  for (int i=0;i<a.length()-1;i++){
  for (int j=0;j<a.length()-1;j++){
  if (a[j]<a[j+1])
  temp =a[j];
  a[j]=a[j+1];
  a[j+1] = temp;
  }}
  自己写错了,下面才是正确的。
   int[] array = {1,8,0,3,4,2};
  @Test
  public void Test02() {
  for(int i=0;i<array.length-1;i++){
  for (int j = 0; j < array.length - 1 - i; j++) {
  //后面的数大,往前放置,降序排列
  //if(array[j+1]>=array[j]){
  //后面的数小,往前放置,升序
  if(array[j+1]<array[j]){
  int temp = array[j+1];
  array[j+1] = array[j];
  array[j] = temp;
  for(int a: array){
  System.out.print(a + "  ");}
  }
  System.out.println("第"+i+"的时候");}
  }
  for(int a: array){
  System.out.println(a);}
  }
  @Test//利用Arrays中的Sort函数排序
  public void ArraysSort() {
  Arrays.sort(array); //默认升序排列
  for (int i = 0; i < array.length; i++) {
  System.out.println(array[i]);
  }}
  4. python2.1和python3.1的默认字符编码?
   'ascii'
  'utf-8'
   猜也能猜到,但我懒得写。python的确不熟
  5.python中分割aa_bb_cc,
  s1="aa_bb_cc"
  s1.split('_')
  6.如何用python将整型1输出为0001
  测试的基础
  1. 软件测试的意义
  2. bug的生命周期
  3. 常见的测试方法
  4. 你常用的自动化测试工具?
  接口用Jmeter和httpClient
  UI用 selenium和macaca
  5. 一个文本框,输入6的字符,要求输入的年份在199001到204912月,要求前四位是年,后两位是月,请设计测试用例并说明
  写完给HR打电话,之后直接一面。
  面试的问题
  1. 讲一个具体的接口,你是怎么测试的,怎么实现自动化的?
  针对http接口进行测试,使用Jmeter工具实现。
  Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对Http接口的测试。
  一、开发接口测试案例的整体方案:
  我们起初会得到一个CR文档,CR文档里列出里客户此次的痛点和痒点,还有PM列出的解决方案。比如要开发什么接口,以达到什么目的。
  这种接口是一次性使用,做活动用的,还是日常使用等等的说明。
  第一步:CR文档下来之后,我会分析出测试需求,大概知道会怎么实现,对对CR有疑问的地方,做下标记;等到下次全项目开会,提出疑问,确保测试、开发和PM对需求的理解是一致的。会议上也会阐述大概的实现方式,涉及的表,是否用触发器,等等的问题。会议之后可以拿到开发提供的接口说明文档;
  第二步:从接口说明文档中整理出接口测试案例,里面要包括详细的入参和出参数据以及明确的格式和检查点
  第三步:和开发一起对接口测试案例进行评审。
  第四步:结合开发库,准备接口测试案例中的入参数据和出参数据,并整理成csv格式的文件。
  第五步:结合接口测试案例文档和csv格式的数据文档,做接口测试案例的自动化案例开发。
  对于大一点的公司,用Jmeter编写自动化脚本,真的很low吧。我也觉得很low,但是不得不说完全够用,还极其容易上手。
  对数据处理灵活,断言,数据落地,都可以查询和验证。
  2. 端到端的测试你们做过吗?
  3. 性能测试关注点是什么?
  我们通常认为的规定的指标是:
  服务器资源使用情况,不管是中间件服务器, 还是DB服务器,从内存,到CPU,不超过70%
  从响应的结果来看,错误率不超过1%,甚至要求错误率更低;基本上实践当中,不超过0.1%;
  平均响应时间不超过3秒,视查询条件而定,有的要求是不超过2秒;
  90%的响应时间不超过3秒。
  你们不看TPS吗?TPS知道吗?
  也要看啊,我还没讲完呢。 每秒中的处理请求的数量啊~~
  TPS是受木桶原理影响,要看每一处的配置的。【后悔没多说点,抬头对上interviewer的眼神,这个话题就完了】
  3. 扯闲话部分:
  你们公司的开发测试的比例是怎样的?我们是 4:1?
  你们公司系统的中间件是什么?
  性能测试中,你有进行性能调优吗?
  嗯,验证过很多接口,有的定量需求,比如要求某个接口的TPS达到500. 如果第一次性能测试,能达到500,也就够了,没有下文了;但是这个是注册接口,随着时间推移,DB服务器资源CPU到内存都吃的越来越紧,发现TPS下降了,之后越来越低。
  什么原因造成的?
  DB服务器的原因。这个一个nosql数据库,以前这个接口是能达到500TPS的,但是随着微信绑定推出unionid后,需要增加新的字段,新的表;而这种DB对查询条件需要加索引,要不然不支持查询。
  表中数据量越来越多,又有很多字段添加了索引,当数据量达到千万级别之后,添加索引消耗DB的资源,也明显感受到占用了时间。 导致接口查询慢,新增也慢。
  有别的调优吗?
  还有发现,若干个字段,因为没有加索引,导致查询接口TPS不高等问题;
  项目中有用hibernate的,有时候定位比较难,因为sql都是hibernate拼接的。
  4. 有没有自己创新什么工具,用来提高效率的?
  自己回答
  5. oracle中分页怎么实现的?
  oracle很久没用,打错了,我回答的是跟mysql差不多吧,用limit的?
  用limit?
  后来发现用rownum
  6. selenium在你们的测试过程中也用?还用吗? 有没有什么问题?浏览器兼容性问题能做到吗?
  差不多就这么多了,接下来到面试者问问题时间。总体感觉就是, 自己就像一个AI,面试官问什么,自己回答什么,没有做必要的延伸,没有引入自己的话题。
  总体感觉就是面得不好。

      上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号