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

2018-04-11  开心的小麻花 

      转载: http://www.51testing.com/html/51/n-3725351.html     
  又到了跳槽季,最近经历了很多家公司的面试,职位有 测试开发,也有普通的测试工程师,有成功有失败,最后我发现一些面试问题基本大同小异,因此觉得有必要跟大家分享一下,说一点自己的心得体会,欢迎大家指正和探讨~
   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,有了一点代码基础,自己做了些勉强拿的出手的成果,我估计很多公司的一面都过不去…我相信等到我把全部课程学完以后,技术一定会有一个更大的飞跃,更硬气的向高级测试工程师努力~
  现在的时代不一样了,连开发都来和我们抢饭碗,一些做测试开发的应届毕业生,他们的起薪就比我们工作两三年的都要高,竞争压力这么大,有什么理由不努力学习。
276°/2766 人阅读/0 条评论 发表评论

登录 后发表评论