📜  26个C#面试问题

📅  最后修改于: 2020-11-01 02:03:11             🧑  作者: Mango

C#面试题

下面列出了最常见的C#面试问题和答案。

1)什么是C#?

C#是一种简单,现代的通用编程语言。它是Microsoft开发的一种面向对象的编程语言。这是一种安全且托管的语言,由.NET框架编译以生成Microsoft中间语言(机器代码)。

2)C#发明背后的原因是什么?

C#是为公共语言基础结构(CLI)设计的。它包含可执行代码和运行时环境,使用户能够在不同的计算机平台和体系结构上使用各种高级语言。

3)使用C#语言的主要原因是什么?

这些是使用C#语言的主要原因:

  • 简单易学
  • 通用和面向对象的编程语言
  • 面向组件
  • 结构化语言
  • 可以在各种计算机平台上进行编译
  • 产生高效的程序
  • .NET框架的一部分

4)public,static和void有什么区别?

您可以在应用程序中的任何位置访问公共声明的变量。

静态声明的变量可全局访问,而无需创建类的实例。

Void是类型修饰符,它指定该方法不返回任何值。

5)C#中的构造函数是什么?

构造函数是该类中的成员函数,并且与该类具有相同的名称。每当创建对象类时,都会自动调用构造函数。它在初始化类时构造数据成员的值。

6)C#中有哪些不同类型的构造函数?

基本上,有五种类型的构造函数:

  • 静态构造函数
  • 私有构造函数
  • 复制构造函数
  • 默认构造函数
  • 参数化构造函数

7)什么是静态构造函数?

首次引用该类时,将使用静态构造函数初始化静态数据成员。

8)什么是C#中的方法重载?

方法重载是在同一类中创建具有相同名称和唯一签名的多个方法的机制。进行编译时,编译器使用重载解析来确定要调用的特定方法。

9)是否可以在同一类中重写函数?

没有

10)什么是数组?

数组是一组相关实例,包括值或引用类型。

C#支持三种类型的数组:

  • 一维数组:它包含一行。也称为向量数组。
  • 多维数组:它是矩形,包含行和列。
  • 锯齿状数组:它也包含行和列,但形状不规则。

11)什么是ArrayList?

ArrayList是一个动态数组。您可以在运行时从ArrayList中添加和删除元素。在ArrayList中,元素不会自动排序。

12)什么是收藏?

集合用作其他类实例的容器。所有类都实现ICollection接口。

13)什么是接口?

接口是仅具有公共抽象方法的抽象类。这些方法仅具有声明,而没有定义。这些抽象方法必须在继承的类中实现。

14)C#中的lock语句是什么?

Lock语句用于确保一个线程不输入代码的关键部分,而另一个线程在关键部分。如果另一个线程尝试输入锁定的代码,它将等待,阻塞,直到对象被释放为止。

15)什么是序列化?

如果要通过网络传输对象,则必须将对象转换为字节流。将对象转换为字节流的过程称为序列化。

16)如何在一个类中声明一个属性?

int m_PersonID = 0;
public int PersonID
{
get { return m_PersonID; }
set { m_PersonID = value; }
}

17)C#中的早期绑定和晚期绑定之间有什么区别?

早期绑定和晚期绑定是多态性的概念。 C#中有两种类型的多态性。

  • 编译时多态性:也称为早期绑定。
  • 运行时多态性:也称为后期绑定或方法重载或动态多态性。

18)C#中有哪些访问修饰符?

以下是通常用于辅助功能的访问修饰符:

  • 公共:如果将属性或方法定义为公共,则可以从项目的任何代码中访问它。
  • 私有:私有定义的属性或方法只能由包含类中的任何代码访问。
  • 受保护的:如果将方法或属性定义为受保护的,则继承的类中的任何方法以及同一类中的任何方法都可以访问它。
  • 内部的:如果将属性或方法定义为内部,则仅限于当前位置部件中的类。
  • 受保护的内部:如果将属性或方法定义为受保护的内部,则访问仅限于当前项目程序集中的类或从包含的类派生的类型。

19)C#中的抽象类和接口有什么区别?

抽象类可以有抽象的具体方法,而接口只有抽象的方法。

20)C#中的dispose()和finalize()方法有什么区别?

用户显式调用dispose()方法以释放非托管资源,例如文件,数据库连接等,而垃圾回收器隐式调用finalize()方法以释放非托管资源,例如文件,数据库连接等。

dispose()方法属于IDisposable接口,而finalize()方法属于Object类。

21)C#中的方法重载和方法重写之间有什么区别?

方法参数在方法重载中必须不同,而在方法重载中必须相同。

方法重载不需要继承,它发生在同一类中。但是方法重写中需要继承。

22).Net中的对象池是什么?

对象池是准备使用的对象的容器。它减少了创建新对象的开销。

23)C#中的委托是什么?

C#中的委托是一个对象,其中包含对方法的引用。就像C++中的函数指针一样。

24)什么是哈希表?

哈希表是键/值对的集合。它包含基于键的值。

25)什么是反思?

反射允许我们在运行时获取元数据和对象的程序集。

26)什么是垃圾回收?

垃圾回收是释放内存的过程,这些内存将自动被不再访问的对象占用。