Rumah > pembangunan bahagian belakang > Tutorial C#.Net > C# 一些面试试题的实例教程

C# 一些面试试题的实例教程

零下一度
Lepaskan: 2017-06-23 14:30:29
asal
1779 orang telah melayarinya

最近一个搞NET开发的朋友离职了,想让我给他找点关于NET的相关面试题,准备抱一下佛脚,迎接新的挑战。

我赶紧找到以前检索的各种宝典,试题,今天梳理一下关于NET的基础知识点。

1、面向对象语言的三大特性:封装、继承、多态;

2、接口和类有什么异同:

  不同点:

   ①接口不能直接实例化。

   ②接口只包含方法或属性的声明,不包含方法的实现。

   ③接口可以多继承,类只能单继承。

   ④表达的含义不同,接口主要定义一种规范,统一调用方法,也就是规范类,约束类,类是方法功能的实现和集合

 相同点:

   ①接口、类和结构都可以从多个接口继承。

   ②接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。

   ③接口和类都可以包含事件、索引器、方法和属性。

3、抽象类和接口有什么异同

  ①继承:接口支持多继承;抽象类不能实现多继承。

  ②表达的概念:接口用于规范,更强调契约,抽象类用于共性,强调父子。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于"Is A"的关系;而接口是定义行为规            范,强调“Can Do”的关系,因此对于实现接口的子类来说,相对于接口来说,是"行为需要按照接口来完成"。

  ③方法实现:对抽象类中的方法,即可以给出实现部分,也可以不给出;而接口的方法(抽象规则)都不能给出实现部分,接口中方法不能加修饰符。

  ④子类重写:继承类对于两者所涉及方法的实现是不同的。继承类对于抽象类所定义的抽象方法,可以不用重写,也就是说,可以延用抽象类的方法;而对于接口类所定义的方法或者属性来说,在继承类          中必须重写,给出相应的方法和属性实现。

  ⑤新增方法的影响:在抽象类中,新增一个方法的话,继承类中可以不用作任何处理;而对于接口来说,则需要修改继承类,提供新定义的方法。

  ⑥接口可以作用于值类型(枚举可以实现接口)和引用类型;抽象类只能作用于引用类型。

  ⑦接口不能包含字段和已实现的方法,接口只包含方法、属性、索引器、事件的签名;抽象类可以定义字段、属性、包含有实现的方法。

4、virtual、sealed、override和abstract的区别

  ①virtual申明虚方法的关键字,说明该方法可以被重写

  ②sealed说明该类不可被继承

  ③override重写基类的方法

  ④abstract申明抽象类和抽象方法的关键字,抽象方法不提供实现,由子类实现,抽象类不可实例化。

5、重载(override)和重写(overload)有什么区别

  重载:当类包含两个名称相同但签名不同(方法名相同,参数列表不相同)的方法时发生方法重载。用方法重载来提供在语义上完成相同而功能不同的方法。(一个类中、多个方法)

  重写:在类的继承中使用,通过覆写子类方法可以改变父类虚方法的实现。(二个类以上)

 6、结构体和类的区别

  ①结构体是值类型,类是引用类型
  ②结构体不支持无惨构造函数,不支持析构函数,并且不能有protected修饰;
  ③结构体常用于数据存储,类class多用于行为;
  ④类class需要用new关键字实例化对象,struct可以不适用new关键字;
  ⑤类class可以为抽象类,struct不支持抽象;

 7、out和ref的异同点

  ①ref要求参数在使用之前要显式初始化,out要在方法内部初始化;

  ②out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

  ③ref是有进有出,out是只出不进;(ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空)

 8、值类型和引用类型的区别

  ①值类型:就是一个包含实际数据的量。即当定义一个值类型的变量时,C#会根据它所声明的类型,以栈方式分配一块大小相适应的存储区域给这个变量,随后对这个变量的读或写操作就直接在这块内存          区域进行;

  ②引用类型:一个引用类型的变量不存储它们所代表的实际数据,而是存储实际数据的引用。
  引用类型分两步创建:首先在栈上创建一个引用变量,然后在堆上创建对象本身,再把这个内存的句柄(也是内存的首地址)赋给引用变量;

 

 9、什么是拆箱和装箱

   装箱→值类型转换为引用类型,拆箱→引用类型转换为值类型。

10、装箱和拆箱有什么性能影响?怎么解决呢?

  ①影响:都涉及到内存的分配和对象的创建,有较大的性能影响;

  ②解决:使用泛型

11、委托是什么?事件是不是委托?

  ①委托:类似于 C或 C++中的函数指针,允许将方法作为参数进行传递;(可以把一个方法作为参数代入另一个方法)

  ②事件是特殊的委托,事件内部是基于委托来实现的;

 12、构造器Constructor是否可以被继承?是否可以被Override?

  Constructor不可以被继承,因此不能被重写(Overriding),但可以被重载(Overloading).

13、是否可以集成String类?

  String类是final类所以不可以继承string类。

14、当一个线程进入一个对象的方法后,其他线程是否可以进入该方法?

  不可以,一个对象的方法只能由一个线程访问。

15、用最有效的方法算出2乘以8等于几?

  2<<3(左乘,右除)

16、Error和Exception有是区别?

   Error表示恢复不是不可能,但是很困难,Exception表示一种实际或实现问题,它表示程序运行正常不可以发生的。

 17、UDP和TCP连接有和异同?

  ①TCP是传输控制协议,提供的是面向连接的,是可靠的,字节流服务,TCP提供超时重拨,检验数据功能。

  ②UDP是用户数据报协议,是一个简单的面向数据报的传输协议,是不可靠的连接。

18、new关键字的用法

 ①new 运算符 用于创建对象和调用构造函数。

   ②new 修饰符 用于向基类成员隐藏继承成员。

   ③new 约束   用于在泛型声明中约束可能用作类型参数的参数的类型。

 19、Using关键字的用法

  ①引用命名空间;

  ②为命名空间或类型创建别名;(using + 别名 = 包括详细命名空间信息的具体的类型)

  ③释放资源(关闭文件流);

 20、可访问性级别有哪几种

  ①pubic 访问不受限制。

  ②protected 访问仅限于包含类或从包含类派生的类型。

  ③internal 访问仅限于当前程序集。

  ④protected internal 访问仅限于从包含类派生的当前程序集或类型。

  ⑤private 访问仅限于包含类型。

21、 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。

22、冒泡排序

 

 

Atas ialah kandungan terperinci C# 一些面试试题的实例教程. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan