前言

沉寂了好一段日子,连我们公司自己人都问我为什么最近都不写文章了。 那么当看到本篇的标题的时候,大家应该可以猜到这是为什么了。 我最终还是决定要离开服务了 5 年多的公司。 而这次跳槽历经 3 个月,前后聊了 10 家公司,进行了将近 40 场面试, 基本都是 4+1 的流程 (技术面 +HR 面), 所以日程被排的很满。 有一段时间每天都有 2 个面试邀约, 加上还有本职工作所以便没有精力再更新文章了。 这次面试也算是个大活了, 经历了各式各样的面试场景。 所以我想把这次跳槽的经验记录下来, 复盘一下自己的不足之处,同时也给大家提供一些素材,让大家以后出去面试能有个参照。

素材介绍

面试 List

我先介绍一下这一次面试的公司, 这一次我一心奔着大平台去的, 所以基本没有面试创业公司。 以上市公司或者准上市公司为主。 List 如下:BAT,快手,字节,贝壳,京东,美团,作业帮,神策数据。 其中也调级加面过,也有由于职位不匹配换部门重新面过。 所以虽然我没仔细计算过面试的场次,但是粗略估算差不多有 40 场这样一个数字吧。

岗位介绍

职位上都是资深技术专家岗, 岗位需求上带的人较少,毕竟还是走技术路线,主要内容是在质量团队中做技术攻坚以及建设基础设施。 业务方向上为容器,大数据,AI 这 3 个方向。

面试结果

5 家聊到最后,5 家由于岗位或方向不匹配主动放弃,1 家面试未通过(4 面交叉面的时候未通过)。

以上是这次面试的素材信息, 先介绍清楚, 避免跟我情况相差太多的同学有误解。

算法方面

遇到算法考核的概率

面试考不考算法的问题我想大部分人都是很关心的, 毕竟平时工作用不上但面试就是喜欢考。 我在面试之前其实也在群里询问是否要留足时间刷题,比较担心这么着急出去面试会不会因为准备不足而翻车。 那么现在市面上对于算法的考核是什么样的呢? 我直接说结果吧,不管大家是否认可在面试中把算法作为主要的考核手段。 但是只要你有跳槽的心思, 就去刷题吧, 从我这次的面试经验来看,算法仍然是很主流的考核候选人的方式之一。 但确实不是每一次都会考, 这个看公司风格,团队风格,面试官风格也看岗位的特点, 不是可以一概而论的。 比如我在面试某家出了名的算法重灾区的时候,全程都没有考核算法。 并且考核算法的这些公司里几乎也只有 1 面的时候才会考算法。 所以综合我面试的所有数据来看, 遇到考算法和不考算法的团队是一半一半的概率。 但是由于我这次面试的岗位的特点, 有时候一面面试官就是团队负责人的级别, 而到了这个级别的人一般是不喜欢问算法这种这么细节的东西的。 所以我个人的结论是对于大部分测试开发人员来说,在面试的时候遇到算法考核的概率还是比较大的。PS: 我也询问了几个同时期也在面试的朋友, 他们遇到考核算法的概率也不低。

算法考核的范围和难度

我这次遇到的题目几乎都是可以在 leetcode 上找到原题的,即便没有原题也是一个原题之上的变种, 所以大家刷题上还是以 leetcode 为主。 难度上只遇见过 2 次中等难度, 其余的都是 easy 程度的题目,最多遇到的是链表和双指针相关的题目。 可以看出来市场对于测试开发人员在算法上的考核要比研发序列轻松。

算法考核占面试评价的比重

我个人的感受是不会把算法作为硬性的标准一刀切的否定候选人。 比如面试中有 2 次我是没有写出 bug free 的答案的,但是最后仍然通过了面试并且对方对我的评价依然不低。 所以总结下来如果我们其他的方面足够优秀的话, 算法的影响并不是很大。 但是如果面试官认为我们在其他方面并不优秀或者普普通通, 面试官就会很喜欢用算法来作为考核的最终手段了, 这时候没有答出来的话就是致命的了, 这一点我在接到某司 4 面挂通知的时候,就有所体会了。

总结

面试频率方面

我的建议是有条件的话尽量的多面试几家,不要犯懒,即便这家公司你不想去, 也要去聊聊看。 原因如下:

面试题方面

首先说明一下, 经过这次面试的总结,以及我跟几个同样在找工作的朋友沟通的情况看, 高级职位基本不会问基础方面的问题了, 因为这个级别开始就是走专家方向,要求的技术深度和广度是不一样的, 不会小打小闹的跟你扣基础技术。 比如咱们社区里提到的一些常考题目一般都是看不到了。 例如给你一个场景怎么设计测试用例,问 xpath 语法,问接口测试里怎么封装数据,问长连接和短连接的区别,问某个语言的语法, 类似这样的问题很少会碰到, 而我面试了 40 场是一个也没遇到。 取而代之的会问一些成系统的问题来考核,希望候选人从更全局的角度来回答问题, 也希望候选人能更深入的分析一个方案的前因后果,成本收益,技术选型, 方案优势等等。 当然面试官们还是以在简历中介绍的项目和技术点来挖掘问题为主, 不会天马行空的问不相干的问题。 我把我还能记得的面试题分成几个类型列在下面。

考核技术深度的类型

这一类问题是考核候选人硬实力的杀手锏,因为不像考核软性素质和项目管理类的这种偏务虚的问题, 务虚的问题是有话术的。而这类问题没有话术可言,只能靠自己的实力硬抗。 下面我列一下我遇到的几个典型的问题。

总结一下这类问题是所有问题中最扣技术能力的了, 面试官会从简历中挑选他感兴趣的东西使劲往深了问, 考核的就是候选人在某样技术领域里到底走的多深。 甚至直接就是问你研发技能, 这个是很多小伙伴们反感的。 但这就是现实吧, 不仅仅是面试官, 我自己也比较认同只有在一定程度上了解了研发技术后,才能设计出更合适的测试场景。 比如在大数据领域里你不知道 shuffle 这个东西的话, 那就真的不知道要去测试数据倾斜这个场景了。 不知道 checkpoint 的话也就想不到在流计算里去测试数据一致性。 所以有些时候你会面对一些研发技术的问题,我遇到一个比较极端的是面试官直接问我如何设计一个在线的实时排名系统, 就是客户端 +kafka+flink 这套思路, 我理解面试官也不是说希望你能开发出这么一个系统出来, 他只是想知道你是否有相关的概念, 是不是深入的测过这样的系统, 因为如果你真的深入测试过一个系统, 那这个系统的架构你一定能说的出来。

考核测试策略的类型

这一类问题主要出现在如果面试的岗位和当前公司的岗位很匹配的情况下, 或者面试官也是这一领域里面, 他会使劲的问测试策略。 比如我是在 AI 领域中的, 我这一次找的工作也大多数是做 AI 的团队, 所以经常遇到如下问题:

总结一下这类问题跟上面说的技术深度不一样, 考核技术深度的时候是一条线的使劲往深了问, 而这种测试策略类型的问题我理解更看重的是候选人能否从整体的角度全面的介绍你的测试策略。 毕竟这个级别不是大头兵了, 需要负责一个方向,不能是只在一个点上发力。 个人理解这种问题会比较少扣技术细节, 更关注的是候选人对特定业务的测试方案的理解是否足够全面。我们在日常工作里很多人可能只是负责某一块东西, 很难能熟悉所有的测试方案, 比如从效果测试来说我们团队其实有人专门做在线效果测试, 有人专门做离线, 有人专门做一致性,有人专门做数据正确性测试, 并不是效果测试中所有的场景都交给一个人来测试。所以平时工作的时候除了自己负责的测试外, 还是建议大家都关注一下其他人做的测试类型, 给自己形成一个整体的测试思维和视角。 这一点我自己也有所不足, 我更擅长的是机器学习场景, 而深度学习类比如 CV,NLP,OCR 我都不太熟,回答问题的这时候这部分有些缺失。

考核管理能力/软性素质/测试理念/业务理解 等

比较懒了我就把这些类型都汇总在一个标题里了, 回答这类问题有话术, 需要候选人口才好, 说话逻辑清晰, 并且对于问题有自己独到的见解, 我列一下我被问到的印象深刻的几个问题。

首先这类问题大多数是没有正确答案的,每家公司的理念不一样, 仁者见仁智者见智。 有些看运气, 就是看你回答的理念符不符合面试官的价值观, 不符合的话别想太多就认栽吧。 然后回答这类问题的时候很看你的表达能力, 言语之间的逻辑性比较重要。 个人觉得最关键的是对这类问题要事前有准备, 否则容易被打个措手不及。 平时工作的时候也要多注重一些系统性思维的思考, 对以后都是有帮助的。

总结

剩下的有些问题我自己也记不清楚了, 就主要列上面那 3 个大类吧。 整体看除了考核算法有固定的题库外, 其他的问题基本都是根据我简历里描述的项目来展开问的, 所以好好准备自己简历中描述的内容十分重要, 结合我自己做面试官的经验, 逻辑表达能力其实也是占了一个比较重要的位置。 如果在回答上述这些问题的时候逻辑混乱, 磕磕巴巴,前言不搭后语, 那面试可能也是会挂的。 所以事前准备真的很重要, 只要是简历里写的,都要自己过好几遍, 能预想到的问题都准备好答案背下来, 比如项目描述, 测试方案这些东西。 并且整个技术方案的前因后果也要准备好, 因为有些面试官会比较喜欢问你为什么要推进这个技术方案, 是遇到什么问题导致的? 还是你自己主动推进的? 推进这个技术方案遇到了什么问题, 这个技术方案有什么优势, 后面的拿到了什么结果, 怎么度量你的结果。 面试官会根据简历写的东西使劲扣, 所以事前准备好是非常重要的。 自己简历里写的内容一定要经得起考验, 否则勾起面试官的兴趣后最后缺比较失望,那就很影响面试结果了。

谈一谈业务方向的选择

这次出来面试对于业务方向的选择也有一些感受, 我觉得有一句话也挺对的叫选择大于努力, 我自认为是比较努力的类型, 但也不得不承认当初也是选择了几个比较好的业务方向, 所以现在找工作比较容易, 竞争对手少,大厂都愿意要这几个方向的人才,而且价钱也都能聊的上去。 这几个方向分别是:容器,大数据,AI。

所以业务方向的选择是挺重要的, 除了我说的这 3 个方向以外一定也是有其他不错的方向, 只是我不熟悉的就不说了。 我个人觉得选择一个技术类的业务方向是比较好的, 就比如我上面说的这 3 个方向, 全部是技术类的业务,也就是技术本身就占业务中很重要的部分。 在这样的业务中工作就可以兼顾技术与业务两方面的发展。比如你在云产品中做测试人员, 云产品中很多时候玩的就是 docker,k8s,OpenStack,分布式存储这些东西,这样你测试的过程中就能练出一身技术了。选择走技术类的业务还有一个好处是业务足够复杂, 深度也足够深。 可发展的空间比较大,越走到后面竞争对手就越少。 当然做起来难度就越高,需要学习很多技术, 但也正因为难度大, 竞争对手才少, 机会才多。 如果业务比较简单, 那很难做出亮点, 机会也少,门槛低,竞争对手就多。

职业发展上个人感觉几个比较重要的事情

跳槽的时候需要注意的几个事情

总结

就写这么多吧,估计大家可借鉴的也不多, 毕竟每个人有每个人的情况。最后说一下大厂的面试流程都很长, 动辄 1 个多月,大家要合理安排时间。 祝大家早日富可敌国


↙↙↙阅读原文可查看相关链接,并与作者交流