柠檬微趣 秋招 -- Unity客户端开发 二面

面试官太有实力了,问的太深了[哭惹R][哭惹R],因此问题也忘得差不多了:

Unity部分:

1. 第一个2D游戏的游戏框架是自己搭的吗(是的)

2. 资源加载怎么做的,什么接口(LoadFromFile,面试官说是Resource.Load,[哭惹R]我现在才反应过来问的不是AB包[哭惹R])

3. Xlua原理(标记Hotfix-》桥接代码-》lua语言替换)。

4. CSharp和Lua怎么交互的([哭惹R]不会[哭惹R])

5. 第二个3D游戏的状态模式和工厂模式怎么设计的

6. 对象池怎么设计的

7. MVC怎么设计的

8. 单例模式是什么,哪些会用到

9. 协程是什么,哪里用的(我一个函数是敌人会一直走向主角,用的协程)。

10. 为什么用协程而不是Update? ([微笑R]最后的结果是都可以用,面试官说协程也是一种update)C++(这里更是重量级):

11. 多态(静态多态,动态多态)

12. 编译器怎么识别重载函数的,为什么不识别返回值,识别参数和函数名([哭惹R]不会[哭惹R])。会将函数名,参数拼接起来识别(类似序列化吗), 差不多。

13. 虚函数表存的是什么(函数信息和type_info[哭惹R]其实是函数地址[哭惹R]),虚函数表什么时候生成(编译期)。

14. 一个类有虚函数,有int_32值,32位系统下内存占多少

15. 你知道函数memset吗,可不可以用memset将该对象置为0([哭惹R]我开始说的不可以,可能虚表指针受保护[哭惹R])。

16. 我怎么拿到虚表指针呢(取首地址)

17. 有一个复制函数,我将父类的虚表指针赋值给子类的虚表指针呢(可以,但是运行时有RTTI,应该无效)。所以前面的memset也可以用,将vtpr设为nullptr,只是没意义。

18. memcopy和memmove知道吗,如果内存重叠怎么弄(我开始说的移动后面的再移动前面的,卡了好几分钟。最后我说如果是数组就很简单,从后面开始赋值,结果是对的)

19. vector和map的erase区别(vector失效,map不),vector指向空吗?([哭惹R]回答是的[哭惹R]),他说会指向下一个,不能++。

20. 快排的过程,为什么是不稳定的,举一个例子(5,5,3,1,1)。

还有些忘了,后面肯定还有,想起来再补充,反正没有常规八股。

21. 手撕:顺时针旋转矩阵90°。这个当场写还真不简单,写了十几分钟,结果转反了。后面又改了5分钟才对。

全部评论
后续咋样了
点赞 回复 分享
发布于 09-16 22:08 北京

相关推荐

11-25 11:18
已编辑
华中师范大学 Unity3D客户端
因为我是一个月前投的简历,但是等了一周没等到约面以为不会有机会了就没准备,结果过了一个月突然打电话约面。本人第一次面试,没准备过面经也没刷算法题(力扣十道题的实力)算是完全没实力的面试。面试得也是一团糟,好多问题答不上来,大概率过几天就会挂了。本人不太会c++,虽然CS也没好到哪里去11.24 一面自我介绍问了一下项目,因为简历上只有项目。问了一下项目是跟着教程做的还是自己做的。问了一下项目里的BUFF系统。听到buff分配是switch语句后就没深入了,估计是觉得写的不行。问八股讲一下c++里的多态多态里的虚函数的底层是怎么实现的?(回答了虚函数表,但是太紧张了,说的乱七八糟的)假如有十个同一个类的对象,虚函数表有几份(答一份)虚函数表存储在内存中的哪个区域?(答在rodata区域)c++中的内存分区是怎么样的?(静态存储区、rodata区,剩下的想不起来了,就给面试官说我的c++不太好,面试官就不再追问了,开始问c#了)c#的堆和栈?(说了一些乱七八糟的东西,扯到了堆是由GC控制的,肯定没答对)你对c#的委托理解?(说了一点委托和多播委托,以及存储关系,他们怎么存储函数)委托怎么删除某个方法(答使用-=运算符,不确定对不对)链表与数组的区别(回答了存储空间分配,插入删除的区别)数组插入的时间复杂度(答O(n))哈希表的理解?(我回答了字典处理哈希表的逻辑,顺便提到了哈希冲突)哈希冲突怎么解决?(字典里采用了链地址法,大概讲了一下,但是语言非常混乱,实在是太紧张了)了不了解平衡二叉树的概念?(这时候以及蒙了,一年前学的数据结构,猛地没想起来,随口答了一下模糊概念)平衡二叉树的左右子树深度差值是多少(答0或1)手撕平衡二叉树的判断,要求自己构建树结构(原本以为没手撕的,结果还是来了,因为忘了平衡二叉树的概念,写了40分钟没写出来,深度判断用的还是层次遍历)讲一下代码思路(一边讲面试官一边看,估计看到代码错了,没深入问)问渲染管线(答,cpu将数据传入到GPU,然后经过顶点着色器、片元着色器等处理,然后投影、裁剪、最后进入光栅化整合输出)深度测试是在什么阶段实现的?(答光栅化,这里答错了应该,下来后搜了发现是在片元着色器阶段)如果要实现半透明的话shader代码怎么写?(不会,直接说了不知道,只了解shader graph知识,现在想想应该可以在深度检测时对后方物体进行颜色均值处理?不太确定)反问环节问我现在基本都是在做项目,这一阵子发现自己开发项目与面试经验不是特别吻合,如果接下来要找面试的话应该往哪个方向走。面试官说我不会c++的话在面试的时候会有一定劣势,如果要做项目的话还是争取能做到把游戏完整上架的程度才比较好,项目算是加分项。相比之下把基础弄好会好一些。然后又聊了很多有关c++和c#的事情,说基础知识之所以是c++是因为c++更偏向于底层,在回答的时候可以描述的更清晰一点。(如果需要的话可以单独开一篇文章说,面试官还是讲了很多内容的)问是哪一个项目组的?游戏还在研发阶段。整体面试下来刚开始的时候非常紧张,语言组织不太好。不过面试官人很好,很有耐心,第一次面试还没准备答成这样子也是没啥可说的,接下来就坐等被挂了。11.25 挂
查看22道真题和解析
点赞 评论 收藏
分享
评论
10
59
分享

创作者周榜

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