首页 > 其他分享 >【春秋招必看】Unity相关笔试面试题(内有完整答案)第二期

【春秋招必看】Unity相关笔试面试题(内有完整答案)第二期

时间:2024-09-20 15:51:02浏览次数:13  
标签:面试题 答案 对象 DrawCall Equals Unity 招必 拷贝

欢迎来到光光的奇妙冒险,我是你们的煎饼光子老师。

今天是我们的第二期笔试面试题总结。


C#部分:

1、请说说你认为C#中 == 和 Equals 的区别是什么?

答案:
(1). == 是运算符,Equals是万物之父Object中的虚方法,子类可重写
(2). Equals 一般在子类中重写后用于比较两个对象中内容是否相同
    ==在没有运算符重载的前提下时
    引用类型用于比较地址;值类型用于比较值是否相同
(3). 运算效率不同,一般Equals没有==效率高,因为一般Equals比较的内容比==多

2、浅拷贝和深拷贝的区别?可以举例说明

答案:
浅拷贝:
只复制对象的引用地址
两个对象指向同一内存地址,修改其中一个另一个也会随之变化

深拷贝:
将对象和值赋值过来,两个对象修改其中任意值都不会影响对方

举例:
比如引用对象A和引用对象B
让A = B,就是浅拷贝,此时A、B的引用地址相同,改A中内容,B也变

如果想要深拷贝,简单处理就是new(包括对象中的成员)

3、下面两种获10000个数的方式,哪种效率更高?为什么

答案:
方式2的效率更高
因为List本质是数组,我们通过Add往List中添加元素时,会不断的触发扩容
扩容会带来内存和性能上的消耗
内存方面:每次扩容会产生垃圾,还会造成GC的触发
性能方面:每次扩容会进行“搬家”(老数组中内容存入新数组中)

4、请说出以上代码
1.A处和B处谁先打印?
2.A、B出打印的i值分别是多少? 

答案:
1.B处先打印,A处后打印
2.A处 i = 10,B处 i = 11

考点:finally的执行顺序

5、请问A、B两处 i 的值为多少?

答案:
A、B两处都为11
考点:
1.finally的执行顺序
2.值和引用赋值表现的区别


Unity部分:

1、Unity中当一个细小高速物体撞击另一个较大物体时会出现什么情况?如何避免? 

答案:
(1).我们可以尽量用射线检测来替代细小物体的物理系统碰撞
因为传统的FPS游戏都是通过射线检测加模拟计算来判断伤害的
(2).修改Rigidbody刚体中的Interpolate(插值)和CollisionDetection(碰撞检测)两个参数,来提高碰撞检测的准确性

2、请简述一下Prefab(预制体)的本质是什么?

答案:
Prefab的本质就是一个配置文件
其中记录了一个GameObject对象上挂载的脚本信息
并且记录了脚本信息中的可配置的属性信息

3、Unity是否支持写成多线程程序?如果支持的话需要注意什么?

答案:
支持
注意:
(1).只能从主线程访问Unity相关组件、对象以及UnityEngine命名空间中的绝大部分内容
(2).如果多线程中要和Unity主线程同时修改一些数据可以通过lock关键词加锁

4、请简述一下对象池,在游戏开发中我们什么时候会用到它?

答案:
(1). 对象池的主要作用是 避免大量创建对象再释放对象时造成的内存消耗,可以有效降低GC发生的频率。我们把不用的对象放入对象池中而不是让它直接变为垃圾,下次需要用到对象时再从对象池中获取,我们通过占用内存来避免更多的内存消耗和GC的发生

(2).在游戏中频繁创建对象、实例化对象的地方,都可以用到对象池。
比如前端开发中,游戏中的子弹、伤害字体、特效等等
比如后端开发中线程池等等

5、什么是DrawCall?
DrawCall为什么会影响游戏运行效率?
如何减少DrawCall?

答案:
1.什么是DrawCall?
每次CPU准备渲染相关数据并通知GPU的过程称为一次DrawCall

2.DrawCall为什么会影响游戏运行效率?
如果DrawCall次数较高,意味着CPU会花费更多的时间准备渲染数据,这会进行更多的计算,进而影响游戏的运行效率

3.如何减少DrawCall?
2D和UI层面:打图集,并且注意面板中不同图集图片的层级不要穿插
3D模型层面:利用动态批处理和静态批处理,尽量不使用实时光照和实时阴影
等等

标签:面试题,答案,对象,DrawCall,Equals,Unity,招必,拷贝
From: https://blog.csdn.net/Blueberry124/article/details/142387544

相关文章

  • en造数据结构与算法C# 用Unity实现简单的群组行为算法 之 对齐
    en造数据结构与算法C#用Unity实现简单的群组行为算法之聚集-CSDN博客en造数据结构与算法C#用Unity实现简单的群组行为算法之聚集-CSDN博客演示思路1.检测自然是沿用前两节的检测范围2.对齐朝向对齐朝向就是邻居鸟的forward加起来再除总数得到平均数3.对齐速度......
  • Java高频面试题(含答案)
    1.if…else和写两个if有什么区别两个if为两次选择判断,两条语句,都会执行if…else为一次判断,if为选择条件1,else为除去选择条件1之外的其它情况,一条语句只会执行一次2.在Java中直接写浮点常量,默认是什么类型?默认类型为double3.什么是标识符?他的命名规则是什么?标识符是可以命......
  • Vue 2&3进阶面试题:(第二天)
    目录5.vue常用操作指令?6.v-for为什么要绑定key?7.v-if和v-show的区别?8.vue中的修饰符5.vue常用操作指令?v-text指令:用于更新标签包含的文本,它的作用跟双大括号效果是一样的v-html指令:绑定一些包含html代码的数据在视图上v-show指令:指令的取值为true/false,分别对应着显示......
  • 2025秋招LLM大模型多模态面试题(六)-KV缓存
    目录为什么Transformer推理需要KV缓存?KV缓存的具体实现没有缓存的情况下使用缓存的情况下KV缓存在解码中的阶段划分Prefil阶段Decoding阶段KV缓存的存储类型及显存占用计算KV缓存的局限与优化策略超长文本与复杂模型场景下的瓶颈量化方案的应用量化方......
  • 2025秋招LLM大模型多模态面试题(七)- 思维链CoT
    1.思维链(cot)论文名称:Chain-of-ThoughtPromptingElicitsReasoninginLargeLanguageModels论文连接:Chain-of-ThoughtPromptingElicitsReasoninginLargeLanguageModels1.什么是思维链提示?思维链(CoT)提示过程是一种最近开发的提示方法,它鼓励大语言模型解释其......
  • 最新推出Java面试题,持续更新!
    我国的八股文确实是独树一帜。以美国为例,北美工程师面试比较重视算法(Coding),近几年也会加入Design轮(系统设计和面向对象设计 OOD)和BQ轮(Behavioral question,行为面试问题)。那么为什么国内面试不采取这样的考察方式呢简单来说,互联网IT行业的求职者太多了,如果考察的......
  • Unity中常用的三种单例模式基类
    提到框架,大家可能会觉得很复杂,我也是有同感但好在,也不是所有的框架都需要我们掌握的但这期提到单例模式却是大家一定要掌握!!!因为它真的非常重要!!!这里我整理了三种开发中常用的单例模式基类,希望大家看完后能多敲几遍,把它变成自己的知识(如果想直接拿到代码的话可以在我上传的......
  • @Autowired和@Resource的区别 详细讲解-包含面试题
    @Autowired和@Resource的区别一,介绍1.@Autowired@Autowired是Spring框架提供的一个注解,它简化了依赖注入的过程。通常情况下,当我们需要让一个类使用另一个类的功能时,我们可以在前者中声明后者的一个实例。使用@Autowired注解后,Spring容器会在运行时自动将合适的实......
  • Unity坐标系求向量的模长
    Unity坐标系求向量的模长publicfloat sqrMagnitude;返回该向量的平方长度。(只读)向量 v 的大小以Mathf.Sqrt(Vector3.Dot(v,v))方式进行计算。但是,Sqrt计算相当复杂,执行时间比普通算术运算要长。计算平方数代替使用 magnitude 属性要快得多-计算基本相同,只是......
  • Unity自定义图片数字TextMeshPro
    本文转载自https://www.cnblogs.com/sailJs/p/181689221、首先要有一张包含了图片字的图集,每个图片字一个Spirte 2、然后右键-> 创建创建好的TMP_SpriteAsset 3、编辑SpriteCharacterTable调整顺序,将index和图片数字对上修改下Unicode值(默认都是0xFFFE),比如9的Un......