Unity面试精华:C#、性能优化与面向对象基础

需积分: 50 28 下载量 2 浏览量 更新于2024-07-18 收藏 234KB DOCX 举报
在进行Unity面试时,面试官可能会提问一系列关于Unity技术和C#语言的专业问题,以评估候选人的技术深度和理解。以下是一些关键知识点的总结: **C#语言** 1. **重载与重写**:重载是同一类中方法的多版本,通过不同的参数列表实现;重写则是子类对父类方法的扩展或替换,需在子类中指定基类方法名,并保持相同的参数。重载在编译时确定,体现了静态多态,而重写在运行时根据对象的实际类型决定,是动态多态的体现。 **面向对象的三大特性** - **封装**:C#中,通过属性来实现数据的封装,保护数据安全,限制外部直接访问。 - **继承**:支持代码复用,遵循开闭原则,通过子类继承父类实现结构上的扩展。 - **多态**:允许同名方法在不同上下文有不同的行为,增加代码灵活性。 **值类型与引用类型** - 值类型存储在栈中,如int,存储实际数据,访问速度快,由栈自动管理内存;引用类型(如object)存储地址,访问较慢,由.NET的Garbage Collector (GC)管理。 - System.ValueType和System.Object是基础类型,前者是值类型,后者是所有类的基类。 **访问修饰符** - public:公开的,任何地方都可以访问。 - private:仅限于类内部访问。 - protected:在类及其派生类中可用。 - internal:在同一程序集中可用。 - protectedinternal:相当于protected和internal的组合。 **ArrayList与List<T>** - ArrayList是非泛型集合,可能导致数据类型丢失和频繁的装箱拆箱操作。 - List<T>是泛型集合,提供了类型安全,避免了装箱,更高效。 **垃圾回收(GC)** - GC是为了防止内存溢出而自动回收不再使用的内存,避免内存泄漏。 - 避免GC过早触发的方法包括:减少不必要的new操作,利用共用对象(静态成员),以及使用StringBuilder而非String进行字符串拼接。 **接口与抽象类的区别** - 接口是纯抽象的,不允许实例化,主要用于规范功能和行为,而抽象类可以提供部分实现。 - 抽象类可以包含字段、方法和抽象方法,接口只包含方法(可以有默认实现)和属性。 掌握这些知识点将有助于你在Unity开发过程中编写高效、可维护的代码,并在面试中展现你的专业技能。