您的当前位置:首页正文

NET面试题及答案

2024-03-21 来源:爱go旅游网
 1.new有几种用法

第一种:new Class();

第二种:覆盖方法

public new XXXX(){}

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

2.如何把一个array复制到arrayList里

foreach( object o in array )arrayList.Add(o);

3.datagrid.datasouse可以连接什么数据源 [dataset,datatable,dataview]

dataset,datatable,dataview , IList

4.概述反射和序列化

反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可

以调用类型的方法或访问其字段和属性

序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

5.概述o/r mapping 的原理

利用反射,配置 将类于数据库表映射

6.类成员有( )种可访问形式

可访问形式?不懂。

可访问性:public ,protected ,private,internal

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

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

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

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

8.列举ADO.NET中的五个主要对象,并简单描述

connection,command,dataReader,trans,dataset ...

9.执行下面代码后:

String strTemp =\"abcdefg 某某某\";

Int i System.Text.Encoding.Default.GetBytes(strTemp).Length;

Int j = strTemp.Length;

问:i=(14 ) ;j=(11 )

i=(14 ) ;j=(11 ) 中文两个字节

10.C#中,string str = null 与 string str =\"\",请尽量用文字说明区别。(要点:说明详细的内存空间分配)

string str =\"\" 分配空间

11.详述.NET里class和struct的异同!

class:放在 ? struct放在?

struct值传递

类与结构有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。结构的值存储在“在堆栈上”或“内联”。

细心的程序员有时可以通过聪明地使用结构来增强性能。

12.概述.NET里对 remoting 和 webservice 两项技术的理解和实际中的应用。

远程逻辑调用,remoing接口只能用在.net中

13.什么是code-behind技术

aspx and cs

14.概述三层结构体系

web/business/dataaccess

15.asp.net如何实现MVC模式,举例说明!

web/business/dataaccess

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

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

答:这个题范围太广,不知道说什么.

2.什么是ASP.net中的用户控件

答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径

会变得不准确,需要自已写方法调整.

3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?

答:装箱就是把值类型转成引用类型,从MS IL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相反,重载就是指一个方法名同,参数个数不同,返回值可以相同的方法.CLR是通用语言运行时,其它的不清

楚.

4.列举一下你所了解的XML技术及其应用

答:XML可是好东西,保存配置,站与站之间的交流,WEB SERVICE都要用它.

5.值类型和引用类型的区别?写出C#的样例代码。

答:结构是值类型,类是引用类型,所以传结构就是值类型的应用啦,传对象或类就是引用类型的,这个不用多写了吧.

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

答:connection command sqladapter dataset datatable dataview等等.写不完了.

7.如何理解委托?

答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.

msdn2005中是这样解释的:

委托具有以下特点:

委托类似于 C++ 函数指针,但它是类型安全的。

委托允许将方法作为参数进行传递。

委托可用于定义回调方法。

委托可以链接在一起;例如,可以对一个事件调用多个方法。

方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。

C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。

8.C#中的接口和类有什么异同。

答:这个异同可多了,要说清楚还真不容易.

9.。net中读写数据库需要用到哪些类?他们的作用

答:这个类自已可以写的啊,你是指基类吗?那configuration,sqlconnection,sqlcommand等都要用到.

10.UDP连接和TCP连接的异同。

答:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结.

11.ASP.net的身份验证方式有哪些?分别是什么原理?

答:form认证,windows、passport集成认证等,原理不清楚.

12.进程和线程分别怎么理解?

答:进程是老子,线程是儿子,没有老子就没有儿子,一个老子可以有多个儿子.一个儿子可以成为别人的儿子,一个老子也可以为别的老子生儿子.

13.什么是code-Behind技术。

答:代码分离,这是个明智的东西,像ASP这样混成一堆很不爽.或者可以理解成HTML代码写在前台,C#代码写在后台.当然前台也有脚本,类的调用等,其实写在一起也是可以的.

14.活动目录的作用。

答:这个不明白.请明白的补充一下.

15..net中读写XML的类都归属于哪些命名空间?

答:System.Xml

我自已写的就不一定了,嘿嘿.

16.解释一下UDDI、WSDL的意义及其作用。

答:什么东西?

17.什么是SOAP,有哪些应用。

答:SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的

还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。这种相互通信采用的是XML格式的消息,具体请看:http://playist.blogchina.com/2521621.html

18.如何部署一个ASP.net页面。

答:随便啦,想直接上传就直接上传,想打包成EXE就打包,看个人喜好.

19.如何理解.net中的垃圾回收机制。

答:GC?对象创建了总要清除啊,不然内存哪够用?

20.常用的调用webservice方法有哪些?

答:调用就调用,还有很多方法吗?

1 (1)面向对象的语言具有__继承性_、_封装性_、_多态性 。

(2)能用foreach遍历访问的对象需要实现 _ I Enumerable 接口或声明_ GetEnumerator 方法的类型。1.c#中的三元运算符是__?:__

2.当整数a赋值给一个object对象时,整数a将会被__装箱___?

3.类成员有__3__种可访问形式?

4.public static const int A=1;这段代码有错误么?是什么? const成员都是static所以应该去掉static

5.float f=-123.567F;

int i=(int)f;

i的值现在是_-123____?

6.利用operator声明且仅声明了==,有什么错误么? 要同时修改Equale和GetHash() ? 重载了\"==\" 就必须重载 \"!=\"

7.委托声明的关键字是___ delegate ___?

8.用sealed修饰的类有什么特点?不可被继承

9.在Asp.net中所有的自定义用户控件都必须继承自_ System.Web.UI.UserControl _______?

10.在.Net中所有可序列化的类都被标记为__[serializable]___? “序列化”可被定义为将对象的状态存储到存储媒介中的过程。要将该类的实例序列化为到文件中?.NET FrameWork提供了两种方法:

1、XML序列化 2、二进制序列化

11.在.Net托管代码中我们不用担心内存漏洞,这是因为有了_ gC __?

12.下面的代码中有什么错误吗?_ abstract override 是不可以一起修饰______

using System;

class A

{

public virtual void F(){

Console.WriteLine(\"A.F\");

}

}

abstract class B:A

{

public abstract override void F();

}

13.当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不可以_(可以 or 不可以)从T派生出新的类,_不可以_(可以 or 不可以)直接创建T的任何实例。

(1) 实例构造函数 类构造函数可通过base关键字来调用基类的构造函数,例如:

public Cylinder(double radius, double height): base(radius, height)

{

}

类构造函数也可通过关键字 this 调用同一个类的另一个构造函数,例如:

public Point(): this(0,20)

{

}

(2)私有构造函数

私有构造函数是一种特殊的实例构造函数。它通常用在只包含静态成员的类中。如果类具有一个或多个私有构造函数而没有公共构造函数,则不允许其他类(除了嵌套类)创建该类的实例。例如:

class NLog

{

// Private Constructor:

private NLog() {}

public static double e = 2.71828;

}

声明空构造函数可阻止自动生成默认构造函数。注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数。但是,通常显式地使用 private(私有)修饰符来清楚地表明该类不能被实例化。

14.下面这段代码有错误么?case():不行 default;

switch (i){

case():

CaseZero();

break;

case 1:

CaseOne();

break;

case 2:

dufault;

CaseTwo();

break;

}

15.在.Net中,类System.Web.UI.Page 可以被继承么?可以

2. 不定项选择:

(1) 以下叙述正确的是: B C

A. 接口中可以有虚方法。B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。

(2) 从数据库读取记录,你可能用到的方法有:B C D

A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader

2.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选) ( ABC )

A.Close B.Dispose C.Finalize

D.using E.Quit

数组的复杂使用:

int [,,] number=new int[4,3,2]{{{1,2},{2,3},{3,4}},{{4,5},{5,6},{6,7}},{{7,8},{8,9},{9,10}},{{10,11},{11,12},{12,13}}}; for(int i=number.GetLowerBound(0);i<=number.GetUpperBound(0);i++) {

for(int j=number.GetLowerBound(1);j<=number.GetUpperBound(1);j++) {

for(int k=number.GetLowerBound(2);k<=number.GetUpperBound(2);k++) {

Console.WriteLine(\"number[{0},{1},{2}]={3}\ } } }

3.以下关于ref和out的描述哪些项是正确的?(多选) ( ACD )

A.使用ref参数,传递到ref参数的参数必须最先初始化。

B.使用out参数,传递到out参数的参数必须最先初始化。

C.使用ref参数,必须将参数作为ref参数显式传递到方法。

D.使用out参数,必须将参数作为out参数显式传递到方法。

1.在对SQL Server 数据库操作时应选用(A)。

a)SQL Server .NET Framework 数据提供程序;

b)OLE DB .NET Framework 数据提供程序;

c)ODBC .NET Framework 数据提供程序;

d)Oracle .NET Framework数据提供程序;

2.下列选项中,(C)是引用类型。

a)enum类型 b)struct类型 c)string类型 d)int类型

3.关于ASP.NET中的代码隐藏文件的描述正确的是(C)

a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。

b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。

c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。

d)以上都不正确。

4.以下描述错误的是(A)

a)在C++中支持抽象类而在C#中不支持抽象类。

b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。

c)在C#中可使用 new 修饰符显式隐藏从基类继承的成员。

d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。

5.C#的数据类型有(A)

a)值类型和调用类型; b)值类型和引用类型;c)引用类型和关系类型;d)关系类型和调用类型;

6.下列描述错误的是(D)

a)类不可以多重继承而接口可以;

b)抽象类自身可以定义成员而接口不可以;

c)抽象类和接口都不能被实例化;

d)一个类可以有多个基类和多个基接口;

7.在DOM中,装载一个XML文档的方法(D)

a)save方法 b)load方法 c)loadXML方法 d)send方法

8.下列关于构造函数的描述正确的是(C)

a)构造函数可以声明返回类型。

b)构造函数不可以用private修饰

c)构造函数必须与类名相同

d)构造函数不能带参数

9.以下是一些C#中的枚举型的定义,其中错误的用法有()

a)public enum var1{ Mike = 100, Nike = 102, Jike }

b)public enum var1{ Mike = 100, Nike, Jike }

c)public enum var1{ Mike=-1 , Nike, Jike }

d)public enum var1{ Mike , Nike , Jike }

10.int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是(D)。

a)9 b)2 c)6 d)越界

11.接口是一种引用类型,在接口中可以声明(A),但不可以声明公有的域或私有的成员变量。

a)方法、属性、索引器和事件; b)方法、属性信息、属性; c)索引器和字段; d)事件和字段;

12.ASP.NET框架中,服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型,它们是(A )

a)HTML控件和Web控件 b)HTML控件和XML控件 c)XML控件和Web控件 d)HTML控件和IIS控件

13.ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为( D)

a)

b)

c)

d)以上皆非

14.在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(C)。

a)insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;

b)ExecuteNonQuery()方法返回执行Sql语句所影响的行数。

c)Select操作的Sql语句只能由ExecuteReader()方法来执行;

d)ExecuteReader()方法返回一个DataReder对象;

15.下列ASP.NET语句(b)正确地创建了一个与SQL Server 2000数据库的连接。

a)SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);

b)SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);

c)SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);

d)SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);

16.Winform中,关于ToolBar控件的属性和事件的描述不正确的是(D)。

a)Buttons属性表示ToolBar控件的所有工具栏按钮

b)ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度

c)DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭头键

d)ButtonClick事件在用户单击工具栏任何地方时都会触发

17.在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和(B ),必要时还要设置参数尺寸。

a)大小; b)上限; c)初始值; d)类型;

18.如果将窗体的FormBoderStyle设置为None,则( B)。

a)窗体没有边框并不能调整大小; b)窗体没有边框但能调整大小;

c)窗体有边框但不能调整大小; d)窗体是透明的;

19.如果要将窗体设置为透明的,则( B)

a)要将FormBoderStyle属性设置为None; b)要将Opacity属性设置为小于100%得值;

c)要将locked 属性设置为True; d)要将 Enabled属性设置为True;

20.下列关于C#中索引器理解正确的是(C )

a)索引器的参数必须是两个或两个以上 b)索引器的参数类型必须是整数型

c)索引器没有名字 d)以上皆非

21.下面描述错误的是(D)。

a)窗体也是控件; b)窗体也是类; c)控件是从窗体继承来的; d)窗体的父类是控件类;

22.要对注册表进行操作则必须包含( D)。

a)System.ComponentModel命名空间; b)System.Collections命名空间;

c)System.Threading命名空间; d)Microsoft.Win32命名空间;

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

23.要创建多文档应用程序,需要将窗体的(D )属性设为true。

a)DrawGrid; b)ShowInTaskbar; c)Enabled; d)IsMdiContainer;

24.如果设treeView1=new TreeView(),则treeView1.Nodes.Add(\"根节点\")返回的是一个 ()类型的值。

a)TreeNode;

b)int;

c)string;

d)TreeView;

25.下面关于XML的描述错误的是(D)。

a)XML提供一种描述结构化数据的方法;

b)XML 是一种简单、与平台无关并被广泛采用的标准;

c)XML文档可承载各种信息;

d)XML只是为了生成结构化文档;

1.装箱、拆箱操作发生在: ( C )

A.类与对象之间 B.对象与对象之间

C.引用类型与值类型之间 D.引用类型与引用类型之间

2.用户类若想支持Foreach语句需要实现的接口是: ( A )

A.IEnumerableB.IEnumerator

C.ICollectionD.ICollectData

3..Net Framework通过什么与COM组件进行交互操作?( C )

A.Side By SideB.Web Service

C.InteropD.PInvoke

4..Net依靠以下哪一项技术解决COM存在的Dll Hell问题的?( A )

A.Side By SideB.Interop

C.PInvokeD.COM+

5.装箱与拆箱操作是否是互逆的操作?( B )

A.是B.否

6.以下哪个是可以变长的数组?( D )

A.Array B.string[]

C.string[N] D.ArrayList

7.用户自定义异常类需要从以下哪个类继承:( A )

A.Exception B.CustomException

C.ApplicationException D.BaseException

8.以下代码段中能否编译通过?请给出理由。

try

{

}

catch(FileNotFoundException e1)

{

}

catch(Exception e2)

{

}

catch(IOException e3)

{

}

catch

{

}

9.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选) ( ABC )

A.Close B.DisposeC.Finalize

D.using E.Quit

10.Net依赖以下哪项技术实现跨语言互用性?( C )

A.CLR B.CTS C.CLS D.CTT

11.请问: String类与StringBuilder类有什么区别?为什么在.Net类库中要同时存在这2个类?(简答)

如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把

两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用 System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字

符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和 String类简直不是一个数量级的。

12.以下哪个类是int的基类?( )

A.Int32 B.Object C.ValueType D.Int16

二、C# 部分*

13.以下哪些可以作为接口成员?(多选) ( ABDE )

A.方法B.属性C.字段D.事件E.索引器

F.构造函数G.析构函数

14.以下关于ref和out的描述哪些项是正确的?(多选) ( ACD )

A.使用ref参数,传递到ref参数的参数必须最先初始化。

B.使用out参数,传递到out参数的参数必须最先初始化。

C.使用ref参数,必须将参数作为ref参数显式传递到方法。

D.使用out参数,必须将参数作为out参数显式传递到方法。

15.“访问范围限定于此程序或那些由它所属的类派生的类型”是对以下哪个成员可访问性含义的正确描述?( B )

A.public B.protected C.internal D.protected internal

16.class Class1

{

private static int count = 0;

static Class1()

{

count++;

}

public Class1()

{

count++;

}

}

Class1 o1 = new Class1();

Class1 o2 = new Class1();

请问,o1.Count的值是多少?( C )

A.1 B.2 C.3 D.4

17.abstract class BaseClass

{

public virtual void MethodA()

{

}

public virtual void MethodB()

{

}

}

class Class1: BaseClass

{

public void MethodA(string arg)

{

}

public override void MethodB()

{

}

}

class Class2: Class1

{

new public void MethodB()

{

}

}

class MainClass

{

public static void Main(string[] args)

{

Class2 o = new Class2();

Console.WriteLine(o.MethodA());

}

}

请问,o.MethodA调用的是: ( A )

A.BaseClass.MethodAB.Class2.MethodA

C.Class1.MethodAD.都不是

18.请叙述属性与索引器的区别。

属性 索引器

通过名称标识。 通过签名标识。

通过简单名称或成员访问来访问。 通过元素访问来访问。

可以为静态成员或实例成员。 必须为实例成员。

属性的 get 访问器没有参数。 索引器的 get 访问器具有与索引器相同的形参表。

属性的 set 访问器包含隐式 value 参数。 除了 value 参数外,索引器的 set 访问器还具有与索引器相同的形参表。

19.请叙述const与readonly的区别。

每一个class至多只可以定义一个static构造函数,并且不允许增加访问级别关键字,参数列必须为空。

为了不违背编码规则,通常把static数据成员声明为private,然后通过statci property提供读写访问。

const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。

const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。

const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。

readonly在运行期评估赋值,使我们得以在确保“只读访问”的前提下,把object的初始化动作推迟到运行期进行。

readonly 关键字与 const 关键字不同: const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而 readonly 字段可用于运行时常数。

readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。

21.您需要创建一个ASP.NET应用程序,公司考虑使用Windows身份认证。

所有的用户都存在于AllWin这个域中。您想要使用下列认证规则来配置这个应用程序:

a、 匿名用户不允许访问这个应用程序。

b、 所有雇员除了Tess和King都允许访问这个应用程序。

请问您应该使用以下哪一个代码段来配置这个应用程序?( A )

A.

B.

C.

D.

E.

22.您要创建一个显示公司员工列表的应用程序。您使用一个DataGrid控件显示员工的列表。您打算修改这个控件以便在这个Grid的Footer显示员工合计数。请问您应该怎么做?( C? )

A.重写OnPreRender事件,当Grid的Footer行被创建时显示合计数。

B.重写OnItemCreated事件,当Grid的Footer行被创建时显示合计数。

C.重写OnItemDataBound事件,当Grid的Footer行被创建时显示合计数。

D. 重写OnLayout事件,当Grid的Footer行被创建时显示合计数。

23. 您要创建ASP.NET应用程序用于运行AllWin公司内部的Web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个 HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标,您应该怎么做?(多选)( CD )

A.在这个应用程序的Global.asax文件中创建一个Application_Error过程去处理ASP.NET代码错误。

B.在这个应用程序的Web.config文件中创建一个applicationError节去处理ASP.NET代码错误。

C.在这个应用程序的Global.asax文件中创建一个CustomErrors事件去处理HTTP错误。

D.在这个应用程序的Web.config文件中创建一个CustomErrors节去处理HTTP错误。

E.在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET 代码错误。

F. 在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET HTTP错误。

24. 您的公司有一个DB Server,名为AllWin,其上装了MS SQLSERVER 2000。现在需要您写一个数据库连接字符串,用以连接AllWin上SQL SERVER中的一个名为PubBase实例的Test库。请问,应该选择下面哪一个字符串?( B )

A. “Server=AllWin;Data Source=PubBase;Initial Catalog=Test;Integrated Security=SSPI”

B. “Server= AllWin;Data Source=PubBase;Database=Test;Integrated Security= SSPI”

C. “Data Source= AllWin \\PubBase;Initial Category=PubBase;Integrated Security= SSPI”

D. “Data Source= AllWin \\ PubBase;Database=Test;Integrated Security= SSPI”

25. 您为AllWin公司创建了一个ASP.NET应用程序。这个应用程序调用一个 Xml Web Service。这个 Xml Web Service 将返回一个包含了公司雇员列表的DataSet对象。请问您该如何在这个程序中使用这个 Xml Web Service?( ? )

A.在“引用”对话框的.Net标签中选择 System.Web.Services.dll。

B.在“Web引用”对话框中输入这个 XML Web service 的地址。

C.在您的 Global.asax.cs 中添加一条 using 语句并指定这个 XML Web service 的地址。

D.在您的 Global.asax.cs 中写一个事件处理器导入这个 Xml Web Service 相应的 .wsdl 和 .disco 文件。

26. 您要创建一个ASP.NET应用程序在DataGrid控件中显示一个经过排序的列表。产品数据被存放于一个名为PubBase的Microsoft SQL Server 数据库。每个产品的主键是ProductID,Numeric型并且每个产品有一个字母描述字段,名为ProductName。您使用一个

SqlDataAdapter对象和一个SqlCommand对象通过调用一个存储过程从数据库中获取产品数据。您将SqlCommand对象的 CommandType属性设置为CommandType.StoredProcedure,并将它的CommandText属性设置为 procProductList。您成功的获取了一个

DataTable对象,其中是已经按ProductID降序排列的产品列表。您打算显示以相反的字母顺序排列的ProductName,请问该怎么做? ( B )

A. 将SqlCommand对象的CommandType属性修改为CommandType.Text,将CommandText属性修改为”SELECT * FROM procProductList ORDER BY ProductName DESC”。然后将这个DataTable对象绑定到DataGrid控件。

B. 创建一个基于这个DataTable对象的新的DataView并将这个DataView的Sort属性设置为“ProductName DESC”。然后将这个DataView对象绑定到DataGrid控件。

C. 将DataGrid控件的AllowSorting属性设置为True,并将DataGridColumn的SortExpression属性设置为 “ProductName DESC”.以显示ProductName。然后将这个DataTable对象绑定到DataGrid控件。

D. 将DataTable对象的DisplayExpression属性设置为 “ORDER BY ProductName DESC”.。然后将这个DataTable对象绑定到DataGrid控件。

76.C#代码实现,确保windows程序只有一个实例(instance)

///

///应用程序的主入口点。

///

[STAThread]

staticvoid Main()

{

//防止程序多次运行

if(!OneInstance.IsFirst(\"GetPayInfo\"))

{

MessageBox.Show (\"警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!\程序错误提示:\

return;

}

Application.Run(new Form1());

}

// ******************* 防止程序多次执行 **************************

publicabstractclass OneInstance

{

///

///判断程序是否正在运行

///

///

程序名称

///如果程序是第一次运行返回True,否则返回False

publicstaticbool IsFirst(string appId)

{

bool ret=false;

if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero)

{

CreateMutex(IntPtr.Zero,0,appId);

ret=true;

}

return ret;

}

[DllImport(\"Kernel32.dll\

privatestaticextern IntPtr OpenMutex(

uint dwDesiredAccess, // access

int bInheritHandle, // inheritance option

string lpName // object name

);

[DllImport(\"Kernel32.dll\

privatestaticextern IntPtr CreateMutex(

IntPtr lpMutexAttributes, // SD

int bInitialOwner, // initial owner

string lpName // object name

);

}

3. 简述 private、 protected、 public、 internal 修饰符的访问权限。

private : 私有成员, 在类的内部才可以访问。protected : 保护成员,该类内部和继承类中可以访问。public : 公共成员,完全公开,没有访问限制。internal: 在同一命名空间内可以访问。

4. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。)

select top 10 * from A where id not in (select top 30 id from A)

解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)

5 .列举ASP.NET 页面之间传递值的几种方式。

1. 使用QueryString, 如....?id=1; response. Redirect()....

2.使用Session变量

3.使用Server.Transfer

2。请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。

session(viewstate) 简单,但易丢失

application 全局

cookie 简单,但可能不支持,可能被伪造

input ttype=\"hidden\" 简单,可能被伪造

url参数简单,显示于地址栏,长度有限

数据库稳定,安全,但性能相对弱

2.override与重载的区别

Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数

3、.net的错误处理机制是什么

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

4、C#中接口和类的异同

接口和类都是类,不同的事,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。

4、DataReader和DataSet的异同

DataReader 和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection 的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为 DataReader的特殊性

和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..

DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作...

1. 在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?

Using 引入一个名子空间,或在使用了一个对像后自动调用其IDespose,New 实例化一个对像,或修饰一个方法,表此方法完全重写此方法

2.在下面的例子里

using System;

class A

{

public A(){

PrintFields();

}

public virtual void PrintFields(){}

}

class B:A

{

int x=1;

int y;

public B(){

y=-1;

}

public override void PrintFields(){

Console.WriteLine(\"x={0},y={1}\

}

当使用new B()创建B的实例时,产生什么输出?X=1,Y=0

3.下面的例子中

using System;

class A

{

public static int X;

static A(){

X=B.Y+1;

}

}

class B

{

public static int Y=A.X+1;

static B(){}

static void Main(){

Console.WriteLine(\"X={0},Y={1}\

}

}

产生的输出结果是什么?x=1,y=2

4.谈谈类和结构的区别?

最大区别一个是引用类型,一个是值类型 默认成员访问为public是另外一个区别

1. 在.net(C# or vb.net)中如何获得当前窗体或控件的句柄,特别是控件本身的句柄(请列举)。

this(C#) Me(vb.net).

2在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息。

在form中重载DefWndProc函数来处理消息:

protected override void DefWndProc ( ref System.WinForms.Message m )

{

switch(m.msg)

{

case WM_Lbutton :

///string与MFC中的CString的Format函数的使用方法有所不同

string message = string.Format(\"收到消息!参数为:{0},{1}\

MessageBox.Show(message);///显示一个消息框

break;

case USER:

处理的代码

default:

base.DefWndProc(ref m);///调用基类函数处理非自定义消息。

break;

}

}

3. 在.net(C# or vb.net)如何启动另一个程序。process

4. 在.net(C# or vb.net)中如何取消一个窗体的关闭

private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)

{

e.Cancel=true;

}

5. 在.net(C# or vb.net)中,Appplication.Exit 还是 Form.Close有什么不同?

答案:一个是退出整个应用程序,一个是关闭其中一个form

6. 在C#中有一个double型的变量,比如10321.5,比如122235401.21644,作为货币的值如何按各个不同国家的习惯来输出。比如美国用$10,321.50和$122,235,401.22而在英国则为£10 321.50和£122 235 401.22

答案:

System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo(\"en-US\");

//System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo(\"en-GB\");为英国货币类型

decimal y = 9999999999999999999999999999m;

string str = String.Format(MyCulture,\"My amount = {0:c}\

7. 某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则:

(1) 密码单词的最小长度是两个字母,可以相同,也可以不同

(2) K不可能是单词的第一个字母

(3) 如果L出现,则出现次数不止一次

(4) M不能使最后一个也不能是倒数第二个字母

(5) K出现,则N就一定出现

(6) O如果是最后一个字母,则L一定出现

问题一:下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词?

A) K B)L C) M D) N

答案:B

问题二:如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少?

A)1个 B)3个 C)6个 D)9个

答案:A

问题三:下列哪一个是单词密码?

A) KLLN B) LOML C) MLLO D)NMKO

答案:C

8. 62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?

答案:62移动成2的6次方

new有几种用法

第一种:new Class();

第二种:覆盖方法

public new XXXX(){}

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

2.如何把一个array复制到arrayList里

foreach( object o in array )arrayList.Add(o);

3.datagrid.datasouse可以连接什么数据源 [dataset,datatable,dataview]

dataset,datatable,dataview , IList

4.概述反射和序列化

反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性

序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

5.概述o/r mapping 的原理

利用反射,配置 将类于数据库表映射

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

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

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

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

11.详述.NET里class和struct的异同!

class:放在 ? struct放在?

struct值传递

类与结构有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。结构的值存储在“在堆栈上”或“内联”。细心的程序员有时可以通过聪明地使用结构来增强性能。

12.概述.NET里对 remoting 和 webservice 两项技术的理解和实际中的应用。

远程逻辑调用,remoing接口只能用在.net中

13.什么是code-behind技术 aspx and cs

14.概述三层结构体系 web/business/dataaccess

15.asp.net如何实现MVC模式,举例说明! web/business/dataaccess

2.什么是ASP.net中的用户控件

答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.

3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?

答:装箱就是把值类型转成引用类型,从MS IL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相反,重载就是指一个方法名同,参数个数不同,返回值可以相同的方法.CLR是通用语言运行时,其它的不清楚.

4.列举一下你所了解的XML技术及其应用

答:XML可是好东西,保存配置,站与站之间的交流,WEB SERVICE都要用它.

5.值类型和引用类型的区别?写出C#的样例代码。

答:结构是值类型,类是引用类型,所以传结构就是值类型的应用啦,传对象或类就是引用类型的,这个不用多写了吧.

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

答:connection command sqladapter dataset datatable dataview等等.写不完了.

7.如何理解委托?

答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.

msdn2005中是这样解释的:

委托具有以下特点:

委托类似于 C++ 函数指针,但它是类型安全的。

委托允许将方法作为参数进行传递。

委托可用于定义回调方法。

委托可以链接在一起;例如,可以对一个事件调用多个方法。

方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。

C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。

8.C#中的接口和类有什么异同。

答:接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!

而类是负责功能的具体实现!

在类中也有抽象类的定义,抽象类与接口的区别在于:

抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。

但接口是一个行为的规范,里面的所有东西都是抽象的!

一个类只可以继承一个基类也就是父类,但可以实现多个接口

9.。net中读写数据库需要用到哪些类?他们的作用

答:这个类自已可以写的啊,你是指基类吗?那configuration,sqlconnection,sqlcommand等都要用到.

10.UDP连接和TCP连接的异同。

答:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结.

11.ASP.net的身份验证方式有哪些?分别是什么原理?

答:form认证,windows集成认证等,原理不清楚.

13.什么是code-Behind技术。

答:代码分离,这是个明智的东西,像ASP这样混成一堆很不爽.或者可以理解成HTML代码写在前台,C#代码写在后台.当然前台也有脚本,类的调用等,其实写在一起也是可以的.

15..net中读写XML的类都归属于哪些命名空间?

答:System.Xml

16.解释一下UDDI、WSDL的意义及其作用。

答:

17.什么是SOAP,有哪些应用。

答: SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何

平台上,以任何一直语言相互通信。这种相互通信采用的是XML格式的消息,具体请看: http://playist.blogchina.com/2521621.html

20.常用的调用webservice方法有哪些?

答:

可以从浏览器、ASP页或其他WEB服务调用可以使用HTTP-GET HTTP-POST访问WEB服务也可以从ASP页或其他WEB服务向其他WEB服务发出SOAP请求HTTP-GET HTTP-POST SOAP 使用WEB服务代理

6. 私有程序集与共享程序集有什么区别?

一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集通常存储在全局程序集缓存(Global Assembly Cache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集通常是对许多应用程序

都有用的代码库,比如.NET Framework类。

7. 请解释进程与线程的区别?进程与程序的区别?

一般,一个应用程序对应于一个或多个进程,可以把进程看作是该应用程序在*作系统中的标识;而一个进程通常由多个线程组成,而线程是*作系统为该应用程序分配处理时间的最小单元。

8. CLR与IL分别是什么含义?

CLR: 公共语言运行时,类似于Java中的JVM,Java虚拟机;在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是CLR,CLR将直接与 *作系统进行通信,而编程语言如C#.NET将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性,可以这样

看:CLR就是具体的编程语言如: C#.NET与*作系统之间的翻译,同时它为具体的编程语言提供了许多资源:

IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;所有.NET源代码(不管用哪种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时(Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。

10 .请解释ASP。NET中以什么方式进行数据验证

Aps.net 中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件

11. WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。

在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端

只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件

12. WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?

可以调用

例如:

runat=\"server\" onclick=\"clientfunction();\">

13. 请解释web.config文件中的重要节点

appSettings包含自定义应用程序设置。

system.web 系统配置

compilation动态调试编译设置

customErrors自定义错误信息设置

authentication身份验证,此节设置应用程序的身份验证策略。

authorization授权, 此节设置应用程序的授权策略.

14. 请解释ASP。NET中的web页面与其隐藏类之间的关系?

一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下

Codebehind=\"Tst1.aspx.cs\" 表明经编译此页面时使用哪一个代码文件

Inherits=\"T1.Tst1\" 表用运行时使用哪一个隐藏类

15. 什么是viewstate,能否禁用?是否所用控件都可以禁用?

Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用

16. 当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决

很有可能是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断

17. 请解释什么是上下文对象,在什么情况下要使用上下文对象

上下文对象是指HttpContext类的Current 属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象

18. 请解释转发与跳转的区别?

转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面

跳转就是指客户端的跳转

1.请简述一下用Socket进行同步通讯编程的详细步骤

1、在应用程序和远程设备中使用协议和网络地址初始化套接字

2、在应用程序中通过指定端口和地址建立监听

3、远程设备发出连接请求

4、应用程序接受连接产生通信scoket

5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)

6、通讯结束,关闭应用程序和远程设备的Socket回收资源

1、在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。

string str = null 是不给他分配内存空间,而string str = “”给它分配长度为空字符窜的内存空间.

2、请详述在dotnet中类(class)与结构(struct)的异同:(10分)

Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.

3、根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:(10)

namespace test

{

public delegate void OnDBOperate();

public class UserControlBase : System.Windows.Forms.UserControl

{

public event OnDBOperate OnNew;

privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)

{

if(e.Button.Equals(BtnNew))

{

//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。

}

}

}

}

____________________________________________________________________

if( OnNew != null )

OnNew( this, e );

4、分析以下代码,完成填空(10分)

string strTmp = \"abcdefg某某某\";

int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;

int j= strTmp.Length;

以上代码执行完后,i= j= i还真的不知道, j=10

5、SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号。(10)

select top ID from table1 order by LastUpdateData desc

8、简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。(10)

remoting 是.net 中用来跨越machine, process, appdomain 进行方法调用的技术,对于三成结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的DCOM Web Service是一种构建应用程序的普通模型,并能在所有支持internet网通讯

的操作系统上实施。Web Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型

9.什么叫做SQL注入,如何防止?请举例说明。

利用sql关键字对网站进行攻击。过滤关键字??等

所谓SQL注入(SQL Injection),就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想得到的资料。

http://localhost/lawjia/show.asp?ID=444 and user>0,这时,服务器运行Select * from 表名 where 字段=444 and user>0这样的查询,当然,这个语句是运行不下去的,肯定出错,错误信息如下:

·错误类型:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)

[Microsoft][ODBC SQL Server Driver][SQL Server]将 nvarchar 值 ??sonybb?? 转换为数据类型为 int 的列时发生语法错误。

a 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。

int[] intArr=new int[100];

ArrayList myList=new ArrayList();

Random rnd=new Random();

while(myList.Count<100)

{

int num=rnd.Next(1,101);

if(!myList.Contains(num))

myList.Add(num);

}

for(int i=0;i<100;i++)

intArr[i]=(int)myList[i];

20.请叙述类与结构的区别。

1)、结构是值类型;

2)、结构不支持继承;

3)、结构不能定义默认的构造函数;

4)、结构不能定义析构函数;

5)、结构不能使用初始值设置域值。

有关C#常见面试问题

本文集中了多条常见的C#、.Net经典面试题目例如“.NET中类和结构的区别”、“ASP.NET页面之间传递值的几种方式?”,并简明扼要的给出了答案,希望能对学习C#、.Net的读者有所帮助。

1, 请你说说.NET中类和结构的区别?

答:结构和类具有大体的语法,但是结构受到的限制比类要多。结构不能申明有默认的构造函数,结构的副本是由编译器创建和销毁的,所以不需要默认的构造函数和析构函数。结构是值类型,所以对结构变量所做的

改变不会影响其的原值,而类是引用类型,改变其变量的值会改变其原值。申明结构用struct关键字,申明类用class关键字,向方法传递结构时是通过值传递的,而不是通过引用。与类不同,结构的实例化可以不使用new

关键字。类可以实现接口。

2, 死锁的必要条件?怎么克服?

答:系统的资源不足,进程的推进的顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已获得资源不放,进程获得资源时,未使用完前,不能强行剥夺。

3, 接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?

答:接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类,但是有个条件,条件是:实体类必须要有明确的构造函数。

4, 构造器Constructor是否可以被继承?是否可以被Override?

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

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

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

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

答:2<<3.

7, C#是否可以对内存直接进行操作?

答:这个问题比较难回答,也是个很大的问题。但是可以这样问答。C#是可以对内存进行直接操作的,虽然很少用到指针,但是C#是可以使用指针的,在用的时候需要在前边加unsafe,,在.NET中使用了垃圾回收机制

(GC)功能,它替代了程序员,不过在C#中不可以直接使用finalize方法,而是在析构函数中调用基类的finalize()方法。

8, Error和Exception有是区别?

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

9, 谈谈final,finally,finallize的区别?

答:final用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承。

finally是异常处理语句结构中,表示总是执行的部分。

finallize表示是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法。

10, HashMap和Hashtable区别?

答:HashMap是Hashtable的轻量级实现,非线程安全的实现他们都实现了map接口,主要区别是HashMap键值可以为空null,效率可以高于Hashtable。

11,Collection和Collections的区别?

答:Collection是集合类的上级接口,Collections是针对集合类的一个帮助类,它提供一系列静态方法来实现对各种集合的搜索,排序,线程安全化操作。

12,C#中委托是什么?事件是不是一种委托?

答:委托是一种安全的类似于函数指针,但是它比指针要安全得多,它可以把方法作为一个参数传递给另一个方法,可以理解为指向函数的引用。事件是一种消息机制,它是一种委托,委托不带方法体。

13,Override, Overload,的区别?

答:Override是重写的意思,它表示重写基类的方法,而且方法的名称,返回类型,参数类型,参数个数要与基类相同。

Overload是重载是意思,它也表示重写基类的方法,但是只要方法名相同,别的可以不同。

14,在一个B/S结构中需要传递变量值时,不能使用Session,Cookie,Application,你有几种方法?

答:this.server.Transfer,Querystring.

15, C#种索引器实现过程,是否只能根据数字索引?

答:不是的,可以是任意类型。

16,new有几种用法?

答:有3种,第一种是,实例化如:new Class()

第二种是,public new 隐藏基类的方法

第三种是,在泛型类申明中的任何类型参数都必须有公共的无参构造函数。

17,如何把一个Array复制到ArrayList中?

答:foreach (object o in Array), ArrayList.Add(0)

等有好多种方法。自己想。

18,概述反射和序列化?

答:反射:要给反射下一个定义还是比较难的,这里先说说我的理解。反射提供了封装程序集,模块和类型对象,可以用反射动态地创建类型的实例,将类型绑定到现有对象,或者从现有对象类型里获取类型,然后调

用类型的方法或访问字段和属性。

序列化:将对象转换为另一种媒介传输的格式过程。如,序列化一个对象,用Http通过Internet在客户端和服务器之间传递该对象,在另一端用反序列化从该流中重新得到对象。

19,const和readonly有什么不同?

答:const用来编程时申明常量,readonly用来申明运行时常量。

20,UDP和TCP连接有何异同?

答:TCP是传输控制协议,提供的是面向连接的,是可靠的,字节流服务,当用户和服务器彼此进行数据交互的时候,必须在他们数据交互前要进行TCP连接之后才能传输数据。TCP提供超时重拨,检验数据功能。

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

21,进程和线程分别该怎么理解?

答:进程是比线程大的程序运行单元,都是由操作系统所体会的系统运行单元,一个程序中至少要有一个进程,有一个进程中,至少要有一个线程,线程的划分尺度要比进程要小,进程拥有独立的内存单元,线程是共

享内存,从而极大的提高了程序的运行效率,同一个进程中的多个线程可以并发执行。

22,ASP.NET页面之间传递值的几种方式?

答:QueryString,Session,Cookie,Application,Server.Transfer,Response.Redirect.

23. 什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?

答:应用程序域:就是为安全性,可靠性,隔离性,和版本控制,及卸载程序提供的隔离边界。它通常由运行库宿主创建,应用程序域提供了一个更安全,用途更广的处理单元。

托管代码:使用CLR编译语言编辑器开发编写的代码就叫托管代码。

装箱和拆箱:是把值类型转换为引用类型的过程,是隐式的,相反的过程就是拆箱,是显式的。

CTS是公共类型系统,CLS是公共语言规范,CLR公共语言运行库。

强类型系统:每个变量和对象都必须具有申明类型。

24. 值类型和引用类型的区别?

答:值类型的值是存放在堆栈中的,改变其值,不改变变量原有的值,而引用类型的值是存放在栈中的,其引用的地址是存放在堆栈中的,改变其值也就改变了变量原有的值。值类型不允许包含null值,然而可空类型

可以将null赋值给值类型l。

25. ASP.NET的身份验证方式有哪些?

答:windows,forms,passport

26. 解释一下UDDI、WSDL的意义及其作用?

答:UDDI是统一描述集成协议,是一套基于Web的,分布式的,为WEB服务提供的信息注册的实现标准规范,同时为也是为企业本身提供的 Web服务注册以让别的企业能够发现并访问的协议标准。提供了基于标准

的规范,用于描述和发现服务,还提供了一组基于因特网的实现。

WSDL这是一个基于XML的描述WEB服务的接口。

27. 什么是SOAP?

答:是简单访问协议。是在分布式环境中,交换信息并实现远程调用的协议。是一个基于XML的协议。使用SOAP,可以不考虑任何传输协议,但通常还是HTTP协议,可以允许任何类型的对象或代码,在任何平台上,

以任一种语言相互通信。它是一种轻量级协议。

28. 如何部署一个ASP.NET页面?

答:VS2003,VS2005里边都有发布机制,VS2003可以发布然后再复制部署。

VS2005可以直接部署到对应的位置。

29. 如何理解.NET中的垃圾回收机制?

答:.NET中的垃圾回收机制是引用程序对内存的回收和释放。当每次用new关键字创建一个对象时,运行库都要从托管堆中为其分配内存,因为空间是有限的,最终垃圾回收机制是要回收不再使用的内存的。已释放内

存,重新使用。

30. 面向对象的三大基本原则?

答:封装,继承,多态。

31. 在.NET中所有类的基类是?

答:object。

32. 能用foreach遍历访问的对象需要怎样实现?

答:需要实现IEnumerable接口和GetEnumerator()方法。

33. Heap与Stack的差别?

答:Heap是堆,空间是由手动操作分配和释放的,它的存储区是很大的自由存储区。

Stack是栈,是由操作系统自动分配和释放的,栈上的空间是有限的。程序在编译期间变量和函数分配内存都是在栈上进行的,且在运行时函数调用时的参数的传递也是在栈上进行的。

说明:本文转自于http://www.cnblogs.com/qiuyi21/articles/1091415.html,其中有些答案不代表本人观点,有些答案需要进一步完善或持保留意见。

补充部分:

34. Interface时候可以继承Interface? abstract class 能否继承自interface?

答:interface可以继承自interface. abstract class 也可以继承自interface,只要将interface抽象实现

35. interface中是否可以定义一个delegate类型?事件是否是一种delegate?

答:定义delegate是一种新的数据类型。例如public delegate int mydelegate(int x,int y)。而在interface中是不能定义type的。interface中只能包括methods.property和索引index.

36.C#中可以实现多重继承吗?如何实现?

答:C#中可以利用interface实现多重继承。例如:

public interface A{void f();}

public interfae B {void g();}

public class C:A,B

{

public void f(){}

public void g(){}

}

37.Interface和abstract class 有什么异同?

答:请参考我的另外一篇文章:

38.什么是interface的显示实现(explicit implementation)和隐式实现(implicit implementation)?他们之间有什么区别?

//这就是隐式实现

public interface IA

{

void f();

}

public class A:IA

{

void f()

{

implementation code.....

}

}

//这就是显式实现

public class B:IA

{

IA.f()

{

implementation code...

}

}

区别:对于显式实现的接口方法,只能通过接口类型引用。而对于隐式实现的接口方法,既可以通过接口类型引用,也可以通过该类型本身引用。例如:

A a=new A();

B b=new B();

A.f();//这是不允许的

IA ia=a;

ia.f();//这是允许的

b.f();//允许

或者:

IA a=new A();

IA b=new B();

a.f();//允许

b.f();//允许

39.我们都知道,C#实现了对内存Heap的托管,那么在C#中还可以直接操作指针吗?如果不行,为什么?如果可以,如何实现?

答:虽然C#所有代码都是托管代码,所有被托管的代码都称为安全代码。但是C#中也考虑到了对指针的直接操作。因此在C#中,我们仍然可以直接对指针进行操作,也就是将其标记为非安全代码即可,即 unsafe {非

安全代码}。例如

public class MyUnsafeCode

{

public unsafe void swap(int *x,int *y)

{

int t;

t=*x;

*x=*y;

*y=t;

}

}

public class program

{

public static void Main()

{

MyUnsafeCode hrg=new MyUnsafeCode();

int x=10,y=11;

unsafe

{

hrg.swap(&x,&y);

}

}

}

40.在C#项目中可以调用C/C++编写的dll库吗?如果不行,为什么?如果可以,如何调用?

答:大量的积累的项目都是用C/C++编写而成的dll,因此在C#中是可以调用的。

调用方法如下:

假设我们有一个用C/C++编写的dll, 名为MyDll.dll, 在dll中有个方法叫做SayHi(), 该方法的作用就是popup 一个对话框显示hello world!.

引用过程如下:

1.引入一个namespace:

system.runtime.interopServices.

然后设置[DllImport(\"MyDll.dll\")]

2. 然后重写该方法,例如在C#中重定义一个方法,调用原dll中的方法。

using System.Runtime.InteropServices;

public class CSharpClass

{

[DllImport(\"MyDll.dll\")]

private static external void SayHi();

public static void MySayHi()

{

SayHi();

}

}

40.接上例:在原来C/C++编写的函数中,往往存在函数参数是指针类型,在调用该dll,在C#中是无法直接处理指针的。那如何处理这点呢?

答:首先,要处理指针的话,必须加上unsafe{ },这是第一点。

其次,在托管代码中,是没有指针的,而dll中若存在指针参数,如何将指针传递给托管代码中的非指针类型呢?

比如:

在C/C++中,我们编写了一个对数组排序的dll

void Sort(int *a,int n) 或者void Sort(int a[],int n)

按照前面所述:需要import想相应的dll,比如为 MyDll.dll

using System.runtime.interopServices;

......

[DllImport(\"MyDll.dll\")]

public unsafe static extern void MySort(int *a,int n);//设计到指针,必须标记为unsafe

在调用该函数时,假设存在如下 int[] a=new int[10]{443,3,56,4,6,32,435,6,6,54};

那么,如果在C#中调用该dll呢?

很显然,直接调用Sort(a,10)是不行的! 因为C#编译器无法将int*转化为int[]类型!

那么如何解决这个问题呢?

最关键的一点,除了加上unsafe{ }外,还需要将指针类型进行转换,只需要加上一句

public unsafe static void MySort(int[] a,int n)

{

fixed(int *b=&a[0]) //或者 fixed(int *b=&a) 注意:fixed(赋值表达式千万不要分号)

Sort(b,n);

}

41.请看一下代码: int *p=stackalloc int[100]; int[] q=new int[100]; 请问p和q有啥区别?

答:请参阅http://www.cnblogs.com/Winston/archive/2008/05/26/1207422.html

42.请看下面代码是否正确?如果正确,给出运行结果。如果不正确,为什么?如何修改?

using System;

public class A

{

public A(){};

public void Show(){Console.WriteLine(\"A method\");};

~A(){Console.WriteLine(\"A is destructed\");}

}

pulic class Program

{

public static void Main()

{

using (A a=new A())

{

a.Show();

}

}

}

答:错误。

因篇幅问题不能全部显示,请点此查看更多更全内容