unity面试题整理----50道常见

本文整理了50道Unity面试常见问题,涵盖了Unity的基础知识、编程概念、性能优化等方面,包括Interface与抽象类的区别、字符串操作、反射原理、多线程与协程的使用、游戏对象的组件、四元数、内存优化等内容,帮助开发者准备Unity相关的面试。
摘要由CSDN通过智能技术生成

new对象时,当可分配的内存不足GC就会去回收未使用的对象,但是GC的操作是非常复杂的,会占用很多CPU时间,对于移动设备来说频繁的垃圾回收会严重影响性能。下面的建议可以避免GC频繁操作。

  1. 减少用new创建对象的次数,在创建对象时会产生内存碎片,这样会造成碎片内存不法使用
  2. 使用公用的对象(静态成员,常量),但是不能乱用,因为静态成员和常量的生命周期是整个应用程序。
  3. 在拼接大量字符串时StringBuilder。在使用注意,创建StringBuilder对象时要设置StringBuilder的初始大小如:
  4. StringBuilder sbHtml = new StringBuilder (size);
  5. 使用object pool(对象池)
5、请描述Interface与抽象类之间的不同

相同点:

  1. 都可以被继承
  2. 都不能被实例化
  3. 都可以包含方法声明
  4. 派生类必须实现未实现的方法

区别:

  1. 抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段。
  2. 抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范。
  3. 抽象类只能被单一继承,接口可以被多重实现。
  4. 抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中
  5. 抽象类是从一系列相关对象中抽象出来的概念,因此反映的是事物的内部共性;接口是为了满足外部调用而定义的一个功能约定, 因此反映的是事物的外部特性
  6. 接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法
  7. 接口可以用于支持回调,而继承并不具备这个特点
  8. 抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非虚的,当然您也可以声明为虚的
  9. 如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法
6、下列代码在运行中会产生几个临时对象?
  1. string a = new string(“abc”); a = (a.ToUpper() +“123”).Substring(0, 2);C#会报错,java可行(个人认为答完这个即可)。
  2. C#中应该是 string b = new string(new char[] {‘a’,‘b’,‘c’});产生五个临时变量。
**7、**下列代码在运行中会发生什么问题?如何避免?
    List<int> ls = new List<int>(new int[] { 1,2,3,4,5});
            foreach (var item in ls)
            {
                Console.WriteLine(item*item);
                ls.Remove(item);
            }

会产生运行时错误,不能一边遍历一边修改。建议使用for循环来代替,foreach建议只用在读取上,不用在修改上。

8、请简述关键字Sealed用在类声明和函数声明时的作用

类声明时可防止其他类继承此类,在方法中声明则可防止派生类重写此方法。

9、请简述private,public,protected&#x
  • 30
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值