2026暑期实习 字节江南工作室---游戏客户端---面经

📍面试公司:rt

👜面试岗位:rt

(因为个人没有面试开录屏或者录音的习惯,所以只凭记忆写,可能有所遗漏)

📖面试问题:

一面:

(6,7部分聊了非常久的时间,其他很多问题都是一笔带过)

0.准备好了吗?准备好了就开始(没想到会)

1.自我介绍

1.5 看你在xx实习过?(由于目前实习的项目组存在的历史遗留问题,我在这个时候就开始憋笑了)

2.了解C++吗?

会一点。

3.讲讲虚函数表和多态的实现。

没什么好说的,背就完了。

4.讲讲常用的智能指针。

简单说了一下shared_ptr和unique_ptr。

5.lua了解过吗

没。

6.了解UE的GAS吗?

把GA、GE、AS、ASC这些讲了一下,GC没怎么用过所以就说不太会。这部分聊了很久。讲了一些关于GAS的有意思的使用方式。

7.拷打实习

主要基于上面的GAS问了我在公司里面对角色技能的开发,然后的位置同步怎么实现,怎么避免卡顿,一些bug等等

8.帧同步和状态同步了解吗?

不了解。

9.游戏AI你一般怎么实现

讲了一下我怎么写有限状态机,因为行为树不熟悉就没说。

10.讲讲Unity的生命周期函数

11.讲讲垃圾回收

简单说了一下怎么判断某一块内存是不是垃圾,然后垃圾多到一定程度就释放。

12.追问垃圾回收更底层怎么实现?

不会。

13.讲讲你简历里面写的UI框架?

14.追问:怎么实现面板分层?

15.手撕

两数之和(不要笑挑战失败了)。

16.反问

项目组?可能是星球重启或者另外两个在研项目。(大概率前者)

工作时长?1095(大概)。

对实习生的培养方案?会有个mt带,有想研究的部分可以自己去看源码。

有什么表现不好的地方?没有(感觉是逗逗我)。

四天后约了二面。

二面:

0.自我介绍。

1.聊聊你在现在的公司这段实习经历吧。

讲了我做的UE编辑器工具,关卡demo,一些GAS相关的东西,还有行为树。

2.讲一下C++里面map和unordered_map的区别?

(我当时记得map是红黑树但是忘了红黑树的底层原理,怕他追问所以我直接说不知道map的原理了)map不懂,unordered_map底层是哈希表

追问:哈希表的实现?

(随便哪个八股都有,背就完了)

3.拷打简历上一个的项目。

说了AI是怎么实现,怎么手写有限状态机。UI框架怎么实现,如何将UI分层。

追问:为什么UI要分层。

不知道,看网上很多都这么做。

追问:MVC懂不懂?

说了一下再UE的一个项目里面结合GAS和做的一个血条蓝条的UI如何基于MVC设计。

4.拷打另一个项目,异步加载的好处?为什么当时会选择用异步加载?

避免同一帧太多操作造成卡顿,然后很诚实的说了当时根本没想到这个,最初只是因为玩家在场景还没加载出来就先加载了,导致直接遁入虚空,所以才异步加载场景。

5.既然用了异步加载,那懂不懂系统操作?

具体指什么?

比如说用户态内核态这些?

平常程序运行在用户态,如果需要fork之类的系统操作就切换到内核态,操作完成再回到用户态?

追问:还有其他的吗?

不是很了解了。

6.贪吃蛇玩过吗?

玩过。

7.设计一下贪吃蛇需要哪些类吧。

当时随便说了一下,主要是把蛇头和蛇身分开吧。

8.直接写一下你这个贪吃蛇吧

开VS给搭了个大概的框架。

然后因为我的麦克风突然坏了,于是被迫终止面试,开始通过打字反问

9.反问。

和一面的时候问的一样。确定了项目组是星球重启。进去之后会先让我做个minigame,然后开始干活。表现的话让我加强基础知识,比如说操作系统。

没想到这种情况还能过,一天后就约了hr面。

🙌面试体验:

一面:

面试官很和善,没怎么给我上压力,全程聊的很愉快。

二面:

和一面差不多。

#软件开发笔面经##实习进度记录##牛客在线求职答疑中心##牛客创作赏金赛##牛客激励计划#
全部评论
包稳的,不问的话我梁州壮士吃石
1 回复 分享
发布于 04-21 01:06 上海
好强啊,感觉
1 回复 分享
发布于 04-19 22:03 辽宁
不稳木偶直播吃石
1 回复 分享
发布于 04-19 14:43 江西
怎么样丫佬,过二面了嘛
点赞 回复 分享
发布于 04-21 22:54 浙江

相关推荐

发点面经希望能求求好运~3.26投递,3.29笔,4.15早一面,无手撕面完秒挂(八股盛宴)----自我介绍--------项目环节1.AB包怎么打包和分包的2.有没有对你的工程进行过更新,资源卸载时怎么样的3.Unload()区别,什么时候用Unload(false)4.压缩格式了解吗5.导表工具是怎么做的,有了解网上开源的导表工具吗?6.FSM怎么设计的7.对象池怎么设计的8.UI怎么和逻辑做交互的9.事件中心底层是怎么做的10.单例会有什么问题--------因为我是做3d视觉的,有个3DGS相关的横向,就问了我一些图形学八股1.说一下渲染管线2.了解MVP矩阵吗3.一个物体先旋转,再移动,或者是先移动再旋转,他们的结果。4.那我给你一个点。你怎么判断这个点是否在一个三角形内。5.Unity中,定义一个摄像机需要哪一些基本的参数。❌(忘了,只说了摄像机内外参,畸变焦距这些。Unity的参数没想起来,估计还有FOV,裁剪平面,投影类型之类的)6.解释下前向渲染和延迟渲染(G-Buffer,大意就是先深度测试减少不必要的片元渲染)7.你刚说的抗锯齿,除了MSAA,还有哪些抗锯齿?(SSAA超分,FXAA快速近似,查找边缘,TAA时间)8.你有了解一些阴影的基本原理吗(静态阴影LightMap,动态阴影ShadowMapping,大场景级联CSM)9.了解哪些后处理算法❌(伽马校正,景深,运动模糊,但这个我具体没记这些概念对应的算法)------问熟悉什么语言,我说C++C#。问我脚本语言熟悉吗,我说Lua刚学没实操过(主要确实没把握),科研用python1.多态怎么理解2.New和malloc的区别3.Free怎么知道要释放多大一个空间❌(后来看了下,malloc在分配空间的时候,会额外有一个小块空间存相关信息,给free传指针地址的时候,free就会用到)4.说下Vector的原理,和list各有什么优缺点5.Map和Unorder_map的区别6.哈希表发生冲突怎么解决7.寻路算法用过吗?8.网页上输一个地址,最后把它显示出来,整个流程是怎么样的?❌(有点久没看,忘了,说了一通https的原理)9.Tcp和udp的区别?哪些游戏你觉得用的是tcp,哪些是udp----最后无手撕,问我平常有玩什么游戏,深入了解过哪些游戏的实现?反问1.做什么业务(三国志战略版)2.整体有什么改进空间(项目做得深度不够)-----面完后秒挂,项目深度不够这个确实是我强行转行不可避免的会被抨击到问题。可能小工作室更偏向经历丰富一些的。当然也有可能是我投递时间太晚没hc了,或许只能勉强这样安慰自己了。
点赞 评论 收藏
分享
会员标识
04-17 20:20
已编辑
电子科技大学 算法工程师
发点面经希望能求求好运~4.7早面,两天后挂了,面了1h无手撕。面试官人还是不错的。另外面试官那边说在招的都是ue的项目,主要就问基础知识了(八股盛宴)自我介绍略。-----------1.说一下多态√(静态多态函数重载和模板,动态多态派生类和虚函数2.说一下虚函数怎么实现和调用√ (虚表,虚表指针)3.虚表什么时候初始化√(虚表编译时,虚表指针new的时候)4.多继承几个虚表指针,内存分布?√(子类继承了几个基类就有几个虚表,和对应的虚表指针)5.定义一个空的class,编译器默认会帮我生成哪些函数??(回答的是构造、析构、拷贝构造、)(---实际应该还有赋值运算符和两种取址运算符)6.默认生成的构造和析构是虚的吗?√(构造不是虚的,析构没有子类的话默认也不是虚的,但如果是有子类那父类必须得是虚的)7.刚刚提到默认生成的拷贝构造,那么它是一个深拷贝的实现还是浅拷贝实现??(没准备到,一开始说了浅,但是想到浅只是新指针指向,如果两个指向同一个资源,delete两次就坏了,于是说了深。这里面试官还引导我说一下深浅拷贝的概念。)(---实际默认实现是浅拷贝!!但确实也存在上面的那个隐患,所以需要人为的重载)8.说一下C++的内存分区,以及各个区的功能√9.静态成员变量,在那个分区?√ (静态存储区)10.函数内的静态变量或者CPP文件下的静态变量√(都是静态存储区,前者即使作用域消失也还会在内存中存在,只是没法访问;后者可以文件内访问,只是没法跨文件)11.那它们三的初始化的时机是一样的吗?√(C++中的类静态成员变量和cpp文件下的是main执行前,函数的局部静态变量是首次调用函数时。12.New和malloc的区别√13.什么场景使用new什么场景用malloc?(这里说了需要构造对象用new,需要分配内存给基本类型又不需要构造的时候用malloc14.New和Malloc分配的时候,释放时的方式?√(delete/free)15.Malloc申请内存的释放,可以只释放一部分吗?√(free我记得只能释放完整的内存吧)(---如果想动态调整倒是可以用realloc??这个不太清楚)16.指针引用区别√17.class里有三个int,用sizeof给这个class的引用和指针取值,他们的值是多少,一样的吗?√(不一样,引用就是class原大小12,指针就是4or8)18.指针变量所指向的地址不能改变,应该哪里加const?int * const19.内容不能改变呢?const int * (---其实还有int const * )20.四种类型转换,每个的作用√21.static_cast相比C语言用括号进行转换,好处是什么?X(只说了更安全会有类型检查……)(---实际还有,C语言只用于值类型,static_cast能用于指针、引用以及类)22.现在对两个无关的类型,用static_cast进行转换,会得到什么?√(说了编译时就会报错)23.两个无继承关系的类型,用dynamic_cast进行转换,会得到什么??(说了运行时报错)24.运行时报错的具体表现??(指针类型的转换失败,就会抛出nullptr,引用类型的异常,抛出bad_cast(---背倒是背了,但是答的时候没有注意大前提……无继承类型的话,是编译时报错……转换失败才是上面这两种……)25.智能指针说一下√26.shared_ptr作为函数的参数传递时,会增加引用计数吗?√(值传递会调用shared_ptr的拷贝构造,引用计数会加,但是引用传递就不会)27.如果是我用拷贝的方式来传递,他是在什么时候把加一给减掉了?√(函数执行完,局部变量生命周期结束时,拷贝的那个shared_ptr对象自己的析构调用时减128.Unique指针,可以写一个函数,它的返回值是unique指针吗?X(我说要分情况,如果一个函数里局部变量的unique指针,不能这样返回,如果全局的就可以)(---这里应该是完全没答到点上。函数返回值直接用unique_ptr是恰当的用法,临时对象直接通过移动语义传递独占所有权。)------数据结构篇-----29.说一下栈和队列,应用场景√(函数调用,回溯算法//BFS,FIFO策略)30.如果在C++里自己实现队列(不用STL),有那些方式?√(链表队列,数组用循环队列)31.用数组的方式来实现的缺点是什么??(会有空间的浪费,队列最大长度也有限)32.现在我把队列改造成一个带优先级的优先队列,我现在我向里边插入一个元素,它大概的流程是怎样的?X (这里当作成了OS里的那个多级队列,直接超级大爆,后面面试官甚至提醒了我堆排序也没唤起记忆)33.计算哈希值有哪些常用方法(说了MD5码,SHA256,简单的话就取模)34.遇到冲突怎么解决?√(链地址,开放地址法)35.链地址法怎样来解决哈希冲突。而且使用这种方法,最后查找的时候是怎样来查找?√(指针数组,取模后找对应槽位的链表进行遍历,顺便提了一下链地址如果长了,负载因子高了也需要动态扩容并调整哈希函数)36.用哈希表实现的容器?√37.红黑树相比于二叉平衡树的优点?√(只说了平衡的严格程度,插入和删除效率也更高,虽然同为O(logn)但红黑树所需要的旋转更少)-----根据项目问八股环节---------38.“从操作系统层面考虑序列化,中间大概发生那些流程,把内存的数据转换成硬盘中的数据?”X (文件IO忘了,只说了转换为流文件再写入磁盘)39.这个过程它会涉及到操作系统里边用户态和内核态的切换吗?X(一开始说了不能,爆了,下面面试官再问的时候才说能)40.用户态和内核态就是他设计出来的主要目的是什么?A:内核态可以访问调度各种资源数据,包括外围设备,用户态只能访问分配的资源。41.游戏的存档IO这一步,可以在主线程进行吗?他会不会导致游戏就是卡住了,比如你写的东西很多A:有可能42.那你会考虑怎么实现和解决?A:可以考虑协程43.我们先说协程,它本质上是开了一个新的线程,还是用其他的方式来实现?√(说了一下协程的原理)44.稍微发散一点,如果我现在很多数据量很大的需要写入到硬盘中,并不一定是游戏存档。你来写程序的话,会写一个多线程的方式的程序,还是写一个多进程的方式的程序更好一些。A:认为多线程好一些,会共享内存且线程切换开销小一些,但是要注意写入时的保护(感觉是一个开放性问题,还有什么可以说的吗?)45.那有哪些线程同步的方式?A:临界区,互斥锁,信号量46.假设我们用信号量的方式,简化一下,比如就两个线程,一个写的,一个读的,这个信号量大概是怎样来操作的?A:我说可以允许多个读线程并发,读与读之间可以不互斥,但写线程要和所有其他读写线程互斥(感觉答的不对口)47.UI相关有用到什么设计模式吗?A:我回答了UI管理器用了单例,然后一些其他对象触发UI逻辑更新时会用到观察者------没有手撕------反问问了面试官部门现在的工作内容?然后实习生进去一般是做什么?问了如果Unity转UE有什么建议还是说工作室会有什么指导?#牛客AI配图神器#
点赞 评论 收藏
分享
评论
4
15
分享

创作者周榜

更多
牛客网
牛客企业服务