赞
踩
自不量力 的投了天美客户端(其实是因为对天美的游戏玩的最多 ),
估摸着图形学和C++的内容问了太久了,总共加起来问了一个小时吧,结果一点没问计网和操作系统的内容,貌似看别人面经是有问的
这是我网上搜集来的面经,根据提问字节准备的资料
https://blog.csdn.net/weixin_43757333/article/details/114580863
局部变量,静态变量,类成员变量的生命周期?
这个比较简单,局部变量的生命周期只存在于函数,静态变量应该是一直存在的,当程序运行时就存在, 类成员变量的生命周期,当这个对象创建出来的时候就类成员变量生命周期存在,对象被销毁时就类成员变量消失。
(应该没有答错吧? )
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自带的navigation系统,先烘焙,然后设置路径点,让敌人按照固定的路径点巡逻,然后给敌人添加一个球形的Trigger碰撞体,当玩家进入的球形trigger的时候,敌人就会到玩家出现过的位置,如果没有找到的话,就在原地停留一会,然后继续巡逻。
如果让你设计一个导航算法你要怎么设计?
然后讲了从目标路径点到玩家的位置相减得到一个向量,然后让物体往这个向量的方向走,判断玩家的位置减去目标路径点的位置得到一个距离,当距离小于一个很小的值的时候就判断到达。
但是你这如果中间有物体遮挡怎么办?
然后我就答不上来了
讲讲A*算法?
这个没有提前准备…不过后来弄懂了,早知道应该提前准备一下的
没有怎么好好准备,时间都在考研还有比赛,挺多答不上来,估计可能挂了,而且到现在六天了还是初试的状态。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。