Unity面试题加强版1
需积分: 0 173 浏览量
更新于2022-08-08
收藏 779KB DOCX 举报
【Unity面试题加强版1】
在Unity开发中,掌握C#语言的基本概念和技术是至关重要的。以下是关于C#语言的一些核心知识点,特别是针对面试时可能会遇到的问题。
1. **重载与重写的区别**:
- 重载(Overloading)发生在同一类中,通过改变方法的参数列表来区分不同的方法。
- 重写(Overriding)发生在父类与子类之间,子类重写父类的方法,要求方法名和参数列表完全相同。
- 重载在编译时决定调用哪个方法,而重写在运行时根据对象的实际类型决定。
2. **面向对象的三大特性:封装、继承和多态**
- **封装**:封装是将数据和操作数据的方法绑定在一起,以保护数据不受非法访问。在C#中,属性(Properties)是封装的典型应用,它提供了对字段的访问控制。
- **继承**:继承允许子类从父类继承属性和方法,提高代码的复用性和可维护性,遵循“开闭原则”。
- **多态性**:多态使得同名的方法在不同的对象上表现出不同的行为。在运行时,根据对象的实际类型调用相应的方法。
3. **值类型与引用类型的区别**
- 值类型(如int,struct)存储在栈中,直接存储数据;引用类型(如class)存储在堆中,存储的是指向数据的引用。
- 值类型存取速度快,但大小受限;引用类型存取速度较慢,但可以指向任意大小的数据结构。
- 值类型直接继承自System.ValueType,引用类型继承自System.Object。
4. **访问修饰符的区别**
- **public**:公共,任何地方都能访问。
- **private**:私有,只有在本类内部能访问。
- **protected**:受保护,本类和子类内部能访问。
- **internal**:程序集内部能访问。
- **protected internal**:受保护的内部,本程序集和子类能访问。
5. **C#中的基类**
- 所有引用类型(class)的基类是System.Object,而值类型(struct)的基类是System.ValueType,但它们都隐式继承自System.Object。
6. **ArrayList与List<T>的区别**
- ArrayList不支持泛型,可能导致类型安全问题;List<T>支持泛型,保证了类型安全。
- ArrayList需要装箱拆箱操作,性能较低;List<T>不需要,效率更高。
7. **垃圾回收(GC)**
- GC是为了防止内存溢出,自动回收不再使用的对象占用的内存。
- 避免频繁GC的方法包括减少new对象,使用静态成员,以及使用StringBuilder替换String进行字符串拼接。
8. **Interface与抽象类的不同**
- 接口不能实例化,而抽象类可以被间接实例化。
- 接口是完全抽象的,而抽象类可以包含非抽象成员。
- 接口支持多继承,抽象类仅支持单继承。
9. **临时对象产生数量**
- 代码示例中,不考虑错误情况,会产生3个临时对象:2a.ToUpper(),3"123",4a.ToUpper()+"123"。
10. **foreach遍历问题**
- 在foreach循环中修改集合会导致运行时错误,应避免这种情况,可以使用for循环或其他方法。
11. **Sealed关键字**
- 在类声明中,sealed阻止其他类继承;在方法中,sealed禁止子类重写该方法。
12. **反射原理**
- 反射允许程序在运行时动态获取类型信息,包括类、对象、方法等,并可以动态创建对象、调用方法等。
- 主要使用System.Reflection命名空间,如Assembly、Type、ConstructorInfo、MethodInfo、FieldInfo、PropertyInfo等类。
13. **.NET与Mono的关系**
- .NET是微软的开发框架,Mono是开源实现,它实现了.NET Framework的部分,使.NET应用能在多种操作系统上运行。
14. **静态构造函数**
- 静态构造函数没有访问修饰符,且不接受参数,用于初始化类的静态成员,只在类首次加载时执行一次。
15. **String与StringBuilder**
- String是不可变类型,每次修改都会创建新对象,适合少量拼接;StringBuilder是可变类型,适合大量字符串操作,效率更高。
以上就是针对Unity面试题加强版1中涉及的C#语言和面向对象编程的相关知识点。这些知识点不仅在面试中常见,也是日常开发中必备的基础技能。
袁大岛
- 粉丝: 40
- 资源: 305
最新资源
- 微信小程序源码-大学生心理健康服务-服务端-毕业设计源码-期末大作业.zip
- 微信小程序源码-电影院订票选座小程序-服务端-毕业设计源码-期末大作业.zip
- 微信小程序源码-儿童预防接种预约微信小程序-服务端-毕业设计源码-期末大作业.zip
- 微信小程序源码-电影院订票选座小程序-微信端-毕业设计源码-期末大作业.zip
- Java容器类学习心得体会
- 微信小程序源码-高校体育场管理系统-服务端-毕业设计源码-期末大作业.zip
- 微信小程序源码-高校体育场管理系统-微信端-毕业设计源码-期末大作业.zip
- 微信小程序源码-儿童预防接种预约微信小程序-微信端-毕业设计源码-期末大作业.zip
- springboot-vue-银行账目账户管理系统的设计与实现-源码工程-29页从零开始全套图文详解-30页设计论文-27页答辩ppt-全套开发环境工具、文档模板、电子教程、视频教学资源分享
- 微信小程序源码-互助学习小程序的设计与实现-服务端-毕业设计源码-期末大作业.zip
- 微信小程序源码-购物系统-微信端-毕业设计源码-期末大作业.zip
- 微信小程序源码-购物系统-服务端-毕业设计源码-期末大作业.zip
- 微信小程序源码-互助学习小程序的设计与实现-微信端-毕业设计源码-期末大作业.zip
- 微信小程序源码-会议发布与预约系统的设计与开发-服务端-毕业设计源码-期末大作业.zip
- 微信小程序源码-会议发布与预约系统的设计与开发-微信端-毕业设计源码-期末大作业.zip
- 微信小程序源码-绘画学习平台-服务端-毕业设计源码-期末大作业.zip