正在找工作以及近期即将开始找工作的朋友们,请过来吧~我很贴心,这次给你们准备了【面试题大礼包】! !
Unity游戏开发工程师面试过程中,肯定会出现一些常规的面试问题。 这部分分数正是求职者需要尽量不犯错误的!
相信勤奋的人在面试前都会去网上查找一些相关的面试题。 考虑到方便大家随时查漏补缺,本文为大家整理了共计20道面试题,涵盖真实游戏公司面试题&C#基础题&Lua面试题~推荐同学们赶紧收藏吧!
Unity 采访亮点
一
游戏公司面试问题
问
1. Unity中Collider和Trigger有什么区别?
回答
Collider有碰撞效果,
IsTrigger=false,
可以调用OnCollisionEnter/Stay/Exit函数
触发器没有碰撞效果。
isTrigger=true,
可以调用OnTriggerEnter/Stay/Exit函数
问
2、物体发生碰撞的必要条件是什么?
回答
它必须具有碰撞器和刚体属性或角色控制器。 事实上,角色控制器包括前两者。 另一个对象也必须有一个 Collider。 碰撞器分类:网格碰撞器、盒子碰撞器、胶囊碰撞器、球碰撞器、地形碰撞器。
问
3.CharacterController和Rigidbody
区别?
回答
Rigidbody具有完全真实的物理属性,
CharacterController可以说是一个有限的Rigidbody,具有一定的物理效果但并不完全真实。
问
4. 物体发生碰撞时,有几个阶段以及相应的功能是什么?
回答
三相
OnCollision进入/停留/退出功能
问
5.当物体碰撞时,描述几种施加压力的方法?
回答
rigidbody.AddForce/AddForceAtPosition,都是rigidbody的成员函数
问
6、Unity3d提供了多少种光源? 这些是什么?
回答
总共有4种,DirectionalLight、PointLight、SpotLight、AreaLight(用于烘焙)
问
7. 物理更新通常在哪些系统功能中进行?
回答
每绘制一个固定帧就会执行一次FixedUpdate。 与update不同的是,FixedUpdate是在渲染帧中执行的。 如果你的渲染帧效率较低,FixedUpdate 调用次数也会相应减少。 FixUpdate更适合物理引擎计算,因为它与每一帧的渲染相关。 更新更适合控制。
问
8. 移动摄像机动作发生在哪个函数中? 为什么会出现在这个函数中呢?
回答
LateUpdate 在所有更新完成后调用,更适合命令脚本的执行。 官网上的例子是摄像头跟随。 相机跟随是在所有更新操作完成后进行的。 否则,摄像机可能已经前进,但视角中没有角色的空框。
问
9.简述Prefab的使用?
回答
游戏运行时实例化,prefab相当于一个模板,对你已有的材质、脚本、参数进行默认配置,方便以后修改。 prefab打包的内容简化了导出操作,方便团队沟通。 。
二
C#基础问题
问
1.什么是构造函数?
回答
概念:构造函数的方法名与类型相同,无返回类型
功能:完成类的对象初始化
问
2.类和结构有什么区别?
回答
相似之处:【都可以实现接口】
不同之处:
1.class是引用类型,struct是值类型。
2、Class允许继承和被继承,struct不允许硬件设备,只能继承接口。
3. Class可以初始化变量,struct不能。
4. 类可以有无参数构造函数,但结构不能。 它必须是参数化构造函数,并且所有成员都必须在参数化构造函数中初始化。
【使用场景】
1.在表达抽象和多级对象层次结构时,类更适合大型和复杂的数据。
2、Struct适合作为一些常用数据组成的新类型。 当表示主要用于存储数据的点和矩形等轻量级对象时,它更喜欢简单的值。
3.Struct有性能优势,Class有面向对象的扩展优势。
问
3.简述面向对象的三大特点?
回答
封装、继承、多态。
封装:通过隐藏对象属性的实现细节,只向外界提供公共访问方法。
继承:通过子类继承基类、继承抽象类、继承接口来实现。
多态性:通过重写基类的override方法和虚方法来实现。 优点是:维护方便、扩展方便。 缺点是:性能比面向过程低。
问
4. 构造函数可以被重写吗?
回答
构造函数不能被继承,因此不能被重写,但可以重载。
问
5. 抽象类和接口有什么区别?
回答
相似点:都不能直接实例化
不同之处:
1、抽象类用abstract修饰,接口用interface修饰。
2. 抽象类中的方法可以实现,也可以不实现。 具有抽象方法的类必须用abstract修饰。 接口中的方法不允许被实现。
3、抽象类只能有单继承,而接口支持多继承。
4、抽象类有构造函数,但接口不能有构造函数。
5、接口只负责功能的定义,通过接口规范类(有什么功能),而抽象类则负责功能的定义,并且可以实现功能(实现什么功能)。
问
6. 类的执行顺序是怎样的?
回答
执行顺序:
父类、子类、静态块、静态字段、非静态块、非静态字段、构造函数、方法。
三
Lua面试问题
问
1.ipairs和pairs有什么区别?
回答
1.ipairs遇到nil会停止,pairs会输出nil值然后继续。
2.ipairs不会输出表中存储的键值对,而是会跳过键值对,然后顺序输出表中的值。 pairs会输出表的键值对,先按顺序输出值,然后再输出乱序的键值对(键的哈希值)。
问
2. 功能冒号和点有什么区别?
回答
冒号隐式传递 self,
如果点击的话开发学习,需要显示转账。
问
3. print(string.find("hello hello","hel")) 的结果?
回答
6 9
问
4.Lua中__index和__newindex有什么用?
回答
__index主要用于表查询;
__newindex主要用于表更新
问
5.Lua如何实现深拷贝?
回答
复制对象的基类型,同时也复制源对象中的对象。 通常需要对 Table 表进行深层复制并分配一个新的相同对象,但不是同一个表。
Lua还没有实现。 它封装了一个函数,递归复制表中的所有元素,并设置metetable元表。
如果key和value都不包含table属性,那么每次在泛型for中调用Func时,都会根据if判断直接返回具体的key和value。
如果包含多个表属性,那么就用这个if判断来解锁下一层表,最后递归返回。
核心逻辑:使用递归遍历表中所有元素
1.首先看copy方法中的代码。 如果类型不是表,则不需要遍历,可以直接赋值作为返回值;
2.当前传入的变量是一个表。 创建一个新表来存储旧表中的数据。 下面就是遍历旧表游戏引擎开发面试题,分别将k和v赋值给新表。 分配完成后游戏引擎开发面试题,将旧表的元素分配给新表。
3、给k和v赋值时,还必须调用copy方法来判断是否是表。 如果是表,则必须创建一个新表来接收表中的数据,以此类推,接近无限递归。
机会只会留给有准备的人。 认真对待每一次面试,面试后花时间仔细回顾。 即使最后面试失败了,我们也能从中学到很多东西~
其实,面试不仅是求职过程中非常重要的一部分,更是我们充分锻炼自己的知识、技能、沟通……等诸多方面的机会!
当然啦~在面试之前,你应该仔细阅读这篇文章,检查是否有遗漏,这样你才能更好地应对各大游戏公司的面试挑战!
✨
以上20道面试题
你都记住了吗? !
✨
想要领取【腾讯、网易、米哈游、莉莉丝】等各大游戏公司面试题的同学~扫描下方二维码添加助教即可领取! ! !
祝大家都能收到自己心仪的offer!
结尾
Unity架构师之路
Unity教程| 墙外团结| 免费资源