C#和ASP.NET面试可能会问到的问题【转】

【1.】面向对象的思想主要包括什么?

面向对象三大特征:继承,封装,多态.面向对象的思想也不是一句两句就能说清楚..主要思想就是减少代码重复,增大代码复用率..

【2.】web用户控件和自定义控件的区别

下表概述了这两种类型之间的主要区别:

Web 用户控件

1.难于创建

2.为使用可视化设计工具的使用者提供有限的支持

3. 每个应用程序中需要控件的一个单独副本

4. 不能添加到 Visual Studio 中的工具箱

5. 适用于静态布局

Web 自定义控件

1.易于创建

2. 为使用者提供完全的可视化设计工具支持

3. 仅在全局程序集缓存中需要控件的单个副本

4. 可以添加到 Visual Studio 中的工具箱

5. 适用于动态布局

 

【6.】new有几种用法

第一种:new Class();

第二种:覆盖方法

public new XXXX(){}

第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数

【7.】用sealed修饰的类有什么特点

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

时错误。

密封类不能同时为抽象类。

sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不

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

System.Object.

【9.】重载和覆写有什么区别?

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

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

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

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

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

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

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

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

可以,使用关键字sealed。

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

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

【10.】什么是抽象类(abstract class)?

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

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

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

【11.】接口(interface)是什么?

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

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

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

可以继承多个接口么?

当然。

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

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

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

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

【12.】如何区别重载方法?

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

【13.】const和readonly有什么区别?

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

【14.】System.String 和System.StringBuilder有什么区别?

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

 

【3.】数据成员可以分静态变量、非静态变量两种.

静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成

员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因

为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员.

非成静态员:所有没有加Static的成员都是非静态成员,当类被实例化之后,可以通过实例化的类名进行访问

..非静态成员的生存期决定于该类的生存期..而静态成员则不存在生存期的概念,因为静态成员始终驻留在内

容中..

一个类中也可以包含静态成员和非静态成员,类中也包括静态构造函数和非静态构造函数..

对于winApp来说,静态成员对于程序员本身省了很多事,而且因为静态成员驻留内存,在方法与方法之间传递

共享数据的时候,所以静态成员成了我的首选..但是不要因为方便,大量使用,尤其是在内存紧张或者

用静态方法操作一些共享值的时候.或者要写多用户系统的时候,要慎之又慎.比如:

static int id = 0;

sql = "select * from table where id=" + id;l

【4.】ADO.net中常用的对象有哪些?分别描述一下。

Connection 数据库连接对象

Command 数据库命令

DataReader 数据读取器

DataSet 数据集

【5.】如何理解委托?

委托的概念,最好的说明就是事件.因为事件使用的就是委托.例如:this.Load += new System.EventHandler

(this.Page_Load);这个就是使用了一个委托.

具体的用法请参考.我以前的帖子,设计猫鼠联动..

posted @ 2008-09-24 18:46  绿色心情  阅读(346)  评论(0)    收藏  举报