前言
最近面试了大大小小好几个公司,也收到了自己满意的offer。从中最大的感悟就是,机会真的是给有准备的人,对于每场面试一定都要好好准备,不要以应付的心态去参加面试,这样才能尊重你自己也尊重面试官。
经过这个多场面试,发现其实是可以抽取出一些经常会被问到的问题的,因此写下这篇文章,将一些经典问题整理下来,希望对正在准备或者在面试的你们有帮助。
测试知识相关问题
这个部分汇总的是软件测试知识相关或者衍生的一些题目。
Q:简述一下软件测试流程(重要程度:五颗星)
解读:说出每个关键阶段,并说出每个阶段测试人员的工作内容,最好能加入自己的理解。
A:软件测试整个流程为:需求分析->测试计划/策略制定->编写测试用例->执行测试用例->发送阶段性报告->缺陷管理->回归测试->性能、压测等测试->提交验收->上线-> 收集用户反馈->项目总结
需求分析:在这个阶段,测试人员需要清楚了解需求的定义以及内容;对需求进行分解拆解,让需求了然于心;评估新需求与旧需求之间是否有冲突;对开发提供的开发方案进行评估,评估选用的框架是否合理,是否存在什么隐患(可以根据之前的测试总结);
测试计划/策略制定:根据新需求的内容制定测试策略与方案、根据软件的主要节点制定详细的测试计划
编写测试用例:根据测试方案与策略、需求编写测试用例;组织相关人员进行评审(相关人员包括开发、产品经理)
执行测试用例、发送阶段性报告、缺陷管理、回归测试:常规步骤不展开
性能、压测等测试:在基本功能的实现得到保证后,就开始对功能的可靠性和性能等方面进行测试
提交验收&&上线:按照流程交由制定人员进行验收(比如产品经理),如果验收通过就进行上线
收集用户反馈:通过各个渠道收集用户反馈,然后进行问题复现以及跟踪
项目总结:对整个测试过程进行复盘,包括出现了哪些问题是如何解决的;哪些地方是bug重灾区;bug数量有没有收敛;用户反馈问题为什么内部测试没有测试到,有什么覆盖方案等等。
Q:用例的几要素
A:软件/项目名称;软件/项目版本;功能模块名;用例简单描述(包括执行的目的以及方法);测试用例参考信息;本测试用例与其他用例键的依赖关系;前提条件;用例编号;详细描述步骤;预期结果和实际结果;开发人员和测试人员;测试执行日期
Q:bug描述的要素
A:前置条件、具体步骤、实际结果、预期结果、现场备注、版本号、出现概率等等
Q:从哪些方面测试一个app
A:百度后整理的答案(会有缺漏)
自动化框架相关问题
要对自己简历上提及的自动化框架有一定的了解,不要只是会用而已;下面以appium的框架为例子整理几个问题
Q:appium的工作原理
Q:appium获取id有哪些方法
Q:switchContext()的作用
Q:appium中unlock的原理
Q:appium中恢复wifi的api是什么
从提问的问题可以看出,平常在做自动化的时候应该需要去留意下底层的实现方法、了解一些实现原理,而不要停留在只会调用api的面上
代码相关问题
不会代码的测试人员是没有什么竞争力的,在面试前可以就一门你最熟练的语言进行准备。因为不是面试开发,所以问题一般都是一些比较简单的问题。
Q:反射的作用
Q:多线程的有几种实现方式,分别是什么
Q:继承和多态分别是什么,区别是什么
Q:String、StringBuffer和StringBuilder的区别
Q:实现一种排序算法(较常问到的是快速排序)
Q:文件的读写流程是什么(手写代码)
问题都不是特别难,都是一些知识点,但是需要好好准备,这些问题点比较细,需要温习一遍,才不会被问到的时候一急啥都想不出来。手写代码不会太难的,都是一些基本的代码,比如文件读写这种基本的代码
思维、项目管理相关问题
这一类问题主要考察你的思维方式以及你平常是否有总结,以及你的协作、处理问题能力
Q:你是否有优化过流程
(如果你没有优化过流程,你可以将话题转移到你优化过的一些小点;如果实在没有,你可以想一个你觉得你们公司现阶段很好的流程是哪个并且要说明为什么)
Q:你觉得你在你们组内是水平是怎么样的
(要怀着一个自信但不自傲的态度回答这个问题)
Q:用几句话说明你为什么适合这个岗位
(我觉得这个点无论面试官是否问,你都必须在面试前就想清楚。想清楚你为什么适合这个岗位,并且在整个面试中突出你的这个优点)
Q:如果开发不解决bug,你怎么办
(单纯说出解决方法是可以的,但是会遗留很多坑让面试官问你。可以建议从开发为什么不解决bug的原因进行总结,然后再针对原因进行提出方法)
Q:你觉得你最满意的一个项目是什么
(挑自己最满意的,重点说出为什么满意,你为这个项目作出了什么努力,达到了什么效果,你最后收获了什么。这个问题的出现概率很高)
专业问题
其他问题都是跟你所投的岗位紧紧相关了。如果你投的是网页端测试,那你就需要去着重准备HTTP协议等网络内容;如果岗位上有要求会数据库,那你就需要对数据库的知识进行复习了。
其他
找工作的时候一定要保持好心态
在这个期间,很容易出现焦躁的心态,经常会怀疑自己,“为什么没人要我”“我很差吗”。有时候并不是你差,而是你不是那家公司的最合适人选,你不是万金油,不是符合每个岗位的。
每一次面试完都要进行总结
每一次面试完都要进行总结。对不懂的问题进行回顾,记录下来并查清楚答案,以免下次再被问到还是不会。通过回答不上来的问题可以发现自己是哪些方面的知识比较薄弱,可以借此进行补漏。对自己在面试中回答的比较好的问题进行记录,发现自己的优点,在之后的面试中继续发扬自己好的一面。
不要一天面试超过一家公司
面试是需要花费大量精力的,而且你的精力是有限的,一下子让你去应对那么多人,你会出现精神疲劳会容易表现不出你最好的一面。面试只有短短的几十分钟,你一定要让你自己在那几十分钟里面表现出最佳的一面。还有,如果你第一家公司面试结果不佳,可能会影响到你接下来的其他面试,很容易出现“失败三连”的。
要选择性忘记
每次面试完并且做完总结之后,就不要再去想,不要想“我那个问题回答那样好尴尬啊”“面试官当时那个表情是什么意思”“我不知道我能不能过”。这些情绪上的问题都不要再去想,要做到面完一家“忘记”一家,把精力投入到下家的面试才是王道。