【面经】美团测试1,2,3面,一起来聊聊?

前言

最近因为公司层面的关系,我被迫营业开始了一些面试。【面经】美团测试1,2,3面,一起来聊聊?_第1张图片
最近面的公司有:美团、阿里、字节、B站、携程等等。从面试中呢也有了一些感受,比如面试形式、内容、面试官的关注点、其他balabala...

一、关于面试

首先,关于面试这件事,我觉得除了解决我们工作问题之外,也是一项可以提升自己的途径。

记得之前看虫师、乙醇的博客的时候,得到了面试驱动成长的思想,我觉得是很有必要的。

  1. 可以让你获知当下的市场,对于测试工程师的能力要求,发生了哪些变化,你是否还可以保持在主流位置。
  2. 从面试官的问题,反推你在工作中的不足,有助于你后续工作的提升。

在互联网行业,技术更新迭代的频率还是很高的,这也让持续学习变成了从业人员的一项重要能力。在现在的招聘信息里,不管大小公司,对于测试的要求越来越高。除了业务能力之外,各种技术栈也随之而来,比如:java、python、CI/CD、Linux、自动化、mysql、各种中间件(MQ、Redis、ES)等等。如果你不能及时感知到这些变化,那么可能就会陷入被动的局面。

另外,在面试中,大概率会遇到一些你表达不好的问题,比如你在工作中除了完成基本工作外,还做了哪些质量保障的推进改善?这种问题就很值得事后反思归纳一下了,然后总结出问题,反逼我们去思考或者寻找解决方案,从而提升自己后续的工作。

所以,除了找工作要面试之外,阶段性的面试也比较重要,只不过这个周期要因人而定了。

二、面试前的准备

面试前的准备是非常重要的,视时间情况而定,尽量的从多方面去准备。

比如梳理你现在负责的业务、系统应用的架构、业务的核心、测试工作的重点等等。如果会涉及到其他技术栈的,还得看看代码知识、数据库、各种中间件等等。

总之不打无准备之仗,在有限的时间里,能做多少做多少。

三、关于岗位 Title

其实很多招聘中写的 title是测试开发工程师,但是基本上不是纯走测试开发的,还是要基于业务测试来的,在我看来还是属于高级/资深测试工程师。

对此,我个人的观点,测试的核心肯定还是基于业务走的,然后开发的技能是为了帮助测试提效的,所以我个人的预期也非纯测开(开发能力也不够),所以遇到这种title的也不用慌张,看清楚JD需求,只要hold住就可以试试。

四、美团三次技术面内容

虽然面的公司比较多,但是面试题展示就还是以美团为例了,因为很多公司的面试题都有相似之处。

一面

1. 自我介绍
2. 关于自动化:怎么做的,目前的进展,效果如何,遇到的困难
3. 你的框架搭建,最初是考虑了哪些因素去设计的
4. 如何维护自动化case?
5. 有没有用mock去解决问题?
6. 说说你工作以来做过的这些业务,你觉得在保证质量工作中,存在的差异性
7. 你在工作中发现的问题,自己做了什么事情去推动
8. 沟通下来,觉得你们流程问题还是比较多的,纯靠手工去保证么?
9. 开发冒烟执行后,测试如何判断是否通过
10. 算法题:判断15张扑克牌,随机5张,大小王任意配,是否是顺子
11. 看你用python多,聊聊python的一些数据结构,常用方法等等,都可以说
12. python中浅拷贝、深拷贝
13. 测试的接口都是什么协议的,对http协议有进一步了解么
14. 问代码是怎么学的?

二面

1. 自我介绍
2. 平时如何做测试工作的
3. 流程,规范相关
4. 推进遇到的难点,分析,解决
5. 聊聊最近印象深刻的项目或者bug
6. 聊聊自动化如何实施的,使用场景。针对你回答,抓细节点深问
7. 关于QA如何验证开发冒烟测试通过的方式
8. 问了数据库,索引。 优点缺点、常见索引类型、索引最左前缀原理
9. Redis缓存击穿,雪崩
10. 问了java相关基础,多线程
11. sql题:数据库单表查询,主要考察group by用法
12. 算法题:合并有序数组
13. 反问环节

三面

1. 自我介绍
2. 算法题:给定一个数组,判断是否有重复数据,最少3种方法实现。
3. 聊平常的工作内容,具体哪些业务,系统架构,如何交互
4. 用到消息队列,跟接口交互有什么区别,优缺点
5. 抓住简历上的项目,和你回答的内容,继续深问
6. 问你之前XX项目的测试重点是什么
7. 涉及到性能测试的,如何进行测试,关注哪些点,指标
8. 用例设计题:一个新客、老客、转新购买活动商品减优惠的需求
9. 聊做了哪些工具,怎么做的,前后端用到了什么
10. 自动化 怎么做的,做了哪些,测试数据是放在哪里。
11. 多接口串联的场景,自动化要怎么做?

上面就是3次技术面的内容了,跟后续的其他公司的内容对比后,我觉得是有很强代表性的。现在基于此,作一些归纳总结。

五、面试内容主要构成

我是异地,所以都是视频面。用的是牛客网,方便在线做题。三次面试时长均为1小时左右。

1. 自我介绍

自我介绍是必不可少的,看起来不起眼,但还是有必要精心准备一下。行云流水的自我介绍,与磕磕巴巴的说话,很显然前者更有利于面试官对你的第一印象。

我建议是组织精简的语言,概述出如下内容:

  • 个人当前的状态,在职,离职。
  • 任职的公司,所参与过的业务(多的话挑最具亮点的)。
  • 在工作中,你做的事情(能凸显你的业务、技能亮点的)。

时长在 1 分钟内比较适宜,我自己是在 30s 左右(肚子里没货o(╥﹏╥)o)。太久容易引起反感,这毕竟是刚开始。而且说的久了你说的也多,说多容易出错。语言一定要组织好,按合理顺序表达。

2. 基于业务的问题

通常,面试官会根据你的描述,和简历上的内容,挑选其中的业务进行提问,并且根据你的回答进行追问。

所以,在面试之前还是要熟悉你要讲的项目的,从哪些方便?个人建议有:

  • 项目背景,简短介绍。
  • 项目概况,比如人力、周期等
  • 你在项目中的主要工作。
  • 项目的业务流程、系统架构图大概是什么样子,交互要说得清。

然后,面试官应该会选择其中的某些点进行细节的追问。比如你觉得项目的重点在哪里、复杂度有多高、质量保障中遇到的问题、如何解决的等等。你能扛得住追问的话,说明你的工作还是很细致的,细节的地方你都熟悉,印象分增加。

3. 基于技术栈的问题

问完业务,面试官会基于你简历体现的技术栈开始发问了。比如代码、自动化、CI\CD、linux、数据库、中间件等等。

我个人觉得要注意的点如下:

  • 简历技术栈的熟练程度一定要真实。
    不要会个 hello world 就写熟悉,该写了解就写了解。一点都不了解的,就别往简历上写了,省的给自己挖坑,一问准露馅。

  • 测试用例设计
    虽然是我们测试的基础技能,但是我觉得也是核心技能。通常你不用上来就直接设计1,2,3,4。可以先感受下题目,抛出你的一些疑问,然后再描述你的设计思路,最后进行细节点的描述。

  • 给你XX接口你要如何测试
    这种问题看着简单,实际有坑。最好不要上来就说正向、异常测试、输入校验等。其实面试官希望听到的答案是,你能做左移的角度去逐步分析这个待测接口,然后再决定如何的测试它。我曾经就有过这种情况,实际上我是知道这个坑的,但是难免也会忘记。但是好在面试官很nice,在你回答之后,他给出了他觉得怎么做会更好。但是这时候呢,你也可以挣扎一下,表示这个自己也是知道的,在实际当中也是如何做的。

  • 对于各种中间件,最好有个了解。
    可能你的业务系统简单,用不到一些中间件,比如mq、redis这些。但是用不到不妨碍你去学习了解,因为这些东西现在应用真的非常广,起码你要知道使用场景和原理,解决哪些问题,引入哪些问题等等。如果能答一些,肯定会比一问三不知要好很多。如果真的你实际没用到,也可以表述一下,仅自我学习的一些了解。

  • 涉及到自动化
    如果涉及到自动化的建设,那么你要知道项目使用的语言、框架等、项目的模块结构、项目拥有的能力、项目执行策略、项目的收益。另外,对于自动化,面试官很爱问对于测试数据的处理,mock相关的实际应用问题。

  • 一些框架、库的知识,底层原理
    比如你web自动化提到了用selenium,那么selenium底层实现原理是什么?你喜欢用pytest框架,为什么?与unittest相比,优点有哪些,你会用到框架的哪些特性等等。

  • 数据库
    数据库其实还好,考察的内容主要是:连表查询、group by、having等的用法。此外,索引也是经常问的,索引的介绍、原理、为什么快、索引越多越好?

  • 算法题
    面大厂必备环节。难度为LeetCode上简单难度。有出现过原题,也有变形题,还有面试官现场手打的题目。但是考察的内容,基本上就是常用的数据容器的操作。

4. 持续学习、快速学习的能力

面试官可能会问你看过哪些书籍、哪些方向的,自己平时是怎么学习的,对自己的评价是什么样子的?重点是考察你的自我学习能力大概如何。这些问题就还是因人而异了,你根据你现在的情况组织一些不太过分的内容来回答即可。

我个人看的一些书籍(看得少)会有:代码语言、测试相关的、自动化的、性能的。除了书本以外,主要还有搜索引擎、博客、极客时间的、B站等等。

另外,关于学习提升这块,我觉得有 3 点很重要:

  • 学习目标:能够知道自己的不足之处,知道该学哪些知识。
  • 时间管理:如果能牺牲点刷视频信息流的时间来看点资料,博客,每天一点点,一个月、一年之后你肯定比现在的你强很多。
  • 执行力:目标有了,时间有了,就看能不能坚持了。

当然了,学习还是要劳逸结合的,怎么去规划适合你的时间,可以好好思考下。

学习的过程中,如果能做笔记自然是最好了。因为在写的过程中,你会更深入体会知识点,有助于加深你的印象,以及理解。如果能分享出来也是极好的,也能帮助有需要的人,或者抛砖引玉,大家一起讨论。

5. 反问环节

通常面试官顾及礼仪的话,会有一个反问环节,但是没给你这个机会也不能直接说明什么,说不定人家真的hin忙?

我通常关心 2 个问题,问多了也过多占用别人的时间,当然有跟你聊的头圆的除外:

  • 参与的业务,核心能力。有助于你了解对方的业务概况,复杂度,与你之前业务的关联性,对你未来的成长是否有积极意义。
  • 研发规模。开发、测试的人力,有助于判断公司的研发力量情况,以及开发测试配比的情况。

六、面试之外的感受

到此,一场面试就结束了。有条件的话,建议记录下你印象深刻的内容,方便回去之后梳理总结。在这里,顺便谈谈一些其他的感受吧。

1. 心态调整

调整好心态,不管你现在处于哪种状态。尽量让自己面试时候的状态要好,要自信(不是自负)。胜败乃兵家常事,像我面试了这么多,我也不知道最后哪家可能走到最后,或者说一个也没有,哈哈。

那也没关系,失败无非就是2个问题:

  • 火候不够。这个是自己表现确实差劲,自己都要吐槽。
  • 背景与岗位不匹配。这个也会有的,但是这种情况下用人部门可能会流转你的简历给其他适合部门。

那不管是哪种,我觉得都应该汲取其中积极的一面,进一步提升自己。

2. 遇到很烂的面试官

我听朋友讲到,他遇到过一个面试官,喜欢揪住他不擅长的问题进行追问,然后还嘲笑他。

多的也不用说了,这种人就是个傻X,你千万别跟他一般计较。我遇到的面试官通常都会在你表示不了解后,就会换个问题,或者说根据你的回答,给予一定的引导。所以,像我朋友说的这种傻X一定是极少数的。

3. 随缘

随缘就好,我面的多了也很佛了。反正面不上更好的就进一步降低标准呗,反正不会饿死。

4. 外包公司

外包公司不是不能去,但是多数人可能对此不是优先选择,优缺点大家网上都可以搜到。所以,对于不考虑外包的童鞋,我整理了一些出现在我的视线中的公司:

  • 软通动力
  • 中软国际
  • 浪潮集团
  • 法本信息
  • 华为&德科

华为德科这种OD岗位,就是跟德科签合同的华为外包,说优秀的可以转为华为正式岗,反正我是不信那几率的。

OK,以上就是最近的一些感想,祝大家顺利。

你可能感兴趣的:(面试知识分享,面试,java,程序人生,经验分享,架构)