提供了最常见的 .Net 面试问题和许多公司提出的答案。让我们看看顶级 Dot Net 面试问题列表。
.NET 是一种软件开发框架。它就像其他软件开发框架(J2EE)一样。它以类库和 API 的形式提供运行时功能和一组丰富的预构建功能。此 .NET 框架是构建、部署和运行 Web 服务和其他应用程序的环境。
.NET 框架包含三个主要部分:
- 公共语言运行时
- 框架类
- ASP.NET
.NET第一次引入时,支持VB.NET、C#、COBOL、Perl等多种语言,目前支持近44种语言。
.NET 语言代码被编译为 Microsoft 中间语言 (MSIL)。生成的代码称为托管代码。此托管代码在 .NET 环境中运行。所以编译后语言不是障碍,代码也可以调用或使用另一种语言的功能。
是的,ASP.NET 与 ASP 不同。
这些是主要区别:
- ASP.NET 由 Microsoft 开发以创建动态 Web 应用程序,而 ASP(Active Server Pages)是 Microsoft 用于创建网页的服务器端技术。
- ASP.NET 是在解释 ASP 的同时编译的。
- ASP 使用名为 ADO 的技术,而 ASP.NET 使用 ADO.NET。
- ASP.NET 是完全面向对象的,而 ASP 是部分面向对象的。
状态管理是一种用于根据不同请求管理对象状态的技术。在任何 Web 应用程序中管理状态都非常重要。
ASP.NET 中有两种类型的状态管理系统。
- 客户端状态管理
- 服务器端状态管理
Debug 类用于调试构建,而 Trace 用于调试和发布构建。
system.stringbuilder 和 system.string 之间的主要区别是:
- system.stringbuilder 是可变的,而 system.string 是不可变的。
- Append 关键字在 system.stringbuilder 中使用,但不在 system.string 中使用。
int 和 int32 之间没有区别。系统中 Int 是 System.Int32 的别名,它是一个 .Net 类。
程序集是逻辑单元的物理分组,而命名空间对类进行分组。一个命名空间可以跨越多个程序集。
以下是值类型和引用类型之间的主要区别:
- 值类型包含变量,而引用类型不直接在其内存中包含值。
- 在引用类型中,内存分配在托管堆中,值类型内存分配在堆栈中。
- 引用类型 ex-class value type-struct, enumeration
会话对象用于维护每个用户的会话。
例如:如果用户进入应用程序,那么他将获得一个会话 ID。如果他离开应用程序,则会话 ID 将被删除。如果他再次进入应用程序,他将获得不同的会话 ID。
但是在应用程序对象的情况下,为整个应用程序维护 id。
函数和存储过程的区别:
- 函数只返回一个值,而过程可以返回一个或多个值。
- 函数可以在select 语句中使用,但不能使用procedure。
- 函数只有输入参数,而过程可以有输入和输出参数。
- 异常可以通过过程中的 try catch 块处理,但在函数中是不可能的。
系统.环境.用户名
哈希表以值对和名称的形式存储数据,而数组列表仅存储值。
您需要通过名称来访问哈希表中的值,而在数组中,您需要传递索引号来访问值。
在Array中,您只能存储相似类型的数据类型,而在Hash table中,您可以存储不同类型的数据类型。前任。整数,字符串等。
不可变意味着一旦你创建了一个东西,你就不能修改它。
例如:如果您想为旧值赋予新值,那么它将丢弃旧值并在内存中创建新实例以保存新值。
使用会话的优点是:
- 会话将用户状态和数据存储到整个应用程序中。
- 它很容易实现,我们可以存储任何类型的对象。
- 它可以单独存储每个用户数据。
- 会话对用户是安全和透明的,因为会话对象存储在服务器上。
使用 session 的缺点是:
- 在大量用户的情况下会出现性能开销,因为 session 数据存储在服务器内存中。
- 涉及序列化和反序列化会话数据的开销,因为在 StateServer 和 SQLServer 会话模式的情况下,我们需要在存储之前序列化对象。
是的。可以在 web.config 中手动设置会话超时时间。
- 装箱:装箱是将值类型转换为引用类型的过程。
- 拆箱:拆箱是将引用类型转换为值类型的过程。
不可以。
HttpHandler 是一个低级请求和响应 API,用于为传入的 Http 请求提供服务。 ASP.NET 收到的每个传入 Http 请求最终都由实现 HttpHandler 的类的实例处理。
.NET Framework 便于开发人员开发、运行和部署控制台应用程序、窗口窗体应用程序、Web 应用程序、Web 服务、窗口服务等应用程序。
它还提供了创建可用于分布式计算架构的可共享组件的环境。
.Net Framework 的主要组件:
- 类库
- 公共语言运行时 (CLR)
- 动态语言运行时 (DLR)
- 应用程序域
- 运行时主机
- 跨语言互操作性
- 框架安全
- 分析等。
清单用于存储程序集元数据。它包含以下内容所需的所有元数据。
- 程序集版本
- 安全标识
- 程序集范围
- 解析对资源和类的引用
内存映射文件用于将文件内容映射到应用程序的逻辑地址。它使您能够在同一台机器上运行多个进程以相互共享数据。要获得内存映射文件对象,您可以使用 MemoryMappedFile.CreateFromFiles() 方法。它代表来自磁盘文件的持久内存映射文件。
System.GC.Collect() 方法。
尽管 CLR 使用 Dispose 和 Finalize 这两种方法来执行 .NET 应用程序的运行时对象的垃圾收集,但它们之间还是有区别的。
Finalize 方法由运行时自动调用,而 Dispose 方法由程序员调用。
.NET 安全模型用于防止对资源和操作的未授权访问,并限制代码执行特定任务。代码访问安全性是 .NET 安全性的一部分。
垃圾收集用于防止程序执行期间的内存泄漏。有一个低优先级进程名称,因为垃圾收集器管理应用程序的内存分配和释放。它还检查未引用的变量和对象。如果应用程序不再使用任何对象,则垃圾收集器将从该对象中释放内存。
有一个属性,名为“IsPostBack”属性。您可以检查它以了解该页面是否已回发。
变量:变量是计算机内存中的数据存储位置,它包含一个值并具有一个有意义的名称。每个变量都附加到一个数据类型,该数据类型决定了可以在变量中存储什么类型的值。
可以使用以下语法声明变量:
<data_type> <variable_name>;
常量:常量也类似于变量,只是值不同。分配给常量的值无法更改。
常量必须在声明的同时初始化。
可以使用以下语法声明常量:
const int interestRate =10;
在 Visual basic 中,我们可以使用 Select-Case 语句来替换多个 If-Else 语句。在 C# 中,我们应该使用 Switch-Case 语句来替换多个 If-Else 语句。
.Net 中有两种类型的索引:
聚集索引和非聚集索引
.Net中有两种类型的内存
- Stack memory
- Heap Memory
.NET Framework 4.0 的新功能列表:
- 改进的应用程序兼容性和部署支持
- 动态语言运行时
- 托管扩展性框架
- 并行编程框架
- 改进的安全模型
- 网络改进
- ASP.NET 服务改进
- WPF 4 中的改进
- 改进的实体框架 (EF)
- WCF 和 WF 之间的集成
cookie 是服务器在客户端创建的少量数据。当 Web 服务器创建 cookie 时,会在向浏览器提供页面时向浏览器发送一个额外的 HTTP 标头。
cookies 的主要缺点是:
- Cookie 只能存储字符串值。
- Cookie 取决于浏览器。
- Cookie 并不安全。
- Cookie 只能存储少量数据。
IL 代表中级语言。它也被称为 MSIL(微软中间语言)或 CIL(通用中间语言)。
所有 .NET 源代码首先被编译为 IL。然后,IL 在安装软件时或在运行时由 Just-In-Time (JIT) 编译器转换为机器代码。
System.GC.Collect() 方法用于在 .Net 中强制执行垃圾收集。
元组是一个固定大小的集合,可以包含相同或不同数据类型的元素。用户必须在声明时指定元组的大小,就像数组一样。
一个元组可以容纳 1 到 8 个元素。如果元素超过 8 个,则可以将第 8 个元素定义为另一个元组。元组可以指定为方法的参数或返回类型。
数据集遵循断开连接的数据架构。
有一个名为“IsClosed”的属性用于检查 DataReader 是关闭还是打开。如果数据读取器关闭,则此属性返回真值,否则返回假值。
连接池必须满足以下两个要求:
- 必须有多个进程共享描述相同参数和安全设置的同一个连接。
- 连接字符串必须相同。
OleDbDataAdapter 用于从 Access 数据库中获取数据。
以下参数控制连接池行为:
- Connect Timeout
- Max Pool Size
- Min Pool Size
- Pooling
AutoPostBack 是一个属性,用于在引发事件时自动回发。您必须将控件的 AutoPostBack 属性设置为 True。
DataSource 属性和 DataMember 属性用于绑定 DataGridView 控件。