最近,在Q群或者微信群里经常看到有测试朋友在问有没有性能测试面试的资料?如何面试性能测试岗位?
因为自己也一直在做性能测试,大大小小的项目加起来也好几十个了,而且,公司招聘性能测试,也面试过很多应聘者(极少令人满意,有些连linux命令都不会),这里就做个性能面试概要总结分享给大家吧,可能你看了会懵逼,因为需要一定的基础,你可以点击左侧加群来聊聊。
性能招聘要求
投递简历前,我们需要先了解对方的招聘要求,虽然招聘要求都是互相copy的,我们还是从某招聘网找一个20k+的性能测试招聘要求看看:
是不是觉得要求很多?所以,不会的,就查漏补缺吧。推荐书籍,参考:https://www.cnblogs.com/UncleYong/p/10836607.html
再补充一个广州某公司的招聘
可以看到,性能的薪资已经和后端开发的相当了,也超过了前端开发
招聘岗位:性能测试工程师 薪资范围:12-18K 任职要求: 1、有3年以上中大型网站或者后台服务器的性能测试经验,大专及以上学历; 2、能独立承担项目性能测试、具备性能测试需求分析能力,有定位系统瓶颈和性能调优的经验; 3、精通1~2个主流性能测试工具,如loadrunner、jmeter,能熟练使用性能数据监控工具; 4、熟悉WEB服务器(如Apache,Nginx)的配置,能对调优有见解; 5、熟悉主流数据库,如postgregre、mysql、Redis、MongoDB等; 6、熟悉Java/Shell/PHP/Perl/Python/Ruby等至少一种脚本语言、熟悉linux以及持续集成更佳; 7、有强烈的责任心,工作态度严谨,能承担较大工作压力,具备良好的沟通能力和团队合作精神和沟通 招聘岗位: java开发工程师 薪资范围:12K-18K 任职要求: 1.计算机相关专业,本科以上学历, 具有3年以上Java以项目开发经验; 2.精通Java开发,熟悉Java的核心语法,了解J2EE设计模式,熟悉面向对象的分析设计和工具; 3.熟悉掌握SQL语言,能够熟练进行数据库设计,有Oracle、Postgresql等相关数据库项目开发经验; 4.熟悉分布式系统的设计和应用,熟悉分布式、缓存、消息等机制,能对分布式常用技术进行合理应用; 5.掌握多线程及高性能的设计与编码及性能调优,熟悉微服务、熟悉Spring Cloud; 6.具备良好的代码编程习惯及较强的文档编写能力. 招聘岗位;前端开发工程师 薪资范围:10K-16K 任职要求: 1.全日制本科学历,计算机相关专业,2年以上前端开发经验; 2.有扎实的html5、css3、js等前端基础,能熟练运用vue、angular、jquery等框架者优先; 3.对PC及移动端浏览器兼容性有丰富的实战经验。熟悉前端性能优化,熟练使用前端自动化构建工具,比如webpack、gulp、fis等; 4.了解至少一门后端开发语言,并有一定的实战经验。熟悉前后端分离的开发模式,熟练使用git等协作工具; 5.良好的编码习惯,包括代码注释,文件及函数命名,模块解耦等;
性能面试准备
做性能测试需要掌握的知识面很宽泛,包括linux、数据库、各种中间件服务等等,而且还需要一定的深度,这样才能去做性能分析、定位、调优。总之就是架构师的知识面了,架构师精通的,你都要熟悉或者至少了解,像nginx,tomcat,mysql,redis,linux,jvm这几个常用的,基本上是面试必问的。
同时,最好再掌握1-2门编程语言及常用算法,最佳组合是python + java,我是用python造测试数据及数据库存量数据,用java开发jemter没有的取样器(比如jmeter没有自带dubbo协议接口的取样器,虽然现在已经有dubbo的第三方插件了,但是如果你面试的时候说是自己开发的,那逼格提升好几个档次),说明一下,jmeter是现在主流的客户端并发工具,市场使用率已经50%+了。
性能等级
有人说,我会做性能脚本,会跑并发了,我会做性能测试了,下面来看下到底自己几斤几两,能面个什么等级,或者你压根儿就还是个性能外行
网上有些资料是这么定义的:
性能外行:会做简单的脚本跑并发(复杂的,比如dubbo接口这些需要写代码的,就搞不定了);
性能初级:会性能监控;
性能中级:会常见性能问题的定位调优;
性能高级:会调优,性能自动化预警监控、容量规划。
如何面试性能
一般来说,面试性能,围绕以下几个方面去说就可以了:
介绍性能测试流程
参考:https://www.cnblogs.com/UncleYong/p/10860321.html
列举性能测试常见问题
性能测试结果中,我们关注的指标是tps和art(当然,也会关注各个服务器的各种资源情况),如果tps低,或者响应时间长,或者服务器资源紧张,那就需要我们去定位性能问题了,
常见的性能问题(有些只是表象,需要深层次定位):
a.服务器
cpu:us & sy
内存:使用率及交换率
磁盘io:读写慢
磁盘容量
b.网络带宽:看当前收、发速度及有没有丢包、端口使用情况
c.cpu高:看线程信息;是否fgc等
d.队列问题(负载高):磁盘io队列(物理读高);线程队列(线程阻塞、锁竞争)
e.各种连接池问题:不足、未释放(以及半释放)
f.死锁问题:线程死锁、数据库死锁
g.sql问题:索引(未加、使用不当)、慢sql(全表扫描、查询结果未分页展示、sql逻辑)、长事务
h.应用log级别:设置不正确
i.缓存设置问题
上述问题详细分析、定位,请关注后续总结分享。
详细举例遇到的1-2个性能测试问题
参考:https://www.cnblogs.com/UncleYong/category/1437390.html
小小建议
机会是留给有准备的人的,不要在机会来临时,才发现自己各种不足,建议大家充分利用上下班路上的时间,人的差距是下班后的几个小时产生的。
你可以任性的裸辞,但是切忌毫无准备的裸面,裸面就是浪费时间、浪费机会。
今天早上微信群一个群友发笔试题让大家助力,里面至少85%在我的博客中都能找到答案,^_^,所以,知识需要积累,全栈测试干货汇总目录:https://www.cnblogs.com/uncleyong/p/10530261.html