### ASP.NET面试题知识点详解 #### 1. 垃圾回收机制的工作原理 垃圾回收机制是.NET框架中CLR(公共语言运行时)的关键组成部分,主要用于自动管理内存资源,防止程序因内存泄露而导致的崩溃。当.NET应用程序运行时,CLR会创建一个托管堆,用于存放所有由new运算符创建的对象。每当创建新对象时,运行库会在托管堆中为其分配连续的内存空间,并保持一个指针记录最后分配的位置。一旦托管堆的可用空间不足,垃圾回收器就会启动,扫描整个托管堆,识别不再被任何活动代码引用的对象(即垃圾),并将其占用的内存重新标记为可用。 垃圾回收的具体流程如下: - **标记**:从根对象(如全局变量、静态变量、当前栈帧中的局部变量等)开始,标记所有可达的对象。 - **清除**:未被标记的对象被认为是垃圾,其占用的内存被回收。 - **压缩**:为了减少内存碎片,垃圾回收器可能会将存活对象移动到堆的前面,然后更新所有指向这些对象的引用。 #### 2. CLR的主要用途 CLR是.NET框架的核心组件,充当着虚拟执行环境的角色,负责执行和管理.NET应用程序。它的主要职责包括: - **类型安全性**:确保代码中的类型使用安全,防止类型混淆。 - **垃圾回收**:自动管理应用程序的内存,消除程序员手动管理内存的负担。 - **代码验证**:检查IL(中间语言)代码,确保其符合规范,增强应用程序的安全性和稳定性。 - **多线程支持**:提供对多线程操作的支持,简化并发编程的复杂性。 - **异常处理**:提供统一的异常处理机制,帮助开发者更好地控制和响应运行时错误。 #### 3. 类与对象的概念 - **类**:是对象的抽象描述,定义了一组共享相同属性(数据成员)和行为(成员方法)的对象模板。它是面向对象编程的基础,用作创建对象的蓝图。 - **对象**:是类的一个具体实例,拥有特定的状态和行为。对象是实际的实体,能够执行类定义的操作,拥有自身的数据属性。 #### 4. 封装的概念 封装是面向对象编程的基石之一,指的是将数据和操作数据的方法包装在一起,隐藏对象的内部状态和实现细节,仅暴露必要的接口供外部使用。这样可以保护数据不受外界干扰,提高代码的可维护性和安全性。 #### 5. 静态方法与实例方法的区别 - **静态方法**:属于类本身,无需创建类的实例即可调用,使用`static`关键字声明。它们通常用于定义与特定实例无关的功能,如工具方法。 - **实例方法**:依赖于类的实例,需要先创建对象才能调用。它们通常用于定义对象的行为,操作对象的数据成员。 #### 6. Pascal命名法与Camel命名法 - **Pascal命名法**:用于类、接口、方法、属性等的命名,每个单词的首字母均大写,如`MyClass`。 - **Camel命名法**:用于变量、参数等的命名,首单词首字母小写,后续单词首字母大写,如`myVariable`。 #### 7. out与ref参数的区别 - **out参数**:用于方法返回多个结果,方法调用者必须在调用时准备接收值的变量。调用方法前,变量可以不被初始化。 - **ref参数**:类似于out,但要求在调用方法前变量必须已经被初始化。 #### 8. 枚举的作用 枚举类型提供了一种定义一组命名常量的方式,这些常量代表整数值。它们增强了代码的可读性和自我文档化能力,使代码更具表达力和维护性。 #### 9. 值类型与引用类型 - **值类型**:包括基本数据类型(如int、float)、结构体和枚举,存储在栈中,直接存储值。 - **引用类型**:如类、接口、数组等,存储在堆上,变量存储的是指向实际数据的引用。 #### 10. 装箱与拆箱 - **装箱**:将值类型转换为引用类型,实质上是在堆上创建一个对象实例,并将值类型的值复制到这个对象中。 - **拆箱**:将引用类型转换回值类型,从引用类型中取出值类型的值并赋给值类型变量。 #### 11. ArrayList与Hashtable的区别 - **ArrayList**:基于数组实现的集合,提供了动态数组的功能,适合顺序访问和随机访问。 - **Hashtable**:基于哈希表实现的键值对集合,提供了O(1)时间复杂度的查找速度,适合快速查找场景。 #### 12. 泛型的概念 泛型是.NET框架中的一种高级特性,允许在编译时指定类型参数,从而编写高度重用且类型安全的代码。泛型方法和类可以在编译时使用具体的类型实例化,而不是在运行时进行类型转换,这提高了性能和类型安全性。例如,`List<T>`就是一个泛型类,其中`T`是类型参数,可以替换为任何具体的类型,如`List<int>`或`List<string>`。
剩余37页未读,继续阅读
- 粉丝: 323
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助