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

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,面试官问什么,自己回答什么,没有做必要的延伸,没有引入自己的话题。 

总体感觉就是面得不好。

我想说我也可以开发自动化测试平台,只是还不太成熟。因为都是一个人做,时间和能力都有限,不知道用什么技术,架构,要增加什么。

posted @ 2019-02-17 22:07  巴黎爱工作  阅读(3118)  评论(5编辑  收藏  举报