第一次发面经,之前一直是看面经,吸收了很多经验,感谢各位大佬的帮助!现在轮到我回馈了,顺便许愿下周hr面。从3月开始一共经历过7次面试,其中字节三次挂了我两次TT,不过给我上了很多课,才能让我顺利通过了腾讯,腾讯的这三次真是我体验最好的三次,感谢面试官不嫌弃我菜,话不多说,正文开始!
一面(3.9 视频面 60min)
- 项目相关(简历上只放了两个,一个本科用Python做的音乐网站,另一个在投的科研项目,科研项目的应用场景/有没有测试过网站的最大连接数)
- 是否了解游戏后台开发相关的东西?(不了解)玩过什么游戏?
- Linux相关经验有吗?常用哪些指令?
- C语言开发经验有吗?在linux上开发过什么?
- C++基础:了解STL吗?用过哪些?vector和set的区别是什么?
- 平常用哪些命令编译?调试呢?gdb调试打断点的命令是什么?单步调试呢?
- 网络相关:TCP和UDP的区别?TCP拥塞控制?一个比较大的数据报TCP和UDP分别怎么处理?UDP怎么保证分的包能被正确接收?
- protobuf是否了解?
- os相关:大端小端是什么?能否用c++代码简单测试下当前os是大端还是小端的?(int指针转char指针)
- 如果内存只有1G,但是进程要占2G是否可以?
- 算法题:
- 1到100的和写出能想到的所有算法(写了等差求和、循环和递归实现)
- 实现memcpy函数(后来面试官说节约时间说下思路,就说了就双指针,然后判断下目标地址和源地址的关系来设置双指针是从头部开始还是从尾部开始,从而避免重叠空间可能导致的问题)
- 10亿个数怎么排序,口述思路(说了多路归并加堆,堆优化成败者树也行,还好没问败者树的原理)
- 协程是否了解?
- 关于内存对齐是否了解?(举例说了下C++内存对齐和#pragma)
- 是否了解云?
- 是否了解docker?
- 对我们有什么问题?(问了点上班情况加班情况之类的,主要做那些业务)
二面(3.11 视频面 90min)
- 上来直接给定40min做题:
- 快排,说明时间复杂度
- 反转句子,但要以逗号作为分隔,样例如下:“hello world, god bless you” -> “world hello, you bless god”
- 然后问了下本科的成绩,什么科目拖后腿,擅长什么科目,考研还是保研,研究生的成绩,有排名吗?老家哪里?愿意来深圳吗?
- 数据结构:哈希表有了解吗?怎么解决冲突?什么是一致性哈希?
- 内存对齐了解吗?给一个结构体,包含char、int、指针,sizeof有多大,为什么?如果想紧凑对齐,应该怎么做?
- 粘包了解吗?
- 二叉树怎么找到两个节点的最低的公共祖先节点?
- 有5000w行数据,要怎么快速查询?
- Linux用过吗?用过哪些命令?
- 怎么看磁盘容量?
- 怎么看内存占用量?
- 怎么找某个文件?
- 函数的调用过程是怎么样的?
- 什么是堆排序?
- 指针常量和常量指针的区别?
- 数学建模:对一个城市的加油站数量进行预测,给5分钟思考?(加油站跟车相关,车跟家庭数量相关,家庭数量和人口相关,人口能查,然后用来联系各个变量的中间量可以通过采样得到,比如一个家庭有车的概率这些。推到车数量的时候,怎么和加油站数量间建模没想清楚,随便扯了一个概率,面试官也感觉到不对劲了,让我好好细化一下这部分,最后通过一个月内所有车加油时间和加油站工作时间相等建立了一个方程来推导)
三面(3.12 电话面 60min)
- 介绍下音乐网站项目。
- 项目中遇到的觉得比较困难的问题?
- 表是怎么设计的?比如提到的歌单,后来分成创建歌单和收藏歌单,这两个怎么和用户关联?有没有考虑把歌单分成两个表?
- 如果要求你对音乐数据一段一段发送,你会怎么做?分块大小怎么确定?
- 如果网络延迟比较高,能不能提出一个合理的方案去确定缓冲区大小?
- 能不能建个数学模型,会考虑哪些数据?给缓冲区定义一个公式?(直接就用tcp窗口大小表示对网络延迟大小的估计)
- 如果音乐网站的体量上去了,会面临怎么样的瓶颈?
- 还有别的瓶颈吗?
- 还有呢?比如给一个场景,某个大明星发布了一首新歌,短时间内大家都会去访问这首歌,这会有问题吗?
- STL用过没有?介绍下常用的STL?
- 你刚说的set是按照序进行存储,重载了小于号就可以了,那怎么知道找到相等的元素?(想了一会,没想出来,面试官给提示,关键点在于如何利用小于来实现等于,瞬间领悟,a<b和b<a都是false,那就是等于)
- 有没有用c++写过socket编程?(被字节上了一课后就专门去敲了TCP的代码,派上用场了,服务器端和客户端用到的所有函数全都说了一遍)
- 你刚刚说accept会阻塞,有没有不阻塞的方法?
- 玩过什么游戏?(说了下主玩ow、csgo)
- fps游戏中,A向B射出子弹,你能不能描述下这个过程?(生成子弹、碰撞触发blabla)
- 碰撞触发这个计算在客户端上计算合理吗?(不合理,如果可以外挂开发起来就太容易了)
- 放在服务器上计算,会有什么问题吗?(没想明白要问什么)
- 比如给定一个场景,A和B贴脸了,A发射子弹,A肯定会命中B,如果按照常理这个子弹经过计算会在t时间命中B,然而网络延迟高导致包到达的时间在这个t之后,这个时候要怎么处理?涉及到两个问题,一是如何在包延迟的时候仍然判断得出来子弹命中,二是算出来应该命中了要不要让这个事情再发生,也就是顾及A的体验还是B的体验?
- 觉得自己有什么优缺点?
- 有什么问题?
总结
真的超级超级超级幸运,被天美捞了,而且问的基本都复习到了(之前跟着好朋友一块投了字节,他进去了但我被挂的时候真的好丧,然后拼命复习,最后能通过腾讯可能也是因为字节面试官给的一些建议,所以我对字节还是抱着感激的心情的)。
一面的时候面试官说是游戏部门,我还心想不会是天美光子吧,结果二面面试官说他们是天美,压力一下就好大,好在面试官人都超级nice,一开始会聊些会让人放松下来的话题。前两面还是以八股文为主,算法题的话虽然都不难,但被时间卡着终究做起来还是很紧张,可能我面的还是少。有些问题开始可能不会也没关系,就像我游戏开发这块基本就是0,但面试官会引导,完全没听过的也可以提出下如果是我,该怎么去解决,很多方案说出来我都觉得有点扯,但面试官还是会顺着我的想法来继续让我细化,最后提出一个看起来好像还像回事的东西。
总而言之,腾讯给我的感觉就是,计算机的基础知识还是要有的,遇到不了解的也可以通过引导最后说出自己方案,可能让面试官觉得你是可以培养的,大概率都会通过吧。最后祝大家都能拿到自己想要的offer,以及许愿下周hr面!!
全部评论
(22) 回帖