10.10 tap4fun 游戏客户端 一面70min

1.自我介绍

2.上来直接问项目,自己做的游戏demo(UE4),要详细说明
答:
Character类
    摄像机
        弹簧臂,相机
        遇到的问题:移动摄像机中bUseControllerRotaionYaw
    输入控制(移动,攻击)
        PlayerInputComponent->BindAxis
        PlayerInputComponent->BindAction
子弹Base类
    移动组件、碰撞体/碰撞逻辑、音效、粒子效果
    与Character是组合的关系,Character要发射子弹
    爆炸、碰撞逻辑(OnBeginOverlap)
游戏AI
    UE中的AI行为树,selector、sequence、EQS、Decorater,举了一个生活中的例子来说明。

子弹是怎么生成的?
1.PlayerInputComponent->BindAction("PrimaryAttack", IE_Pressed, this, &ASCharacter::PrimaryAttack);
2.void ASCharacter::PrimaryAttack()
3.void ASCharacter::PrimaryAttack_TimeElapsed()
4.void ASCharacter::SpawnProjectile(TSubclassOf<AActor> ClassToSpawn);在这个函数中:
    设置子弹发射的Socket位置;
    设置子弹碰撞体大小;
    设置子弹发射的飞行距离(起始位置+单位方向×5000),如果碰撞到了某物体则重点就是碰撞点
    调用GetWorld()->SpawnActor<AActor>

子弹会一直存在吗?有没有做缓存?
1.这里只答了子弹在碰撞后的触发事件后,会调用Destroy,至于缓存,不了解。。

那如果子弹没有碰撞呢,会不会不会销毁?

你刚才关于摄像机说了挺多,那你能说一下怎样去把一个3D场景中的元素投影到2D屏幕中的?(渲染管线)

简单说一说你做的光线追踪渲染器?概念了解多深?与其他渲染方法的区别?这个光追概念提出了很久了,为什么近几年才开始使用?(硬核。。)
1.首先答了光追原理
2.然后答了Ray Tracing的如何受限于硬件(其实是瞎答的)
3.然后答了Path Tracing,从算法上的提高(也是瞎答的)
4.最后总结说受限于硬件和软件算法层面,最近几年才得以广泛应用(。。。)

继续回到你做的游戏,CS玩过没?FPS游戏子弹穿墙的bug是什么原因?(不知道)
1.答了碰撞体大小,可能大于墙的厚度,然后碰到墙后面的玩家(应该是不对的,毕竟敌人可以离墙很远)
问:那你怎么去解决?
答:可以调整一下墙的碰撞体积
问:那这样会不会使得墙碰撞体积过于厚了
答:那从碰撞顺序入手,只进行第一次碰撞逻辑,就停止执行碰撞逻辑。
问:那你这样的话,有很多情况下是没有第一次碰撞逻辑的,这下怎么办?
答:。。。一般在地图里,子弹射程肯定是在地图范围内的,除非向天上打一枪。。或者从射线检测方法入手,比如从枪口发一个射线,碰到墙体就结束,这种思路。

数学建模说一说?做了什么题目,什么思路?(这我是真没想到的,,,都4年过去了,早忘了,当年保研面试都没老师问过这个。。。)


3.C++

除了C++用过别的语言吗?C++STL数据结构的底层实现原理,功能对比。
vector、list、deque、map和set、unordered_map和unordered_set、stack、queue。能说的都说了。

那平时哪个数据结构用的多一些?为什么?

C++11的新特性?
能说的都说了。

C++的try和catch的怎么实现的?
不知道,可能是底层是if-else这种吧,后来面试官说是顺便问一嘴。

讲讲C++内存管理
说了new/delete,答了operator new、placement new、malloc、brk/mmap,构造函数,最后返回指针。
说了C++内存分区

怎么知道需要释放多少内存?free的时候。

C++11的智能指针说一说。并且设计到内存管理这块现在很多语言比如Java和C#,都GC机制,针对这些你有没有研究过。
1.答了各种指针,还有shared_ptr机制和循环引用问题
2.答了UE的GC(标记-清扫算法)

做过网络编程吗?游戏中有用网络的功能吗(没有,只了解基础知识)

设计模式用过哪些?
答了单例(懒汉式、饿汉式)、工厂(NewObject)、观察者(MVC,UE4中的多播委托),举了UE中的实际应用。(其实只说了大概,因为自己没有手动实现过)

算法题:大数相乘。
答了A*b这种形式,就是手动模拟竖式的方法。但是问的是均超过long long的范围。
问:那你这样会有很多开销啊,有没有其他的思路
答:(想了半天,记得有个中国剩余定理,但是细节也忘记了)其他的不知道了。

在学习和生活中有没有遇到比较困难的问题?怎么去解决的?

反问环节。

十一前因为受伤推迟到了十一后。
总体感觉稍微难一些,但问的都是简历上的东西。比较奇怪的是竟然问了本科水的不能再水的数学建模。。。而且也米有问实习经历。而且场景题问了好多。
具体自己可能做的游戏demo扣的不深,有很多地方说的有些牵强,还是需要打磨一些。
希望能有后续吧。。


#游戏客户端开发工程师##游戏##tap4fun##游戏开发#
全部评论
硬核的面试过硬的技术
点赞 回复 分享
发布于 2022-10-11 15:52 河南

相关推荐

头像
09-21 16:59
已编辑
门头沟学院 Unity3D客户端
1.&nbsp;请描述一下你使用C#语言的经验,包括你在实习中的具体工作。2.&nbsp;你能否详细解释GC机制?3.&nbsp;你能比较一下Unity的GC机制和C#标准GC的不同之处吗?4.&nbsp;装箱和拆箱操作是如何影响GC的?请举例说明。5.&nbsp;在你的项目中,你通常使用哪些数据结构和算法?6.&nbsp;你是否有手写数据结构的经验?你通常如何实现?7.&nbsp;请设计一个计时器,它能够根据指定的时间间隔和调用次数工作。8.&nbsp;你如何优化大规模任务的计时器设计?9.&nbsp;请分享一个你在实习期间参与的项目,并详细说明它如何优化性能。10.&nbsp;递归可能导致哪些问题?你如何避免这些问题?11.&nbsp;你平时玩哪些类型的游戏?最近玩了哪些游戏?12.&nbsp;你最近阅读了哪些技术书籍?《CLR&nbsp;via&nbsp;C#》这本书给你哪些启发?13.&nbsp;比较浮点数时,为什么需要考虑误差范围?你是如何进行比较的?14.&nbsp;请解释帧同步和状态同步的概念,并讨论它们在多人游戏中的应用。15.&nbsp;在多人FPS游戏中,你如何实现延迟补偿和预测回滚?16.&nbsp;TCP粘包和分包问题是如何产生的?你有哪些处理方法?17.&nbsp;广度优先搜索和深度优先搜索在数据结构和实现上有哪些不同?18.&nbsp;你是否有处理大规模数据或高并发系统的经验?如果有,请分享一些案例。19.&nbsp;你如何评估和优化代码的性能?请提供一些你使用过的工具或方法。20.&nbsp;在你的实习经历中,你学到了哪些团队合作和项目管理的技能?21.&nbsp;你如何处理工作中的压力和挑战?请提供一个具体的例子。22.&nbsp;你对未来的职业规划有何看法?你希望在技术领域达到什么目标?23.&nbsp;你是否有参与开源项目的经验?如果有,请分享你的贡献和学习。24.&nbsp;你如何保持对新技术的持续学习和关注?请谈谈你的学习方法。25.&nbsp;在你的技术生涯中,你遇到过哪些挑战,你是如何克服的?
查看25道真题和解析
点赞 评论 收藏
分享
头像
09-17 14:20
已编辑
门头沟学院 C++
8.25&nbsp;游卡二面游卡二面主要是考的场景,不过一来还是先八股过度一下,问了一下内存速度排序,先后是寄存器,3级缓存,主存,磁盘;然后提问在代码哪里有体现,鼠鼠一开始说stl中会使用内存池技术进行内存管理,面试官说不是这个方面,在思考一下,后面回答到for循环会涉及cache加载和分支预测。然后让鼠鼠计算512*512的SRGB文件有多大,512*512*4=1MB。然后问鼠鼠有了解硬件上进行格式压缩吗?鼠鼠也是一问三不知啊,但是下来了解了一下shader里面会有高精度,半精度和低精度,对于一些以0为中心的数据可以通过半精度来存储,不知道这样算不算在硬件上进行压缩了。然后提问对于点积和叉积的理解,鼠鼠点积就是投影,也可以理解为两个向量的相似度;叉积就是求构成的四边形面积,但是带有方向;然后又提问如何求出射光线以及自己是否有使用过点积和叉积,鼠鼠说Wo&nbsp;=&nbsp;Wi对n的垂直投影-Wi在n方向上的投影,面试官说思路是对的,但是数量关系应该是两倍。这里鼠鼠下来感觉不太对,我这种方法计算出来就是Wo,两倍关系是使用n和2*dot(n,Wi)来构造Wo。后面就是两个场景题,一个是捡拾到新物品,背包会红点来提示你在哪里有新物品,这个该如何设计,鼠鼠说按照这个层级结构,应该会使用树来进行设计。面试官又问还有什么具体的想法,结合一下设计模式。鼠鼠大概明白是想回答如何响应消除红点这个事件,想到104里面提到的event通讯的概念,但是想不起来到底是个啥东西了,下来查了好像是观察者模式?(还得练)。第二个是在进行寻路时,如果goal过远,可能会有传送阵,该如何设计这个寻路,鼠鼠说因为有传送阵,所以是一个递归的计算过程。面试官又提醒说计算量太大了,该如何加速,鼠鼠说可以并行来做,给面试官气的两眼一黑,下来了解到可能是用A*算法来做优化?后面就是HRBP面了,鼠鼠第一次进行HRBP面,说了很多,但是又感觉不知所云。///=====================================================================///8.XX四字厂,疑似二面,因为邮件里面说了不能透露相关内容,以及鼠鼠的体验很糟糕,就只简单说一下吧。全程只有做题,讲原因,没有任何交流,对于鼠鼠拿不准的题,也拒绝给鼠鼠讲述思路的机会。鼠鼠很难过,感受到了自己菜本质彩笔的事实,可能菜就不会被尊重吧///=====================================================================///8.27另一个四字厂二面,面试官及其友好,全程让鼠鼠发挥,让鼠鼠把毕生所学全讲了一遍,最后问了点八股和场景题就结束了。9.11四字厂Hr面,hr被鼠鼠的超长游戏时长吓晕了,不过鼠鼠也诚实过头了,居然承认现在周末也天天窝在洞穴打游戏,不知道会不会给鼠鼠打上废物tag。祈祷能成功开奖///=====================================================================///这俩都是属于面完0动静,估计是默认挂了游卡确实挂了,四字厂还在泡///=====================================================================///好久没更新了,一方面是因为游戏这边基本g完了,另一方面是鼠鼠开始寻找一些专业相关的秋招机会(打算先拿个保底,才能更好的备战春招)但是出乎意料的是四字厂二面拉成那样,泡了接近一个月居然约三面了,那就来祈祷一波希望不是KPI吧,顺便给网易互娱祈祷一下,希望能成功开出来,别排着排着挂掉了
查看9道真题和解析
点赞 评论 收藏
分享
评论
3
23
分享

创作者周榜

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