您好,欢迎访问三七文档
1、C#中property与attribute的区别,他们各有什么用处,这种机制的好处在哪里?property和attribute汉语都称之为属性。不过property是指类向外提供的数据区域。而attribute则是描述对象在编译时或运行时属性的。这两者是有本质区别的。service和interface都是程序概念设计的定义,在IDL映射成具体的语言时,比如C++,就得casebycase.因为C++的OO设计只有Class一种结构,不支持interface(java支持),所以实际上在C++的内部实现上service和interface都是class,区别只是抽象类,或者类的抽象层次(方法)有不同.service和interface都是程序概念设计的定义,在IDL映射成具体的语言时,比如C++,就得casebycase.因为C++的OO设计只有Class一种结构,不支持interface(java支持),所以实际上在C++的内部实现上service和interface都是class,区别只是抽象类,或者类的抽象层次(方法)有不同你说的OO程序的概念,对于比较简单,或者说比较原始的OO程序设计理念来讲,Class+interface就足够了。可是实际在设计大型软件系统的过程中发现简单的OO不足以描述系统运行的机制,可以用更复杂的Pattern模式来讲述。也就是说很多的软件系统及其映射的实际物理系统是可以根据pattern不同而分类的。所以就兴起了所谓designpattern。那要支持这些设计模式,就需要为已经有的OO语言增加元素。而service是最为常用的一种,提供某种抽象概念上的服务,比class/interface还要高级。你可以找一些设计模式的书看看,例如designpatternsjavacompanion或者designpatternsCDROMs。2、讲一讲你理解的webservice,在dotnetframework中,怎么很好的结合xml?(讲概念就行了)从表面上看,WebService就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web调用来实现某个功能的应用程序。从深层次上看,WebService是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络(通常为Web)中被描述、发布、查找以及通过Web来调用。可扩展的标记语言XML是WebService平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。XML是由万维网协会(W3C)创建,W3C制定的XMLSchemaXSD定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。WebService平台是用XSD来作为数据类型系统的。当你用某种语言如VB.NET或C#来构造一个WebService时,为了符合WebService标准,所有你使用的数据类型都必须被转换为XSD类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要用某种东西将它包装起来。这种东西就是一种协议,如SOAP。3.C#,Java和c++的特点,有什么相同的地方,不同的地方,C#分别从c++和java中吸取了他们那些优点?C#看起来与Java有着惊人的相似;它包括了诸如单一继承,界面,与Java几乎同样的语法,和编译成中间代码再运行的过程.但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成。微软c#语言定义主要是从C和C++继承而来的,而且语言中的许多元素也反映了这一点.C#在设计者从C++继承的可选选项方面比Java要广泛一些(比如说structs),它还增加了自己新的特点(比方说源代码版本定义).C#从Java继承而来的特点类:在C#中类的申明与Java很相似。特点看起来与Java相比没有变化.布尔运算:条件表达式的结果是布尔数据类型,布尔数据类型是这种语言中独立的一种数据类型.从布尔类型到其他类型没有直接的转换过程.布尔常量true和false是C#中的关键字.错误处理:如Java中那样,通过抛出和捕捉异常对象来管理错误处理过程.内存管理:由底层.NET框架进行自动内存垃圾回收.C#从C和C++继承的特点编译:程序直接编译成标准的二进制可执行形式.结构体:一个C#的结构体与C++的结构体是相似的,因为它能够包含数据申明和方法.但是,不象C++,C#结构体与类是不同的而且不支持继承.但是,与Java相同的是,一个结构体可以实现界面.预编译:C#中存在预编译指令支持条件编译,警告,错误报告和编译行控制.#errorC#独有的特点中间代码:微软在用户选择何时MSIL应该编译成机器码的时候是留了很大的余地.微软公司很小心的声称MSIL不是解释性的,而是被编译成了机器码.它也明白许多--如果不是大多数的话--程序员认为Java程序要不可避免的比C编写的任何东西都要慢.而这种实现方式决定了基于MSIL的程序(指的是用C#,VisualBasic,ManagedC++--C++的一个符合CLS的版本--等语言编写的程序)将在性能上超过解释性的Java代码.当然,这一点还需要得到事实证明,因为C#和其他生成MSIL的编译器还没有发布.但是JavaJIT编译器的普遍存在使得Java和C#在性能上相对相同.象C#是编译语言而Java是解释性的,之类的声明只是商业技巧.Java的中间代码和MSIL都是中间的汇编形式的语言,它们在运行时或其它的时候被编译成机器代码.命名空间中的申明:当你创建一个程序的时候,你在一个命名空间里创建了一个或多个类.同在这个命名空间里(在类的外面)你还有可能声明界面,枚举类型和结构体.必须使用using关键字来引用其他命名空间的内容.基本的数据类型:C#拥有比C,C++或者Java更广泛的数据类型.这些类型是bool,byte,ubyte,short,ushort,int,uint,long,ulong,float,double,和decimal.象Java一样,所有这些类型都有一个固定的大小.又象C和C++一样,每个数据类型都有有符号和无符号两种类型.与Java相同的是,一个字符变量包含的是一个16位的Unicode字符.C#新的数据类型是decimal数据类型,对于货币数据,它能存放28位10进制数字.两个基本类:一个名叫object的类是所有其他类的基类.而一个名叫string的类也象object一样是这个语言的一部分.作为语言的一部分存在意味着编译器有可能使用它--无论何时你在程序中写入一句带引号的字符串,编译器会创建一个string对象来保存它.参数传递:方法可以被声明接受可变数目的参数.缺省的参数传递方法是对基本数据类型进行值传递.ref关键字可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回值.out关键字也能声明引用传递过程,与ref不同的地方是,它指明这个参数并不需要初始值.与COM的集成:C#对Windows程序最大的卖点可能就是它与COM的无缝集成了,COM就是微软的Win32组件技术.实际上,最终有可能在任何.NET语言里编写COM客户和服务器端.C#编写的类可以子类化一个以存在的COM组件;生成的类也能被作为一个COM组件使用,然后又能使用,比方说,JScript语言子类化它从而得到第三个COM组件.这种现象的结果是导致了一个运行环境的产生,在这个环境里的组件是网络服务,可用用任何.NET语言子类化.索引下标:一个索引与属性除了不使用属性名来引用类成员而是用一个方括号中的数字来匿名引用(就象用数组下标一样)以外是相似的.代理和反馈:一个代理对象包括了访问一个特定对象的特定方法所需的信息.只要把它当成一个聪明的方法指针就行了.代理对象可以被移动到另一个地方,然后可以通过访问它来对已存在的方法进行类型安全的调用.一个反馈方法是代理的特例.event关键字用在将在事件发生的时候被当成代理调用的方法声明中.4、C#中的委托是什么?事件是不是一种委托?在什么场合用委托是一个可以对方法进行引用的类。与其他的类不同,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用。这样,委托就等效于一个类型安全函数指针或一个回调。事件是一种委托。委托本质上是一种“方法接口”,它相当于C/C++中的函数指针,当然它比函数指针安全,在C#中通常用于事件处理。与JAVA相比,可以避免使用大量小粒度的匿名类。(不过,也许微软就是使用类似于JAVA的匿名类实现委托的,只不过从字面上看起不是那么回事罢了,谁知道呢?)事件不是委托,不过由于事件的性质决定了处理它的程序逻辑能访问的参数,因此,在C#中处理事件的逻辑都包装为委托(一种“方法接口”)。实际上,如果你处理自定义的事件,就像JAVA中那样用接口实现也是可以的,不过这么做在C#一般没有什么特别的好处。5、ADO.NET相对于ADO等主要有什么改进?ADO以Recordset存储,而ADO.NET则以DataSet表示。Recordset看起来更像单表,如果让Recordset以多表的方式表示就必须在SQL中进行多表连接。反之,DataSet可以是多个表的集合。ADO的运作是一种在线方式,这意味着不论是浏览或更新数据都必须是实时的。ADO.NET则使用离线方式,在访问数据的时候ADO.NET会利用XML制作数据的一份幅本,ADO.NET的数据库连接也只有在这段时间需要在线。由于ADO使用COM技术,这就要求所使用的数据类型必须符合COM规范,而ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导致的数据类型转换,从而提高了整体性能。6、接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?接口是一个纯粹的抽象类,没有任何实际的东西,只是定义了一个框架,而抽象类里面可以有实际的一个方法,并不要求所有的方法都是抽象的。可以实现一个接口中的所有方法,也可以继承一个抽象的类,然后覆写其中的方法。接口一般只有方法,而没有数据成员或属性。抽象类有方法,也有数据成员或属性,一般情况下,优先考虑用接口,只有当可能要访问到数据成员或属性时,用抽象类。7、谈谈final,finally,finalize的区别。final修饰符用于指定类不能扩展或者方法或属性不能重写。它将防止其他类通过重写重要的函数来更改该类的行为。带有final修饰符的方法可以由派生类中的方法来隐藏或重载。finally块用于清除在try块中分配的任何资源。控制总是传递给finally块,与try块的存在方式无关。百度上查的。贴出来了8.ASP.NET中的身份验证有那些?你当前项目采用什么方式验证请解释Windows、Forms、Passport,一般采用Forms,比较简单、适用面广9.什么是WEB控件?使用WEB控件有那些优势?web控件就是可以在服务器执行的控件,优势在于可以回传数据,带有事件驱动10.请解释ASP。NET中以什么方式进行数据验证?.net中提供了几个数据验证控件,可以在服务器端或者客户端进行验证。11.请谈谈对正则表达式的看法?主要用在字符串的匹配上面,与具体的语言环境无关。12.ASP。NET中共有几种类型的控件?各有什么区别?Html控件传统的html标记Web控件可以回传数据,事件驱动自定义控件在原有控件的基础上增加功能复合控件多个子控件复合成一个新的控件13.WEB控件可以激法服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。通过实现IPostBack这个接口来执行事件。自动回传就是AutoPostBack,使用自动回传可以监视客户端变化情况并将这种改变返回到服务器端14.WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?能,追根溯源,服务器端控件在html中表现形式还是html标记,所以可以执行客户端事件,有多种方式:1、contr
本文标题:net相关面试题
链接地址:https://www.777doc.com/doc-2883903 .html