Unity面试汇总——基础二(C#常见基础)

1、private、public、protected、internal的区别

  • public:对任何类和成员都公开,无限制访问;
  • private:仅对该类公开;
  • protected:对该类和其派生类公开;
  • internal:只能在包含该类的程序集中访问该类;

2、ref和out参数

ref和out的参数效果一样,都是通过关键字找到定义在主函数里面的变量的内存地址,并通过方法体内的语法改变它的大小,不同点就是输出参数必须对参数进行初始化。ref必须初始化,out参数必须在函数里赋值,ref参数是引用,out参数是输出参数。

3、值类型和引用类型

  • 值类型存储在内存栈中,引用类型数据存储在内存堆中,而内存单元中存放的是堆中存放的地址;
  • 值类型存取快,引用类型存取慢;
  • 值类型表示实际数据,引用类型表示指向内存堆中的数据的指针和引用;
  • 栈的内存是自动释放的,堆内存是.NET中会由GC来自动释放;
  • 值类型继承自System.ValueType,引用类型继承自System.Object;

4、ArrayList和List的主要区别

ArrayList存在不安全类型(ArrayList会把所有插入其中的数据当中Object来处理)操作费时。List是接口,ArrayList是一实现了该接口的类,可以被实例化。

5、Interface与抽象类之间的不同

抽象类表示该类中可能已经有一些具体的方法定义,但接口就是只定义各个方法界面,不能具体的实现代码在成员方法中。类是子类用来继承的,当父类已经有实际功能的方法在该子类中不必实现,直接引用父类的方法,子类也可以重写该父类的方法。实现接口的时候必须要实现接口中所有的方法,不能遗漏一个。

6、Sealed用在类声明和函数声明时的作用

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

7、常用的数据结构

链表、列表、散列表、队列、堆栈以及二叉树等。

8、设计模式

  • 工厂模式:简单工厂模式解决的问题如如何去实例化一个合适的对象。
    简单工厂模式的核心思想:有一个专门的类来负责创建实例的过程。凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂模式进行创建。
  • 代理模式:一个是真正的你要访问的对象(目标类),一个是代理对象,真正对象与代理对象实现同一个接口,先访问代理类再访问真正的类的对象。
    代理模式就是多一个代理出来,替原对象进行一些操作。使用代理模式可以将功能划分更清晰,有助于后期维护
  • 策略模式:定义一系列算法,并将每一个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。策略模式的决定权在用户,系统本省提供不同的算法实现,新增或者删除算法,对各种算法做封装。因此,策略模式多用于算法决策系统中,外部用户只需要决定用哪个算法即可。
  • 观察者模式:当一个对象变化是,其它依赖该对象的对象都会收到通知,并且随着变化。对象之间是一对多关系。
  • 单例模式:在C#应用中,单例对象能保证在一个CLR中该对象只有一个实例存在。
    (1)某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销
    (2)省去new操作字符,降低了系统内存的使用频率,减轻GC压力
    (3)可作为唯一核心流程控制逻辑

9、结构体和类有何区别

结构体是一种值类型,而类是引用类型。值类型用于存储数据,引用类型用于存储对实际数据的应用。结构体就是当成值来使用的,类则是通过引用来对实际数据操作。类中有构造和析构函数,结构体中没有。

10、常见的排序方式

  • 选择排序
  • 冒泡排序
  • 快速排序
  • 插入排序
  • 希尔排序
  • 归并排序

11 结构体

C#结构体和其他编程语言类,直接采用struct来进行定义。在和传统的C或者C++比起来C#结构体又有些特点:

  • 结构体可带方法、索引、字段、属性、运算符方法和事件
  • 结构体可以定义构造函数(但是不能自定义默认构造函数,默认构造函数不可修改),但不能定义析构函数
  • 与类不同,结构体不能继承其他结构体或者类
  • 不能作为其他结构或类的基础结构
  • 可实现一个或者多个接口
  • 结构体必须赋值后才能使用
  • 结构成员不能指定为 abstract、virtual 或 protected

12、Unity生命周期函数执行顺序

Awake——OnEnable——Start——FiexedUpdate——Update——LateUpdate——OnGUI——OnDisable——OnDestory

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值