当前位置:   article > 正文

腾讯游戏客户端一面面经_天美 游戏客户端 面经

天美 游戏客户端 面经

前言

自不量力 的投了天美客户端(其实是因为对天美的游戏玩的最多 ),
估摸着图形学和C++的内容问了太久了,总共加起来问了一个小时吧,结果一点没问计网和操作系统的内容,貌似看别人面经是有问的

这是我网上搜集来的面经,根据提问字节准备的资料
https://blog.csdn.net/weixin_43757333/article/details/114580863

C++

局部变量,静态变量,类成员变量的生命周期?

这个比较简单,局部变量的生命周期只存在于函数,静态变量应该是一直存在的,当程序运行时就存在, 类成员变量的生命周期,当这个对象创建出来的时候就类成员变量生命周期存在,对象被销毁时就类成员变量消失。
应该没有答错吧?

new出来的变量存放在哪里?

对象的数据存放在堆,对象的引用存放在栈里。

c++有几种类型转换cast?有几种显示的cast?几种隐式的cast,

这个也当场答的不是很好…虽然偶尔会用到,但是并不太记得那些显式隐式是怎么样的了。

c++的虚函数是怎么实现的?是怎么实现这个机制的?

这里应该想听到的回答是虚表。
有什么额外的开销吗,它是怎么工作的?
这个回答可以看另一篇文章里有讲。

一个虚类运行起来还有什么额外的开销?

回答:给每一个虚函数都需要额外开辟空间

问:放在哪里?

回答:放在类里面

问:你的意思是如果我有十个虚函数,这个类的头就占了40个字节?

回答:我觉得是这样的(但是面试官貌似觉得我说的不对的语气)

c++11的新特性?平常有用到哪些特性?

然后对着笔记博客里的网站里把里面的很多内容说了。

c++11智能指针有哪些?

参照博客里回答了一下

它是怎么工作的有了解过吗?

vector的扩容策略有了解过吗?

到了百分75之后就自动扩容为两倍(好像是这样?)

那你不会觉得当数组大起来的时候,每到百分75就扩容,那剩下百分25不是永远用不到了?你有想过这个问题吗?

没回答上来

假设它是满了才扩容,那你往里面放n个元素要扩容多少次?

log2n?

unordermap的数据结构?

哈希表

哈希表取元素的时间复杂度是多少

O(1)

什么是哈希表的冲突,冲突处理策略?

(这里比较简单,都回答出来了)

如果用链表法来解决,最差的时间复杂度是多少

O(n)

什么是模板的特化?

我不清楚什么是模板的特化,但是我知道什么怎么用模板类模板函数
(然后大概讲了一下)

然后问我图形学

图形学

描述渲染管线的各个阶段

然后照着这图说了一遍,但是面试官好像想听更详细的…感觉面试官好像听出来我知识照着念的

三维旋转矩阵是怎么构造的 推导一下?

(我这里只会二维情况下的推导,讲了一遍之后,并不会三维的旋转的推导

如何判断一个点在多边形内部?

面积法,设三角形为ABC,点为P,如果PAB+PBC+PAC>ABC则说明P在三角形外部

那你怎么计算三角形的面积呢?

知道三角形三个点的坐标可以用公式求解出来啊,用海伦公式什么的

然后面试官好像不是想听这个回答,后面又说了一些,貌似是想听向量叉乘版本的回答

图形学大作业(那个OpenGL场景建模)实现了哪些功能?

光照、阴影、纹理的读取、obj文件的读取、键鼠交互、简单的人物动画

那个动画是怎么实现的?用了蒙皮,骨骼?

层次建模

人物动画有没有想过抽象一下,封装一下?

有但是当时大作业没时间。

如果让你来做的话你会用什么样的方式实现?

用树的形式来实现,然后用dfs的方式遍历

读取的obj文件是什么字母开头的 怎么表示的,这些信息是怎么在文件里显示的?

读取obj的这个文件你是用的库函数还是自己写的,你是怎么过里面的每一行,怎么处理的?
回答:学校给了读取圆锥和圆柱的obj的函数,然后我参照那个自己写了读取obj文件的函数,读取的话通过这样的语句(此时展示屏幕)

相机的旋转是用什么形式来表现的?相机你需要哪些参数?

欧拉角:俯仰角,偏航角,然后讲相机是怎么实现的…

cameradirection是怎么确定的

(此处参照我博客里的来解释的)

shader map(这里只听清前一个单词是shader)是怎么实现的?比如说你实现了那个阴影,你是怎么实现的。

我说用相似三角形算出阴影在y=0平面上的点,我不知道为什么面试官觉得很匪夷所思…
然后我就把怎么用相似三角形和他说了,后来还讲了,就是先传入物体的model、view、project矩阵,然后绘制物体,绘制完物体后,将model矩阵变成model*shadow矩阵传入,然后此时再次绘制,(漏讲了一点还要把颜色变为黑色)

面试官这里还问了我怎么判断点是否在阴影里面

我对这个问题很懵

Unity

然后问了我这个第一人称射击游戏里的导航是怎么实现的?

回答:我用的unity自带的navigation系统,先烘焙,然后设置路径点,让敌人按照固定的路径点巡逻,然后给敌人添加一个球形的Trigger碰撞体,当玩家进入的球形trigger的时候,敌人就会到玩家出现过的位置,如果没有找到的话,就在原地停留一会,然后继续巡逻。

如果让你设计一个导航算法你要怎么设计?

然后讲了从目标路径点到玩家的位置相减得到一个向量,然后让物体往这个向量的方向走,判断玩家的位置减去目标路径点的位置得到一个距离,当距离小于一个很小的值的时候就判断到达。

但是你这如果中间有物体遮挡怎么办?

然后我就答不上来了

讲讲A*算法?

这个没有提前准备…不过后来弄懂了,早知道应该提前准备一下的

总结

没有怎么好好准备,时间都在考研还有比赛,挺多答不上来,估计可能挂了,而且到现在六天了还是初试的状态。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/123245
推荐阅读
相关标签
  

闽ICP备14008679号