分享125个基本的C#面试问答


本文摘自PHP中文网,作者怪我咯,侵删。

下文是125个基本的C#面试问答清单。这些面试问题简单、直接了当,涵盖了C#最基本的概念,大部分和面向对象的概念相关。所以如果你在准备C#面试,我建议你必须掌握这125个基本的C#面试问答来复习你的C#概念。那么现在来看看这125个基本的C#面试问答清单吧。

1. 什么是C#?

C#(发音”C sharp”)是一种简单、有别于传统的、面向对象、类型安全的编程语言。C和C++程序员很快就会熟悉它。C#中结合了高生产率的快速应用开发(RAD)语言。

2. C#的有哪些注释类型?

C#中有三种注释类型。
单行(//)
多行(/* */)
Page/XML 注释(///)。

3. C#.NET中使用的命名空间有哪些?

命名空间是类型的逻辑分组。
using System;
using System.Collections.Generic;
using System.Windows.Forms;

4. C#有哪些特点?

C#有以下特点:

简单
类型安全
灵活
面向对象
兼容
持久化
互操作性
有别于传统

5. 继承有哪些不同的类别?

在面向对象编程中继承的四种类型:

单继承:包括一个基类和一个派生类。

多层继承(Hierarchical inheritance) :包括一个基类和继承自同一个基类的派生类。

多级继承(Multilevel inheritance):包括从一个派生类派生出来的类。

多重继承(Multiple inheritance):包括多个基类和一个派生类。

6. 面向对象编程的基本概念是什么?

有必要理解一些在面向对象编程中广泛使用的概念。它们包括:

对象

数据抽象和封装
继承
多态性
动态绑定
信息传递。

7. 你可以继承多个接口吗?

可以的。在C#中可能继承多个接口。

8. 什么是继承?

继承是从一个已经存在的类中派生出来的新类。

9. Define scope?定义作用域?

作用域指的是代码中一个变量可以被访问的区域。

10. public、static和void之间的区别是什么?

public:关键字public是访问修饰符,用来告诉C#编译器主(Main)方法可以被任何人调用。

static:关键字static表明主(Main)方法是一个全局方法,不需要穿件类实例即可访问。编译器储存该方法的地址作为切入点,并利用这个信息在任何对象创建之前开始执行它。

void:关键字void是一个类型修饰符表明主(Main)方法不返回任何值。

11. C#中的修饰符有哪些?

Abstract
Sealed
Virtual
Const
Event
Extern
Override
Readonly
Static
New

12. C#中访问修饰符的种类有哪些?

C#中的访问修饰符是:

public
protect
private
internal
internal protect

13. 什么是装箱和拆箱?

变量值类型隐式转换为引用类型成为装箱,例如integer到object的类型转换。

引用类型变量转换回值类型成为拆箱。

14. 对象是什么?

对象是类的实例。对象的创建使用new操作。一个类在内存中创建一个对象,将包含特定对象的值和行为(或者方法)的信息。

15. C#中有哪些类型的数组?

一维数组(Single-Dimensional)
多维数组(Multidimensional)
交错数组(Jagged arrays)。

16. 对象和实例之间的区别是什么?

用户定义的类型的实例称为一个对象。我们可以从一个类实例化很多对象。

对象是类的实例。

17. Define destructors?定义析构函数?

当类对象超出作用域或者被明确删除的时候,析构函数被调用。析构函数,顾名思义是用来销毁由构造函数创建的对象的。正如构造函数,析构函数是一个类成员方法,方法名和类名相同,只是由波浪号开头。

18. 枚举数据类型怎么用?

枚举类型是另一种用户定义类型,它提供了一种连接名字为数字的方式,从而提高了代码的可理解性。enum关键字自动地枚举一组词,赋予它们的值为0,1,2并以此类推。

19. 定义构造函数?

构造函数是和它的类同名的成员方法。每当创建其关联的类的对象时构造函数都会被调用。它之所以被称为构造函数是因为它构造了类的数据成员的值。

20. 什么是封装?

包装数据和功能成为一个单元(称为类)就被称为封装。封装包含并且隐藏对象信息,例如内部数据结构和代码。

21. C#支持多重继承吗?

不支持,它不可能。支持多级继承。

22. 什么是ENUM?

Enum用于定义常量。

23. 数据集是什么?

数据集(DataSet)是从任何数据源载入数据的内存表示。

24. private和public关键字的区别是什么?

Private:关键字private是默认访问级别,并且在所有其他访问级别中是最严格的。它给予一个类型或者类型成员最小的权限。私有成员仅仅在声明其的类体中可以被访问。

Public:关键字public是所有访问级别中最自由地,没有任何访问限制。公共成员的访问不仅可以来自外部,也可以来自内部,并且可以自由访问定义在类体内或者体外的任何成员。

25. 定义多态性?

多态性意味着一个名字,多种形式。它使我们在一个程序中可以定义一个以上相同名字的方法。它让我们重载操作以便这样的操作可以对不同的实例表现不同的行为。

26. 什么是交错数组?

交错数组是元素为数组的数组。

交错数组元素的维度和大小可以不同。

交错数组有时称为“数组的数组”。

27. 什么是抽象基类?

抽象类是被设计为专门用于作为基类的类。抽象类至少还有一个纯虚方法。

28. 方法重写和方法重载有什么区别?

当重写一个方法时,你改变了派生类中方法的行为。重载方法只涉及在类中另一个同名的方法。

29. ref和out参数之间的区别是什么?

传递给ref参数的参数必须先初始化。与此相比,对out参数来说,在参数传递给out参数之前不需要显示初始化。

30. C#中using语句怎么用?

using语句通常是获取资源,执行语句,然后释放该资源。

31. 什么是序列化?

序列化(Serialization)是将对象转换为字节流的过程。

反序列化(De-serialization)是从字节流创建对象这样相反的过程。

序列化/反序列化常用于传递对象。

32. 结构和类之间有什么区别?

结构是值类型,类是引用类型。

结构不能有构造函数和析构函数。

类可以同时有构造函数和析构函数。

结构不支持继承,而类支持继承。

33. 类和接口之间有什么区别?

类(Class)是对象的逻辑表示。它是数据集合和相关子过程的定义。

接口(Interface)也是一个类,包含没有任何方法体定义的方法。类不支持多重继承,但是接口支持。

34. 什么是委托?

委托是类型安全,面向对象的函数指针的实现,并且在许多一个组件需要回调到使用它的组件这样的情况下使用。

35. 什么是认证与授权?

认证是识别用户的过程。认证是以证书(用户名和密码)来识别/验证用户。

授权在认证之后执行。授权是一个基于这些用户身份授予访问权限的过程。

授权允许用户对特定资源的访问。

36. 什么是基类?

类声明可以通过类名加一个冒号和基类名来指定基类。省略基类说明等同于从object类派生。

37. “this”可以在静态方法中用吗?

不,‘This’不能在静态方法中使用。仅仅只有静态变量/方法可以在静态方法中使用。

38. constants、readonly和static之间的区别是什么?

Constants: 值不能变。

Read-only: 值在类的构造函数中仅仅初始化一次。

Static: 值可以被初始化一次。

39. C#中支持哪些语句类型?

C#支持的几种不同的语句类型是

块语句
声明语句
表达式语句
选择语句
迭代语句
跳转语句
异常处理语句
检查和未检查
Lock语句

40. 什么是接口类?

它是一个抽象类,所有公共抽象方法必须要在其继承类中实现。

41. 什么是值类型和引用类型?

值类型存储在堆栈中。
例如: bool, byte, chat, decimal, double, enum, float, int, long, sbyte, short, strut, uint, ulong, ushort。

引用类型存储在托管堆中。
例如: class, delegate, interface, object, string。

42. 关键字string和System.String类之间有什么区别?

关键字string是System.String类的别名。所以,System.String和关键字string是一样的,你可以使用任何你喜欢的命名约定。String类提供了许多方法用于安全创建,操作和比较字符串。

43. C#中提供的两种数据类型是什么?

值类型
引用类型

44. 有哪些缓存的种类?

有三种类型的缓存:

输出缓存(Output Caching):存储asp.net页面的应答信息。

片段缓存(Fragment Caching):仅缓存/存储部分页面内容(用户控制)。

数据缓存(Data Caching):为了性能通过编程的方式来缓存对象。

45. 自定义控件和用户控件之间的区别是什么?

自定义控件是编译后的代码(Dlls),容易使用,创建困难,可以放在工具箱。拖拉使用的控件。

属性可以直观地在设计时指定。可以被多个应用程序使用(如果共享Dlls),即使是私有的也能拷贝到web应用程序的bin目录,添加引用和使用。通常是用来为独立的消费应用程序提供公用功能。

用户控件和ASP的include文件,轻松创建,不能放置在箱中来拖拉放置它。用户控件在单个应用程序文件之间共享。

46. 什么是方法?

方法是由对象或者类执行来实现计算或者操作的成员。静态方法通过类访问。实例方法通过类的实例来访问。

47. 什么是域?

域是类或者类的实例相关的变量。

48. 什么是事件?

事件是使一个类或对象能够提供通知的成员。事件声明像域声明一样,除了声明包含event关键字并且类型必须为委托类型。

49.什么是文本和它们的类型?

文本是程序分配给变量的值常量。C#支持的几种文本类型是

整数(Integer literals)
实数(Real literals)
布尔值(Boolean literals)
单字符(Single character literals)
字符串(String literals)
反斜线(Backslash character literals)

50. 值类型和引用类型的区别是什么?

值类型存储在堆栈上,是一个变量的值赋值给另一个变量。

引用类型存储在托管堆上,是两个引用变量之间的发生赋值。

51. C#有什么特性?

C#是一个简单而强大的编程语言,用于编写企业版的应用程序。
它是C++和VB的混合体。它保留了许多C++特性,如语句,表达式和运算符并结合了VB的生产力。

C#帮助开发者轻易地构建网络服务,能够通过任何语言,任何平台来访问Internet。

C#帮助开发者用更少的代码完成开发,从而在代码中错误更少。

C#引入了相当大的改进和创新,如类型安全,版本控制,事件和垃圾收集这些领域。

52. 错误的类型是什么?

语法错误(Syntax error)
逻辑错误(Logic error)
运行时错误(Runtime error)

53. break和continue语句之间有什么区别?

break语句是用来终止当前封闭循环或者它所在的条件语句的。我们已经使用break语句跳出switch语句。

continue语句是用来改变执行顺序的。和break语句那样跳出循环相反,continue语句停止当前迭代并且只将控制返回到循环顶部。

54. 定义命名空间?

命名空间被称为容器,用来组织分层的.NET类。

55. 什么是代码组?

代码组是一组共享安全上下文的套件。

56. C#中什么是密封类?

sealed修饰符用来阻止从一个类派生。如果一个密封类被指定为另一个类的基类时会发生编译时错误。

57. 静态方法和实例方法的区别是什么?

以static修饰符声明的方法是静态方法。静态方法不操作具体的实例,并且只能被静态成员访问。

没有以static修饰符声明的方法是实例方法。实例方法操作一个具体的实例并且可以被静态和实例成员访问。在其上调用实例方法的实例可以像这样显示访问。在静态方法中这么调用是错误的。

58. C#中有哪些变量的类型?

C#中不同的变量类型是:

阅读剩余部分

相关阅读 >>

C#构建分页应用的实例方法分析

C#入门经典学习阶段小结(凌乱)

详细介绍C#读取xml多级子节点

C#基础入门-关键字的介绍

C#中载入界面的经典实例

C#中字符串的一般性和特殊性具体介绍(图文)

使用C#如何在pdf文件添加图片印章的详细介绍

C#实现复制和深度复制的方法详解

C# sleep延时方法

C# 日志记录类创建的源码分享

更多相关阅读请进入《C#》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...