本科暑期实习面经(腾讯天美、字节创新业务、网易雷火)
个人简介
本人大三,就读南京大学计算机系,为了开阔眼界,提升工程能力,投了腾讯、字节、网易的暑期实习,笔面试全部通过,三家都给了offer。本人优势是学习成绩好,专业基础牢,数学思维强,劣势是由于转专业,项目经验较少,只有植物大战僵尸和图形学绘图两个课程设计。
申请岗位
公司 | 岗位 | 部门 |
---|---|---|
腾讯 | 软件开发-游戏客户端 | 天美T1工作室 |
字节跳动 | 客户端开发实习生 | 上海创新业务 |
网易雷火 | 游戏研发工程师(客户端) | 未知 |
笔面试时间线
时间 | 公司 | 状态 |
---|---|---|
3.4 | 网易雷火 | 网申 |
3.7 | 腾讯 | 网申 |
3.12 | 腾讯 | 初试 |
3.15 | 字节跳动 | 网申 |
3.20 | 腾讯 | 复试 |
3.23 | 字节跳动 | 一面 |
3.27 | 腾讯 | HR面 |
3.29 | 网易雷火 | 机试 |
3.30 | 字节跳动 | 二面 |
4.1 | 腾讯 | 录用 |
4.7 | 网易雷火 | 一面 |
4.7 | 网易雷火 | 二面 |
4.7 | 字节跳动 | 三面 |
4.10 | 字节跳动 | 录用 |
4.13 | 网易雷火 | 三面 |
4.14 | 网易雷火 | HR面 |
4.16 | 网易雷火 | 录用 |
项目经验
- 基于Qt的植物大战僵尸
仅用四天,实现无尽模式植物大战僵尸,包括7种植物、6种僵尸和6种其他游戏元素。
使用GraphicsView框架,分别实现场景、物体、视图。
通过重写框架提供的虚函数,实现动画播放和碰撞检测。
设计良好的类,发挥面向对象优势。
- 完全DIY绘图软件
- 根据计算机图形学知识,自行实现算法,并提供精美GUI界面。
- 二维图形绘制算法,包括直线、多边形、圆、椭圆等。
- 二维图像变换算法,包括平移、旋转、缩放、裁剪等。
- 其他实用功能,包括调色板、橡皮擦等。
腾讯面经
初试
这是我第一次面试,当然有点紧张。面试用的腾讯会议,面试官感觉比较木讷,但是出题友好。
开始是介绍项目经历,我主要围绕植物大战僵尸讲了讲,还用共享屏幕演示了,他也饶有兴致,问了不少实现问题。因为我的项目是个人开发,自然不在话下。
然后是手写代码,这里就体现出我的面试官出题友好了,考了三道大一难度的题目:
- 给定两个矩形的左上角和右下角坐标,判断是否相交。
- 给定一个只包含小括号、中括号、大括号的字符串,判断是否合法。
- 给定一个字符串表示的十进制数字,返回它的整型表示。
题目都是很简单的,这里就不细说了。小插曲是第一道我有点懵,感觉想了好久,还和面试官验证了几种解法,才想出一个比较啰嗦的解法,但实际只过了五六分钟。这里值得引以为鉴的是,遇到不会的题目,感觉紧张和焦躁是正常的,而且主观时间会过的很快。知道这点以后,就更应该看看客观时间,这样可以减轻压力。
最后问了未来规划,我说先实习熟悉业界,再读完研究生出来工作。读研一般在开发岗面试会比较减分,不过也不至于一棒打死。还有提问环节,我问了一下实习先做小项目练手还是直接做大项目,他说直接大项目,再有问了一些公司福利相关就不谈了。
复试
这次面试轻松的离谱,通过电话面试,一共半小时不到。主要问了一问项目经验和未来规划就结束了,差不多就是把初试再讲一遍。注意,这次面试官问我想做什么游戏,当时我对天美内部也不太了解,说只要是游戏就行。后来拿到天美T1工作室的offer,代表作是《天天酷跑》和《天天爱消除》,特别后悔复试没有直接说明。因此,建议仔细查查捞你的部门架构,如果面试官问起,尽量选择核心部门!
HR面
HR面是用腾讯上海公司电话打的,上午打了一次居然被我华为手机拦截了,下午我添加白名单HR才打通。HR应该比较年轻,估计三十不到。似乎HR喜欢围绕岗位类型提问,例如我投的是游戏客户端开发,意向事业部也是负责游戏的IEG,所以HR围绕游戏问了挺多问题,包括但不限于:
- 平时玩哪些游戏?在玩哪些腾讯游戏?
- 为什么选择游戏岗位?
- 比较喜欢哪些类型的游戏?
- 游戏有哪些地方吸引你?
- 除了腾讯还投了哪些游戏公司?
当然未来规划也是必不可缺,但是HR似乎对于保研咬的很紧,问了两次为什么读研,而且感觉有点劝退。总体来说大多数HR面都是比技术面容易过的,哪怕HR比较严肃或者喜欢施压,自己心态轻松一些,不要跟HR怼起来,应该都问题不大。
总结
拿到腾讯的offer更多的是运气吧,两次技术面都没有涉及多少技术问题,但是也有同学被问的很惨。另外感觉腾讯效率是比较慢的,每轮要过五六天才出结果,听说是腾讯喜欢养鱼?
字节跳动面经
一面
这是第一次参加真正的技术面试,是在牛客网面的,介绍项目就不谈了,技术问题包括以下内容:
- C++中类和对象的概念
- C++中
const
和static
的用法 - C++中栈和堆的区别,
new
的数据能否保存在栈上 - C++中
private
、protected
和public
的用法 - C++中多态的实现
- C++中构造和析构函数能否是虚函数
- C++中
vector
容量调整 - C++中
vector
和list
的区别,如何结合各自优势 - 操作系统中进程和线程的概念
- 操作系统中进程通信方式
- 操作系统中线程调度机制
- 手写非递归方法求二叉树深度
- 一个小函数的编译结果
- 某道计网相关,记不清了
题目还是很基础的,唯一不会的是编译原理那道,只能从汇编以及分段的角度讲了一下。因为我擅长的编程语言填了C++,所以问了很多C++相关,这里强推牛客网的C++面试宝典,很多常见问题都能找到答案。
想要吐槽一下面试官,估计是在他宿舍面试,噪音特别大,还有室友大呼小叫,并且是站着面试,摇来晃去的,体验很差。
二面
二面跟一面天壤之别,体验好到爆炸。面试官戴耳机并让我也戴耳机,防止彼此声音混杂,而且常常微笑,又带有一种技术人的腼腆。他问问题也不太一样,是在出题面板当场写一小段代码来问,比如像下面这样:
class A { private: int x; protected: int y; public: virtual void func() {...} // or without virtual }; class B: A { public: void func() {...} }; A* p1 = new A; A* p2 = new B; p1->func(); p2->func();
个人是非常喜欢这种画风的,毕竟"talk is cheap, show me the code",而且有助于区分背答案和真理解。手写算法题是给定一个01矩阵,求其中只由1组成正方形的最大面积。显然是用DP,十秒想到解法,一分钟优化到,两分钟就写完了,面试官好像很满意,还问了为什么我for
循环写++i
而不是i++
,跟他说汇编里++i
只要一个指令,他更加高兴了。
这次面试巨赞,甚至面试官直接说我是他面试的人里特别不错的了,当时就感觉很稳了。
三面
三面同样是在牛客网,字节的后轮面试官应该是可以拿到前轮面试官的评价的,因为面试官直接说前面两轮面试官对我的植物大战僵尸评价不错。他也跟我详细聊了一聊这个,对技术内容应该是满意的,但是对我的项目都是课程设计这点似乎不大满意。还有因为我的专业方向是计算机应用,没有学过软件工程和设计模式,他想问相关问题也没问起来,只好问了我学过的关系数据库和非关系数据库的区别。
划重点,戏剧性的来了!面试官问我C++内存管理有什么办法,而我在两小时前的网易雷火面试中被问智能指针,以前只看过一遍,当时就没答上来,在两次面试间隔恶补了一下,所以我故意回答智能指针,果不其然,他让我手动实现share_ptr
,我三下五除二就写完了(一小时前才看过代码)。
这应该算是面试转折点吧,前面表现中庸,这道智能指针两极反转,面试官有点惊奇,后面又问了一些简单题诸如static
和const
的用法等都答上来了。
话说提问环节我还问了还有没有技术面,他说没了,最后还有一轮HR面。结果过了三天居然直接给了offer,挺惊讶的。
三面的可供借鉴之处至少包括下面三个:
- 至少要参与一两个项目,否则简历只写课程设计会被鄙视。
- 每次面试结束要把不会的问题搞懂,很可能其他面试被问到。
- 把面试官引到自己会的东西上去,比如我没学过软工就说我的方向学过数据库,他问C++内存管理我就避开
new
的特性而说智能指针。
总结
字节的面试是挺严格的,技术问题非常多,但至少本科生面试不难,都是计算机核心课程里比较基础的概念和用法。字节效率很高,网申一天就收到面试通知,每轮过后一两天就有结果,少了很多等待的纠结。
网易雷火面经
笔试
网易雷火的笔试是四小时四道编程题,我两个小时AC三道,最后一题四元数变换和多叉树没有做出来。感觉网易雷火虽然开卷,但是难度挺大的,而且喜欢以游戏为背景出题,个人估计做对一道半就能通过。
一面
这次面试居然问了三个数学问题,一度怀疑我投的的数值策划:
- 已知游戏玩家男女比9:1,男性玩家扮演男女角色的比例6:4,女性玩家扮演男女角色的比例1:9,求一个女性角色是女性玩家的概率?
- 商店有4件武器和5件盔甲,从中随机挑选3件,求同时包含武器和盔甲的挑法有多少种?
- 给定一个4*4空间变换矩阵,求其中旋转、缩放、平移矩阵各是多少?
前两题都是高中题,后一题没有学过相关知识不会,面试官也表示理解。当然也少不了专业知识提问,一共三四道,只记得智能指针完全不会,后来趁着面试间隔恶补了一下,刚好在字节三面用到了。
二面
这是我目前最短的面试了,二十分钟就结束了。面试官是个中年大叔,估计35岁左右。他比较有特点的是,真的看了我的Github,觉得两个项目都挺不错。他还看到我刷题的库(其实经常拖更),问我做不做LeetCode,我说做了250道左右,然后就拿出两道LeetCode的题目问我:
- 给定正整数n和k,返回数字1~n中取k个数的所有组合。
- 给定二叉树的前序和中序遍历,返回后序遍历结果。
两道都是LeetCode原题,自然很轻松地写出来了,他很满意地结束了对我的提问。反倒是我对他的提问环节用了挺久,特地问了是做3D还是2D多,他表示雷火基本以3D为主。
三面
我的雷火三面挺惨的,面试官是技术总监,眼光相对高一点。自我介绍过后,面试官直接问了四个致命问题:
- 有没有运营自己的博客?
- 有没有参加过开源项目?
- 游戏引擎了解多少?
- 会不会追踪一些领域的热点?
前面三个我都是0,热点也只能说会看一些AI相关。然后他问知不知道AI在游戏领域有哪些应用,我把雷火宣讲的东西讲了一下,包括逆水寒捏脸、NPC战斗等等。算法是这样,只要求思路:给定一个数组,怎么分成两半,使得两半之和尽可能接近。这题我开始反应是枚举,再是基于排序做文章,最后才想到这是背包问题用DP。总之这次面完感觉雷火凉了,没想到一天之后还是收到了HR面邀请。
HR面
HR面花了将近一个小时,很不适应。自我介绍的时候,因为很多东西简历都有也没说,后来才发现HR手上居然没有简历。我介绍项目的时候HR喜欢深挖,但有些东西又怕HR听不懂也没法讲,感觉挺不自然的,还是喜欢技术面。比较有特点的是,HR问我寒假做了什么,我说主要自学AI相关的网课,然后列举了看Andrew Ng网课时做的一些应用,想不到没过两分钟她又问我用AI做过什么应用,瞬间脸黑。当然最后也问投过什么公司,有无offer,工资多少云云,我也没多想就如实说了。
总结
雷火的笔试我做的算很好的了,面试尤其是三面和HR面感觉不尽人意,最后侥幸拿到offer。总体来说雷火还是比较硬核的,建议刷题提升机试并且学习游戏引擎,雷火对于专业课诸如OS和计网的考察倒是几乎没有。值得一提的是,之前听说雷火喜欢养鱼,发offer较慢,没想到我HR面之后两天就发了offer,很是惊喜。
全部评论
(15) 回帖