这样的面试你能通过吗

近两周我的面试非常多,大概一天一个。我是二面面试官,一面是技术面,有一定的难度。按道理来说二面的通过率应该比较高才对,不过最近的二面通过率可能不到50%,一面的通过率一般比较稳定保持在30%以下,所以两面全过的概率大概只有15%左右,可能更低。

那么二面的通过率为什么那么低呢?我想举几个例子就可以说明了。

二面我一般都会问一道用例设计题,大概是给你一袋盐,或者给你一件衣服,写出一些测试用例。

我的心理预期是15个可执行的用例。

有的候选人是这么回答的。

假如是一袋盐,那么要看看装盐的袋子是不是会漏?

这时候我一般会反问,那应该是要漏还是不要漏?很多候选人这时候会愣住,可能完全意识不到我为什么会这么问。

我这么问是因为我有个怪癖,那就是我希望测试用例都是可以执行的。可以执行的意思是,你要告诉我你究竟是希望袋子漏还是不漏。如果你希望袋子是不漏的,那么袋子漏的时候测试用例就是不通过的,反之也成立。如果你告诉我看看袋子漏不漏,那么因为我是很笨的,我不知道如何去执行这个用例,因为我不知道袋子究竟是需要漏呢还是不能漏。

与之类似的,在测试衣服的时候,有的候选人会回答要看衣服的尺码是不是合适。那么我会反问,对于L号,衣服多长是合适,多长又是不合适呢?这是因为合适不合适是没有执行标准的,对于一个身高不高的人——比如1米49家穷人丑的我——来说,L号是不合适的,太长了。而对于身材匀称的其他人来说,L应该是合适的。所以合不合适没法量化,加上又有模棱两可的是不是这样的词语推波助澜,这种用例执行起来是相当困难的。

所以写用例,要想可执行,首先的第一条原则是,不要包含一些似是而非的词语,比如是不是,要不要,有没有之类的。换句话说,就是用例里大概率要么包含是,要么包含不是这样的词。

比如

装盐的袋子不能(不是)漏

衣服的颜色是红的

衣服的材料是80%的棉,20%的涤纶

像这样的是或者不是的句型,我们可以称之为断言。

上面是最基本的用例设计,主要考察的是思维的全面程度,以及设计用例的最基本要求——可以执行,没有歧义。另外我还喜欢根据候选人的经历去问一些稍微有技术深度的问题。

如果候选人有性能测试的经验,那么我会问他关于他被测系统的系统架构问题,架构图起码大致要能画出来。这是因为如果不了解系统的架构,那么测试环境搭建,测试策略的选择都会难以下手,测试的结果也比较难有可信度。

如果候选人的简历上写有精通/熟悉mysql调优,那么我就会问为什么mysql用主键去查询会很快?mysql的主键和数据都是怎么存储的?能不能画一下mysql的B+树的大体结构?什么是联合索引?给你几个真实的例子,你能告诉我索引命中的情况不?这些问题其实做过mysql性能调优的同学应该大体都会,没做过的话可能就是强人锁男了。

简历上写精通python的同学我大概率会让他在现场写一个生成器的例子,并介绍一下生成器的主要应用场景。写精通selenium测试的候选人我会随便开个网页,指定个元素让其当场定位。写精通appium的同学我会让其解释appium协议与webdriver协议最大的不同点。诸如此类,在兼顾考察广度的情况下顺便考察深度。

看上去是不是很难?😭😭😭😭😭😭😭😭😭😭😭😭

其实不然。基本上我不是很关注候选人技术深度题有没有答出来,如果是二面的话。大部分情况下,候选人无法通过面试的原因大抵都是用例设计能力不过关。要么设计的不够全面,要么就是基本没有可执行性。

技术不好的话其实是可以教的,用例设计的不好那么入职以后可能还没等到好好教就出线上问题了。

写好每一条用例,大概应该是很多测试同学厚积薄发的第一步吧。

最后:

欢迎关注公众号:程序员阿沐,领取一份Python自动化测试工程师核心知识点总结!

这些资料的内容都是面试时面试官必问的知识点,篇章包括了很多知识点,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

当然可以!以下是一些Java面试的常见问题和答案: 1. 什么是Java? Java是一种级编程语言,被广泛用于开发跨平台应用程序。Java的一个重要特点是它的可移植性,这意味着Java代码可以在不同的操作系统和硬件平台上运行。 2. 什么是Java虚拟机(JVM)? JVM是Java虚拟机的缩写,是Java程序的基础运行环境。JVM负责将Java字节码翻译成可执行的机器代码,并提供内存管理和垃圾回收等功能。 3. 什么是Java的多态性? Java的多态性是指同一种行为可以由不同的对象定义和实现。这种特性可以提代码的灵活性和可维护性。 4. 什么是Java的继承? Java的继承是指一个类可以从另一个类中继承属性和方法。这样,子类就可以重用父类的代码,并且可以添加自己的特定功能。 5. 什么是Java的封装? Java的封装是指将类的内部实现细节隐藏起来,只暴露出公共的方法和属性。这样,用户只能通过公共接口来访问类的功能,从而提了代码的安全性和可维护性。 6. 什么是Java的多线程? Java的多线程是指一个程序可以同时执行多个线程。这样,程序可以更加效地利用CPU资源,并且可以实现一些并发操作。 7. 什么是Java的异常处理? Java的异常处理是指处理程序在执行过程中可能出现的错误。Java提供了一些异常类来表示不同类型的错误,并且可以通过try-catch语句来处理这些异常。 8. 什么是Java的集合框架? Java的集合框架是指一组类和接口,用于存储和操作一组对象。Java提供了各种集合类,例如List、Set和Map等,可以根据具体的需求来选择使用。 希望这些问题和答案能够帮助你在Java面试中取得成功。祝你好运!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值