C#面试中常出现的问题

开发 后端
本文给出了C#面试中经常出现的二十四道题,面试题不仅考查面试者的知识水平,还考查面试者敏捷的思维能力。让我们一起来看。

如果你的简历上面写“熟悉/了解C#”,那么你就应该能够回答下面的这些基础问题。我将给出自己的简要答案以供参考。欢迎讨论。

1,传入某个属性的set方法的隐含参数的名称是什么?

value,它的类型和属性所声名的类型相同。 

2,如何在C#中实现继承? 

在类名后加上一个冒号,再加上基类的名称。 

3,C#支持多重继承么?

不支持。可以用接口来实现。 

4,被protected修饰的属性/方法在何处可以访问?

在继承或间接继承与这个类的子类中可以访问。  

5,私有成员会被继承么? 

会,但是不能被访问。所以看上去他们似乎是不能被继承的,但实际上确实被继承了。 

6,请描述一下修饰符protected internal。  

被protected internal修饰的属性/方法只能在它的在同一个程序集(Assembly)中的子类被访问。 

7,C#提供一个默认的无参数构造函数,当我实现了另外一个有一个参数的构造函数时候,还想保留这个无参数的构造函数。这样我应该写几个构造函数? 

两个,一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要手动实现那个无参数构造函数。  

8,C#中所有对象共同的基类是什么?

System.Object. 

9,重载和覆写有什么区别?

重载提供了对一个方法签名的不同参数调用的实现。覆写提供了子类中改变父类方法行为的实现。 

10,在方法定义中,virtual有什么含意? 

被virtual修饰的方法可以被子类覆写。 

11,能够将非静态的方法覆写成静态方法么?

不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改为override。 

12,可以覆写私有的虚方法么? 

不可以,甚至子类中无法访问父类中的私有方法。 

13,能够阻止某一个类被其他类继承么? 

可以,使用关键字sealed。 

14,能够实现允许某个类被继承,但不允许其中的某个方法被覆写么? 

可以,标记这个类为public,并标记这个方法为sealed。 

15,什么是抽象类(abstract class)?

一种不可以被实例化的类。抽象类中一般含有抽象方法,当然也可有具体实现。继承类只有实现过所有抽象类的抽象方法后才能被实例化。 

16,何时必须声明一个类为抽象类? 

当这个类中包含抽象方法时,或是该类并没有完全实现父类的抽象方法时。 

17,接口(interface)是什么?

只含有共有抽象方法(public abstract method)的类。这些方法必须在子类中被实现。 

18,为什么不能指定接口中方法的修饰符?  

接口中的方法用来定义对象之间通信的契约,指定接口中的方法为私有或保护没有意义。他们默认为公有方法。 

19,可以继承多个接口么? 

当然。 

20,那么如果这些接口中有重复的方法名称呢? 

这种情况中你可以决定如何实现。当然需要特别得小心。但是在编译环节是没有问题的。 

21,接口和抽象类的区别是什么? 

接口中所有方法必须是抽象的,并且不能指定方法的访问修饰符。抽象类中可以有方法的实现,也可以指定方法的访问修饰符。

22,如何区别重载方法? 

不同的参数类型,不同的参数个数,不同的参数顺序。 

23,const和readonly有什么区别? 

const关键字用来声明编译时常量,readonly用来声明运行时常量。  

24,System.String 和System.StringBuilder有什么区别?

System.String是不可变的字符串。System.StringBuilder存放了一个可变的字符串,并提供一些对这个字符串修改的方法。

【编辑推荐】

  1. SQL面试题
  2. 深入剖析C/C++程序员应聘常见面试题
  3. 史上最强大的PHP Web面试题(会做可进百度)
  4. 一周阅读排行“MySQL保持领先 IT面试必读强势出击”
责任编辑:于铁 来源: 博客园
相关推荐

2009-08-20 15:54:48

从C#到C++

2017-03-17 14:18:34

JavaScript算法问题详解

2018-07-09 15:27:01

2009-08-03 14:09:15

C#调用API

2009-02-05 15:32:23

接口委托

2009-08-06 10:35:27

C# lock thi

2009-08-28 10:14:45

C#内存泄露

2009-08-24 16:11:35

C#项目开发

2009-07-31 14:47:22

JavaScript函C#

2009-08-10 19:03:23

C#读取Excel文件

2010-01-28 15:45:35

C++老手

2009-08-25 17:15:50

C#隐藏C#重写C#重载

2023-06-21 10:09:50

2011-06-09 09:08:00

C#循环结构

2009-08-11 09:40:22

张老师的生日问题C#算法

2024-09-17 17:50:28

线程线程安全代码

2009-09-07 14:39:14

2009-08-24 10:07:57

C#泛型处理

2009-09-01 17:15:42

C#多线程应用

2009-06-24 17:32:40

动态加载AppDoma
点赞
收藏

51CTO技术栈公众号