你好 我是懂java的测试
前言
最近,有位朋友找到我,让我给他做模拟面试,优化一下简历。分为上下两篇详细介绍这位面试者的基本情况和遇到的面试题。对过程感兴趣的同学可观看模拟测试之手把手教你如何润色简历视频。
模拟面试背景
先简单聊聊这位朋友的背景,5年左右的php开发经验,专业是信息管理与信息系统,统招本科学历。
目前php语言已经江河日下,市场占有率很低,也不想学习新的开发语言,想找个测试岗位躺平,因为没有测试经验,所以想让我给他做面试辅导。
全流程包括模拟面试+个性化包装简历+面试问题回答等,前后将近5小时左右。
目前在武汉已收获一家物流大公司的offer,14k左右。
截图和文章内容已征求当事人同意发布。
面试题解答
面试者面试遇到的难题非常积极和我沟通,有些小伙伴可能心疼我太忙,没时间回答问题,其实不是,我是那种特别喜欢面试的人,也就是俗称“面霸”,每次跳槽我都要面试十几家左右,即使工作中,我偶尔也会请假出去面试,一方面想看看目前的市场行情,另一方面也是通过面试不断发现并改善自己知识体系的薄弱点,同时我觉得这是一种特别快速的变现方式。
面试题分享
这位小伙伴面试很多家,也记录了大部分的面试题,鉴于篇幅有限,只能挑选经典常见的面试题,并给出对应的答案,想要获取更多面试题,关注公众号 懂java的测试,回复“面试题”。
测试基础方面
1、给你某个场景,说说你从哪些方面进行测试,测试哪些内容,
答:如截图,大部分设计测试用例题目都脱离不了以下几点。
2、说一下你们公司的测试流程
答:基础面试题,培训班都教过。
3、怎么检查一个用例是一个合格的用例,有没有一个checklist
答:整体完备性:“好的”测试用例一定是一个完备的整体,是有效测试用例组成的集合,能够完全覆盖测试需求。
等价类划分的准确性:指的是对于每个等价类都能保证只要其中一个输入测试通过,其他输入也一定测试通过。
等价类集合的完备性:需要保证所有可能的边界值和边界条件都已经正确识别。
4、测试计划编写了哪些内容?是根据什么原则进行分配的人员,以及一个时间安排
答:基础面试题,自行百度
5、在进行测试工作时,有没有和开发之间出现过什么问题,怎么解决的
项目出现延期风险,怎么办?
答:公众号面试帖子说了很多次,可去回顾。
6、如果你现在需要你测试一个全新的业务,你会从哪些方面来尽快熟悉新业务
答:首先会去和对应的产品或开发沟通,寻要响应的文档,比如需求文档、接口文档等,并大致浏览一遍
其次,可以拿着测试环境的账号,在测试环境走一遍主流程,顺便看看后台项目日志打印的情况,先熟悉整个流程,再对每个细节去深挖。
如果对开发语言比较了解,建议拉取代码,进行代码走读。
7、你们项目的迭代频率大概多久一个版本?
答:每个公司频率不一样,创业公司,恨不得一周2、3个版本,传统业务公司,可能2周一个版本,或者一个月一个版本。
8、每个迭代版本你们会测试哪些内容(方面)?
答:看项目情况,一般功能测试是最基本的,其中包括ui、接口测试等
App端、web端的项目可能会有兼容性测试。并发比较大,有性能测试。
对于一些安全性较高的软件,譬如党政军使用的软件,可能会有安全性测试。
9、你在部署测试环境的时候,有遇到过什么问题吗?怎么解决的
答:服务器之间ip不通,可能是防火墙限制或不在一个机房,找运维或其他人,开通防火墙和网段即可。
软件或基础工具版本不兼容,如jdk版本、mysql版本等等问题。
10、你们组长负责什么,是怎么给你们分工的
答:看项目情况,大部分情况下,组长分配任务,有些组长可能自己也参与测试,分配任务主要对测试者的水平和需求的难易程度进行匹配。
11、怎么设计的接口测试用例
12、有没有自己开发过一些能够提升测试效率的工具
答:只要用代码开发的工具提高了测试效率的工具都可以说,哪怕是简单的造数据工具都行
13、说一说你们接口测试的流程
答:和基本的功能测试流程一样
14、app测试和web测试的区别
答:架构不同:web端是b/s架构的,app端是c/s架构的,版本发布的方式和流程不同:web发版本,开发部署新的代码到对应服务器地址,就可统一实现web端的更新app发版本,开发需要打包(apk包和ipa包),打包之后需要发布到对应的渠道。兼容性:web,测试不同浏览器的兼容性(ie、chrome、firefox、360、QQ),app测试不同的分辨率、屏幕尺寸、手机品牌、系统版本,
性能方面:web,测试响应的时间,app,测试响应时间、流量、耗电量、CPU、GPU、memory
安全性:web,sql注入。xss攻击等。app,https加密、签名、加固、密码加密等
mysql
1、怎么复制一个表内容到另一个表,写一个sql语句
答:INSERT INTO 新表 SELECT * FROM 旧表
2、有一个成绩表,分别有学生,科目,分数字段,查询不同分数下面的总人数大于80人,按总人数倒序展示,取前10条(还有其它的,大概都是类型的,会考察连表查询,group by ,having,聚合函数,limit这些)
答:select 分数字段,count(*) as c from 成绩表 group by 分数字段 having c > 8 order by c desc limit 10;
3、truncate和delete的区别,drop呢
drop(丢弃数据): drop table 表名 ,直接将表都删除掉,在删除表的时候使用。
truncate (清空数据) : truncate table 表名 ,只删除表中的数据,再插入数据的时候自增长id又从1开始,在清空表中数据的时候使用。
delete(删除数据) : delete from 表名 where 列名=值,删除某一列的数据,如果不加 where 子句和truncate table 表名作用类似。
4、mysql插入用什么语句,具体一点(回答insert into 表名 (列名) values (字段值)),什么情况下可以不写列名?
答:values后面跟全部字段、某些自增字段是不用写列名。
linux
1、vim查看文件后,按哪个键进行输入,怎么查找某个字符串,怎么保存,怎么放弃修改(类似问题:我想修改某个文件的内容,怎么修改)
答:vim 某个文件,按“i” 进行输入,输入或修改完成,点击esc退出插入模式,点击shift+:+w是保存文件,点击shift+:+q是直接退出文件。
2、linux下的权限命令,21代表什么,777代表什么
答:r(读):4、w(写):2、x(可执行):1,21就是 可写可执行,777就是可读可写可执行,具体linux 相关基础执行 可点击以下链接查看:
http://c.biancheng.net/view/753.html
3、统计nginx日志里面http状态码为200的请求数量有多少个
答:
awk "{if($12=="200")sum[$1," "$12]++}END{for(ip_num in sum)print ip_num,sum[ip_num]}" access.log |sort -rn -k 2|head -10
4、awk命令了解吗,说说你的了解
答:如上,主要用于日常文件统计场景,
5、如果现在发现服务器CPU过高,你怎么处理
答:先top可看那个进程占用资源高
由图可知,17683 java 进程占用资源较高,
top -Hp 17683
H 代表查看线程视图,p 用来指定具体的进程 ID,上面的命令就是用来查看 ID 为 1683 的进程里所有线程的执行情况。
17706 线程占用cpu资源最多
printf "%x\n" 17706
452a
将十进制的线程 ID(17706)转换成十六进制(452a)
有了十六进制的线程 ID 以后,就可以通过 jstack 命令来精确定位导致 CPU 飙高的代码了。
jstack 17683|grep -A 20 452a
6、怎么查看某个端口被哪个进程占用
答:lsof -i:80或netstat -tunpl | grep 80
加我微信lvceshikaifa,免费面试辅导、学习资料、简历模板获取、加入学习群。