.NET面试必备:基础概念与技术解析

需积分: 9 2 下载量 194 浏览量 更新于2024-07-31 1 收藏 349KB DOC 举报
“.Net经典面试题目.Net技巧” 这篇资源主要涵盖了.NET框架相关的面试题目,适合准备.NET岗位面试的求职者,特别是应届毕业生。以下是对各个问题的详细解答: 1. CLR(Common Language Runtime)是.NET框架的核心部分,它负责执行代码和提供基础服务,如内存管理、安全性、异常处理等。CTS(Common Type System)是.NET框架的一部分,定义了所有.NET语言共享的类型系统。CLS(Common Language Specification)是一组规则,确保不同.NET语言之间的互操作性。 2. 基元类型是指.NET框架内建的、由编译器直接支持的数据类型,例如int、bool、char等,它们在内存中直接存储值。 3. 值类型(如int、struct)存储在栈中,直接包含其数据;引用类型(如class)存储在托管堆中,仅存储对象的引用。值类型设计的目的是为了效率,它们通常更小,访问更快。值类型不会被垃圾收集器(GC)直接回收,因为它们的生命周期由栈管理,但当值类型作为对象字段时,会随着对象一起被回收。 4. `Equals`方法用于比较两个对象的内容是否相等,`==`运算符比较的是两个对象的引用是否指向同一个实例,而`ReferenceEquals`则是检查两个对象引用是否相同,不涉及任何实际的比较逻辑。 5. 虚方法是可以通过子类重写的方法,允许多态性。多态性意味着子类对象可以像父类一样被处理,但可以执行子类特有的行为。 6. `overload`(重载)是同一个作用域内创建多个同名但参数列表不同的方法。`override`(重写)是在派生类中重新定义基类的虚方法,改变其行为。 7. 基于接口编程的目的在于实现松耦合,使得类与类之间通过接口交互,而不是直接引用对方。接口适用于定义一组相关行为,而抽象类则更适合共享实现。当需要多个继承,或只想定义行为而不提供实现时,选择接口;若需要提供默认实现和强制继承某些方法,选择抽象类。 8. 委托是.NET中的类型,代表一个方法指针,可以用来传递方法作为参数。委托链是多个委托串联在一起,形成一个事件处理链。不能直接继承`MulticastDelegate`,但可以创建新的委托类型,它继承自`MulticastDelegate`。 9. 实现迭代器通常需要实现`IEnumerable`和`IEnumerator`接口,允许其他代码遍历集合。 10. 一个简单的带有泛型约束的类型定义如下: ```csharp public class SimpleGeneric<T, K> where T : struct where K : IDisposable { // 类体 } ``` 这里,`T`必须是值类型,`K`必须实现`IDisposable`接口。 11. .NET中的Remoting允许跨进程、跨机器通信,适用于分布式应用程序。WebService是一种基于HTTP协议的远程调用技术,可以在任何支持SOAP协议的平台上运行,主要用于跨平台、跨语言的互操作性。 12. ASP.NET中的数据验证通过一系列验证控件实现,如RequiredFieldValidator(非空验证)、CompareValidator(比较验证)等。服务端事件是通过HTTP POST请求触发的,服务器首先执行Page_Load,然后根据POST数据调用相应的服务端事件。自动传回(AutoPostBack)是Web控件的一个属性,当设置为true时,控件的更改会立即引发服务端事件,无需用户额外操作。 13. WEB控件和服务端HTML控件都可以调用客户端方法,通过JavaScript或者AJAX技术实现。例如,可以使用`ClientScript.RegisterStartupScript`添加JavaScript代码,或利用jQuery等库在客户端执行操作。