《Unity面试题加强版》 面试中,对C#和Unity3D的理解深度是评估候选人技术能力的重要标准。以下是一些关键知识点的详细解释: 1. **重载与重写**: - 重载(Overloading)发生在同一类中,通过不同的参数列表来区分不同的方法,编译时决定调用哪个方法。 - 重写(Overriding)发生在父类和子类之间,方法名和参数列表必须相同,是在运行时根据对象的实际类型动态决定调用哪个方法,体现了多态性。 2. **面向对象的三大特性**: - 封装:隐藏对象的内部实现细节,提供公共接口供外部使用,提高数据安全性。C#中的属性(Properties)是封装的良好实践。 - 继承:允许创建一个新类(子类)继承已存在的类(父类),子类可以继承父类的属性和方法,增强了代码的复用性。 - 多态:同名方法在不同上下文中表现出不同行为的能力。C#中,虚方法和抽象方法支持运行时多态。 3. **值类型与引用类型**: - 值类型(如int, struct)存储在栈中,直接存储值,存取速度快,但大小有限制,不能为null,继承自System.ValueType。 - 引用类型(如class)存储在堆中,存储的是对象的引用,存取速度较慢,可以为null,继承自System.Object。栈内存自动释放,堆内存由垃圾回收器(GC)管理。 4. **访问修饰符的区别**: - `public`:对所有类和成员开放,无限制访问。 - `private`:仅限于本类内部访问。 - `protected`:允许本类和其子类访问。 - `internal`:限于同一程序集内的类访问。 - `protected internal`:结合了`protected`和`internal`的访问权限。 5. **引用类型的基类**: 所有引用类型(class)都直接或间接继承自`System.Object`,值类型(struct)继承自`System.ValueType`,同时,值类型也隐式继承自`System.Object`。 6. **ArrayList与List<T>的区别**: - ArrayList不安全,数据类型在运行时确定,可能导致类型转换损失,而List<T>使用泛型,类型安全,效率更高。 - ArrayList需要进行装箱和拆箱操作,List<T>则无需此过程。 7. **垃圾回收(GC)**: - GC是自动清理不再使用的对象以避免内存泄漏的机制。避免频繁创建对象、使用静态成员、使用StringBuilder替换String连接等方法可优化GC性能。 8. **接口与抽象类**: - 接口(Interface)不包含实现,不能实例化,支持多继承。抽象类(Abstract Class)可以包含实现,可以被实例化(通过子类),仅支持单继承。 9. **临时对象的创建**: - C#中字符串是不可变的,每次操作都会创建新的字符串对象。上述代码会产生多个临时对象,具体数量取决于代码执行。 10. **foreach的注意事项**: - foreach循环用于遍历集合,不能在循环内部修改集合,否则会导致运行时错误。避免这个问题的方式是先复制集合,然后遍历副本。 11. **Sealed关键字**: - 在类声明中,`sealed`阻止其他类继承,确保类是最终的。 - 在方法声明中,`sealed`防止子类重写该方法。 12. **反射**: - 反射允许在运行时动态获取和操作类型、对象、方法等信息。主要涉及`Assembly`(程序集)、`Type`(类)、`ConstructorInfo`(构造函数)、`MethodInfo`(方法)、`FieldInfo`(字段)和`PropertyInfo`(属性)等类。 13. **.NET与Mono**: - .NET是微软的开发框架,而Mono是一个开源实现,它实现了.NET Framework的部分功能,使.NET应用能在非Windows平台上运行。 14. **静态构造函数**: - 静态构造函数无访问修饰符,不接受参数,且在类实例化前或首次访问静态成员时自动调用,只执行一次。因此,试图添加访问修饰符会导致编译错误。 15. **C#的String类型与StringBuilder**: - String是不可变的,每次修改都会创建新的String对象,而StringBuilder用于构建和修改字符串,减少了不必要的对象创建,提高了性能。 以上内容涵盖了C#语言基础、面向对象编程、内存管理、泛型、容器类、垃圾回收、反射以及.NET平台相关知识,这些都是Unity3D开发者必备的基础技能。理解和掌握这些知识点对于准备Unity面试至关重要。
剩余63页未读,继续阅读
- 粉丝: 9
- 资源: 11
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助