今日头条面试真题及答案——软件测试工程师面试秘籍

2018年今日头条面试真题及答案

试题1.在浏览器地址栏里输入一个网址,接下来会发生什么?

答案:发生的操作如下。

(1)浏览器查找该网址的IP地址。

(2)浏览器根据解析得到的IP地址向Web服务器发送一个HTTP请求。

(3)服务器收到请求并进行处理。

(4)服务器返回一个响应。

(5)浏览器对该响应进行解码,并渲染显示页面。

(6)页面显示完成后,浏览器发送异步请求。

试题2.说明Java里内存泄漏和溢出的区别。

答案:内存溢出(out of memory)是指程序在申请内存时,没有足够的内存空间可供使用。

内存泄漏(memory leak)是指程序在申请内存后,无法释放已申请的内存空间。一次内存泄漏的危害可以忽略,但内存泄漏堆积的后果很严重,无论计算机有多少内存,迟早会被用完。

内存泄漏最终会导致内存溢出。

试题3.写一个Java的单例模式。

答案:如图3.18所示。

今日头条面试真题及答案——软件测试工程师面试秘籍_第1张图片

图3.18 答案

试题4.假设有两个容积分别为5L和6L的桶,最后如何只装3L水?

答案:具体方法如下。

(1)取6L水,倒进5L桶里,即得到6L桶里余下的1L水。

(2)把5L桶清空,把取到的1L水放进5L桶里并保留不动,取6L水,倒进5L桶里,6L桶得到的是2L水,把5L桶清空,存放这2L水。

(3)5L桶中有2L水,再取6L水,倒进5L桶里,倒进的水为6L-3L=3L,5L桶就装满了,6L桶里余下的刚好是3L水。

试题5.指出Web测试和App测试的不同点。

答案:在兼容性方面,Web考虑浏览器,App除了考虑不同的手机机型外,还要考虑App的版本。

在网络方面,App要考虑使用的是3G、4G还是Wi-Fi网络等。

2018年美团面试真题及答案

试题1.说明抽象类和接口的区别。

答案:抽象类用于捕捉子类的通用特性。它不能实例化,只能用作子类的超类。抽象类用于创建继承层级里子类的模板。

接口是抽象方法的集合。如果一个类实现了某个接口,它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情。

试题2.假如测试人员说程序有bug,而开发人员偏偏说没有,该怎么处理?

答案:用数据说话,找需求分析师验收。

试题3.Android系统的四大组件是什么?

答案:四大组件为Activity、Service、BroadCastReceiver、ContentProvider,它们是Android系统的基础。

试题4.Java的异常处理是怎样实现的?

答案:Java的异常处理通过try、catch、finally、throw、throws关键字来实现。

试题5.多态是怎么体现的?

答案:多态,就是指重载和重写。重载发生在一个类中;重写发生在子类中,即子类重写父类相同名称的方法。

试题6.设计一个测试计划,包括测试进度和所需要人员。

答案:测试计划如下。

(1)测试人员前期参与需求评审。

(2)测试、开发人员参与系统分析评审。

(3)测试人员设计用例,并与开发、产品人员一起评审。

(4)开发提测后,执行测试、反馈、验证。

(5)测试和产品人员一起做预发验收。

(6)发布。

2019年美团面试真题及答案

试题1.有10个瓶子,每个瓶子中有1000片药,每瓶中的每片药可能重1g,也可能重0.9g,但不确定几瓶中的每片药是0.9g的。

有一台电子秤,精度为0.1g,问称一次怎么确定哪些瓶子中的每片药是0.9g的?

分析:对该题目分解,由于不确定是几瓶,情况比较复杂,我们先从简单的地方开始考虑问题,将问题分解为热身题和进阶题。

(1)热身题:有10个瓶子,每个瓶子有1000片药,每瓶中的每片药可能重1g,也可能重0.9g,一瓶中的每片药重0.9g的。有一杆秤,精度为0.1g,称一次怎么确定哪个瓶子中的每片药是0.9g的?

(2)进阶题:有10个瓶子,每个瓶子有1000片药,每瓶中的每片药可能重1g,也可能重0.9g,两瓶中的每片药重0.9g的。有一杆秤,精度为0.1g,称一次怎么确定哪两个瓶子中的每片药重0.9g?

答案:对于问题(1),若只有一个瓶子中每片药为0.9g,应该如何解决这个问题?因为只能称一次,所以思路是如何在一次称重中通过得到的结果显示出标记的瓶子的序号。若只能称一次,如何做?

其实我们知道两种药片重量差0.1g,从第1个瓶子中取1片,从第2个瓶子中取2片,第1个瓶子中的一片药比1g少0.1g,那么第1个瓶子中的每片药重0.9g。

如果第2个瓶子中的两片药比2g少0.2g,那么第2个瓶子中的每片药重0.9g,所以问题(1)很容易解决,分别取1片、2片,……,10片即可。

对于问题(2),重点在于需要对前面的问题两两组合,使得接下来的药片数目区别于前面两种瓶子可能组合的结果。

问题(2),分别取1片、2片、4片、7片、10片、13片、16片……

对于最终的问题,读者应该有思路了,即需要区别于前面所有的组合。

因此,分别取1片、2片、4片、8片、16片、32片……

这些片数正好是2的n次方,对于第10瓶,取29片,即512片,这也是为什么这个题中是1000片,10瓶。

试题2.给你两个玻璃球,有一栋100层高的大楼,玻璃球摔碎的条件是什么?

答案:每次肯定由低的楼层往高的楼层尝试,直到在楼层f(k),第一个球已经碎掉了,记录上一个尝试的楼层为f(k-1),在此楼层,玻璃球不会碎,所以接下来要尝试f(k-1)+1, f(k-1)+2, f(k-3)+3,……直到有一个楼层碎了,最坏的是到达了f(k) -1层。

接下来的解决方案就很容易想出了。既然在第一步(确定临界段)投掷玻璃球的次数不断增加,我们就让第二步(确定临界层)的楼层数随着第一步的次数增加而减少。

第一步的投掷数是一次一次增加的,那就让第二步的投掷数一次一次减少。假设第一次投掷的层数是f,转换成数学模型,f+(f-1)+…+2+1就表示从f开始猜,每次的增量都比前一次的增量减1的情况下,最后猜的那个数(即f+(f-1)+…+2+1),按照题义要求f+(f-1)+…+ 2+1≥99,即f-(f+1)/2≥99(第一次测试点选择100层是无意义的,必然会碎,并且无任何测试价值,所以第一次测试点k是1~99的一个数),求出f>13.5。丢下第一个玻璃球的楼层数就分别是14、27、39、50、60、69、77、84、90、95、99。

前面为什么是f+(f-1)+…+2+1≥99?首先,为了分段确定临界段,我们就要保证不管玻璃球在哪一个临界段碎掉,进行判断的次数是一样的,所以就需要从下到上每一个段比上一个段的长度少1,同时所有段的长度总和是99(不需要是100,因为如果前面都没碎,那么100也不需要再判断了)。

不等式右侧为什么是99呢?其实,不管使用99还是100,最后结果是一样的,只不过99更容易理解,因为如果你都已经到了99层了,可玻璃球还是没有碎,那么答案就肯定是100了,所以100就不用猜了。如果面试的时候说一下99和100的关系,就说明你够聪明,至于到底用100还是99,不同的人理解不一样。

首次,如果选择14楼,那么最高可以判断到呢?按照数列{14,27,39,50,60,69,77,84,90,95,99,102,104,105},一共猜14次,最后是105层。按照上面99和100的关系,虽然猜了14次,但是最后一次猜到了105层,可知如果在105层玻璃球还不碎,那么肯定在第106层玻璃球摔碎。14次最大可以判断到第106层,于是15次就要从15开始猜,并且如果有107层,那么需要15次。

如果在第27层玻璃球碎了,则要从15层开始一层一层地尝试,而如果在第26层玻璃球碎了,那么猜的序列就是{14,27,15,16,17,18,19,20,21,22,23,24,25,26},一共猜了14次。

该题为什么不能用二分法?用二分法是否最多7次就可以搞定了?该题要求你最多只能用两个玻璃球来判断玻璃球碎掉时临界的楼层。如果用二分法,第一步在第50层一扔就碎掉了,那么你只能从第1层开始扔了,要进行50次判断(如果你接着在第25层扔,最后一个玻璃球碎掉,你就没有球可以用了),所以在这里并不适合用二分法。

因此,我们只能像上面一样想用第一个玻璃球去确定一个区间,然后在区间内从区间底部往上进行判断。

试题3.HTTP的请求有哪几种?各有什么用?

答案:共有如下8种。

OPTIONS:返回服务器针对特定资源所支持的HTML请求方法,或Web服务器发送的测试服务器功能(允许客户端查看服务器性能)。

GET:向特定资源发出请求(请求指定页面信息,并返回实体主体)。

POST:向指定资源提交数据以处理请求(提交表单、上传文件),可能导致新的资源的建立或原有资源的修改。

PUT:向指定资源位置上传最新内容(用从客户端向服务器传送的数据取代指定文件的内容)。

HEAD:与GET请求类似,返回的响应中没有具体内容,用于获取报头。

DELETE:请求服务器删除request-URL所标识的资源(请求服务器删除页面)。

TRACE:回显服务器收到的请求,用于测试和诊断。

CONNECT:HTTP/1.1协议中能够将连接改为pipe方式的代理服务器。

最后: 可以在公众号:伤心的辣条 ! 自行领取一份216页软件测试工程师面试宝典文档资料【免费的】。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

我推荐一个【Python自动化测试交流群:746506216】,大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,助你快速进阶Python自动化测试/测试开发,走向高薪之路。

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!

你可能感兴趣的:(程序人生,自动化测试,软件测试,面试,职场和发展,自动化测试,程序人生,功能测试)