Skip to content

基础试题3

1. 值类型和引用类型有什么区别?

解答

值类型变量赋值时复制数据副本,引用类型赋值时复制对象引用。值类型在堆栈上分配内存,引用类型在堆上分配内存。值类型有共同基类System.ValueType,引用类型默认进行引用比较,除非重写Equals()方法。

2. 堆和栈的区别是什么?

解答

堆由程序员分配和释放,可能由GC回收;栈由操作系统自动分配和释放,用于存放函数参数和局部变量。堆使用二级缓存,生命周期由垃圾回收算法决定;栈使用一级缓存,在调用时分配空间,调用完毕立即释放。

3. 结构和类的主要区别有哪些?

解答

结构是值类型,类是引用类型。结构的成员都是public,类可以有其他访问限定符。结构不能继承,类可以。结构不能定义无参数构造函数,类可以。

4. 类的访问限定符有哪些?

解答

Partial: 类分成两个文件。Public: 访问不受限制。Internal: 同一程序集内可访问。

5. 面向对象的三个基本特征是什么?

解答

封装:将事物封装成类,隐藏数据,提供方法。继承:允许新类继承现有类的特性。多态:允许方法重载和覆盖,实现不同的行为。

6. .NET托管资源与非托管资源的区别是什么?

解答

托管资源由CLR分配和释放,包括普通托管资源和实现了IDisposable接口的非普通托管资源。非托管资源不受CLR管理,如文件、数据库连接等,需要显式释放。

7. 抽象类和接口的相同点和不同点是什么?

解答

相同点:都不能被实例化,都包含未实现的方法,派生类必须实现这些方法。不同点:抽象类可以有实现,接口不能有实现;一个类可以实现多个接口,但只能继承一个类;接口定义行为规范,抽象类抽象不可变行为。

8. 类的设计原则有哪些?

解答

开闭原则:对扩展开放,对修改封闭。替换原则:子类应能替换父类。依赖原则:依赖抽象而非细节。接口分离原则:使用多个专门的接口优于单一接口涵盖多个功能。单一职责原则:一个类只完成一种职责。

9. 静态类和静态构造函数的特点是什么?

解答

静态类包含的属性和方法都是静态的,不能创建实例。静态构造函数用于初始化静态字段和属性,在类首次使用前执行,不能有任何参数。

10. 扩展方法的定义和使用场景是什么?

解答

扩展方法是静态方法,定义在静态类中,第一个参数用this关键字修饰。用于为没有源代码的类添加方法。

11. 委托的主要应用场景有哪些?

解答

实现同步方法的异步调用,实现对控件的异步或并发访问。

12. 泛型类型的默认值如何设置?

解答

使用default(T)来设置泛型类型的默认值。

13. 匿名方法和lambda表达式的区别是什么?

解答

匿名方法不单独定义仅有委托引用的方法。lambda表达式用=>运算符,左边为参数列表,右边为实现代码。

14. 闭包是什么?

解答

通过lambda表达式可以访问表达式块外部的变量。

收录:https://www.cnblogs.com/xskblog/p/10130175.html