# 是时候为明年的面试做准备了




今年面试了不少人，也被面了很多次，多多少少有些经验是可以分享的。

之前在某个微信群里说了一下最近的互联网公司测试同学的面试套路，结果被怼，说是面试造火箭，进去以后拧螺丝，在这里分享出来，希望大家不吝赐教，错误的地方还请多多斧正。

总的来说，目前的面试更加的专业化，如果面试官的水平不错的话，面试的内容会非常有针对性，一些专业面霸的生存空间可能会进一步被压缩。

从经验上看，下面这些套路都是差不多的

### 业务介绍

* 介绍一下你所在的业务。这里主要是考察对自己的业务是否熟悉，是不是能讲清楚自己在做什么，自己什么样的角色，负责怎样的业务。
* 介绍一下你所在项目/产品的技术栈。对于一些前后端都有的项目来说，这个问题希望考察候选人是否了解开发在做些什么，用些什么样的技术等等。
* 能不能画一下你所在项目/产品的架构图。这个问题难度比较大，特别是对于从事纯客户端测试的同学来说，毕竟前后端分离的情况下，客户端测试很难了解到后台的架构情况。对于测试后台的同学来说，如果只是做单纯的功能测试的话，那么架构图也是画不出来的。这个问题其实是在考察候选人的主动学习能力和测试的深度。因为如果不是主动去了解的话，恐怕开发同学是不会跟你说明架构情况的。另外，如果测试深度足够的话，比如很深入的测试中后台系统的话，那么大致的架构情况是会毕竟清楚的。更进一步，如果你搭建过被测系统的独立性能测试环境的话，那么架构基本上是会了然于胸的了。
* 能不能说明一下你们目前系统/产品在架构上存在的问题。这个问题是接着上面的问题的开放性问题，主要考察候选人能不能从架构上预测到系统的问题，从而将测试工作前置，提前暴露或感知潜在的问题。对于高级别的测试同学来说，这个问题是需要提前思考答案的。


### 逻辑题

对于校招和初级测试同学来说，逻辑题是经常会被考察到的。逻辑题主要的考察点是解决问题的思路是不是清楚，另外这个人是不是足够的聪明灵活，毕竟很多时候，跟聪明一点的人沟通起来也相对容易一点。

逻辑题是有套路的，可以提前准备，另外就算没准备的话临场发挥也是来得及的。有时候不需要那么准确，只要思路大致能对上就可以了。

### 数据库题

我在面试的时候被问到过数据库的知识，但偏底层和原理，对于初中级的测试同学来说，数据库主要是考察应用,比如考察一些联表查询，group by之类的题目。对于高级别的测试同学来说，可能会问到索引，调优以及数据库引擎和集群的知识。这些也是可以提前准备的，难度不是特别大，应该是大家都能拿分的题。

### linux相关的题目

我曾经面试的时候被问过linux cpu的性能指标，要求是能想到多少就列出来多少。不过对于初中级的测试同学来说，linux操作系统可能重点考察的是使用和数据处理，比如我们这里就有一道面试题是关于如何通过linux命令从log里过滤出重要信息的。当然了，在微信群中讨论的时候，有些同学说这个实在是太简单了，过滤一下导出一下就可以了，我思考了很久，还是不清楚如何在线上不通过命令做这些操作的，当然，如果log接入了类似于Elasticsearch之类的系统的话，那么不用命令也是可以的了。


### 编程题

是的，你没看错，确实是编程题。好在测试方向的编程题都不是很难，基本上的考察点是简单的算法，对时间和空间复杂度的理解以及基本的编程技能。另外写代码也能看出一个人是不是聪明，这里我遇到过下面几种类型的考察。

* 白板写算法。据说白板写可以很清楚的看出候选人的思路。
* 上机写代码并调试成功。这样可以远程面试以及自动计算时间和空间复杂度。
* 读代码找bug。读的是LRU的O(1)算法，其中有几行代码是有问题，需要找出来，其实还是有难度的。

### 用例设计

用例设计题是五花八门的了，这是基本功，我喜欢给一些类似于需求文档的片段让候选人根据文档写用例，总体难度不大，主要是考察阅读理解能力和用例设计能力。


总的来说，上面这些题是我遇到的比较多的类型，当然因为我经历有限水平有限，这些面试经验可能不太适用，不过很多情况下，这些面试的题目还是很有针对性的，毕竟入职之后查数据库，过滤日志，写用例，写代码做一些自动化的效率提升，这些都是日常工作的一部分，面试的时候出现相应的题目，这些也是说得通的。

综上，希望对你有所帮助。




原始封面

![课程图片](https://images.unsplash.com/photo-1512847179643-f1794c3e0ac8?w=300)


