快回学校的时候,其他业务线的同事忙不过来了,正好我懂开发的技术,就让我去帮忙做一些开发的工作,开发的这个测试工具是以脚本自动化测试框架TSS为基础开发的,TSS运行的时候能自动生成配置和模板等一些脚本运行的环境,我做的主要工作就是文件上传,把写好的自动化脚本文件上传;TSS框架运行的时候,会自动生成一些配置,有些配置不是我们需要的,把不需要的配置删除,添加一些自己需要的新配置,修改一些配置;TSS执行完脚本文件,会按照模板生成测试结果,我把测试结果记录下来并生成Excel或者PDF文件,最后把TSS框架在运行过程中对配置、模板的改变清理掉,恢复初始化时候的状态。
项目介绍:
用到的springcloud组件有API服务网关zuul、服务注册中心euraka、分布式配置中心config、负载均衡器ribbon、容错保护hystrix。系统的持久化数据库用的是MySQL,ORM框架用的是Mybatis,为了降低数据库访问次数,提高系统响应性能,系统的大部分数据存储在NoSQL数据库Redis中。
微服务:微服务是指把传统的复杂庞大的AllInOne单体结构的软件系统按照一定的维度比如业务维度拆分成若干个能够独立运行的微服务。每个微服务从开发、测试、运维等都是独立的,包括存储的数据库也都是独立的,自己就有一套完整的流程,完全可以把它当成一个项目来对待,不必依赖于其它模块,每个微服务只需要实现自己的业务逻辑就可以。
微服务优点:每个微服务都很小,这样能聚焦一个指定的业务功能或业务需求。微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。微服务能使用不同的语言开发。微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如Jenkins,bamboo。微服务易于被一个开发人员理解,修改、维护和扩展。微服务允许你利用融合最新技术。易于和第三方集成。每个微服务都有自己的存储能力,可以有自己的数据库。也可以有统一数据库。微服务缺点:对运维要求高。跟踪问题难。当服务数量增加,管理复杂性增加。
开发中遇到的问题:
一、性能问题:展示态势页面时,读取设备的IP很慢
解决:
二、数据处理延迟:接收到前置系统的数据后,对数据的处理速度较慢
面试技能:
一、百度外卖
1、四个数中选三个组成不同的三位数的个数
packagecom.mian.demo;publicclassWaimai1{publicstaticvoidmain(String[]args){int[]arr={9,4,1,2};intres=newWaimai1().getResult(arr);System.out.println(res);}privateintgetResult(int[]arr){intsize=arr.length;if(size==0||arr==null){return0;}intcount=0;for(inti=0;i 1、讲项目 2、测试中遇到的问题 测试主要功能点,根据自己的经验把不主要的功能和不容易出错的地方先不测 2)、很多bug,上线之前RD改不完 叫上leader、pm、fe商讨哪些bug是主要的,确定修改bug的优先级顺序,让RD先修改主要的bug 3)、QA认为是bug,RD认为不是 提供足够的证据证明它是bug,它对系统的功能、性能等质量的影响,据理力争,说服RD 发邮件发给RD及其领导,在邮件里清楚的写明一些,侧面试压, 直接找自己的领导和RD的领导 3、合并两个有序链表,设计测试用例 4、A、B、C三个数是否能组成三角形,设计测试用例 5、测试流程 三、每日优鲜 1、集合list、set是否有序 2、数据库索引 3、Linux命令 4、优化查询 5、测试接口 接口测试是指测试系统组件间接口,主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 四、易车网 3、测试流程: 1)、PM对本次迭代的需求功能做MRD,召开需求评审会,QA参加需求评审会,熟悉本次迭代的需求功能,不懂的问题或自己的想法及时提出来; 2)、RD从功能上拆分需求,并给出相应的实现方案,QA针对需求和实现方案设计测试方案,实现上不懂的或自己的建议要及时与RD进行沟通;测试case梳理完毕后,需要与RD、PM对测试用例进行评审(casereview),QA根据RD和PM的建议对现有的testcase进行调整,以保证本次的迭代的质量;QA给出测试排期(1—2个buff) 3)、RD根据实现方案进行开发,开发完成后会发提测邮件,邮件中会写明DB、配置文件等的一些改动以及RD自测的点;QA搭建测试环境,对RD的提测进行准测试,测试其核心功能是否都覆盖,就是抽取10%—20%的testcase进行过准入测试;如果不通过,则将RD的提测邮件打回,通过则发出邮件正式进行测试; 4)、执行测试用例,发现bug则向RD提测,RD修完bug则进行回顾测试。若QA可能存在延期,则每天发出测试进度; 5)、QA测试完毕之后发出上线邮件(signoff邮件),邮件中写明QA的测试点,RD自己保障的功能点,暴露的风险; 6)、RD收到上线邮件后进行上线,PM、QA、RD按照checklist进行线上检查。若没有问题则本次迭代结束。 4、用到的springcloud组件 5、eureka的设计模式 6、斐波那契数列 7、Java8的新特性 五、京东金融 1、冒泡排序 2、mybatis 3、你对测试的理解 4、设计支付接口 5、与他人的冲突,怎么解决? 6、优化系统延迟 六、便利蜂 1、排名前5的IP 2、数据全量的保存 3、Jenkins的配置 4、排序map中的value 5、开发中遇到的问题,怎么解决? 七、360 1、抓取网页list中的返回的HTTPstatus 2、sql语句 3、Python写冒泡排序 4、grep命令 八、爱奇艺 一面: 1、介绍项目 hystrix的原理 为什么消息中间件选择kafka 消息中间件的种类,kafka和RabbitMQ的优缺点 RabbitMQ: RabbitMQ的消息应当尽可能的小,并且只用来处理实时且要高可靠性的消息。消费者和生产者的能力尽量对等,否则消息堆积会严重影响RabbitMQ的性能。具有生产者confirm机制以及消费者的消息应答机制ack Kafka:kafka强烈的依赖于zookeeper,如果zookeeper挂掉了,那么Kafka也不行了对消息顺序不依赖,且不是那么实时的系统Kafka具有巨大的吞吐量,数据的存储以及获取是本地磁盘的批量处理,可以达到百万/sKafka不具有应答机制 前置数据采集系统传输消息的量级 怎么处理重复上传的消息 2、链表交叉 3、台阶问题 4、爱奇艺和腾讯的优缺点 5、最近看过的书,介绍一本 二面: 2、合并两个有序数组 3、一个函数,str1是str2的子串,返回str1在str2的位置,若str1不是str2的子串返回-1,设计测试用例 边界值 4、25匹马5个跑道,选出最快的3匹 5、自己的优缺点 优点:做事严谨认真有耐心,执行力强不拖拖拉拉,有进取心、喜欢钻研,踏实沉稳、不浮夸 缺点:选择恐惧症,优点优柔寡断,认死理、爱钻牛角尖 6、为什么转测试 1.测试比开发更能了解业务整体架构,了解清楚整体性的业务逻辑,加上了解代码,能够更好地开展测试工作2.作为女生来说,性格耐心仔细,可以实现重复测试,多次测试,不断测试,对于专而精的开发来说,女生的性格更加适合测试工作。3.作为测试,虽然入门很容易,但是做好很难,以开发和测试最终的发展之路来说,测试比开发供选择的道路更多,不仅仅可以成为技术方面的全栈工程师,还可以考虑业务专家、行政方面的项目经理等等。 实习的时候做的测试开发,同一个团队的其他业务线的同事忙不过来,让我去帮忙开发测试工具,开发测试工具的过程中,我感觉自己的开发方面写代码能力有待提高,出于想提高自己的开发能力的目的,毕业之后我选择了做开发。想转回测试开发是因为不想在成都待了,想来北京工作,想重新找一份工作,自己做过测试开发,也做过开发,做测试开发和做开发相比,我更喜欢测试开发,想做业务测试、编写测试脚本和开发测试方面的一些工具,不想成天写代码实现业务功能需求。 7、职业规划 三面: 1、介绍自己,突出技术 2、开发中遇到的问题 3、生活、工作中遇到的难题 4、爱奇艺播放器时而播放时而卡顿,可能是哪里出了问题? 九、百度 一面问题: 1、自我介绍 2、介绍项目 3、AOP:什么是AOP?怎么开启AOP的调试模式 4、什么是POM文件 5、Python:一个dict{A:a,B:b,C:c,D:d,E{fd:er,G:gd},K:k}找到字符串,打印其key及其父key 7、什么是springboot 8、Linux命令:cd、ls、find、grep、ps、top、netstat、lsof、touch、chown、chmod、cat、tail、cut、tr、sed、sort、wc、xargs、kill、awk、ifconfig、uniq、du、df 9、springmvc注解:@restcontroller 二面问题: 1、介绍自己 2、你开发的系统和你实习时候的产品的不同 3)、技术架构不同:Hadoop、sparkVS微服务技术 4)、数据量不同: 5)、并发访问量不同: 6)、性能要求不同: 3、连续子数组的最大和 测试v1.0和v2.0版本 4、sed命令:sed's/good/bad/g'filename 5、实习的时候你的收获是什么? 3)、团队合作的重要性,FE、RD、PM、QA相互协调和配合把每一个迭代做好,每个人尽最大努力保证迭代按时上线,并且没有线上问题。 4)、处理事情要讲究方式方法:处理事情的优先级,重要的事情先处理 十、高德地图 1、为什么开发转测试 2、测试百度首页 3、算法 26进制转10进制 合并两个有序数组 合法字符串(全是大写、全是小写、首字母大写其余全小写是合法字符串) 4、什么是restful RESTful是指资源的表述性状态转移,是一种软件架构的规范和约束。服务端提供的RESTful风格的API中,URL中只能使用名称来指定资源,原则上不使用动词。URL定位资源的时候用HTTP中的GET、POST、DELETE、PUT等动词描述操作。 5、HTTP状态码 6、知道MongoDB吗 7、用Python做过什么 8、HashMap的底层原理 9、自动化测试 介绍jmeter,postman 10、实习时你做了什么,你在团队中的价值,你的作用 承担了一部分业务测试的工作,保证产品的业务逻辑正确,在产品上线之前发现错误或缺陷,提高产品的用户体验; 编写数据源监控脚本,对产品的数据源进行监控,保证数据的有效供给,如果数据提供方当天真的没有数据产出,就用前一天的数据覆盖一下,保证数据的采集。 帮助团队其他产品线的同事开发脚本自动化的测试工具。 十一、滴滴出行 2、画项目架构 3、蛇形矩阵 4、翻转字符串 5、压力测试 怎么判断压力的瓶颈 多线程模拟用户发压 生产者消费者模式 6、接口测试 接口测试的注意点 8、场景题:一台机器上部署了一个或者多个服务(ip:port),一个功能模块通过tcp协议去判断机器上服务的在线和离线,怎么测试 9、为什么测试转开发 我是先找的工作,签完三方然后去实习的。签三方的工作是开发。实习结束的时候,和领导确认没有校招补录名额,自己对开发的工作也不排斥就去做开发了。 10、什么是restful 11、用Python做的什么,MVT,介绍M,用不用自己建数据库 十二、饿了么 1、泛型 2、反射 3、抢20 4、sql批量插入 INSERTINTOtable2SELECT*FROMtable1; 5、数据表的连接:左连接、右连接、内连接、全连接、等值连接 6、Python的列表生成式:生成1-100的平方 8、输入网址的过程 2、什么是SQL注入、XSS攻击 3、测试淘宝首页 4、接口设计原则 (1)单一职责原则:接口的职责应该尽量单一(2)里氏替换原则LSP:子类必须完全实现父类的方法,类可以有自己的个性(属性和方法),覆盖或实现父类的方法时输入参数可以被放大,覆写或实现父类的方法时输出结果可以被缩小。在类中调用其他类时务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了LSP原则。(3)依赖倒置原则:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。精简的定义:面向接口编程。测试驱动开发是依赖倒置原则的最好体现。测试驱动开发要求先写测试类,测试通过才写实现类,这就要求你要先想接口定义。(4)接口隔离原则:建立单一接口,不要建立臃肿庞大的接口。接口尽量细化,同时接口中的方法尽量少。(5)迪米特法则,又称最少知识原则:一个类应该对自己需要耦合或调用的类知道得最少。高内聚、低耦合。(6)开闭原则:对扩展开放,对修改关闭