美文网首页测试技术学习分享软件测试程序猿日记
分享:一线互联网公司的面试经验

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

作者: 爱学技术的小仙女酱 | 来源:发表于2018-04-18 21:24 被阅读256次

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

     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,有了一点代码基础,自己做了些勉强拿的出手的成果,我估计很多公司的一面都过不去…我相信等到我把全部课程学完以后,技术一定会有一个更大的飞跃,更硬气的向高级测试工程师努力~

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

    作者:娜小妞

    相关文章

      网友评论

      本文标题:分享:一线互联网公司的面试经验

      本文链接:https://www.haomeiwen.com/subject/ulibkftx.html