微信号:grzlwx

介绍:光荣之路官方资讯

一线互联网公司面试经验分享

2018-03-13 22:00 娜小妞

新书

速递


吴老的java版《selenium webdriver 实战宝典》和python版《selenium Webdriver 3.0 自动化测试框架实战指南》出版了,代码拿来就能用。


文 | 娜小妞

2018web测试开发培训一年期周日班!

又到了跳槽季,最近经历了很多家公司的面试,职位有测试开发,也有普通的测试工程师,有成功有失败,最后我发现一些面试问题基本大同小异,因此觉得有必要跟大家分享一下,说一点自己的心得体会,欢迎大家指正和探讨~

1.自我介绍

这是一上来就会问的第一问题,也是一个展现自己优势,最能包装自己的部分,无论经过了几面,面对每一个面试官都得介绍一遍,每一次都要认真对哒,千万不要有倦怠的态度,因为你不知道你面前坐的是哪个高级大领导,直接决定你的薪资和去留。

对于如何回答这个问题,我的经验是,简单介绍下项目,重点在负责的工作是什么,在工作中运用了什么技术,学习到了什么,总结了什么经验。除此以外,还要把你自己学习的一些技术也说进去,哪怕你工作中没有用到,但只要你会的,都展现出来,当然前提是这个东西你确实自己研究过,禁得起拷问的才行。

此外,我的心得是从第一份工作开始说起,这样可以有一个能力从低到高的过程,表明自己是一个学习能力强,有上进心的人;而且在说到切换到下个公司的过程中,可以简单说下理由,表明你对未来的职业发展还是有自己的想法和追求的。

2.网络相关问题

网络相关的问题是每一家公司必问的,具体包含以下:

1.访问一个完整http请求会经历哪些问题

2.https和http请求的区别

3.五层协议有什么,每层的作用

4.http有哪些请求方式,get和post请求有什么区别

5.http请求和http响应包含哪些内容

6.TCP的三次握手过程、四次挥手过程

7.Socket编程了解么,应用在哪些地方

8.http请求的状态码一般有哪些?3开头的一般是指什么

9.如果一个网址无法访问,怎么排查什么原因

10.如果有正在看直播的用户,反馈太卡,有可能因为什么原因,怎么定位问题

11.WSGI和FastCGI的区别

12.fiddler和Charles等抓包工具,现在对于移动端应用的测试,基本所有公司都要求会使用抓包工具,需要掌握原理,一些常用的基本操作,对于设置断点、重定向、模拟弱网、更改请求和返回等操作都要非常熟练

3.实际项目相关

1)你们的测试流程是什么

这个问题必问,必问,必问,如果所在公司比较小,基本没什么严格流程的话千万不要实话实说,要回答完整的流程,下面我来抛砖引玉一下,希望大家多多指正~

需求评审->确定项目排期-,确定测试方案(功能测试、接口测试、性能测试、兼容测试等)>设计测试用例->用例评审->准备测试环境(准备测试机,配置好测试数据等)->开发自测通过(或简单功能冒烟,保证流程跑通)->正式提测,新功能测试,提出bug->开发改完bug后回归验证->遗留问题待产品评估方案->新功能封板后开始全面测试->开发改完bug后再次回归验证->重点功能的冒烟->封板上线->线上监控

2)目前你们项目运用的架构是什么

一般这个问题指的都是服务端的架构,这个时候就要跟服务端开发搞好关系了,让他给你系统讲解一下,一般比较正式的公司针对架构都会有详细的原型图。

3)工作效率如何提高,有哪些工作成果

我感觉这个问题其实可以多展现自己能够在工作中懂得思考的一面,而不是只知道机械的干活,我列出我的回答,给大家提供一点思路。

平时自己经常会进行总结,如编写测试用例时,有些其实测试点都是通用的,可以总结出功能测试的框架

还有例如,很多问题都是可以在软件开发之前规避的,自己根据经验总结了bug预防体系,在项目中进行了分享

还能够借助各种工具来提高效率,把一些重复性的工作来用自动化工具来完成,比如编写一些CPU监控、流量监控等小工具

4)如何进行团队合作

在整个测试过程中要多问,多学习:

在需求评审阶段,就要多听开发人员讨论的各种逻辑实现,只有了解这个内部的实现逻辑才能更好的去设计测试点;

在用例评审阶段,也要叫上开发人员一起,争取把一些之前需求评审没有想到的问题,在开发时尽量规避掉;

在开发解决bug后,对于一些没有太多规律,比较复杂的bug,要主动去找开发人员询问,问题原因是什么呢,怎么解决的,以便更好的回归验证。

5)如何做好测试计划(这里借用慕课网上一个讲师的回答)

when(明确项目开始、结束时间)

how(明确测试方案:功能、自动化、稳定性、性能等)

where(需求文档在哪,被测对象在哪、去哪里拿包、测试用例在哪等

4.用例设计

每个公司必问的一道题,现在一些大公司已经不会问你测试方法有哪些这种理论问题了,都是直接让你设计一个具体功能的用例,从实际来看你对这些理论的运用。

我觉得首先要确定好面试官跟你描述的功能是什么,主要包括哪些方面,确定好范围,然后再开始设计;其次一定要自己多总结一些通用的功能测试框架,背下来,回答时套用在不同的功能上;而且不要只关注功能方面,接口、性能、兼容、安全等都要考虑全面,下面是具体我被问到的一些问题

1. 测试朋友圈发送功能

2. 测试微信的发送功能

3. 测试输入框功能

4. 测试数据加载过程

5. 测试注册登录和验证码功能

6. 测试视频播放

7. 测试直播中的送礼物

5.算法

--------------------跪谢⬇打赏--------------------- ----------------跪谢⬆打赏------------------

这也是一些公司非常爱问的一个问题,并且现在已经不止要求能写出算法,还要求时间复杂度最小,找出最优方式,这就需要我们针对各种算法思考多种解决办法;同时需要注意算法中对异常情况的处理

1. 排序(冒泡、堆排序、快速排序等)

2. 二分查找

3. 判断素数

4. 单链表反转

5. 判断是否为回文数(aabb格式)

6. 十进制转换成二进制

7. 判断IP的有效性

8. 合并两个有序数组,生成一个有序的大数组,要求时间复杂度最低

当然除了上面这些基础的算法,有的面试官还会临时给个有规律的数据,让你写出一个算法或给出思路,考验下逻辑思维能力,当然如果不会也不要气馁,有的面试官会给你提供思路,引导你

6.Linux、mysql相关问题

(难易程度跟公司具体要求有关)

1)常用命令有哪些

2)ps作用是什么

3)查看内存的命令有哪些

4)简历中写到的一些命令

5)数据库的增删改查

6)数据库的关联查询

7)数据库建立索引的优点,如何搜索数据的

7.Java/Python/shell开发语言

这个问题也是被问到的概率很高,主要是看你简历中写了哪些语言,以下问题都是关于Java/shell/python的

1)./ 和sh 执行shell脚本的区别

2)shell脚本中的第一行的作用是什么

3)怎么用shell脚本取出日志中倒数第二列的内容

4)lamda函数是什么

5)Python中的内存管理

6)字典、列表、元祖的区别,在内存中都是如何存储的,想要搜索数据时,各自的时间复杂度是多少

7)python怎么安装包

8)re模块中的match和search的区别

9)Java中的collection

10)Java中常用的一些类库

11)Java中怎么开启线程

8.安卓应用相关

1)虚存、实存、共享内存的概念,PSS是什么意思

2)activity的生命周期

3)安卓常见的五种布局

4)adb 常用命令

5)安卓系统架构

6)安卓四大组件

7)monkey相关命令

8)如何获取monkey日志,最后如何筛选

9)安卓应用常见的崩溃等异常信息

10)进程和线程的区别

11)内存泄漏和内存溢出的区别

9.自动化

自动化也是面试中非常重要的一块问题,具体的问题还要看你简历中涉及到哪些方面问题。我记得以前领导曾经说过,做测试开发的难点不在技术,工具这些,难点在你是否能想到这个点可以提取成自动化,或是可以开发一个东西来做简化,形成这种思考问题的方式很重要。

下面是列出整体宏观的一些问题:

1) 如何分层进行自动化测试

2) 如何保证脚本的有效性

3) 如何降低自动化维护成本

下面是列出了一些现在大多数公司会用到的自动化方式和工具

1
接口自动化

1) 做接口自动化的前提是要了解网络相关的知识,在上面已经提到,就不在这里做赘述。

2) 常用的工具,如jmeter/postman等,找你熟悉的工具来描述就可以

3) 如何进行接口自动化测试

4) 怎么确定接口自动化的用例

5) 如何压测接口,设置并发数,关注的指标

6) 是否了解自动化的分层框架

2
UI自动化

(偏向UIautomator和APPium)

1) appium的原理是什么,为什么选择用这个工具

2) 如何定位元素的

3) 写过哪些自动化用例,用自动化工具做过什么

4) UIautomator有哪些类库

5) Appium如何进行初始化配置

3
持续化集成

1) 持续化集成的概念,有什么意义

2) 怎么把自动化集成到Jenkins上

3) 怎么配置一个工程

以上这些就是我在面试中经历过的各种问题,有人可能会说这不是测试开发才会问的问题么,但现在时代不同了,很多应届毕业生和开发们发现了测试开发这个职位的潜力,纷纷转岗,大幅提高了测试的招聘门槛,其实实际工作中仍然大部分是功能测试的任务。网上不是流传着一句话么“面试感觉是要去造火箭,实际进去后发现是去拧螺丝”。

当然,我的简历偏向安卓应用端测试,这些问题可能对于web测试和性能测试相关的比较少,但我觉得大体的回答思路都是这样的,现在面试官除了关注你会不会用这些技术,更关注的是你是否了解你所用的这些技术的原理,有没有主动思考的过程。总结起来就要求我们,在学习一些知识点时,要多问为什么,多深入思考,才能不惧怕面试时被刨根问题,被压工资。其实面试失败也不要气馁,因为得到一个工作机会由很多因素决定,如眼缘,运气,技术是否对口,应聘公司是否缺人等很多原因。所以哪怕一次失败了,只要总结经验,重整旗鼓,一定可以找到一个满意的工作的!

最后的最后,一定要特别感谢吴老师的测试开发课程,虽然我只是刚学习了一半,但如果没有这半年来新学习的python,有了一点代码基础,自己做了些勉强拿的出手的成果,我估计很多公司的一面都过不去…我相信等到我把全部课程学完以后,技术一定会有一个更大的飞跃,更硬气的向高级测试工程师努力~

现在的时代不一样了,连开发都来和我们抢饭碗,一些做测试开发的应届毕业生,他们的起薪就比我们工作两三年的都要高,竞争压力这么大,有什么理由不努力学习。

当然,如果你缺乏自主学习能力,或者又不知道该如何系统的学习,吴老师新的一期测试开发课程开始招生了,快来报名吧~希望可以在新的一年,大家一起学习,一起努力!

点此链接了解

2018web测试开发培训一年期周日班!

公众号内回复“2”

喜马拉雅app搜索并收听“光荣之路”电台
光荣之路
招聘|征稿|合作 |QQ群
735821166@qq.com
python群:457561756
性能群:415987441
招聘群:203715128


↘️已经到底,何不点赞再走 | 楼下吐槽↙️

 
光荣之路 更多文章 2018web测试开发培训一年期周日班! 如何作一个测试开发-光荣之路电台 我说你听,如何准备面试?-光荣之路电台 内部直推 · 中智关爱通 · 性能\/高测 测试岗位中,为何猎头只青睐【测试开发】
猜您喜欢 技术人攻略访谈四十 | 刘睿民:数据库战国时代,我不跟你们玩政治! 投票:本公众号还要继续维护吗 golang time 包 常用函数 武林再次掀起腥风血雨,自带音响的乔帮主何在? 对于刚开始学C语言的初学者来说,应该怎么去学