"这是一份关于.Net面试的复习资料,涵盖了.NET框架的基础知识,包括访问修饰符、ASP.NET页面间通信、委托与事件、方法重载与覆盖、B/S架构中的状态管理、索引器、分层架构、应用程序域、CTS、CLS、CLR以及装箱和拆箱等概念。"
面试题解析:
1. 访问修饰符的理解:
- `private`:私有成员只允许在定义它的类内部访问,对外部是不可见的。
- `protected`:保护成员可以被类自身及其子类访问,提供了一定的封装性。
- `public`:公共成员可以在任何地方访问,无任何访问限制。
- `internal`:内部成员,仅限于同一命名空间内的类可以访问,是.NET框架的默认访问级别。
2. ASP.NET页面间传递值的方法:
- QueryString:通过URL参数传递,如 "?id=1"。
- Session:在服务器端存储变量,适用于跨页面且需要长期保持的数据。
- Server.Transfer:服务器内部转移请求,保留原始URL,不生成新的HTTP响应。
- Cookie:客户端存储数据,但可能受限于浏览器设置和大小限制。
3. C#中的委托和事件:
- 委托是一种类型,代表方法的引用,可以将方法作为参数传递,实现回调机制。
- 事件是基于委托的特殊机制,用于在对象之间传播通知,遵循发布/订阅模式。
- 事件本质上是特定类型的委托实例,通常用于控制流的异步操作。
4. override与重载的区别:
- 重载(Overloading)发生在同一个类中,通过不同的参数列表(数量、类型或顺序)定义多个同名方法。
- 覆盖(Overriding)发生在派生类中,子类重写基类中已有的虚方法,以实现不同的行为。
5. B/S架构中传递变量值的替代方法:
- 使用ViewState或HiddenField,隐藏数据在HTML元素中。
- 利用TempData,一种跨请求的临时数据存储。
- 利用Url路由(RouteValueDictionary)传递参数。
6. C#中索引器的实现:
- 索引器允许类像数组一样使用,但可以使用任意类型作为索引,不仅限于数字。
- 定义索引器通常涉及声明一个带有索引参数的this关键字的特殊方法。
7. 分层架构在.NET开发中的应用:
- 数据访问层(DAL):负责数据库操作,如ADO.NET或Entity Framework。
- 业务逻辑层(BLL):实现业务规则,处理业务流程,与DAL交互,也可以细分为业务表现层和业务规则层。
- 表示层(Presentation Layer):用户界面,如ASP.NET MVC或Web Forms,与BLL交互。
8. 应用程序域(AppDomain):
- 应用程序域是.NET运行时执行代码的边界,提供了安全性和隔离性,资源消耗较低。
9. CTS、CLS和CLR的解释:
- CTS(Common Type System):通用类型系统,定义了.NET框架中的所有类型体系。
- CLS(Common Language Specification):通用语言规范,是CTS的一部分,规定了.NET语言间互操作的规则。
- CLR(Common Language Runtime):公共语言运行时,是.NET框架的基础,负责类型检查、垃圾收集、异常处理等。
10. 装箱与拆箱:
- 装箱:将值类型转换为对应的引用类型(如int到object),在内存中创建一个新的对象。
- 拆箱:将引用类型转换回其值类型,需要确保对象实际存储的是正确的值类型。
11. 受管制的代码(Managed Code)与非受管制的代码(Unsafe Code):
- 受管制的代码:由.NET框架的CLR控制,遵循CLS,安全性高,如C#的大部分代码。
- 非受管制的代码:绕过CLR,直接操作内存,如C++/CLI中的`unsafe`代码,可能带来安全性问题。
12. 强类型系统:
- 强类型系统要求每个变量在声明时必须指定类型,且在运行时不允许类型转换,如C#和Java。
这份.NET面试题集涵盖了.NET开发中的关键概念和技术,是准备.NET面试的重要参考资料。理解和掌握这些知识点将有助于在面试中表现出色。