腾讯日常实习面经

岗位:天美工作室-游戏客户端开发
时间轴:8.5 一面(后续待更新)
研一在读,开学研二,之前有面过一轮的腾讯日常实习,但最后挂在录用评估环节

一面(140min,牛客网面试)

(没错140min,7点15开始到9点半,面试结束后头晕加嗓子哑掉,后面半个小时基本考本能在面试了笑死)
前20分钟自我介绍加闲聊,由于正在上腾讯的暑期公开课,但突然收到面试邀请也很懵,因此和面试官多聊了一会,顺便解释了下简历已经过期半年了

算法题(40min)

聊完了简历之后八股没问就先抛上来三道算法题

  1. 合并两个有序链表,合并之后还要有序
  2. 实现二叉排序树,每次插入成功后返回父节点关键字值
  3. 给一个1000位以内的十进制数,将其转化为二进制然后按位逆序排列,再转换为新十进制数,并输出

做出两题,后面时间不够了

八股文(40min左右)

做完算法题之后,面试官说我们聊聊基础知识,也就是喜闻乐见的八股文环节

C++特性,如何实现多态等

C++虚函数相关:虚函数表内部原理实现,加入虚函数后是否会影响对象大小,影响的话增加了多少大小

智能指针相关:智能指针为了解决什么问题(内存泄漏),智能指针的引用计数和自动释放是怎么实现的,有没有看过源码,源码是如何实现上述功能的,野指针和内存泄漏的区别(这点没答上来,很难绷得住,问概念题是个什么操作)

STL相关:
map的原理,红黑树的原理,红黑树的优点在哪,红黑树的存放形式,如何插入节点(没有让说12种插入,还算人道)

编译内存相关:

  1. C++内存管理,分了多少段,在堆上和在栈上的区别,为什么要区分堆和栈,new和malloc的区别,
  2. 内存对齐,为什么会出现内存对齐问题,程序员为什么要关注内存对齐问题

图形学&引擎相关(40min)

聊完八股之后,面试官让我休息10min(可能他自己也要休息吧hhh),休息后和我聊聊项目相关,因为写过两个UE4和一个unity的项目,因此聊得都是这方面的话题

Unity和UE的区别:说了下Unity和UE的设计模式区别,语言角度:Unity用CS,UE用C++,写shader的方便程度,UE只要连连看还能实时调试还蛮方便的

讲一讲UE中自己比较熟悉的一部分,说了骨骼动画部分,如何实现ik,为什么有些游戏没有使用脚部ik

光照部分聊了兰伯特光照怎么在Unity实现的,还聊了聊基本的点乘叉乘,

碰撞部分聊了,平时用过哪些碰撞,球体碰撞的原理,多边形碰撞检测用什么算法(面之前刚看过闵可夫斯基算法hhh,小秀一波),如果运算效率较低,会出现胶囊体卡在墙中的情况如何解决

最后问了问我,在图形学和引擎领域广度上还算可以了,但深度上有没有什么探索,有没有产出(这点很惭愧一直在闭门造车,没有写博客的习惯,从此要改正了)

反问环节

项目组具体是哪个工作室,在做什么项目,如果我能进项目组,后续探索的方向上怎么选择(说是按照我的个人兴趣选择gameplay或者研究定制化引擎都可,但还说了一句要看组内的人员分配,这选择面可能就没那么广了吧hhh)
问了下后面还需要几轮面试,面试官说要再回去讨论下

第二天早起发现进入复式阶段,后续应该不会有这么久的面试了吧,复式后会来更新


二面(70min,腾讯会议面试)

这次面试的时间短了很多,面试官人也非常好,一些回答错误的地方会指引着回答正确,也有一部分问题和第一面重复,感觉发挥的不如第一次面试,可能会寄

闲聊&八股文(30min)

闲聊相关:

  1. 第一句先问我为什么想要加入游戏行业,为什么想要做游戏,怎样的学习经历
  2. 觉得架构师和普通的板砖程序员有什么区别(因为在聊的过程中我有提到过想在公司中学习如何提高代码质量,因此引出架构师),怎样的程序员才能成为架构师
  3. 期待在组内学到什么东西,如果实习中不能覆盖到自己感兴趣的部分会怎么做。

C++相关:

  1. 多态的实现形式,虚函数的实现形式,虚函数存放的位置,引出内存管理相关问题
  2. 内存管理为什么要区分堆和栈,其实和一面的内容有点重复,就不多赘述
  3. 在聊天框中发了一段代码,找出其中的问题:
void GetMemory( char *p )
{
    p = (char *) malloc( 100 );
}

void Test( )
{
    char *str = NULL;
    GetMemory( str );
    strcpy( str, "hello world" );
    printf( str );
}

int main() 
{
    Test();
} 

这段脑抽一直在说strcpy的缺陷,却没有看到是指针传值,在函数结束后空间就会释放,面试官提示了之后才反应过来

  1. 第二段代码,内存对齐相关,也因此聊了为什么会出现内存对齐问题:
Struct S
{ 
    int a;
    byte b;
    float c;
    byte d;
    byte e;
}

S s;
sizeof(s) = ?
  1. 第三段代码,cache相关,聊了聊操作系统相关知识:
int array[3][1000]; 
int i, j;
//遍历方式1
for(i = 0; i < 3; i++)
{
 for(j = 0; j < 1000; j++)
 {
  printf("%d",array[i][j]);
 } 
}
//遍历方式2
for(j = 0; j < 1000; j++)
{
 for(i = 0; i < 3; i++)
 {
  printf("%d",array[i][j]);
 } 
}
哪种遍历方式更快?

图形学&引擎相关(30min)

聊项目,具体做了什么东西,认为Unity和UE之间的区别在哪,如果给我选择,在做什么项目的时候考虑Unity,什么时候会用UE
UE中怎么看待蓝图的,蓝图和C++的区别是什么
行为树和状态机之间的区别是什么,各自最好在什么时间使用。
渲染部分聊了聊基础的渲染管线,在顶点着色之前还有什么环节,
如何理解光栅化,光栅化是什么过程(这段因为比较靠后了聊得比较急,感觉没说清楚面试官就不怎么想继续了)
自己有实现过哪些渲染,讲了讲UE中的连连看

反问环节(10min)

问了下如果这一轮通过了,之后还有几轮面试,回答说至少hr面试会有的,有可能还有下一轮的技术面
最后结尾以让我自己说自己三个优点作为结束。


如果这次也能通过,会继续更新的,但这次的把握感觉比一面小了一些,祈祷能通过吧

#腾讯##腾讯实习##C/C++##C++工程师#
全部评论
楼主你好,我想个问题,我感觉第一段代码的问题不是函数结束后内存空间会释放吧,我感觉是有两个问题。 第一是getMemory中malloc的内存没有被free掉,会有内存泄露的问题。 第二,整个代码的目的是str指针分配内存,然后为其复制helloworld并输出,但是最后str的值仍为NULL,输出时会报错,因为getMemory函数并没有实现为str分配空间的功能,在getMemory中传入的是一级指针,只是把str的值传进去了,没有传入str的地址,在函数中malloc后就会把一个分配好的新地址赋值给p,此时p的值就不是str的值了,所以函数结束后str的值仍为NULL。要实现为str分配地址的功能,传入的应该是二级指针或是指针的引用,不能只传入一级指针
14 回复 分享
发布于 2022-08-10 08:38
第三段代码哪个遍历快要怎么答啊
点赞 回复 分享
发布于 2022-08-15 22:22
同研一,开学研二,也在准备找日常实习,老哥这篇面经非常及时,我想问下动态规划有没有可能考,动态规划太难了😥
3 回复 分享
发布于 2022-08-08 21:23
天美工作室啊,羡慕了
3 回复 分享
发布于 2022-08-08 15:08
这个日常实习生会招不是准备毕业的学生么?
1 回复 分享
发布于 2022-11-09 21:33 广东
楼主通过什么途径投的?内推吗
1 回复 分享
发布于 2022-08-16 16:17
同公开课,不过楼主好强,楼主有无学ue的资料推荐哈
点赞 回复 分享
发布于 2022-08-28 11:44 江苏

相关推荐

只剩下一个月就要毕业了,回想起来好多事情就和做梦一样。首先交代下背景(为防定位,以下所有内容都有模糊,但我会在保护自己的前提下尽可能讲清楚)博主是京津冀地区非92艺术学理论相关专业的,历经四段游戏行业实习,最后在某厂转正。博主在高中时期是美术生,非常吊儿郎当的水平,联考的名次在省内排行2000+,好在文化课看得过去(只是相对美术生的平均水平而言),校考选了艺术理论相关的专业,也算是有书读了。大一的时候,博主在原行业实习,发现毕业之后会面临base仅限北上广深且月入5000还没有五险一金的状况。博主寻思这不行这会把博主饿死,并且博主在上大学之后因为沉迷游戏本专业学的东西完全没听,因此学艺极其不精,左思右想之后感觉要不真的、还是转行吧。届时恰逢疫情,博主在家里醒了打游戏打困了就睡睡醒了继续打游戏,过了俩月。博主想,这么爱打游戏,要么去做游戏吧。于是博主把脸一洗,写了份新的简历开始海投。这下来到了经典环节:所有的实习都要求实习生有实习经历,那实习生的第一份实习从哪来?(直到现在我也没想明白此局如何破解)当时的主播是没有预期的。运营,策划,营销,pm,测评,广告投放,甚至游戏客服,有一个算一个,只要和游戏沾边且没有硬性技术限制我都会投一份试试看,反正投简历又不花钱。结果当然是惨败。后续回顾发现博主在这个环节投递了200+公司,收到面试不到5个,最后留给我,伸出橄榄枝愿意接纳我的公司,只有一个。这是一家已经没落的小游戏公司,在页游时代,它也算是赫赫有名,职位是中台支持相关。思考了一下(没有比较offer的环节,只是对转行这件事思考了一下),博主决定接下它。博主开启了南下的副本。现在回想起来,那段记忆都如此地熠熠生辉。完全在能力范围内的工作,舒适的环境,不定时的下午茶和友好的mt,一切的一切都那么符合我对游戏行业的幻想。博主的主要工作是玩游戏,玩各种各样的游戏,并且对游戏写报告,对它进行一些分析。由于博主的游戏品味非常广泛不挑食,时间久了对不同品类的游戏结构都有差不多的了解,因此这份工作对博主来说非常简单,也获得了很高的评价。在结束实习的时候,博主想,做游戏真好。对的,做游戏真好,不一定是真正做游戏,参与这个过程都足以让人幸福到头晕。博主也肖想过有一天能够进入项目组,真正开始做一款游戏。当时也有过如此的尝试,但由于没有游戏制作经验,没有代码基础,没有demo,尝试了非常久都没有回音。这时候博主开始了第二份工作,回到京津冀开始做用研。这段经历对博主而言是一块跳板,由于博主对游戏的了解程度在用研的范围里算是非常突出的优势,在进行访谈相关内容的时候也感到【工作是如此地轻松简单】。但做游戏的想法一旦扎根就难以忽略,博主在早10晚8的规律生活中会挤出一点时间来学习c#相关内容,同时兼顾自己的学业。在这段经历中,博主收获了很多前辈好朋友。在实习三个月之后,博主之前,很早很早之前投过的简历有了回音。于是博主毅然去了比上一段经历更南的地方,作为一个游戏策划参与游戏制作中。刚到这个城市的时候,博主的快乐让我对这个城市的好感都增加不少,自然忽略其高昂的房租和生活成本。好幸福,博主心想。此时距离冒出【要不去做游戏吧】这个想法已经过去了一整年,在一年后的今天,博主的梦想终于要实现了。博主快速入职,投入到忙碌的项目组中。由于博主之前的工作经历都是中台相关,没有任何的相关内容,在上手的时候非常困难。组里的大家也都非常忙碌,没有时间来教博主,只能通过组里的文档进行上手。由于自己的知识面缺失和的确过于繁重的工作,一度要到11点才能够下班。下班后,博主也要自学lua和策划设计案(低保真/ue/figma)相关的内容,同时也要兼顾学业。博主很累,但依然很高兴。其一是因为博主真的在做自己想做的事情,其二是因为这个公司承诺会有转正机会,博主太想抓住这个机会了。毕竟在做的这个游戏,我真的,真的还挺喜欢的。结果就是被画饼了。在博主努力学习4个月之后,博主的mt说,我们还是想要更有经验的同事。可以说这个打击对博主来说是巨大的,由于博主从未在工作中被否定(中台内容对博主来说相对简单),而第一次做策划就被打击。不认可,忽视,失败,种种的负面的年头围绕着博主。博主一度想,是不是自己完全不适合做策划?博主失魂落魄地回到家中,在一个月房租是博主半个月工资的小出租屋里大声哭泣。博主的女朋友安慰博主,说没事的,能走到现在这一步已经很厉害了。博主在女朋友怀里哭,一边哭一边在想,即使到现在为止似乎什么都没有了,但我还有一直支持着我的人。现在回过头看这段经历,其实也没什么,只是人生中必然会跌倒的坎而已,摔倒了疼痛是必然的,但重要的事情是怎么爬起来拍拍土再向前走。博主花了一晚上的时间收拾情绪,立马离职开始继续投递秋招,同时完善作品集+准备毕业(这段时间内在家秋招+面试全靠女朋友养,还被喂胖了五斤),最后终于获得回音,拿到了某厂开放世界项目的实习名额,承诺有转正。于是博主继续实习,并发现自己在前一段实习中积累的经验在这段实习中也能够派上用场。比起上一段实习开始时的迷茫,在开始这段实习的时候显得如此轻松——至少是【心里有底】的状态。博主之前自学的编辑器也派上了用场。虽然这次做的项目并没有上一个那样那么喜欢,但现在起码有盼头了,至少还在做那个一年前就已经在做的梦,这样就已经很好了。时间来到了年底,距离毕业不到半年。依然是实习转正0offer的状态,于是急了。博主开始为all&nbsp;in暑期付出代价。这个期间秋招基本已经结束,春招还没开始,于是只能抓住秋招的尾巴开始苦苦期待上岸。这段时间非常焦虑,每天上班也小心翼翼生怕自己出错丢掉最后一个机会。总之整个人的精神状态很差。但在此时之前投递过的一个小厂有了回声,算是给我下了一个保底offer。起码不会失业了!家里人安慰我,于是紧绷的心慢慢放下来了一点。心态平和之后,感觉做事都能放的开一些。过去了几个月后,终于拿到了这个厂的转正名额。收到邮件的那个晚上,春天的风柔和地吹晃了树叶的影子。我一个人走在回家的路上,给妈妈发送offer截图。妈妈,不管怎么样,起码我做到了。两年前的晚上,我开始修改我的第一版简历。从几乎所有的公司都已读不回到定下一份游戏研发的工作,这条路好长好长。我好累,但至少我是幸运的。之前的经历告诉我,努力不一定会有结果,但我至少是幸运的——至少我的树上结下了一颗果实。于是我的秋招结束了,虽然此时距离毕业不到三个月,已经算是春招了。回忆总结一下,只能说有几点是很重要的:1.非92粉领准备转行要趁早,尽早确认目标岗位然后干就完事了。博主这种没有什么初始技能点的只能是把自己垒成数值怪,来确保自己在市场上有竞争力。这一点是可以借鉴的。2.不要all&nbsp;in暑期。暑期转正是一场豪赌,只能说能转正当然是好事,不能那可能会非常影响心态。多投投多尝试,不要吊死在一棵树上。3.不要停止学习,这是最重要的一点。保持强烈的好奇心,不断地看看上下游是怎么做到,同岗位的其他人都做些什么,快速学习,学到手的就是你自己的。4.珍惜所有爱你支持你的人。以上,博主的求职之路就大概是这样。希望能够帮到大家!有问题可以评论区留言,我会在能力内和能说的范围内尽力帮助大家
投递腾讯等公司10个岗位
点赞 评论 收藏
分享
评论
53
241
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务