前言
如果有真才实学,写个精通可以让面试官眼前一亮!
如果是瞎写?基本就要被狠狠地虐一把里!
最近在面试,我现在十分后悔在简历上写了“精通”二字…
先给大家看看我简历上的技能列表:
- 熟悉软件测试理论基础,熟悉软件测试的流程、方法,具备测试用例需求分析和设计能力
- 2年以上自动化测试经验;
- 熟悉python语言,熟悉Python自动化测试流程;
- 熟悉目前市面主流的自动化测试技术selenium,appium,unittest,pytest等
- 掌握web、接口、app自动化测试技术;
- 精通Linux操作,MySQL数据库使用;
面试官刚看完我的简历,就露出了诡异的笑容。(我当时就觉得不太妙)
HR连发三问:
“我看你简历写着你精通Linux和MySQL
问问: 多线程如何避免调用栈混乱的问题?”
”SQL 使用 Join 好,还是多次 Select 好?”
”1000 多万条数据,建了索引还是慢,该怎么办?”
“这些都没用过,怎么能说精通呢?”
像这样当场被问傻,然后“成功”丢掉面试的不在少数,究其原因,无外乎由于对业务的不熟悉,导致面试官一问立马露馅。虽然提前看过一些面试文章,但却无法在实际中恰当应用,到头来面试七八家,还是收不到一个offer,有些人甚至面试时看到Hr的表情就知道自己凉凉了……
为了帮助各位走出这个困扰,我特将自己当初换工作摸索出的经验进行了一番整理,包括面试准备、面试技巧,以及自己面试过程中遇到的问题解答思路等内容。
面试前的准备
1、 简历的几个注意事项
因为篇幅原因,简历的详细写法这里就不讲了。只讲几点需要注意的问题。
不要给自己挖坑
你要对你自己写的简历负责。因为面试时,面试官通常会拿着你的简历,问里边的各种细节。 技术细节、工作经历、项目情况等。你必须对自己写下的每个字后面的隐藏话题做充足的准备。
2、了解公司的相关情况
面试前应到公司的网站上或别的渠道,提前了解公司的企业背景、业务模式、主营产品等, 面试的时候就可以做到有的放矢。
3、最好找人帮你 Review 一下简历
因为简历就像自己写的程序,自己很难发现 bug,让别人以面试官的视角 review 一下,会发现一些意想不到的问题。找老师、同学、朋友都可以,不要怕麻烦。
4、找工作的主要网站和渠道
智联招聘/51job/英才网(传统)
拉钩(相对较新)
猎聘网(高级人才)
v2ex(酷工作)
BOSS 直聘(直接和 BOSS 聊)
相关的社群
5、想好3分钟的自我介绍 案例:
你好,我叫xxx,今天来面试贵公司的软件测试工程师岗位,接下来,我介绍一下我自己。
(提前知道和了解企业的招聘要求和技能要求,提前做好应对,技能点描述要有针对性)
1)我会Linux系统操作和相关命令的使用,项目中搭建过测试环境。
2)用过MySQL数据库,使用SQL语句进行数据查询,有时候测试需要进行提交数据和查询数据的对比时,在数据库中查询数据。
3)我会Python开发语言,可以用于Selenium的测试脚本编写。项目要求对一部分固定的功能进行自动化测试脚本的实现,使用unittest框架,脚本中插入断言和引入外部数据文件,导出过测试报告。
4)按照项目要求,对系统传输中的敏感数据进行检查和对比。会使用Postman进行接口的数据请求和查看服务器的响应结果,使用Fiddler进行数据抓包,分析敏感数据是否进行加密处理。
5)项目中配合开发和运维做系统的一些性能测试。使用JMeter/Loadrunner对系统的操作复杂和高并发业务进行性能测试的执行。
6)项目中,我全程参与了需求评审,测试计划的设定,编写测试用例,执行测试、提交Bug,我们都用禅道/JIRA进行用例和缺陷的管理和跟踪。
7)对于测试中要搭建的测试开发的框架Selenium、requests、APPium,环境自己搭建。
最近做过的一个项目是XXXXX管理系统,在其中负责XXXX模块的测试工作,他的主要功能是XXXX,设计和编写了XXX条用例,发现了XXX个bug。
以上是我的自我介绍,面试官,您看有什么需要我补充的,或者您想要知道更详细的?
面试中的笔试
各个公司的笔试均不同,测试开发的要求也各不相同,但是核心技术都包括了操作系统、TCP/IP协议、自动化测试、Python基础,部分公司会有逻辑题或是智力题。软件测试的定义、流程考得比较多。
笔试完后与面试官的交谈
切忌不会就如实说这个问题我不是很了解或是不会,绕开话题,或是请教面试官
多认同面试官说的正确观点和看法以及讲得很好的地方就表现你赞赏的态度,那样面试官就会觉得和你沟通很愉快。同时也会很欣赏你是一个善于倾听他人意见的人,懂得如何汲取别人好的建议和看法。
表达自己的主观看法时就应该很有主见的说出来
面试后做好复盘
复盘很重要,没有复盘的行动往往是无效的,因为没有经过总结和沉淀。大家要养成经常复盘的习惯。面试的复盘我们可以这样做:
1、复盘自己在面试中的所有问题及答案
分别记录下 HR 面试问题和技术面试问题及回答
关于面试官的提问,你是否还可以做出更好的回答?
2、写面经总结
最好将以上内容写成一篇面试总结,存在笔记里。比如形成这样的一本“求职笔记本”,—去牛客网、CSDN上分享面经,把这个过程中所有的收获都记录下来。在以后面试时这些经验就是最好的资料库。
3、总结规律并重新备战
在整个复盘中,我们特别要注意如何通过强逻辑的表达最大化证明自己与应聘岗位的高度拟合。前面提到的STAR法是个很好的方式。
STAR是缩写,代表了回答这类问题的四个步骤
Situation (S) – 事情的状况是什么
Task (T) – 你需要完成什么具体的任务
Action (A) – 你采取了什么行动
Results ® – 最终取得了什么成果
对每个问题的回答得控制在2-3分钟以内。在这很短的叙述例子的过程中,你的重点应该是强调Action和Result,这是面试官最关心的部分。所以在时间分配上,对于Situation和Task你要非常简洁地一笔带过,交代清楚大概的背景就可以了。
测试开发岗面试真题
来源与网易、美团、360、头条、腾讯、字节跳动等公司面试真题,整理自牛客网、掘金、思否。
测试基础考点
1、Bug必填字段
2、简述一下BUG的生命周期?
3、你认为做好测试用例工作的关键是什么?
4、一套完整的测试应该由哪些阶段组成?
5、软件验收测试包括?
6、系统测试的策略有?
7、编写测试报告
8、描述软件测试活动的生命周期?
9、简述软件测试中的“80-20原则”。
10、一个缺陷测试报告的组成
11、什么是压力测试?压力测试需要考虑哪些因素?
12、软件测试的目的是什么?
13、黑盒测试用例设计常用方法
14、单元测试、集成测试、系统测试、验收测试、回归测试这几步最重要的是哪一步?
15、请说一下手动测试与自动化测试的优缺点
16、怎么实施自动化测试
17、什么是压力测试?压力测试需要考虑哪些因素?
18、谈谈你对 CI/CD 的理解
19、你觉得软件测试工程师在一个团队中,都需要做什么?有什么价值?
……
自动化测试常见考点
1、了解过哪些自动化测试框架,就是到会用的程度?
2、你会封装自动化测试框架吗?
3、你觉得自动化测试最大的缺陷是什么?
4、什么是兼容性测试?兼容性测试侧重哪些方面?
5、我现在有个程序,发现在 Windows 上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?
6、自动化代码中,用到了哪些设计模式?
7、测试的策略有哪些?
8、描述测试用例设计的完整过程?
9、上一个项目中自动化测试的执行策略?
10、在上一家公司做自动化测试用的什么框架?
11、怎么对含有验证码的功能进行自动化测试?
12、如何优化和提高 Selenium 脚本的执行速度?
13、遇到alert弹出窗如何处理?
14、元素定位方法你熟悉的有哪些?
15、Seleinum是否有读取excel文件的库
16、举例一下你遇到过那些异常,在selenium自动化测试过程中
17、你查找元素遇到过在Frame里面吗?你是如何处理Frame里面元素定位的?
18、在执行脚本过程,如何实现当前元素高亮显示?
19、你知道哪些测试自动化的脚本技术?
20、PO模型是怎么做的?
……
性能测试常见考点
1、性能测试的应用领域有哪些?
2、性能测试包含了哪些软件测试(至少举出3种)?
3、交付一个性能测试项目,请阐述你的性能测试流程
4、如何理解压力测试,负载测试以及性能测试?
5、jmeter如何设计性能测试场景?
6、介绍 JMeter 聚合报告包括哪些内容?
7、解释5个常用的性能指标的名称与具体含义。
8、你在性能测试中遇到哪些性能问题?
9、举例说明jmeter的定时器用法?
10、什么是性能测试?
11、什么是上下文切换?哪些场景会存在上下文切换?
12、如何用命令行生成测试报告?jtl文件怎么分析?
13、性能测试中Linux命令
14、什么时候可以开始执行性能测试?
15、简述性能测试的步骤。
16、性能测试时,是不是必须进行参数化?为什么要创建参数?
17、描述不同的角色(用户、产品开发人员、系统管理员)各自关注的软件性能要点
……
接口测试常见考点
1、目前市面上流行的接口大多有哪几种协议的接口?
2、http协议有什么特点,能说说这些特点体现在哪些方面吗?
3、postman中如何实现接口之间的关联?
4、若请求的接口需要先登录后方可请求,如何进行接口测试?
5、dubbo接口如何测试?
6、接口测试断言从哪些方面去设计?
7、接口测试如何设计测试用例?
8、接口测试执行中需要比对数据库吗?
9、接口产生的垃圾数据如何清理
10、依赖于第三方数据的接口如何进行测试?
11、API测试有哪些优势?
12、接口调不通,如何去排查?
13、请简述一下cookie、session以及token的区别
……
计算机网络常见考点
1、tcp、udp属于哪层,区别,应用
2、你知道的什么软件是用tcp协议什么软件是用UDP协议
3、TCP三次握手四次挥手的过程及状态, 三次握手?两次会怎样?四次挥手?3次会怎样?TIME_WAIT出现在哪 为什么要有TIME_WAIT
4、http状态码 了解https嘛?说一说原理,http请求,ARP请求
5、http和https的区别 https的加密方式
6、get,post区别
7、cookie,session区别,应用场景
8、OSI七层模型
9、arp攻击
10、如何修改自己的mac地址
11、开机启动操作系统做了哪些事情
12、消息队列接口参数是什么
13、网页没有正确显示原因是什么
14、浏览器发送的超文本都有哪些文件
15、浏览器请求,浏览器输入一个连接,到展示到页面,经过了什么
Linux命令常见考点
1、查看进程/查询进程状态,查看当前哪些进程占用了8080端口
2、查看一个端口的占用情况,并杀死占用的进程
3、Linux下查看进程会ps,netstate,lsof,top说了一堆。
4、统计字符串出现次数
5、查找
6、新建文件
7、查看文件
8、修改文件
9、插入
10、跳转到某一行
11、替换
12、JMM
13、JC
14、Linux熟悉哪些指令。
15、linux指令(for循环输出1-100)
16、给出很多串信息 包含ip url info 等信息 info包含error等状态码 用Linux命令统计出每个url对应的error概率(属实不会 连问题都没太能记得清 自闭了)
17、windowns下如何查看进程
MySQL数据库常见考点
1、SQL使用having
2、数据库外键
3、创建索引、索引的分类
4、索引的作用,索引何时无效
5、索引和存储过程
6、数据库增删查改
7、Drop和Delete的区别
8、MYSQL关系型和非关系的有什么区别
9、MYSQL 查询语句 where 两张表的连接 降序排序 MySQL熟悉哪些函数
10、MYSQL索引作用是什么,建立索引的原则,索引失效,索引建的越多越好吗,索引的底层结构
11、给出一个学生表,其中包括学生ID,班级,学生成绩。
12、找出多名学生成绩大于90分的班级
手写SQL
1、从一张用户信息表中统计出年龄最大的10个人(limit+order by)
2、三门课总成绩大于85的学生
3、数据库里面选出语文最高分
Python
1、python的一些高级特性,知不知道设计模式啊。
2、Python数据结构讲下,元组和列表的区别
3、Python中可变与不可变
4、有一组序列号,每个序列号都是整型变量,如果一个序列号出错,后面的序列号都有可能出错,请找出第一个出错的序列号所在的位置
5、括号匹配问题(问了栈和队列的区别)