【测试工程师面试】 记录XX银行面试

LZ在一个18线小城市作测试,近来想走出本身的温馨区,去作一点不同的测试工做。html

18线地区,测试工做并很少。最好的差很少就是LZ目前待着的公司了。遂决定去魔都闯荡几年,对一个在魔都无房无车无户口的人来说,这意味着很累,然人无远虑必有近忧。即便有一天你的城市通地铁和高铁了,来了一群优质的互联网公司,我除了离得近,有配得上的技能嘛。java


XX银行面试
年前在BOSS直聘上投递的简历,年后约面试。我要求先电话面试一轮再去。【这里说一下有的公司招人职位要求和面试要求彻底不一致,毕竟魔都里的有些远,不想浪费一次年假和本身的无奈,去验证他们的jd和面试内容。】电话里了解到他们想招Java能力好一些的测试人员,之后的工做内容是自动化测试,而且开发一些测试平台和加密解密系统。是我感兴趣的部分...不敢十拿九稳,但想试一下。因而就约了周一10点面试。mysql

一面
提早一个小时到,问了问hr是否方便过去,HR让我直接上去。我就拖着热水袋,开心地乘电梯去了10楼。
HR将我领到会议室,填了我的信息表,调查表,一下子以后来了一个高个子瘦瘦的面试官。git

1. 用JAVA怎么读取文件中的内容?
Property p = new Property;
读取输入流获取的内容
那要是多个文件,也用这个读吗?
LZ基础太薄弱,想不出别的方法。
你有没有想到这种读文件方式的弊端?
LZ一脸茫然。。。【心更凉,白来了么,亏我5点多就乘着大巴冒着雨赶过来,这种面试题彻底没遇到过,工做中亦未遇到过。】面试

 

更新于20190302:spring

package com.example.utils;

import java.io.*;

public class ReadFile {

    public static String readToString(String fileName) {
        String encoding = "UTF-8";
        File file = new File(fileName);
        Long filelength = file.length();
        System.out.println(filelength);
        byte[] filecontent = new byte[filelength.intValue()];
        try {
            FileInputStream in = new FileInputStream(file);
            in.read(filecontent);
            in.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            return new String(filecontent, encoding);
        } catch (UnsupportedEncodingException e) {
            System.err.println("The OS does not support " + encoding);
            e.printStackTrace();
            return null;
        }
    }


    public static void BufferedReaderFile(String filename) throws IOException {
        FileReader fileReader=new FileReader(filename);
        BufferedReader in = new BufferedReader(fileReader);
        String str;
        int a=0;
        while ((str = in.readLine()) != null) {
            a+=1;
            System.out.println("the " + a);
            System.out.println(str);
            }

    }

    public static void inputStreamFile(String filename) throws IOException {
        InputStream inputStream = new FileInputStream(filename);
/*
        int a = inputStream.read();
        String s=inputStream.toString();
        System.out.println(a);
        System.out.println(s);
*/

        byte[] b = new byte[200];//把全部的数据读取到这个字节当中
        //声明一个int存储每次读取到的数据
        int i = 0;
        //定义一个记录索引的变量
        int index = 0;
        //循环读取每一个数据
        while((i=inputStream.read())!=-1){//把读取的数据放到i中
            b[index]=(byte) i;
            index++;
        }
        //把字节数组转成字符串
        System.out.println(new String(b));
        //关闭流
        inputStream.close();
        }


    public static void main(String[] args) throws IOException {
        //表示磁盘路径的两种表示方式:一、\\   二、/
        String filecontent = readToString("aaa.txt");
        System.out.println(filecontent);


        System.out.println("========我也开始读文件啦================");
        BufferedReaderFile("aaa.txt");


        System.out.println("========int是个什么鬼================");
        inputStreamFile("aaa.txt");
    }

}

 

  

 

2.设计模式了解吗?
饱汉模式,饿汉模式,工厂模式,spring mvc模式
不对。饱汉模式,饿汉模式不是设计模式,是单例模式中的。
哦,是的,我记错了。
设计模式一共有22种左右。
嗯嗯。
你手写个单例模式能够吗?
拿着笔,在本身刚填内容背面,手写着,心中记着单例模式重点叫私有什么来着,
private class a{}
又想着单例模式中饱汉饿汉的区别,哪种安全,还没写完,面试官就说:"我一看你写的就知道你写错了"
不要紧,有些开发也不知道。只要你愿意学,我就能够教你。
【这是我听到的能让我坚持下继续面试的话】
【面试官】我想招个开发能力强的人,我没空去写好比加密解密的代码,须要别人来写完。框架我都搭好了。sql

更新于20190302数据库

 

 

3.说说大家的测试流程
咱们,巴拉巴拉,接到需求后,会有一个需求文档,经过邮件的形式发给整个项目组,包括PM,开发,测试和支持。并约定一个接下来的时间,进行启动大会kick off meeting
每一个人对需求文档,提出本身的问题,好比与以往的需求,是否有冲突的地方。
好比需求实现的方式,是经过接口,仍是存储过程,是经过用mq同步数据的方式,仍是代码中跨数据库,那是否同一个操做要实现跨数据库的事务等等。
而后带着这些问题,参加启动大会,项目中的每一个人提出来,最后总结具体实现的方式,覆盖的范围。
假设是接口的话,会详细到接口的字段,字段长度,必填性,字符类型等等,这边主要是测试和开发,会在会议上定好哪些代码中必定要校验,不少状况下,不定的细致,接口校验会漏掉,以为页面UI已经有了。
会议结束后,开发人员会将接口文档发给项目中的每一个人。这个时候测试人员,要检查接口文档,检查字符长度是否和DB中长度,是否有超过DB中长度;检查异常中返回值和信息是否正确。检查最终数据流相关的字段是否准确。
检查正常的有复杂逻辑关系的,逻辑顺序是否正确。
不正确,提出,正确,回复邮件。以后,测试人员,编写测试用例,发给项目中的人员进行评审。
以后,编写case并构造入参数据,断言,DB中检验,等等。
等开发提交代码后,进行测试,有bug则提bug,以后再对所有case回归测试。balabala。。。json

4. 咱们这儿有个接口,有158个入参,其中有100个入参。对100个入参必填作校验。
比咱们接口中参数要多不少,目前咱们有脚本,对少数的入参,只能填写变量名,长度,断言就能够一次性走完异常测试场景。
大家100个入参,有些多,须要根据接口文档动态生成测试脚本,包括测试用例描述,测试数据,测试结构断言。
【面试官】个人想法是100个必填入参,用java代码,依次判断,就是100个循环,单独测任何一个入参的必填;在随机个数的参数,不填,验证必填参数的异常。
我目前在开发测试平台,建立一个对象,包含变量名称,必填性,字符类型,字符长度,范围好比是int型有的referrence表传过来的只能1-10,一个接口中的入参,将是一个list,list中每一个对象,根据
必填这个属性,生成一个list。
list中依次遍历,每次少一个对象变量名称,那测试用例依次生成未传入某某变量,测试数据,其余的变量和值依次拼接起来,map方式,map的key是字段名,value是自动生成的值,value须要在符合的长度内,值的范围也必须在。
代码都能实现。通常一个项目的请求体的格式一致的,好比如今经常使用的json格式,拼接一下key value,先后大括号,等等,最终测试数据也生成。
断言部分同理,可生成。
这个平台我在构思和开始设计表结构,实现方式,还未成功。关于你说的再随意若干个字段不传,我通常不会有这个样的case。缘由是,java代码中判断入参不传,有前后顺序,你这个随机不传,断言要怎么写。
仍是大家全部的必传入参不全,返回信息是一样的?
【面试官开始对我有好转了】设计模式

5. 说到我上面的接口测试用例自动生成平台,个人确开始在作。索性趁热打铁,我说了下我已经完成了项目
我本身用springboot写了一个mini的bug管理平台,都增长了些什么功能呢? 登陆受权后,查看这个项目下,各个测试类型的bug。而且是基于咱们公司的状况,
好比每次任务须要一个CR,没有CR是不作的,CR下来了咱们公司还须要有任务编号,等等。说简单了是CRUD,说到CRUD,数据处理层使用JDBCTemplate实现的,页面用的Thymeleaf模板引擎。
还加了定时,根据bug中的更新时间,每15分钟将更新时间距离当前时间小于等于15分钟的bug信息,逐条发送给测试人员和开发人员。
这个和JIRA、bugtracker等不一样,是个定时任务用来发邮件。
系统出来了以后,要一会儿录入原来的bug,一条一条很不方便,我建立了一个jmx脚本,其实就是一个简单的请求,以往测试人员会将测试用例,以excel大多这样的形式保存在本地,脚本中只要填写项目id等信息,可经过相似性能测试的方式,一次导入全部的bug,丰富bug系统,将以往工做中的bug所有呈如今一个平台上了。

这以后又编写了测试用例管理平台,差很少的原理,这个时候数据处理改为了mybatis,由于涉及的表更多了,用mybaits方便。咱们测试的内容有接口,有UI,有存储过程,测试用例格式不太一致,全部测试任务一张表,而后以后具体的测试用例是根据测试类型,分别新增到对应的3张表。
balabala。。。后来也给你们提供了Jmeter建立的脚本,配置好项目名称等信息后,可一次性导入以往保留在本地的全部测试用例。

6. springboot中mysql是自带的,很方便?
不是。
mysql是自带的?
不是,须要引入mysql驱动jar包依赖的。何况我开发的时候,本地链接的是mysql,后来导成jar包,不能用我本地数据库,咱们公司用的sqlserver
我尽可能保证sql一致性,分页部分没法一致,就改一两行代码。

7. 有没有bug?
有。【哈哈哈】
什么bug?
小bug。bug邮件提醒部分,咱们公司的邮箱是outlook,outlook是什么公司,微软,打开后bug信息的具体描述,原本是textarea格式,应当是分行显示的,可是没有分行。
而后你用手机打开,手机通常是苹果和安卓嘛,邮箱中打开是没有问题的。
这个也不能算bug。模板引擎不能保持兼容全部的浏览器,不少UI方便的东西,开始抛弃IE,抛弃微软了
对对对。
有别的bug吗?
有,我本身知道,使用者暂时还不知道,我就暂未改。
什么bug?
额,好比,展现全部bug页面,既有多重查询后,显示符合条件的bug,bug页面最右下角有分页。
由于我分页用的是get请求方法,而多重查询用的是POST请求方法,目前在不输如任何查询条件的状况下,分页功能彻底OK
输入查询条件,无论一个或者多个,第一个ok,接下来查的是全部bug,再也不有查询条件的限制啦。【呵呵】
为何没被发现?
bug倒序显示,其次是查询条件限制后,查出来bug较少。全部通常不被发现。查询条件嘛,为了精准查询。

8. 咱们这边的人员分配是xx个外包,其余是JF,只有一我的是行编制,固然这我的不是我。
你若是进来,是JF,和我同样,待赶上和行编制差很少,比外包要好一些。

9. 大家冒烟测试怎么个流程?
额,好比接口测试,冒烟测试是指囊括原来的全部的功能都要正常对吧,额,咱们的开发将代码提交到git上,经过Jenkins自动部署到服务器上的指定的中间件以后,重启中间件,热部署有时候总有问题。
中间件重启以后,自动运行编写好的自动化测试用例,用例包含正确的断言验证,DB数据验证,异常场景的断言验证,以后会发出一封测试报告。测试报告所有经过,则代表OK;
【面试官】呵呵,据我了解,冒烟测试是针对修改项或者新增的功能所作的测试?
哦,那开发会有自测并子自测成功后,将转测邮件发出,转测邮件上写着xx验证什么ok。
可是,若是开发转测的功能,本次涉及到的自测了没问题,可是影响到了以往的接口,我依然不会开始测试的。个人自动化测试脚本在呢。
【面试官】呵呵。

还没轮到LZ提问,面试官说我去喊我领到来,走的时候顺便说了句,你在我这边是OK的,没问题的。
我诚恳说了句谢谢。

 

 

 

二面
一下子进来了二面面试官。
1. 刚刚一面面了多久?
LZ看了下手机,40分钟。
大家都面了什么?
LZ开口就说,想到什么说什么。说得比较混乱。
那大家面的什么呢?
LZ总结了下,JAVA,测试流程,作过的项目
面试官终于问别的了。

2. 自我介绍一下吧
balabala。。。
为何要转岗到测试?
巴拉巴拉,无非是离境数据管理条例,balabala
大家是营销型公司?
balabala。。。。主要是经过。。。。
薅羊毛?
LZ一脸茫然。。后来才反应过来面试官是以为咱们公司是个薅羊毛公司。替知名企业各个行业的Top10作精准数据营销。

3. 说一说测试人员对数据库的认识?
LZ听不懂。。。
面试官复问
LZ答 要有数据库读的权限,产品一旦上线很长时间,每次修改,DB中数据会有一些不是咱们指望的那样,好比姓名中可能存在全角字符,中英文还夹杂着数字
LZ继续答,数据库链接要注意数据库的安全,用堡垒机或者citrics进行链接
【LZ搞不清楚面试官想问我什么】

4. 大家须要写ppt吗?
不须要。做为测试,几乎不用写。写文档却是比较多。
【LZ也搞不清楚这个问题是想问什么】

5. 你是否是有小孩了?
balabal...
你不是本地的,在本地有房吗?
balabala...


6. 说说大家公司薅羊毛?
LZ应该用资本家就是赚取剩余价值来怼这句话,惋惜没有勇气。
薅羊毛,黑产才一般薅咱们的羊毛呢?
【面试官愿闻其详的样子】
我讲了一个短信验证码攻击的事件,在我随笔中有分析过验证码的安全性和有效性,【短信的横向轰炸和纵向轰炸】链接http://www.javashuo.com/article/p-ssogjqyz-w.html


7. 你简历上PMP证书是什么?
项目管理
考了证书对你的工做有什么用?
没什么用。。【LZ太任性了太2b了】
没什么用?
考以前是这么管理的,考过以后也是这样。【当时的我是怎么了?】

说说你的薪资指望?

balabala

你目前多少?

balabal, 可是咱们公司福利很好,每一个季度有季度奖金,且一年有一个月的带薪年假,15天的带薪病假,还有出国旅游。公积金缴纳的是12%。天天有不限量的免费水果,还有股票奖励等。


8.有没有什么问题想问个人了?
【该知道的,工做内容,须要的技能我都知道了,接下来也该问hr了】摇头。
就没有什么想问个人?
我心抖,凉凉中。刚刚对于PMP的回答会影响我吗?
面试官看了看,回答道:会。
我惆怅哀思中,想着要不要恳求一个重答的机会。
面试官说,会有影响,也是我本身问题问的很差。

 

后来二面面试官走了,叫来一面面试官。
没有HR面,一面面试官送我走了,还问我面得怎样,我语气沉重,艰难地说还行。
一面面试官看来以为没有问题,来问我何时能到岗。
学位学历是否是可查的?我说是的。

 

 

后来我就撑着伞,离开了,周一面的,周五也没有收到任何通知。凉凉。

相关文章
相关标签/搜索