超硬核!苏州同程旅游学长给我的全面的面试知识库

简介: 超硬核!苏州同程旅游学长给我的全面的面试知识库

超硬核!苏州同程旅游学长给我的全面的面试知识库


1、简介


新生和经验丰富的C#面试常见问题解答

2、什么是C#?

3、用示例说明C#中的注释类型

4、可以执行多个catch块吗?

5、 public,static和void之间有什么区别?

6、什么是物体?

7、定义构造函数

8、什么是锯齿状阵列?

9、ref&out参数之间有什么区别?

10、C#中“ using”语句的用途是什么?

11、什么是序列化?

12、我们可以在静态方法中使用“ this”命令吗?

13、常量和只读之间有什么区别?

14、什么是接口类?举一个例子

15、什么是值类型和引用类型?

16、什么是自定义控件和用户控件?

17、 C#中的密封类是什么?

18、什么是方法重载?

19、 Array和Arraylist有什么区别?

20、可以重写私有虚拟方法吗?

21、描述可访问性修饰符“受保护的内部”。

22、System.String和System.Text.StringBuilder类之间有什么区别?

23、System.Array.CopyTo()和System.Array.Clone()有什么区别?

24、我们如何才能按降序对Array的元素进行排序?

25、写下C#语法以捕获异常

26、接口和抽象类有什么区别?

27、 Finalize()和Dispose()方法有什么区别?

28、什么是循环引用?

29、 C#.NET中的泛型是什么?

30、什么是.NET中的对象池?

31、列出.net中常用的异常类型

32、什么是自定义例外?

33、什么是代表?

34、如何在C#中将一个类继承到其他类?

35、.net中的基类是什么,所有类都源自该基类?

36、方法重载和方法重载之间有什么区别?

37、重载方法有哪些不同的方式?

38、为什么不能为接口内的方法指定可访问性修饰符?

39、我们如何设置要继承的类,但又要防止该方法被重写?

40、如果继承的接口具有冲突的方法名称,该怎么办?

关注苏州程序大白,持续更新技术分享。谢谢大家支持


1、简介


C#是一种通用编程语言,涵盖了诸如面向对象编程,静态类型化,面向组件的编程,强类型化等各种学科。C#在ASP.NET框架中广泛用于创建网站,Web应用程序和游戏。世界各地的C#编程都有巨大的机会。如果您想在C#编程中谋求一份职业,则需要进行一次面试,在其中会向您询问以下几个C#基本面试问题和解答。

这是C#面试问题和答案的精选列表,在面试过程中可能会提出这些问题。根据他们的经验和其他各种因素,可能会向候选人询问基本的C#面试问题,以提高C#.NET面试的水平。此列表涵盖了所有针对新生的C#问题以及针对经验丰富的应聘者的C#面试问题和答案。


20210529084817696.gif


新生和经验丰富的C#面试常见问题解答


以下是一些针对新手和有经验的C#开发人员候选人的常见访谈问题,以找到合适的工作。

我们已经介绍了50多种基本知识,以推进常见的C#面试问题和答案


2、什么是C#?


C#是一种面向对象的,类型安全的托管语言,由.Net框架编译以生成Microsoft中间语言。


3、用示例说明C#中的注释类型


单线

例子:


//This is a single line comment
Ii.多行(/ * * /)


例子:


/*This is a multiple line comment
We are in line 2
Last line of comment*/
Iii.XML注释(///)。


例如:


/// summary;
/// Set error message for multilingual language.
/// summary


4、可以执行多个catch块吗?


不,不能执行多个类似类型的捕获块。一旦执行了正确的捕获代码,控制就会转移到finally块,然后执行finally块之后的代码。


5、 public,static和void之间有什么区别?


公开声明的变量或方法可在应用程序中的任何位置访问。静态声明的变量或方法可以全局访问,而无需创建类的实例。默认情况下,静态成员不可全局访问,这取决于所使用的修改的访问类型。编译器将方法的地址存储为入口点,并使用此信息在创建任何对象之前开始执行。Void是类型修饰符,它声明方法或变量不返回任何值。


6、什么是物体?


20210529084936363.png


一个对象是一个类的实例,通过它我们可以访问该类的方法。“新建”关键字用于创建对象。在内存中创建对象的类将包含有关该类的方法,变量和行为的信息。


7、定义构造函数


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


8、什么是锯齿状阵列?


具有数组类型元素的数组称为锯齿数组。元素可以具有不同的尺寸和大小。我们也可以将锯齿状数组称为数组数组。


9、ref&out参数之间有什么区别?


作为ref传递的参数必须在传递给方法之前进行初始化,而out参数在传递给方法之前无需进行初始化。


10、C#中“ using”语句的用途是什么?


“使用”块用于获取资源并对其进行处理,然后在执行完该块后自动将其丢弃。


11、什么是序列化?


当我们想通过网络传输对象时,我们必须将对象转换为字节流。将对象转换为字节流的过程称为序列化。为了使对象可序列化,它应该实现ISerialize接口。反序列化是从字节流中创建对象的反向过程。


12、我们可以在静态方法中使用“ this”命令吗?


我们不能在静态方法中使用’This’,因为我们只能在静态方法中使用静态变量/方法。


13、常量和只读之间有什么区别?


常量变量在编译时声明和初始化。此后无法更改该值。只读仅在我们要在运行时分配值时使用。


14、什么是接口类?举一个例子


接口是仅具有公共抽象方法的抽象类,并且这些方法仅具有声明而不具有定义。这些抽象方法必须在继承的类中实现。例如下:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 interface Guru99Interface
 {
  void SetTutorial(int pID, string pName);
  String GetTutorial();
 }
 class Guru99Tutorial : Guru99Interface
 {
  protected int TutorialID;
  protected string TutorialName;
  public void SetTutorial(int pID, string pName)
  {
   TutorialID = pID;
   TutorialName = pName;
  }
  public String GetTutorial()
  {
   return TutorialName;
  }
  static void Main(string[] args)
  {
   Guru99Tutorial pTutor = new Guru99Tutorial();
   pTutor.SetTutorial(1,".Net by Guru99");
   Console.WriteLine(pTutor.GetTutorial());
   Console.ReadKey();
  }
 }
}


15、什么是值类型和引用类型?


值类型将数据值保存在其自己的存储空间内。例子


Int = 30;


引用类型存储要在其中存储值的对象的地址。它是指向另一个存储位置的指针。


String b =“ Hello Guru99 !!”;


16、什么是自定义控件和用户控件?


自定义控件是作为编译代码(Dll)生成的控件,它们更易于使用,可以添加到工具箱中。开发人员可以将控件拖放到他们的Web表单中。在设计时属性即可。我们可以轻松地将自定义控件添加到多个应用程序(如果共享的Dll)。因此,如果它们是私有的,那么我们可以将其复制到dll到Web应用程序的bin目录中,然后添加引用并可以使用它们。

用户控件与ASP包含文件非常相似,并且易于创建。用户控件不能放置在工具箱中并从中拖放。他们有自己的设计和代码背后。用户控件的文件扩展名为ascx。


17、 C#中的密封类是什么?


当我们想限制继承的类时,我们创建密封的类。密封的修饰符,用于防止从类派生。如果我们强制将密封类指定为基类,则会发生编译时错误。


18、什么是方法重载?


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


19、 Array和Arraylist有什么区别?


在数组中,我们只能具有相同类型的项目。比较时,数组的大小是固定的。数组列表类似于数组,但是没有固定的大小。


20、可以重写私有虚拟方法吗?


不可以,因为在课外无法访问它们。


21、描述可访问性修饰符“受保护的内部”。


受保护的内部变量/方法可在同一程序集中以及从该父类派生的类中访问。


22、System.String和System.Text.StringBuilder类之间有什么区别?


System.String是不可变的。当我们修改字符串变量的值时,会将新的内存分配给新值,并释放先前的内存分配。System.StringBuilder设计为具有可变字符串的概念,在其中可以执行各种操作,而无需为修改后的字符串分配单独的内存位置。


23、System.Array.CopyTo()和System.Array.Clone()有什么区别?


使用Clone()方法,我们使用CopyTo()方法创建一个包含原始Array中所有元素的新数组对象。现有阵列的所有元素都将复制到另一个现有阵列中。两种方法都执行浅表复制。


24、我们如何才能按降序对Array的元素进行排序?


使用Sort()方法,然后使用Reverse()方法。


25、写下C#语法以捕获异常


为了捕获异常,我们使用try-catch块。捕获块可以具有system.Exception类型的参数。

例如:


try {
    GetAllData();
} 
catch (Exception ex) {
}


在上面的示例中,我们可以从catch语句中省略参数。


26、接口和抽象类有什么区别?


接口具有所有仅具有声明但没有定义的方法。在抽象类中,我们可以有一些具体方法。在接口类中,所有方法都是公共的。抽象类可以具有私有方法。


27、 Finalize()和Dispose()方法有什么区别?


当我们希望对象与它们一起释放任何非托管资源时,将调用Dispose()。另一方面,Finalize()用于相同的目的,但不能保证对象的垃圾回收。


28、什么是循环引用?


循环引用是指两个或多个资源相互依赖导致锁定条件并使资源无法使用的情况。


29、 C#.NET中的泛型是什么?


泛型用于制作可重用的代码类,以减少代码冗余,提高类型安全性和性能。使用泛型,我们可以创建集合类。若要创建通用集合,应使用System.Collections.Generic命名空间代替System.Collections命名空间中的诸如ArrayList之类的类。泛型提倡使用参数化类型。


30、什么是.NET中的对象池?


对象池是具有准备使用的对象的容器。它跟踪当前正在使用的对象,池中的对象总数。这减少了创建和重新创建对象的开销。


31、列出.net中常用的异常类型


ArgumentException,ArgumentNullException,ArgumentOutOfRangeException,ArithmeticException,
DivideByZeroException,OverflowException,IndexOutOfRangeException,InvalidCastException,
InvalidOperationException,IOEndOfStreamException,NullReferenceException,OutOfMemoryException,
StackOverflowException等。


32、什么是自定义例外?


有时,根据用户要求需要处理一些错误。自定义异常用于它们,并用于定义的异常。


33、什么是代表?


委托与C ++中的函数指针相同,但是唯一的区别是它们与类型指针不同,它们是类型安全的。委托是必需的,因为它们可用于编写更多通用的类型安全函数。


34、如何在C#中将一个类继承到其他类?


冒号在C#中用作继承运算符。只需放置一个冒号,然后放置类名。

公共类DerivedClass:BaseClass


35、.net中的基类是什么,所有类都源自该基类?


System.Object


36、方法重载和方法重载之间有什么区别?


在方法重写中,我们在派生类中更改了方法定义,从而改变了方法的行为。方法重载是在同一个类中创建具有不同签名的同名方法。


37、重载方法有哪些不同的方式?


可以使用参数的不同数据类型,参数的不同顺序和参数的数量来重载方法。


38、为什么不能为接口内的方法指定可访问性修饰符?


在接口中,我们有没有方法定义的虚拟方法。所有方法都将在派生类中被覆盖。这就是为什么它们都公开的原因。


39、我们如何设置要继承的类,但又要防止该方法被重写?


将该类声明为公共类,并密封该方法以防止其被覆盖。


40、如果继承的接口具有冲突的方法名称,该怎么办?


工具取决于您自己,因为方法位于您自己的类中。当来自不同接口的方法期望不同的数据时可能会出现问题,但就编译器而言,您可以。


相关文章
|
4月前
|
前端开发 Java C#
GitHub突破5k Star!这件事情我坚持了3年,努力打造C#/.NET/.NET Core全面的学习、工作、面试指南知识库
GitHub突破5k Star!这件事情我坚持了3年,努力打造C#/.NET/.NET Core全面的学习、工作、面试指南知识库
|
11月前
|
消息中间件 前端开发 Java
同程面试:说一下多态的实现原理?
同程面试:说一下多态的实现原理?
83 1
|
消息中间件 SQL 网络协议
RabbitMQ超硬核面试题,直观明了 每天进步“亿”点点
RabbitMQ超硬核面试题,直观明了 每天进步“亿”点点
151 0
RabbitMQ超硬核面试题,直观明了 每天进步“亿”点点
|
2月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
14天前
|
算法 Java 数据中心
探讨面试常见问题雪花算法、时钟回拨问题,java中优雅的实现方式
【10月更文挑战第2天】在大数据量系统中,分布式ID生成是一个关键问题。为了保证在分布式环境下生成的ID唯一、有序且高效,业界提出了多种解决方案,其中雪花算法(Snowflake Algorithm)是一种广泛应用的分布式ID生成算法。本文将详细介绍雪花算法的原理、实现及其处理时钟回拨问题的方法,并提供Java代码示例。
34 2
|
18天前
|
JSON 安全 前端开发
第二次面试总结 - 宏汉科技 - Java后端开发
本文是作者对宏汉科技Java后端开发岗位的第二次面试总结,面试结果不理想,主要原因是Java基础知识掌握不牢固,文章详细列出了面试中被问到的技术问题及答案,包括字符串相关函数、抽象类与接口的区别、Java创建线程池的方式、回调函数、函数式接口、反射以及Java中的集合等。
21 0
|
2月前
|
Java C++
【Java基础面试十七】、Java为什么是单继承,为什么不能多继承?
这篇文章讨论了Java单继承的设计原因,指出Java不支持多继承主要是为了避免方法名冲突等混淆问题,尽管Java类不能直接继承多个父类,但可以通过接口和继承链实现类似多继承的效果。
【Java基础面试十七】、Java为什么是单继承,为什么不能多继承?
|
2月前
|
XML 存储 JSON
【IO面试题 六】、 除了Java自带的序列化之外,你还了解哪些序列化工具?
除了Java自带的序列化,常见的序列化工具还包括JSON(如jackson、gson、fastjson)、Protobuf、Thrift和Avro,各具特点,适用于不同的应用场景和性能需求。
|
2月前
|
Java
【Java基础面试三十七】、说一说Java的异常机制
这篇文章介绍了Java异常机制的三个主要方面:异常处理(使用try、catch、finally语句)、抛出异常(使用throw和throws关键字)、以及异常跟踪栈(异常传播和程序终止时的栈信息输出)。
|
2月前
|
Java
【Java基础面试三十八】、请介绍Java的异常接口
这篇文章介绍了Java的异常体系结构,主要讲述了Throwable作为异常的顶层父类,以及其子类Error和Exception的区别和处理方式。