net面试题大全_第1页
net面试题大全_第2页
net面试题大全_第3页
net面试题大全_第4页
net面试题大全_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、发布本人整理的面试问题大全,为准备找工作的同行们尽一份力!希望大家多补充或回答! C#语言、.NET 方面 C#语言、.NET 方面 Q1. 自定义控件和一般用户控件的异同?如果要用这两者之一,你会选择哪种?为什么 答:同:都是由用户创建的控件;异:创建性与易用性,用户控件易于创建,但它们在高级方案中使 用起来可能不太方便,自定义控件是编译的代码,这使得 Web 自定义控件更易于使用但更难于创建; Q2. 大概描述一下ASP.NET 服务器控件的生命周期 答: 初始化 InitInit 事件(OnInitOnInit 方法) 加载视图状态 LoadViewStateLoadViewState

2、方法 处理回发数据 LoadPostDataLoadPostData 方法(如果已实现 IPostBackDataHandlerIPostBackDataHandler) 加载 LoadLoad 事件(OnLoadOnLoad 方法) 发送回发更改通知 RaisePostDataChangedEventRaisePostDataChangedEvent 方法(如果已实现 IPostBackDataHandlerIPostBackDataHandler) 处理回发事件 RaisePostBackEventRaisePostBackEvent 方法(如果已实现 IPostBackEventHand

3、lerIPostBackEventHandler) 预呈现 PreRenderPreRender 事件(OnPreRenderOnPreRender 方法) 保存状态 SaveViewStateSaveViewState 方法 呈现 RenderRender 方法 处置 DisposeDispose 方法 卸载 UnLoad UnLoad 事件(On UnLoadOn UnLoad 方法) Q3. 类划分的依据。类粒度问题 Q4. 事务管理问题 答:事务是一组作为一个单元成功或失败的相关任务。在事务处理术语中,事务要么提交,要么中止。 若要提交事务,所有参与者都必须保证对数据的任何更改是永久的

4、。不论系统崩溃或是发生其他无法 预料的事件,更改都必须是持久的。只要有一个参与者无法做出此保证,整个事务就会失败。事务范 围内的所有数据更改将回滚到特定设置点。 Q5. 谈谈final, finally, finalize 的区别。 答: finalfinal 修饰符用于指定类不能扩展或者方法或属性不能重写。 Finally Finally 是异常处理语句。 Finalize Finalize 是用于让垃圾回收器回收对象所占的内存。 Q6. Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements (实 现)interfac

5、e( 接口)? 答:匿名的内部类是没有名字的内部类。不能extends其它类,但一个内部类可以作为一个接口,由 另一个内部类实现。 Q7. Static Nested Class 和 Inner Class的不同。 答:Nested Class (一般是C+的说法),Inner Class (一般是JAVA的说法)。Java内部类与C+嵌 套类最大的不同就在于是否有指向外部的引用上 Q8. C:WINDOWSSYSTEM。Hashtables是表示这些的一个简单的方法,但Java提供了另外一种 方法。 Java.util.Properties类是Hashtable的一个子类,设计用于Strin

6、g keys和values。Properties 对象的用法同Hashtable的用法相象,但是类增加了两个节省时间的方法,你应该知道。 Store()方法把一个Properties对象的内容以一种可读的形式保存到一个文件中。Load()方法正 好相反,用来读取文件,并设定Properties对象来包含keys和values。 注意,因为Properties扩展了Hashtable,你可以用超类的put()方法来添加不是String对象的 keys和values。这是不可取的。另外,如果你将store()用于一个不包含String对象的Properties对 象,store()将失败。作为pu

7、t()和get()的替代,你应该用setProperty()和getProperty(),它们用 String参数。 Q10.Collection 和 Collections 的区别。 答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List。Collections是针对集合 类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 Q11.什么时候用abstract,什么时候用interface?。 答:设计主继承链时通常用抽象类;几个没什么关系的类之间的共性通常用接口实现。 Q12.String s = new String(xyz);

8、创建了几个String Object? 答:两个对象,一个是xyx,一个是指向xyx的引用对象s Q13.Math.round(11.5) 等于多少? Math.round(-11.5) 等于多少? 答:Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11 Q14.short s1 = 1; s1 = s1 + 1; 有什么错? 答:s1是short型,s1+1是int型,不能显式转化为short型 Q15.sleep() 和 wait() 有什么区别? 答:sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线

9、程不一定立即恢复执 行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)醒来的线 程具有更高的优先级 (b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一 个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待 时间到。 Q16.数组有没有length() 这个方法? String 有没有length() 这个方法? 答:数组没有length()这个方法,有length的属性。String有有length()这个方法。 Q17.Overload和Override 的区别。Overloaded的方法是

10、否可以改变返回值的类型? 答:方法的重写Overriding和重载Overloading是多态性的不同表现。重写Overriding是父类与子类 之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法 与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时, 将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名 的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。 Overloaded的方法是可以改变返回值的类型。 Q18.Set

11、 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用=还是equals()? 它们有何区 别? 答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是 否相等。equals()和=方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离 的对象的内容和类型相配的话,返回真值。 Q19.给我一个你最常见到的runtime exception 。 答:ArithmeticException Q20.error和exception 有什么区别? 答:error 表示恢复不是不可能但很困难的情况下的一种严重问题。比

12、如说内存溢出。不可能指望程 序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常, 从不会发生的情况。 Q21.List, Set, Map 是否继承自Collection 接口? 答:List,Set是,Map不是 Q22.abstract 的method是否可同时是static, 是否可同时是native,是否可同时是synchronized? 答:都不能 Q23.接口是否可继承接口? 抽象类是否可实现(implements) 接口? 抽象类是否可继承实体类(concrete class)? 答:接口可以继承接口。抽象类可以实现(impleme

13、nts)接口,抽象类是否可继承实体类(concrete class),但前提是实体类必须有明确的构造函数。 Q24.启动一个线程是用run()还是start()? 答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可 以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一 个线程。 Q25.构造器Constructor 是否可被override? 答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。 Q26.是否可以继承String 类? 答:Str

14、ing类是final类故不可以继承; Q27.当一个线程进入一个对象的一个synchronized 方法后,其它线程是否可进入此对象的其它方法? 答:不能,一个对象的一个synchronized方法只能由一个线程访问。 Q28.try 里有一个return语句,那么紧跟在这个try后的finally 里的code 会不会被执行,什么时 候被执行,在return前还是后? 答:会执行,在return前执行。 Q29.编程题: 用最有效率的方法算出2乘以8等于几? 答:23 Q30.两个对象值相同(x.equals(y) = true), 但却可有不同的hash code,这句话对不对? 答:不对

15、,有相同的hash code。看你的对象类型了。 Q31.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果, 那么这里到底是值传递还是引用传递? 答:是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时, 参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改 变的。 Q32.swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String 上? 答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是

16、 int、 short、 char 或者 byte。long,string 都不能作用于swtich。 Q33.编程题: 写一个Singleton 出来。 答:Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 一般Singleton模式通常有几种种形式: 第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类 初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。 public class Singleton private Singleton()

17、/在自己内部定义自己一个实例,是不是很奇怪? /注意这是private 只供内部调用 private static Singleton instance = new Singleton(); /这里提供了一个供外部访问本class的静态方法,可以直接访问 public static Singleton getInstance() return instance; 第二种形式: public class Singleton private static Singleton instance = null; public static synchronized Singleton getInsta

18、nce() /这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 /使用时生成实例,提高了效率! if (instance=null) instancenew Singleton(); return instance; 其他形式: 定义一个类,它的构造函数为private的,所有方法为static的。 一般认为第一种形式要更加安全些 Q34.您在什么情况下会用到虚方法?它与接口有什么不同? 答:为了保证继承和重载时调用的函数,是用户自己定义的函数,所以在基类中将该函数定义成虚函 数(关键字virtual)。接口好比一种模版,这种模版定义了对象必须实现的方法,其目的就是让这 些方法可以作

19、为接口实例被引用。接口不能被实例化。类可以实现多个接口并且通过这些实现的接口 被索引。接口变量只能索引实现该接口的类的实例。一个接口定义一个只有抽象成员的引用类型。C# 中一个接口实际所做的,仅仅只存在着方法标志,但根本就没有执行代码。这就暗示了不能实例化一 个接口,只能实例化一个派生自该接口的对象。接口可以定义方法、属性和索引。所以,对比一个类, 接口的特殊性是:当定义一个类时,可以派生自多重接口,而你只能可以从仅有的一个类派生。 接口与组件 接口描述了组件对外提供的服务。在组件和组件之间、组件和客户之间都通过接口进行交互。因 此组件一旦发布,它只能通过预先定义的接口来提供合理的、一致的服务

20、。这种接口定义之间的稳定 性使客户应用开发者能够构造出坚固的应用。一个组件可以实现多个组件接口,而一个特定的组件接 口也可以被多个组件来实现。 组件接口必须是能够自我描述的。这意味着组件接口应该不依赖于具体的实现,将实现和接口分 离彻底消除了接口的使用者和接口的实现者之间的耦合关系,增强了信息的封装程度。同时这也要求 组件接口必须使用一种与组件实现无关的语言。目前组件接口的描述标准是IDL语言。 由于接口是组件之间的协议,因此组件的接口一旦被发布,组件生产者就应该尽可能地保持接口 不变,任何对接口语法或语义上的改变,都有可能造成现有组件与客户之间的联系遭到破坏。 每个组件都是自主的,有其独特的

21、功能,只能通过接口与外界通信。当一个组件需要提供新的服 务时,可以通过增加新的接口来实现。不会影响原接口已存在的客户。而新的客户可以重新选择新的 接口来获得服务。 组件化程序设计 组件化程序设计方法继承并发展了面向对象的程序设计方法。它把对象技术应用于系统设计,对 面向对象的程序设计的实现过程作了进一步的抽象。我们可以把组件化程序设计方法用作构造系统的 体系结构层次的方法,并且可以使用面向对象的方法很方便地实现组件。 组件化程序设计强调真正的软件可重用性和高度的互操作性。它侧重于组件的产生和装配,这两 方面一起构成了组件化程序设计的核心。组件的产生过程不仅仅是应用系统的需求,组件市场本身也 推

22、动了组件的发展,促进了软件厂商的交流与合作。组件的装配使得软件产品可以采用类似于搭积木 的方法快速地建立起来,不仅可以缩短软件产品的开发周期,同时也提高了系统的稳定性和可靠性。 组件程序设计的方法有以下几个方面的特点: 1、编程语言和开发环境的独立性; 2、组件位置的透明性; 3、组件的进程透明性; 4、可扩充性; 5、可重用性; 6、具有强有力的基础设施; 7、系统一级的公共服务; C#语言由于其许多优点,十分适用于组件编程。但这并不是说C#是一门组件编程语言,也不是说 C#提供了组件编程的工具。我们已经多次指出,组件应该具有与编程语言无关的特性。请读者记住这 一点:组件模型是一种规范,不管

23、采用何种程序语言设计组件,都必须遵守这一规范。比如组装计算 机的例子,只要各个厂商为我们提供的配件规格、接口符合统一的标准,这些配件组合起来就能协同 工作,组件编程也是一样。我们只是说,利用C#语言进行组件编程将会给我们带来更大的方便。 Q35.微软推出了一系列的Application Block ,请举出您所知道的Application Block 并说明其作用? Q36.请编程实现一个冒泡排序算法? 答:int array = 2,3,1,6,5; for( int i=0; iarray.Length; i+) for( int j=0; j arrayj+1 ) swap( ref a

24、rrayj, ref arrayj+1 ); for( int k=0; karray.Length; k+ ) Console.Write( arrayk ); Q37.C中接口和类的异同? 答:接口和类的区别是本质的,类是负责功能的实现,而接口则是负责功能的定义。项目中可以通过 实现接口来规范类、操作类、抽象类的概念,从而达到高度的抽象。你也可以称接口为一个没有功能 的类。 override是实现抽象方法,用于当基类不能为一个方法提供任何有的意义的实现的时候,相当于怎么 说呢,如果一个基类中对一个方法的方法体不明确的时候,就可以定义他成为一个抽象方法,这样继 承他的子类就被迫必须实现这个方

25、法,否则就不能实例化,这是我的个人理解,重载不用说了吧,自 己理解了就知道他们的区别在哪。 Q38.DataReader和DataSet的异同? 答:DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数 据库。任何对SqlConnection的操作都会引发DataReader的异常,因为DataReader每次只在内存中加 载一条数据,所以占用的内存是很小的,因为DataReader的特殊性和高性能,所以DataReader是只进 的,你读了第一条后就不能再去读取第一条了。 DataSet则是将数据一次性加载在内存中, 抛

26、弃数据库连接, 读取完毕即放弃数据库连接, 因为DataSet 将数据全部加载在内存中,所以比较消耗内存,但是确比DataReader要灵活,可以动态的添加行、列、 数据、对数据库进行回传更新操作。 Q39.谈谈类和结构的区别? 答:类是引用类型、结构是值类型. Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上 的. Q40.设计模式共有几种?请列出您所知道的设计模式的名称。 答:共有23种,例如:Singleton模式,Abstract Factory模式,Builder 生成器模式,Factory Method 工厂方法模式 Q41.下

27、面这段代码输出什么?为什么? int i=5; int j=5; if (Object.ReferenceEquals(i,j) Console.WriteLine(Equal); else Console.WriteLine(Not Equal); 答:不相等,因为比较的是对象 Q42.Remoting在客户端、服务器怎么实现? 答:首先,客户端通过Remoting,访问通道以获得服务端对象,再通过代理解析为客户端对象。这就 提供一种可能性,即以服务的方式来发布服务器对象。远程对象代码可以运行在服务器上(如服务器 激活的对象和客户端激活的对象),然后客户端再通过Remoting连接服务器,获

28、得该服务对象并通过 序列化在客户端运行。 Q43.什么是Web Service?什么是XML?Socket怎么实现? 答:Web Service是使应用程序在整个网上可以被调用。XML 是可扩展标记语言,可以做配置文件, 可以传输数据,可以存储数据 Q44.C# 中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里? 答: property和attribute汉语都称之为属性。 不过property是指类向外提供的数据区域。 而attribute 则是描述对象在编译时或运行时属性的。这两者是有本质区别的。 另一种解答: 一个是属性,用于存取类的字段,一个是

29、特性,用来标识类,方法等的附加性质 第三种解答:attribute:自定义属性的基类;property :类中的属性 特性(Attributes)是对设计时支持且又能在程序编译时起到作用的,方法/字段/类/程序集的属性 声明。 属性(property)是更好地避免直接暴露你的私有成员而在类的声明的成员; Q45.讲一讲你理解的web service, 在dot net framework 中,怎么很好的结合xml?(讲概念就行了) 答:从表面上看,Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。 这就是说, 你能够用编程的方法通过Web调用来实现某个功

30、能的应用程序。 从深层次上看, Web Service 是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络(通常为Web)中被 描述、发布、查找以及通过Web来调用。可扩展的标记语言XML 是Web Service平台中表示数据的基 本格式。除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。XML是由 万维网协会(W3C)创建,W3C制定的XML SchemaXSD 定义了一套标准的数据类型,并给出了一种语言 来扩展这套数据类型。Web Service平台是用XSD来作为数据类型系统的。当你用某种语言如VB.NET或 C# 来构造一个Web

31、Service时,为了符合Web Service标准,所有你使用的数据类型都必须被转换为 XSD类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要用某种东西将它包装起来。 这种东西就是一种协议,如 SOAP。 Q46.C#, Java 和 c+ 的特点,有什么相同的地方,不同的地方,C#分别从c+ 和java 中吸取了他们那 些优点? 答:相同点:都是C系的,都是面向对象;不同点:Java,C# 都是建立在虚拟机机制上,而C+不是 另一种解答: C#看起来与Java有着惊人的相似;它包括了诸如单一继承,界面,与Java几乎同样的语法,和编译 成中间代码再运行的 过程.但是C#与Ja

32、va有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件 对象模型)是直接集成。 微软c#语言定义主 要是从C和C+继承而来的,而且语言中的许多元素也反映了这一点.C#在设计者从 C+继承的可选选项方面比Java要广泛一些(比如说 structs),它还增加了自己新的特点(比方说源代 码版本定义). C#从Java继承而来的特点 类:在C#中类的申明与Java很相似。特点看起来与Java相比没有变化.布尔运算:条件表达式的结果是 布尔数据类型,布尔数据类型是这种语言中独立的一种数据类型.从布尔类型到其他类型没有 直接的 转换过程.布尔常量true和false是C#中的关键字.错误处理

33、:如Java中那样,通过抛出和捕捉异常对象 来管理错误处理过程. 内存管理:由 底层.NET框架进行自动内存垃圾回收. C#从C和C+继承的特点 编译:程序直接编译成标准的二进制可执行形式. 结构体:一个C#的结构体与C+的结构体是相似的,因为它能够包含数据申明和方法.但是,不象 C+,C#结构体与类是不同的而且不支持继承.但是,与Java相同的是,一个结构体可以实现界面. 预编译:C#中存在预编译指令支持条件编译,警告,错误报告和编译行控制. #error C#独有的特点 中间代码:微软在用户选择何时 MSIL 应该编译成机器码的时候是留了很大的余地.微软公司很 小心的声称MSIL不是解释性

34、的,而是被编译成了机器码.它也明 白许多-如果不是大多数的话 -程序员认为 Java 程序要不可避免的比 C 编写的任何东西都要慢.而这种实现方式决定了基于 MSIL 的程序(指的是用 C#,Visual Basic,Managed C+-C+的一个符合 CLS 的版本-等语言 编写的程序)将在性能上超过解释性的Java 代码.当然,这一点还需要得到事实证明,因为 C# 和 其他生成 MSIL 的编译器还没有发布.但是 Java JIT 编译器的普遍存在使得 Java 和 C#在性 能上相对相同.象C#是编译语言而Java是解释性的,之类的声明只是商业技巧.Java的中间代 码和 MSIL 都

35、是中间的汇编形式的语言,它们在运行时或其它的时候被编译成机器代码. 命名空间中的申明:当你创建一个程序的时候,你在一个命名空间里创建了一个或多个类.同在 这个命名空间里(在类的外面)你还有可能声明界面,枚举类型和结构体.必须使用using关键字 来引用其他命名空间的内容. 基本的数据类型:C#拥有比 C,C+或者 Java 更广泛的数据类型.这些类型是 bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double,和 decimal.象 Java 一样,所有这 些类型都有一个固定的大小.又象 C 和 C+一样,每

36、个数据类型都有有符号和无符号两种类型. 与 Java 相同的是,一个字符变量包含的是一个 16 位的 Unicode 字符.C#新的数据类型是 decimal 数据类型,对于货币数据,它能存放 28 位 10 进制数字. 两个基本类:一个名叫 object 的类是所有其他类的基类.而一个名叫 string 的类也象 object 一样是这个语言的一部分.作为语言的一部分存在意味着编译器有可能使用它-无论何时你在 程序中写入一句带引号的字符串,编译器会创建一个 string 对象来保存它. 参数传递:方法可以被声明接受可变数目的参数.缺省的参数传递方法是对基本数据类型进行 值传递.ref 关键字

37、可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回 值.out 关键字也能声明引用传递过程,与 ref 不同的地方是,它指明这个参数并不需要初始值. 与 COM 的集成:C#对 Windows 程序最大的卖点可能就是它与 COM 的无缝集成了,COM 就是微软的 Win32 组件技术.实际上,最终有可能在任何.NET 语 言里编写 COM 客户和服务器端.C#编写的类 可以子类化一个以存在的 COM 组件;生成的类也能被作为一个 COM 组件使用,然后又能使用,比 方说, JScript 语言子类化它从而得到第三个 COM 组件.这种现象的结果是导致了一个运行环境 的产生,在这个

38、环境里的组件是网络服务,可用用任何.NET 语 言子类化. 索引下标:一个索引与属性除了不使用属性名来引用类成员而是用一个方括号中的数字来匿名 引用(就象用数组下标一样)以外是相似的. 代理和反馈:一个代理对象包括了访问一个特定对象的特定方法所需的信息.只要把它当成一 个聪明的方法指针就行了.代理对象可以被移动到另一个地方,然后可以 通过访问它来对已存 在的方法进行类型安全的调用.一个反馈方法是代理的特例.event 关键字用在将在事件发生的 时候被当成代理调用的方法声明中. Q47.C# 可否对内存进行直接的操作?(这可是个难点哦?要注意!) 答:可以,在.net下,事情容易多了。.net引

39、用了垃圾回收(GC)功能,它替代了程序员。不过在C# 中,不能直接实现Finalize方法,而是在析构函数中调用基类的Finalize()方法 Q48.用Visual C+ 6.0 编写的代码(unmanaged code) ,如何在CLR下和其他dot net component 结合? 答:编译Dll,DLLImport Q49.ADO.NET 相对于ADO 等主要有什么改进? 答:新增dataset 等,不需要随时保持连接,性能提高。 详细:ADO以Recordset存储,而ADO.NET则以DataSet表示。Recordset看起来更像单表,如果让 Recordset以多表的方式表示

40、就必须在SQL中进行多表连接。反之,DataSet可以是多个表的集合。ADO 的运作是一种在线方式,这意味着不论是浏览或更新数据都必须是实时的。ADO.NET则使用离线方式, 在访问数据的时候ADO.NET会利用XML制作数据的一份幅本,ADO.NET的数据库连接也只有在这段时间 需要在线。 由于 ADO 使用 COM 技术,这就要求所使用的数据类型必须符合 COM 规范,而 ADO.NET 基于 XML 格式, 数据类型更为丰富并且不需要再做 COM 编排导致的数据类型转换,从而提高了整体性能。 答二:1: 不依赖于 ole db 提供程序,而是使用.net 托管提供的程序, 2:不使用 c

41、om 3:不在支持动态游标和服务器端游 4:,可以断开 connection 而保留当前数据集可用 5:强类型转换 6:xml 支持 Q50.ASP.NET 与ASP 相比,主要有哪些进步? 答:asp解释形,aspx编译型,性能提高,有利于保护源码 从原理上来说,ASP 是一种解释型的脚本语言,每次运行都要对代码今年性编译,而ASP.NET是编译 性的,只要一次编译,其他时间都可以不再解释。 性能来说ASP.NET高于ASP ASP.NET采用了代码与页面分离的Codebehind技术,配合ADO.NET的离线数据访问功能降低了WEB应用 程序的藕合度,轻松的实现组件化开发,快速的开发出分布

42、式应用程序 ASP.NET优点: 1代码和内容分离使代码更清晰 2提高可部署性、可伸缩性、安全性以及可靠性 3为不同的浏览器和设备提供更好的支持 ASP缺点: 1ASP只能使用脚本语言属于解释性语言,主要是javascript或VBScript。而解释性语言,而解释性 语言缺乏强类型和编译环境。这些将不可避免地导致性能和伸缩性问题。 2ASP代码杂乱、功能有限,浏览器兼容以及浏览设备的兼容性差,而ASP.NET能够很好的解决。 Q51.C#中的委托是什么?事件是不是一种委托? 答:委托是一种安全的函数指针,事件是一种消息机制 答二:委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向

43、一个函数的引用。 是,是一种特殊的委托 答三: 事件是对象发送的消息,以发信号通知操作的发生。操作可能是由用户交互(例如鼠标单击)引起的, 也可能是由某些其他的程序逻辑触发的。引发(触发)事件的对象叫做事件发送方。捕获事件并对其 作出响应的对象叫做事件接收方。 在事件通信中,事件发送方类不知道哪个对象或方法将接收到(处理)它引发的事件。所需要的是在 源和接收方之间存在一个媒介(或类似指针的机制)。.NET Framework 定义了一个特殊的类型 (Delegate),该类型提供函数指针的功能。 委托是一个可以对方法进行引用的类。与其他的类不同,委托类具有一个签名,并且它只能对与其签 名匹配的

44、方法进行引用。这样,委托就等效于一个类型安全函数指针或一个回调。虽然委托具有许多 其他的用途,但这里只讨论委托的事件处理功能。 委托的事件,所以事件不是一种委托 Q52.描述一下C#中索引器的实现过程,是否只能根据数字进行索引? 答:索引器(Indexer)是C#引入的一个新型的类成员,它使得对象可以像数组那样被方便,直观的引 用。索引器非常类似于我们前面讲到的属性,但索引器可以有参数列表,且只能作用在实例对象上, 而不能在类上直接作用。下面是典型的索引器的设计,我们在这里忽略了具体的实现。 class MyClass public object this int index get / 取数

45、据 set / 存数据 注意,这里的属性名是 this,意思是回引类的当前实例,参数列表包含在方括号而非括号之内。索引 器参数可以采用任何类型,不过 int 是通常采用也是最为合理的类型。同一类中还可能拥有一个以上 的索引器(重载)。 Q53.C#中要使一个类支持FOREACH 遍历,实现过程怎样? 答:实现一个接口 答二: 若要循环访问集合,集合必须满足特定的要求。例如,在下面的 foreach 语句中: foreach (ItemType item in myCollection) myCollection 必须满足下列要求: 集合类型: 必须是 interfaceinterface、cl

46、assclass 或 structstruct。 必须包括返回类型的名为 GetEnumeratorGetEnumerator 的实例方法,例如 Enumerator。 Enumerator 类型(类或结构)必须包含: 一个名为 CurrentCurrent 的属性,它返回 ItemType 或者可以转换为此类型的类型。属性访问器返回集合的 当前元素。 一个名为 MoveNextMoveNext 的 boolbool 方法,它递增项计数器并在集合中存在更多项时返回 truetrue。 有三种使用集合的方法: 1. 使用上述指导创建一个集合。此集合只能用于 C# 程序。 2. 使用上述指导创建一

47、个一般集合, 另外实现 IEnumerableIEnumerable 接口。 此集合可用于其他语言 (如 Visual Basic)。 3. 在集合类中使用一个预定义的集合。 Q54.你对XMLHTTP、WEB SERVICE了解吗?简单描述其特点、作用? 答:xmlhttp 可以主动获取远端web代码,类似HttpWebRequest Q55.接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么? 答:接口用于规范,抽象类用于共性。 答二:“抽象类”是一种不能实例化而必须从中继承的类。抽象类可以完全实现,但更常见的是部分 实现或者根本不实现,从而封装继承类的通用功能。 “接口”是完全抽

48、象的成员集合,可以被看作是为操作定义合同。接口的实现完全留给开发者去做。 这里是一些建议,帮助您决定使用接口还是抽象类为组件提供多态性: 如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单易行的方法来控制组件版本。通过 更新基类,所有继承类都随更改自动更新。另一方面,接口一旦创建就不能更改。如果需要接口的新 版本,必须创建一个全新的接口。 如果创建的功能将在大范围的全异对象间使用,则使用接口。抽象类应主要用于关系密切的对象,而 接口最适合为不相关的类提供通用功能。 如果要设计小而简练的功能块,则使用接口。如果要设计大的功能单元,则使用抽象类。 如果要在组件的所有实现间提供通用的已实现功

49、能,则使用抽象类。抽象类允许部分实现类,而接口 不包含任何成员的实现。 答三:接口只包含成员定义,不包含成员的实现,成员的实现需要在继承的类或者结构中实现。 一种不能实例化而必须从中继承的类,抽象类可以提供实现,也可以不提供实现,子类只能从一个抽象类 继承 Q56.面向对象的概念,主要特点 答:封装,继承,多态 Q57.请说出强名的含义 答:具有自己的key,可以在GAC为公用。 Q58.请指出.net中所有类型的基类 答:object。 Q59.怎样理解静态变量? 答:所有实例公用一个的变量 用static标明,一旦静态变量所属的类被装载,直到包含该类的程序运行结束他将一直存在 另一种答案:

50、 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态 成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成 员不能访问非静态的成员.因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成 员. Q60.向服务器发送请求有几种方式? 答:get,post。get一般为链接方式,post一般为按钮方式。 Q61.DataReader与Dataset有什么区别? 答:一个是只能向前的只读游标,一个是内存中的表 DataReader是数据库的缓存 DataReader的局限: 只能读取数据;不能修改数据; 只能向前循环数据

51、; 只能处理一个表的数据.而 DataSet很强大,而且与数据库是断开的. Q62.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session 、Cookie、Application , 您有几种方法进行处理? 答:input type=hidden;文件;url (使用Requeststring);数据库; Q63.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层? 答:三层,表现,逻辑,数据; 安全性,维护性 Q64.请编程遍历页面上所有TextBox 控件并给它赋值为string.Empty? 答:foreach(TextBox a

52、as webform1.controls) a.text=; 另答: private void r(Control c) for (int i=0;i 0) this.r(c.Controlsi); public void initTextBox() for(int i = 0; i Controls.Count; i+) Control myControl = Controlsi; myControl.Text = String.Empty; Q65.有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析. 答: 同一个名称空间直接,或者反射 Q66.如果需记录类

53、的实例个数,该如何实现,请写一个简单的类于以证明. 答:const static int classNum=0; classNum+; Q67.A类是B类的基类,并且都有自己的构造,析构函数,请举例证明。B类从实例化到消亡过程中构造,析构 函数的执行过程. 答: 构造先父后子,析够反之 Q68.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话, 仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个. 答:string inputStr= xx xx ; inputStr=Regex.Replace(inputStr.Trim(), *

54、, ); Q69.在c#中using和new这两个关键词有什么意义,请写出你所知道的意义? 答:using 指令和语句 new 创建实例 new 隐藏基类中方法 using 引入名称空间或者使用非托管资源 new 新建实例或者隐藏父类方法 Q70.什么是Application Pool? 答:Web 应用,类似Thread Pool,提高并发性能 Q71.什么是友元函数? 答:friendly 声明,可以访问protect 级别方法 另一种答案:在类的说明语句中,一个函数说明语句之前写上friendly,此函数就成了这个类的友元 函数。它的定义可以在类内,也可以在类外。友元函数可以访问类的对象

55、的私有成员变量。 Q72.什么是虚函数? 答:可以被重写 另一种答案:虚函数:没有实现的,可由子类继承并重写的函数。 Q73.什么是内存泄漏,怎样最简单的方法判断被存泄漏? 答:C+,C 中忘了释放内存,内存不会再次分配 Q74.Socket 怎么实现? 答:不同的语言有不同的方式,有不同的包,有不同的通讯方式! 就java 和c#来说:他们都有net包/名称空间 直接使用类就是了,还要什么实现不实现的? 是c的话还有则说的:比如端口需要监听,数据需要串行和反串行化等等。这个不是一个问题了,是 一个工程! Q75.什么是抽象函数? 答:规定其非虚子类必须实现的函数。必须被重写。 Q76.面向对

56、象的思想主要包括什么? 答:面向对象三大特征:继承,封套,多态. 面相对象的思想也不是一句两句就能说清楚.主要思想就是减少代码重复,增大代码复用率. Q77.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载? CTS、CLS和CLR分别作何解释? 这个需要当前描述了.东西太多.打字要打死了.找个比较简单的说说吧! 答:CTS:公共类型系统.主要是为了语言之间的进行标准化处理. CLS:公共语言规范.主要是确保代码可以在任何语言中访问的最小标准集体 CLR:公共语言运行时.主要是管理代码.处理,加载代码,以及所有服务的代码 Q78.列举一下你所了解的XML技术

57、及其应用 答:xml用于配置,用于保存静态数据类型.接触XML最多的是web Services和web.config Q79.ADO.NET中常用的物件有哪些?分别描述一下。 答:Connection 数据库连接对象 Command 数据库命令 DataReader 数据读取器 DataSet 数据集 Q80.如何理解委托? 答:委托的概念,最好的说明就是事件.因为事件使用的就是委托. 例如:this.Load += new System.EventHandler(this.Page_Load); 这个就是使用了一个委托. Q81. C#中的接口和类有什么异同。 答:类是方法功能的实现和集合,

58、接口是规范类、约束类. Q82. .net中读写数据库需要用到哪些类?他们的作用 答:sqlconnection 连接数据库 sqlcommand 执行T-SQL语句,或存储过程 Q83.udp连接和TCP 连接的异同。 答:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结 Q 中读写XML的类都归属于哪些命名空间? 答:System.XML Q85.解释一下UDDI、WSDL 的意义及其作用。 答:UDDI UDDI 统一描述、发现和集成协议(UDDI, Universal Description, Discovery and Integration)是一套基 于Web的、分布

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论