C# 面试知识

1 篇文章 0 订阅

结构体和类的区别

类型,成员变量,变量初始值,构造析构

  • 结构体是值类型,类是引用类型
  • 结构提成员不可被声明为protected,类可以
  • 机构题变量声明不能指定初始值,类变量声明可以指定初始值
  • 结构体不能声明析构以及默认的构造函数,类无此限制

值类型和引用类型的区别

  • 值类型隐式继承自System.ValueType而且不能继承其他任何类型,引用类型继承自System.Object
  • 值类型在栈中分配内存,引用类型在堆中分配内存,引用中存放的是堆中存放的地址
  • 值类型存取快,引用类型比值类型存取慢
  • 值类型表示实际数据,引用类型表示指向存储在对内存中的数据的指针
  • 栈内存是自动释放的,堆内存是由.Net中的GC来自动释放的
  • 值类型不能为null, 必须有一个确定值,引用类型在被赋值钱默认为null
  • 赋值值类型变量是赋值变量的值,引用类型相当于赋值变量的地址

ref参数和out参数的作用是什么以及有什么区别

  • ref 必须先赋值 out 不需要

Arraylist 和List的区别

  • ArrayList是普通类,会隐式转换成object,存在装箱拆箱的可能,存在类型不安全。
  • List是泛型类,在使用时必须填装入类型,不会涉及到装箱拆箱操作,处理效率高于ArrayList

Sealed关键字

  • 类声明时使用sealed可以防止其他类继承此类
  • 方法声明时,可以防止子类重写此方法,并且要与override一起使用

Heap,stack区别

  • Heap是堆,Stack是栈
  • Heap的空间是手动申请和释放,用关键字new来分配,Stack的空间由操作系统自动分配和释放
  • Heap空间大,相对自由,Stack空间有限

GC产生原因和避免方法

  • 如果有堆内存被系统判定为不再使用,那么由垃圾回收器GC进行回收
  • 避免产生堆内存对象,减少new产生对象的次数
  • string可改为StringBuilder

委托

  • 委托也是一种数据类型,是存的方法的引用
  • 委托变量可以承载一个或多个方法
  • 委托( Delegate )是存有对某个方法或多个方法引用的一种引用类型
  • 所有的委托( Delegate )都派生自System.Delegate类
  • 委托本质上就是方法的列表(有顺序
  • 事件中心,观察者模式
  • 委托类型可以作为 一个参数传给一个方法
  • 委托可以将方法当做一个变量去使用
  • 一个委托变量,在另一个方法中去调用叫做回调
  • Action 是对 delegate的封装

反射

  • 可以在运行的时候得到类内的函数和属性

协程

  • 协程不是多线程,是在线程中执行的一段代码,它并不能做到真正异步。
  • 程的代码可以只执行其中一部分,然后挂起,等到未来一个恰当时机再从原来挂起的地方继续向下执行。yieldreturn是Updatez之后执行
  • 用处:异步加载
  • 缺点:无法利用CPU多核

private, public protected, internal区别

  • private:私有成员只对当前类可以access
  • protected: 保护成员当前类this和当前类子类可以access
  • public:任何类可以访问,没有限制
  • internal:当前程序集中都可以访问

Interface 和 abstract区别

  • interface不能存在constructor,abstract类可以由constructor提供给子类使用
  • interface可以实现多继承,abstract只可以单继承
  • interface只能由静态的数据成员,一般不定义数据成员。abstract可以有自己的数据成员
  • interface所有的成员变量和方法都是abstract,abstract类可以有非abstract方法
  • 继承interface的类必须实现接口所有的方法,继承abstract类的类必须实现所有的abstract方法。

泛型

  • 泛型允许延迟编写类或方法中的编程元素的数据类型规范。泛型是可以与任何数据类型一起工作的类和方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值