Dotnet的一些面试题

来源:互联网 发布:java jit编译器 编辑:程序博客网 时间:2024/05/01 16:56

Dotnet的一些面试题,有自己整理的

.Net 面试题(二)

.Net类型语法基础

题目:

1.       .net中所有内建类型的基类是什么?

Object

2.       System.Object中包含哪些方法,哪些是虚方法?

EqualsReferenceEqualsGetHasCodeGetTypeToStringGetHasCodeToString

3.       值类型和引用类型的区别。(微软公司2006年面试题)

值类型: 单元直接存放“有效值”

引用类型: 单元放的是另外一个对象的引用(地址)

值类型是把自己的值复制一份传递给别的函数操作.无论复制的值怎么被改变.其自身的值是不会改变的

而引用类型是把自己的内存地址传递给别的函数操作.操作的就是引用类型值的本身.所以值被函数改变了

.             Object(引用类型)->ValueType(int ,bool…值类型)

 

4.       简述装箱和拆箱的原理。

从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱

 

5.       C#中是否有全局变量?

C#中是没有全局变量的.要构造出类的属性作为全局变量

可以在GlobalParams

 

6.       structclass的区别,struct适用些场合?

struct成员默认访问权限是public,而classprivate

实现一个主要用于存储数据的结构时,可以考虑struct
struct
变量占有堆栈的空间,因此只适用于数据量相对小的场合。
结构数组具有更高的效率。

值类型和引用类型;

 

7.       C#中方法的参数可以有哪几种传递方式?

 值传递,引用传递(加refout);out之前不可以赋值

Int a=5

Adda);

-----add(){a+=a}

-------------

Int a=5

Add ref a);

-----addref a{a+=a}

 

 

8.       C#中支持哪几种可访问性级别?

private protected public internal 修饰符的访问权限。

private : 私有成员, 在类的内部才可以访问。

protected : 保护成员,该类内部和继承类中可以访问。

public : 公共成员,完全公开,没有访问限制。

internal: 在同一命名空间内可以访问。

 

9.       简述属性的特点及属性和方法的异同。

 

 

10.   简述C#中的循环语法和各自的特点。

for (初始化;条件;循环) 内含语句

初始化、条件和循环都是可选的。如果忽略了条件,你就可以产生一个死循环,要用到跳转语句(break goto)才能退出。

 

2.foreach

 

foreach(表达式中的类型标识符) 内含语句

迭代变量不能赋值;

循环变量由类型和标识符声明,且表达式与收集相对应。循环变量代表循环正在为之运行的收集元素。

 

3.while

 

当你想执行一个内含语句0次或更多次时,可以使用while

 

while (条件) 内含语句

 

条件语句——它也是一个布尔表达式 ——控制内含语句被执行的次数。你可以使用 break continue语句来控制while语句中的执行语句,它的运行方式同在for语句中的完全相同。

 

4,do

 

C#最后可利用的循环语句是do语句。它与while语句十分相似,仅当经过最初的循环之后,条件才被验证。

 

do

{

内含语句

}

while (条件);

 

do语句保证内含语句至少被执行过一次,而且只要条件求值等于真,它们继续被执行。通过使用break语句,你可以迫使运行退出 do 语块。如果你想跳过这一次循环,使用continue语句。

 

11.   C#中的using语句有什么作用?

using 引入名称空间或者使用非托管资源

可以自动关闭

 

12.   简述.net中堆栈和堆的特点和差异。

栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。

堆:一般由程序员分配释放。用newmalloc等分配内存函数分配得到的就是在堆

上。

 

13.   执行string abc = “aaa”+”bbb”+”ccc”共分配了多少内存?

1

 

14.   Dispose方法和Finalize方法在何时被调用?

15.   C#中类可以有多个父类、可以实现多个接口吗?

只能继承一个父类,但可以是限定多个接口

 

16.   简述C#中重写、重载、和隐藏的概念。

重写一个方法是加上override表示这是重写的方法

重载:父类中有许多方法,他们可能是一个方法名(函数名),但参数可能不同,同一个方法有的有两个参数,有的有三个,不同的参数匹配对应的方法,称为重载

 

 

17.   C#中如何声明一个类不能被继承?

密封类在声明中使用sealed 修饰符,这样就可以防止该类被其它类继承。如果试图将一个密封类作为其它类的基类,C#将提示出错。理所当然,密封类不能同时又是抽象类,因为抽象总是希望被继承的。

sealed
修饰符可以应用于类、实例方法和属性。密封类不能被继承。密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed 修饰符必须始终与 override一起使用。

 

 

18.   如何针对不同的异常进行捕捉?

Execption 来捕获异常

 

19.   你在什么情况下会用到虚方法?它与接口有什么不同?(西门子公司2007年面试题)

 

 

如果一个基类方法要在派生类中被覆盖,就必须把这个基类方法申明为virtual
抽象方法和虚拟方法的区别在于:虚拟方法有一个实现部分,并为派生类提供了覆盖该方法的选项;相反
,
抽象方法没有提供实现部分,强制派生类覆盖方法(否则派生类不能成为具体类
)
如果一个类全部由抽象方法组成,那就是接口

 

20.   怎样理解静态变量?(微软公司2007年面试题)

 

实例变量要new后,才能调用
静态的就不用,可以直接调用。

就是说实例变量一开始是不存在的,要new后,系统才给它分配内存,这时才能访问
而静态变量是系统一开始就为它分配了内存,自然可以不用new,就可以访问了。

 

 

21.   如何使得一个类型可以在foreach语句中使用?(HP公司2007年面试题)

 

 

22.   new有几种用法?(华为公司2007年面试题)

 

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


new
修饰符

用于向基类成员隐藏继承成员。


在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成员的派生版本将替换基类版本。在不使用 new 修饰符的情况下隐藏成员是允许的,但会生成警告。使用 new 显式隐藏成员会取消此警告,并记录代之以派生版本这一事实。

若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并使用 new 修饰符修饰该成员

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

new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。当泛型类创建类型的新实例时,将此约束应用于类型参数

 

23.   sealed修饰的类有什么特点?(华为公司2007年面试题)

sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其他类的基类,则会发生编译时错误。
密封类不能同时为抽象类。

sealed
修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。

 

24.   .net的错误处理机制是什么?(花旗银行2007年面试题)

 

.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛
,直到找到匹配的Catch为止。

 

25.   面向对象语言具有哪些特性?(花旗银行2007年面试题)

 

1.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。

2.
继承:

继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。

3.
封装:

封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。

4.
多态性:

多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

26.   类成员有几种可访问性?(华为公司2008年面试题)

private : 私有成员, 在类的内部才可以访问。

protected : 保护成员,该类内部和继承类中可以访问。

public : 公共成员,完全公开,没有访问限制。

internal: 在同一命名空间内可以访问

 

原创粉丝点击