腾讯测试开发实习面试经验分享

腾讯 IEG 25 届测试开发实习生面试经验分享.

前言

寒假前发了一个腾讯的专项实习通知, 时间很早, 2月底就开始投了.

然而寒假还是摸了一个月的鱼, 不过抱着试一试的心态, 月底还是投了一下测试开发, 毕竟力扣才刚开始刷, 八股一行没看, 心里着实慌得很, 而且还是第一次面试. 虽然在此之前偶尔刷到过一些面经, 但是真的轮到自己的时候, 还是很紧张的.

投了简历之后, 要先做一个测评, 必须要做了才能进下一个流程.

测评分三部分:

  1. 第一部分是一大堆选择题加一道简答题, 就是一些职场场景题, 按自己想法慢慢做就行了.
  2. 第二部分和第一部分差不多, 但是只有选择题.
  3. 第三部分是智力题, 和公务员的行测差不多, 说实话我几乎都是蒙的, 但是问题不大.

三部分可以分开做, 不过确实要一点耐心和时间, 总共做了 30 + 30 + 30 = 90 分钟的时间.

做完之后就可以等着面试邀请函了, 邮箱和短信都会有通知.

2 月底做的测评, 3 月初收到的面试邀请函, 中间隔了 5 天左右, 所以还是要稍微等一等.

下面进正文. 信息发布群里的相关负责人说这一次投递相当于是实习的提前批, 因此可能面试流程看上去比秋招紧凑很多, 总共 3 轮:

  1. 初试 (程序面). 其实就是技术面.
  2. 复试 (初试). 也是技术面.
  3. HR 面试 (复试). 和 HR 聊天环节.

初试

收到邀请函后一天进行一面.

算法题

开始面试之后, 面试官简单问了一下平常用什么语言居多, 电脑上是不是装了对应的 IDE, 然后发了两道题说先做一下, 给了 1 个小时的时间.

题目可以在自己电脑写并且调试, 这一点相当友好, 有熟悉的环境和工具确实写起来压力小很多.

但是腾讯会议远程面试, 这一面我全程都是共享桌面和开着视频的, 因此大伙也不要有什么侥幸心理, 冷静下来认真写代码就行了.

题目不难, 就是选的力扣两道中等题, 一道是很经典的动态规划, 虽然之前没写过但是很熟悉解法, 很快就解决了.

另外一道是一个双指针题, 好消息是, 它在我仅有的刷了的几十道题目里. 不过坏消息是, 当时刷的时候是临时想出来的奇怪方法, 面试的时候已经完全忘记当时咋写的了.好在最后凭借模糊的记忆又临时想出来一个方法, 以至于面试官专门要我讲了一下这题思路.

总共花了大概半个小时吧, 把两道题写完之后, 面试官会自己阅读代码, 并不需要提交然后测试样例或者讲解思路啥的, 主要是看你的代码书写习惯, 以及你算法思路的正确性, 当然你自己肯定得把题面里给的几个简单例子验证一下.测开不测试这合理吗.

建议大家养成良好的代码风格, 平常多注重代码的可阅读性, 能让人比较容易的看清你的代码思路. 共享屏幕让面试官看着写代码还是有点压力的相当于有人看着你写数学题, 代码写的清楚点就算最后没做出来也能和面试官交流自己的思路, 不至于啥好印象都没有.

基础知识

写完代码之后开始问八股了, 总结为: 真叫人摸不着头脑.jpg

其实问的问题都不难, 真不难, 但是无奈我也是真没准备, 一丁点都没准备的那种.

上来就是几个操作系统相关的问题, 我最近一次学操作系统还是大二的时候, 咱就是说, 真不记得啥了.

问了进程怎么管理的, 进程和线程区别, 虚拟内存怎么管理的, 堆和栈的区别, 线程同步的方法.

我只能凭着记忆勉强答一下, 也就一些基本概念吧.甚至虚拟内存连概念都不记得了.

然后还问了一些其他的, 比如快速排序怎么实现的, 负数是如何表示的, 先进先出和后进先出的区别, 甚至还问了一下知不知道关系数据库的范式是什么.八百年前学的东西了, 我仅存的记忆告诉我似乎是用在表设计的时候减少冗余提高效率的.

不过这一面是技术面, 面试官也是懂的, 也不会对着标准答案死抠定义, 你清楚这个知识点的话, 面试官听了自然明白, 尽量把自己会的内容清楚的表述出来就行, 不会的也就说自己对这方面应用的少, 不是很了解.

项目经历

由于我没有实习经历, 所以接下来就直接问简历上的项目.害, 之前看群里说一面可能就是撕几道题, 结果自己完全没看一下项目内容, 都忘得差不多了.

我写了 4 个上去, 2 个个人项目, 2 个团队合作项目.

面试官首先问觉得这几个项目里难度最高的是哪个, 能否介绍一下项目内容.

我说了一个个人项目, 基于 Spine 的碧蓝航线桌宠, 这个是当时自己感兴趣做的, 虽然是基于学习的心态做的自娱自乐程序, 但是确实对我来说挺难的, 因为专业从未接触过计算机图形学相关的内容, 而且也自学了一下原生的 win32 开发, 期间还遇到一些数学问题, 都折腾了挺久的.

介绍了一下为什么做这个项目, 项目实现了些啥, 觉得最难的地方在哪, 怎么解决的诸如此类的.

主要还是要熟悉自己的项目, 向面试官充分展示自己的能力水平, 不要让面试官觉得就是照着网上的教程随便做做了事, 要能体现自己在做这个项目途中解决问题的能力, 以及对自己的提升收获.

不过运气比较好的是, 由于这一面远程面试我一开始是共享屏幕的, 加之这个项目是个桌宠, 很适合展示, 自己电脑上也一直在用, 源码也都还在, 所以就直接给面试官展示项目效果了. 顺带连源码都一起被看了一下, 问了一些具体逻辑的实现方法和类的设计.

这个项目问完之后还问了其他的项目, 这个看具体情况吧, 认真答就好了.也看自己的吹牛能力.

初试尾声

最后有一些经典的反问环节, 不过我当时太紧张了, 也没问啥, 反倒是面试官引导我是不是要了解点什么.

其实事后想想以后可以提前准备一下的, 毕竟你投了简历, 肯定有一些想要了解的基本情况对吧.

复试

结果出的很快, 刚面完晚上就收到复试邀请函了, 于是直接约的后一天继续二面.

自我介绍

简单介绍一下自己, 学校, 专业, 研究方向, 个人能力, 实习经历, 项目经历 (其实就是把自己简历上的内容过一遍, 只是我没经验, 结果被动的等着面试官问经历了, 没把话题聊开).

经历简单描述一下就好, 可以等待面试官后续提问, 也可以自己主动介绍详细一点, 突出自己的技术栈.

自由交流

如果说一面注重你的表面能力, 比如具体的代码能力, 项目经历, 量化的指标啥的, 那么这一面侧重于你的综合能力.

从自我介绍开始, 最好的方式是你有所侧重的介绍自己, 然后让面试官能够自然而然的切入到一个你熟悉的话题里, 比如你介绍到某个项目经历时, 可以先发制人说说自己印象很深的点, 采用了什么技术, 掌握了什么技能, 之后面试官就会以此为话题继续深入了解你的能力.别像我一样傻不拉几的.

不同于一面, 这一面问题都比较发散并深入, 其实也更加注重于将来的工作内容, 例如我投的是测试开发, 除了问我项目的技术问题外, 还会着重问我项目的性能优化, 如何减少资源占用, 如何让整个项目结果更好, 而不仅仅是实现功能.

同时问题也更偏向实际工程应用, 并不只是单纯实现一个算法片段, 而是要对项目的整体结构有清晰的认知, 知道项目的瓶颈在哪, 自己又是如何考虑解决的.

拿我前面那个桌宠项目来说, 面试官除了问基本的项目逻辑外, 着重问了是否关注过程序的性能优化, 如何优化渲染过程中 CPU, 内存, GPU 的占用问题, 如何提高渲染的性能. 不过我没有系统性学习过, 对这些内容只能尽量答一些, 并且有些方面我也确实从没考虑过 (例如内存占用, 桌宠占用太小完全没考虑过).

感觉还是挺注重程序性能的, 可能是游戏测开的原因?

这部分内容太自由了, 都是思想上的交流, 可参考性很低, 比较看面试官, 认真回答自己的思考结果就好了.

场景题

聊完简历上的内容之后, 还是来了道场景题.

具体的场景就不说了, 抽象一下就是, 有一群人, 他们之间存在好友关系, 假设这群人一定可以被划分成两个集合, 并且每个集合内的人互相不存在好友关系, 要如何实现这个划分过程.

害, 说实话我一开始毫无头绪, 然后想了半天给了一个时间和空间复杂度都很高的方法, 显然是不太行的. 之后就是和面试官继续交流, 怎么优化算法. 这期间我乱扯了很多, 但是估计都没找到正道. 最后时间快到了, 我说我感觉暂时想不出来更好的方案了, 面试官也就结束这部分了.

感觉这部分拉了, 自己平时确实也没怎么关注一些这样的算法问题. 不过就算不知道也要积极的说出自己的想法, 和面试官交流, 让面试官看到你解决问题的过程.

(事后了解了一下这玩意叫二分图, 所有的顶点可以被划分为两个独立的集合, 使得每条边的两个顶点分别属于不同的集合. 其实挺简单的, 但是没办法, 面试的时候还完全没看图论相关内容.)

复试尾声

最后也是有经典的反问过程, 不过这次总结了一面的经验, 提前想好了要问些啥, 倒是得到了一些自己想要了解的内容. 比如开发语言和用的技术, 项目管理制度啥的. 提前准备一下就能趁着这个机会向面试官了解一下自己意向工作的地方如何.

HR 面试

大概隔了一周时间, 终于收到三面邀请, 差点以为要挂了二面太拉了.

这一面是非技术面, 上来自我介绍一下, 然后主要是人事和你聊聊天, 问问你的个人情况, 现在在做的内容, 看看你对工作的态度, 面对问题的解决思路, 确认一下你的个人信息和工作意向, 比较轻松的氛围, 注意一下言谈举止就好.

时间也不长, 不到半小时就结束了, 这一面基本就是走走流程, 不出意外面完等后续就好.

个人认为, 只要不和面试官打起来这一面都不至于挂.

后记

三面之后大概一周就能收到人事发来的 Offer 了, 需要在系统或者邮件里确认接受即可, 具体的入职事项可以和跟自己对接的 HR 进行沟通了解.

总结一下整个面试的话, 确实是投的早加运气好吧, 感觉有这么一些比较令面试官满意的地方:

  • 一面两道手撕很顺畅甚至面试官说我写挺快的?
  • 然后简历里有一个面试官刚好比较感兴趣的项目. 感觉这个是最重要的, 有一个对口的项目真的很加分.

当然由于准备不充分, 也存在很多问题, 包括但不限于:

  • 八股完全没看, 全凭记忆回答.
  • 也没好好复习自己的项目内容, 问的时候很多东西自己也记不起来当时咋写的了.
  • 场景题也答的一塌糊涂, 刚开始一点思路都无, 也是自己平常这方面接触太少.
  • 没准备一个良好的自我介绍, 老是等着面试官被动提问.
  • 等等等等...

通过面试才能知道自己有很多需要提升的地方, 应该朝着哪些方面提升自己, 也只有不断面试才能消除自己对面试的紧张感, 让自己能够在面试中充分的展现自己最好的状态.

最后, 祝各位同学都能顺利通过面试, 收到自己心仪的 Offer~

tencent_offer