下面是我根据工作这几年来的面试经验,加上之前收集的资料,整理出来350+道软件测试工程师 常考的面试题。字节跳动、阿里、腾讯、百度、快手、美团等大厂常考的面试题,在文章里面都有 提到。 虽然这篇文章很长,但是绝对值得你点击一下收藏。
Tip:我整理的面试题都按照这个脑图写,不定期更新,往下翻有目录,后期会不断把参考答案补充 上去,点击标题阅读即可,此文章长期有效,找测试相关工作的同学一定要好好收藏。
自我介绍(心理学首因效应告诉我们第一印象非常重要)。自我介绍最重要的是能够 在面试官心目中留下一个好的第一感觉。说得更直白一点是让面试官舒服。但是我发现很多人就是 直接简单的介绍了一下过去的经历,但是实际上一方面过去的经历没有很好的让人发现优点。
其实 面试好比相亲,你想说什么不重要,重要地是人家想听什么。比较好的自我介绍套路是这样:“您 好,我叫XXX,很高兴能获得这次面试机会,今天来面试是想证明自己是最合适的人选,另一个方 面是获得您的认可,结合我过去的工作和学习经历,我自信我能符合咱们公司的认可,接下来您看 是我继续介绍我做过的项目,还是您问您关心的问题?”
项目介绍(项目经验直接决定一个人能否胜任一份工作,企业更应该看重一个人解决问题的思路和具体能力)。 项目介绍部分最重要的思路是应该先整体后局部,介绍整体的时候要有量化的数据(从项目度量的五大维度:规模,包括项目代码规模,需求规模、用例规模,工作量进度,质量和成本),然后是整体的测试流程,然后再是角色与职责,接下来是项目中自己的特色,比如做得最好的是、遇到最大的困难时、最差的是最后是心得体会
数据库方面知识最基本的要求是数据库记录的增删改查(insert、 delete update、 select) ,表结构的增删改查(create drop alterdescribe 存储过程、触 器等
linux操作系统相关。最基本的目标是熟悉常见的50个命令,比如find命令(- name、-type、-perm、-user、-group、-ctime、-atime)等,熟悉vi、熟悉linux搭建测试环 境。比如LAMP环境搭建。
缺陷相关知识。最基本的是缺陷跟踪的流程(流程的基本要素),整体的流程,最好 能在纸上给面试官画出来(尤其是男面试官,从男人好色的角度来看,写得很清楚很重要),缺陷 单的属性,至少能列出20个属性,每个属性的意义,如何描述好缺陷单,缺陷单描述的5C原则,比 如缺陷重现步骤应该complete。
如何描述一个你认为的最经典的Bug单。
用例相关。最基本的包括用例的格式要素,用例设计工程方法论,每个方法要求(方 法的背景,操作步骤,优缺点、适应范围,与其他用例方法如何配合),在项目中如何利用测试用 例设计工程方法。如何评价、评审测试用例,评审从哪些维度?要设计好测试用例需要哪些方面的 知识结构,比如技术、业务、方法。
软件测试流程。系统测试相关规范和标准的流程:熟悉产品/项目,需求评审,测试需 求,测试计划,测试方案,测试用例,预测试,第一轮正式测试、第二轮回归测试、第三轮测试, 测试报告,测试总结,测试指南。
网络相关。最基本的网络基础知识,比如TCP/IP协议。
测试工具。包括三个大的类型,第一类是性能测试工具、自动化测试工具、测试管理 类工具。最起码的要求是熟悉工具的使用。
给你一个软件,比如QQ、QQ斗地主,你如何去测试。这类问题基本的思路是,从软 件质量模型、测试工具、测试方法、测试流程、探索式测试等角度先宏观解决,然后再具体微观讲 解用例如何设计等。
一个优秀/卓越的软件测试工程师应该具备哪些能力与素质,素质方面包括沟通、五 心工程师、追求完美等。 第十二类问题,最后一个问题,面试官一般会问你还有什么想问或者想要了解的。
总体上来说最重 要的是留下一个好的近因效应,就好比相亲的时候,分手离开的时候,留下好的最后的印象,基本 的思路应该分三种情况,第一种是面试官对你满意,自己也感觉不错的情况下,先表示感谢,然后 积极主动的问题,比如,非常感谢您给的这次机会,但是我还是想问,如果我有下一轮面试,我想 知道知道是什么时候,我应该再做哪些方面的准备。
京东一面 45min
1、自我介绍
2、挖项目
负责的工作,怎么实现?
是做的脱敏工作吗?
效果怎么样?
3、java
基本类型有哪些?(八种 char boolean byte short int long float double)
int 和 integer 有什么区别?(1、integer是int的包装类,int是基本数据类型 2、Integer必须实例化使用 3、Integer存的是一个指针指向一个对象 4、初始化时 int默认值是0,Integer是 null * 空指针)
4、数据库
Mysql是什么数据库?(关系型数据库)
mysql和mongoDB有什么区别?
distinct 、order by、count的用法
count(*) 和 count(1) 的区别
5、计网
京东app点击一个服务所经历的过程?(访问一个服务的过程)
6、测试
为什么做测试开发?
学习了测开的哪些知识?
如果有25个关键词需要关联查询,怎么测试?
写代码过程中有异常(空指针等错误),如何抛出异常?
你认为京东app的优缺点?
面试官建议:
1、多去了解软件测试的必备知识,而非教科书式回答,要理解透了再去形容
2、可以多去学一些消息中间件MQ、 JMQ、 redis、队列内存等知识
二面:25min
1、实习过吗?
做了什么?
举个例子讲一下
2、测试
怎么理解测试开发?
你认为你有哪些品质做测试开发?
白盒测试和单元测试有什么区别?
3、网络
为什么要分层?
路由算法有哪些?
IP报文头部内容?
4、java
集合有哪些?( java超常见的问题,每个公司必问)
List是否线程安全?
HR电话面:13min
1、自我介绍
2、项目
做了什么
和项目成员如何沟通
3、工作内容
干了哪些事
4、是否了解部门的测开工作
5、其他offer情况
6、为什么不做算法/开发
软件测试行业能称得上是经典的书,我感觉还挺多的。
《软件测试》、《软件测试的艺术》、《Google软件测试之道》、《mysql必知必会》 等等,这些书都被人视为软件测试的圣经。
但是对我而言,对我产生影响最大的书是 《移动app测试实战》 和
《腾讯Android自动化测试实战》
基础到进阶系统学习核心笔记2.0
测试技术面试题
点赞后,全套学习笔记获得入口:关注楼底公️号卡片⬇️⬇️⬇️⬇️⬇️程序员一凡或者戳DownLoad地址:http://b.nxw.so/1X6wJy
测试技巧有无数,但归根到底就是本文列举的两个方法。只要方法正确,加上平常掌握的技巧和使用的工具,没有什么BUG是找不到,也没有什么BUG是重现不出来的。
测试是一件非常有技术含量的工作,不是体力活,完全是脑力劳动。所以测试工程师平常一定要注意劳逸结合,只有保持冷静的头脑,才能把软件中的缺陷都找出来。
在前言的测试和开发关系小节中提到“正如一个优秀的开发人员,应该具备一些测试方面的知识和能力;一个优秀的测试人员,同样需要了解一些开发方面的知识。”测试人员在有时间的时候,可以学习一些开发方面的知识,编程语言有很多,开发思想却都是相同的。到了开发知识积累到一定程度之后,如果能对照代码进行测试,针对代码设计测试用例,效果会非常好。以后的白盒测试的时候也用得到这些知识。
如果一个软件的开发和测试过程中,开发人员能从测试人员的角度来进行开发工作,测试人员也能按照开发人员的想法来进行测试,那发布出去的软件,一定会是一个接近完美的软件。让我们通力合作,共同努力吧!!