1、120. 请叙述属性与索引器的区别属性:(1) 通过名称标识(3) 通过简单名称或成员访问来访问(3) 可以为静态成员或实例成员(4) 属性的 get 访问器没有参数(5) 属性的 set 访问器包含隐式 value 参数 索引器:(1) 通过签名标识(2) 通过元素访问来访问(3) 必须为实例成员(4) 索引器的 get 访问器具有与索引器相同的形参表(5) 除了 value 参数外,索引器的 set 访问器还具有与索引器相同的形参表121. 请叙述 const 与 readonly 的区别。答:每一个 class 至多只可以定义一个 static 构造函数,并且不允许增加访问级别关键字,参
2、数列必须为空。为了不违背编码规则,通常把 static 数据成员声明为 private,然后通过static property 提供读写访问。const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。const 数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。const 成员可以使用另一个 const 成员来初始化,前提是两者之间没有循环依赖。readonly 在运行期评估赋值,使我们得以在确保“只读访问“的前提下,把 object 的初始化动作推迟到运行期进行。readonly 关键字与
3、 const 关键字不同: const 字段只能在该字段的声明中初始化。readonly字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而 readonly 字段可用于运行时常数。 readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。122. 您需要创建一个 ASP.NET 应用程序,公司考虑使用 Windows 身份认证。所有的用户都存在于 AllWin 这个域中。您想要使用下列认证规则来配置这个应用程序:a、 匿名用户不允许访问这个应用程序。b、 所有雇
4、员除了 Tess 和 King 都允许访问这个应用程序。请问您应该使用以下哪一个代码段来配置这个应用程序?( A )A. B. C. D. E.123. 您要创建一个显示公司员工列表的应用程序。您使用一个 DataGrid 控件显示员工的列表。您打算修改这个控件以便在这个 Grid 的 Footer 显示员工合计数。请问您应该怎么做? ( C? )A.重写 OnPreRender 事件,当 Grid 的 Footer 行被创建时显示合计数B.重写 OnItemCreated 事件,当 Grid 的 Footer 行被创建时显示合计数 C.重写 OnItemDataBound 事件,当 Grid
5、 的 Footer 行被创建时显示合计数D.重写 OnLayout 事件,当 Grid 的 Footer 行被创建时显示合计数123. 您要创建 ASP.NET 应用程序用于运行 AllWin 公司内部的 Web 站点,这个应用程序包含了 50 个页面。您想要配置这个应用程序以便当发生一个 HTTP 代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标,您应该怎么做?(多选) ( CD )A.在这个应用程序的 Global.asax 文件中创建一个 Application_Error 过程去处理 ASP.NET代码错误B.在这个应用程序的 Web.config 文件中
6、创建一个 applicationError 节去处理 ASP.NET 代码错误C.在这个应用程序的 Global.asax 文件中创建一个 CustomErrors 事件去处理 HTTP 错误D.在这个应用程序的 Web.config 文件中创建一个 CustomErrors 节去处理 HTTP 错误E.在这个应用程序的每一页中添加一个 Page 指示符去处理 ASP.NET 代码错误F.在这个应用程序的每一页中添加一个 Page 指示符去处理 ASP.NET HTTP 错误125. 您为 AllWin 公司创建了一个 ASP.NET 应用程序。这个应用程序调用一个 Xml Web Servi
7、ce。这个 Xml Web Service 将返回一个包含了公司雇员列表的 DataSet 对象。请问您该如何在这个程序中使用这个 Xml Web Service?( ? )A.在 “引用“对话框的.Net 标签中选择 System.Web.Services.dllB.在“Web 引用 “对话框中输入这个 XML Web service 的地址C.在您的 Global.asax.cs 中添加一条 using 语句并指定这个 XML Web service 的地址D.在您的 Global.asax.cs 中写一个事件处理器导入这个 Xml Web Service 相应的.wsdl 和.disco
8、 文件126. 您要创建一个 ASP.NET 应用程序在 DataGrid 控件中显示一个经过排序的列表。产品数据被存放于一个名为 PubBase 的 Microsoft SQL Server 数据库。每个产品的主键是ProductID,Numeric 型并且每个产品有一个字母描述字段,名为 ProductName。您使用一个 SqlDataAdapter 对象和一个 SqlCommand 对象通过调用一个存储过程从数据库中获取产品数据。您将 SqlCommand 对象的 CommandType 属性设置为CommandType.StoredProcedure,并将它的 CommandText
9、 属性设置为procProductList。您成功的获取了一个 DataTable 对象,其中是已经按 ProductID 降序排列的产品列表。您打算显示以相反的字母顺序排列的 ProductName,请问该怎么做? ( B )A. 将 SqlCommand 对象的 CommandType 属性修改为 CommandType.Text,将CommandText 属性修改为“SELECT * FROM procProductList ORDER BY ProductName DESC“。然后将这个 DataTable 对象绑定到 DataGrid 控件B. 创建一个基于这个 DataTable
10、对象的新的 DataView 并将这个 DataView 的 Sort 属性设置为“ProductName DESC“。然后将这个 DataView 对象绑定到 DataGrid 控件C. 将 DataGrid 控件的 AllowSorting 属性设置为 True,并将 DataGridColumn 的SortExpression 属性设置为 “ProductName DESC“.以显示 ProductName。然后将这个DataTable 对象绑定到 DataGrid 控件D. 将 DataTable 对象的 DisplayExpression 属性设置为 “ORDER BY Produc
11、tName DESC“.。然后将这个 DataTable 对象绑定到 DataGrid 控件127. 什么是 ASP.net 中的用户控件答:用户控件就是.ascx 扩展名的东西喽,可以拖到不同的页面中调用 ,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.128. 值类型和引用类型的区别?写出 C#的样例代码。答:结构是值类型,类是引用类型,所以传结构就是值类型的应用,传对象或类就是引用类型的.129. 如何理解委托?答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的
12、情况下调用那个方法.msdn2005 中是这样解释的:委托具有以下特点:委托类似于 C+ 函数指针,但它是类型安全的。委托允许将方法作为参数进行传递。委托可用于定义回调方法。委托可以链接在一起;例如,可以对一个事件调用多个方法。方法不需要与委托签名精确匹配。130. 私有程序集与共享程序集有什么区别?答:一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集通常存储在全局程序集缓存 (Global Assembly Cache)之中,这是一个由.NET 运行时所维护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如.N
13、ET Framework 类131. CLR 与 IL 分别是什么含义?答:CLR:公共语言运行时,类似于 Java 中的 JVM,Java 虚拟机;在.Net 环境下,各种编程语言使用一种共同的基础资源环境,这就是 CLR,CLR 将直接与*作系统进行通信,而编程语言如 C#.NET 将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性,可以这样看:CLR 就是具体的编程语言如:C#.NET 与*作系统之间的翻译,同时它为具体的编程语言提供了许多资源:IL,中间语言,也称 MSIL,微软中间语言,或 CIL,通用中间语言;所有 .NET 源代码 (不管用哪种语言编写)在进行编译时都被
14、编译成 IL。在应用程序运行时被即时 (Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。132. 请解释 ASP.NET 中以什么方式进行数据验证答:A 中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件133. WEB 控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回答:在 web 控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load 事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的
15、形式将数据直接传回到务端只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件134. 请解释 web.config 文件中的重要节点appSettings 包含自定义应用程序设置。system.web 系统配置compilation 动态调试编译设置customErrors 自定义错误信息设置authentication 身份验证,此节设置应用程序的身份验证策略authorization 授权, 此节设置应用程序的授权策略135. 请解释 ASP.NET 中的 web 页面与其隐藏类之间的关系?答:一个 ASP.NET 页面一般都对应一个隐藏
16、类,一般都在 ASP.NET 页面的声明中指定了隐藏类例如一个页面 Tst1.aspx 的页面声明如下Codebehind=“Tst1.aspx.cs“ 表明经编译此页面时使用哪一个代码文件Inherits=“T1.Tst1“ 表用运行时使用哪一个隐藏类136. 什么是 viewstate,能否禁用?是否所用控件都可以禁用?答:Viewstate 是保存状态的一种机制,EnableViewState 属性设置为 false 即可禁用137. 当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决答:很有可能是在 Page_Load 中数据处理时没有进行 Page 的 IsPost
17、Back 属性判断138. 请解释什么是上下文对象,在什么情况下要使用上下文对象答:上下文对象是指 HttpContext 类的 Current 属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction 等)时就要以使用此对象139. 请解释转发与跳转的区别?答:转发就是服务端的跳转 A 页面提交数据到 B 页面,B 页面进行处理然后从服务端跳转到其它页面; 跳转就是指客户端的跳转140. new 有几种用法第一种:new Class();第二种:覆盖方法 public new XXXX() 第三种:new 约束指定泛型类声
18、明中的任何类型参数都必须有公共的无参数构造函数141. 如何把一个 array 复制到 arrayList 里答:foreach( object o in array )arrayList.Add(o);142. datagrid.datasouse 可以连接什么数据源 dataset,datatable,dataview,IList143. 什么是 Windows 服务,它的生命周期与标准的 EXE 程序有什么不同 答:Windows 服务是运行在 windows 后台指定用户下(默认 System)的应用程序,它没有标准的 UI 界面,想比标准的 EXE 程序,Windows 服务是在服务
19、开始的时候创建,而在服务结束的时候销毁,而且可以设置服务是否与操作系统一起启动,一起关闭。它支持三种方式:1)自动方式 2)手动方式 3)禁用。自动方式的时候, windows 服务将在 OS 启动后自动启动运行,而手动方式则必须手工启动服务,禁用的情况下服务将不能被启动。另外标准的 EXE 默认使用的当前登录的用户,而 windows 服务则默认使用 System 用户,这在对系统资源访问的时候特别需要注意。 144. Windows 单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗?这对于系统设计有什么影响? 答:这个需要针对硬件平台,公式为单个进程能访问的最大内存量=2
20、的处理器位数次方/2,比如通常情况下,32 位处理器下,单个进程所能访问的最大内存量为:232 /2 = 2G 。单个进程能访问的最大内存量是最大虚拟内存的 1/2,因为要分配给操作系统一半虚拟内存。 145. 什么是强类型,什么是弱类型?哪种更好些?为什么? 答:强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会确定类型。没有好不好,二者各有好处,强类型安全,因为它事先已经确定好了,而且效率高。一般用于编译型编程语言,如 c+,java,c#,pascal 等,弱类型相比而言不安全,在运行的时候容易出现错误,但它灵活,多用于解释型编程语言,如 javascr
21、ipt,vb 等 146. PID 是什么?在做系统的故障排除时如何使用它? PID 是进程编号,在系统发现故障的时候,可以根据它寻找故障所发生的具体进程,并且可通过 visual 等 ide 将故障进程附加到进程中进行调试(debug) 147. 阐述面向接口、面向对象、面向方面编程的区别 答:面向接口更关注的是概念,它的原则是先定义好行为规范,再根据行为规范创建实现,严格的来说,面向接口应该是面向对象中的一部分吧,因为面向对象也强调的是本末倒置原则,也就是实现依赖于抽象,而抽象不依赖于具体实现,更具比较的应该是面向接口与面向抽象对象,我的体会是面向接口更加灵活,但实现时候,稍微有些代码冗
22、余,而面向抽象可以结合面向接口,先定义接口,再定义抽象类,在抽象类中处理一些公共逻辑,再实现具体实现类。面向对象是对复杂问题的分解。面向方面的编程是一种新概念,它解决了很多面向对象无法解决的问题,比如面向对象技术只能对业务相关的代码模块化,而无法对和业务无关的代码模块化。而面向方面正是解决这一问题的方案,它的关键思想是“将应用程序中的商业逻辑与对其提供支持的通用服务进行分离“。 148. 从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别? 答:这个就像是强弱类型的比较相似,前期绑定是在编译的时候就确定了要绑定的数据,而后期绑定是在运行的时候才填充数
23、据。所以前期绑定如果失败,会在编译时报编译错误,而后期绑定失败只有在运行时的时候才发生 149. 调用 Assembly.Load 算静态引用还是动态引用? 答:动态 150. SQL SREVER 中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值 答:INSERT INTO jobs (job_desc,min_lvl,max_lvl) VALUES (Accountant,12,125) SELECT IDENTITY AS Identity151. DateTime.Parse(myString); 这行代码有什么问题?答:有问题,当 myString 不能满足时间格式要求的
24、时候,会引发异常,建议使用DateTime.TryParse() 152. PDB 是什么东西? 在调试中它应该放在哪里? 答:PDB 是用于保存调试和项目状态信息的文件,在 debug 的时候将产生 pdb 文件,调试的时候应该放在和对应应用程序集相同目录。 153. 写一个标准的 lock(),在访问变量的前后创建临界区,要有“双重检查“,lock 的使用public void LockTest()Object lockObj = new Object();lock (lockObj)/154. 对比 OOP 和 SOA,它们的目的分别是什么? 答:我想 OOP 和 SOA 应该没有对比性
25、吧。OOP 是一种编程模型,强调将复杂的逻辑分解出小的模块,特性是继承,封装和多态 。而 SOA 是一个技术框架,技术框架和编程模型应该说不是一码事吧?SOA 的思想是将业务逻辑封装成服务或者中间件提供给应用程序来调用,当然其组件化思想是继承和发扬了 OOP 的优点。 155. XmlSerializer 是如何工作的?使用这个类的进程需要什么 ACL 权限? 答:我只知道 XmlSerializer 是将对象的属性和字段进行序列化和反序列化的,序列化成为xml 数据,反序列化再将 xml 转换成对象。应该至少需要 ACL 权限中的读权限. 156. 为什么不提倡 catch(Exceptio
26、n)? 答:原因可能有两点:1. try.catch 在出现异常的时候影响性能 2.应该捕获更具体得异常,比如 IOExeception,OutOfMemoryException 等 157. Debug.Write 和 Trace.Write 有什么不同?何时应该使用哪一个? 答:Debug.Write 是调试的时候向跟踪窗口输出信息。当编译模式为 debug 的时候才有效,为 release 的时候 Debug.Write 在编译的时候会忽略,而 Trace 则是在 debug 和 release 两种模式下均可以向跟踪窗口输出信息。 158. Debug Build 和 Release
27、Build 的区别,是否会有明显的速度变化?请说明理由。 答:Debug 会产生 pdb 文件,release 不会。Debug 用于开发时的调试,不能要于部署,而release 用于部署.debug 编译一些特殊代码,比如#IFDEBUG Debug.Write 等,而Release 则会将那些特殊标记省略 159. JIT 是以 assembly 为单位发生还是以方法为单位发生?这对于工作区有何影响? 答:方法,道理很简单,因为对于一次运行,很可能只用到一个程序集中极少数类型和对象,而大部分可能并不会被使用,此时 CLR 傻乎乎的给整个程序集都给 Compile 了,CLR 不是傻疯了么
28、160. a.Equals(b)和 a = b 一样吗? 答:不一样。a.Equals(b) 表示 a 与 b 一致, a=b 表示 a 与 b 的值相等 161. 在对象比较中,对象一致和对象相等分别是指什么? 答:对象一致是指两个对象是同一个对象,引用相同。而对象相等是指两个对象的值相同,但引用不一定相同 162. 在.NET 中如何实现深拷贝(deep copy)? 答:实现 IClonable 接口 163. 请解释一下 IClonable 答:IClonable 方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。深度复制的特征的调用对象的构造方法,创建新的对象,包括创建对象
29、中嵌套的引用对象的新实例。而Shadow 复制则不同,是浅表复制,不重新创建新实例。浅表复制的实现是Object.MemberWiseClone().深度复制(Deep Copy)与浅表复制 (Shadow Copy)的比较public class Namepublic string FirstName;public string LastName;public class Person : ICloneablepublic Name PersonName;public string Email;/ / Deep Copy 的例子/ / public Object Clone()Person
30、p = new Person();p.Email = this.Email;p.PersonName = new Name();p.PersonName.FirstName = this.PersonName.FirstName;p.PersonName.LastName = this.PersonName.LastName;return p;public void ChangLastName(string lastName)this.PersonName.LastName = lastName;public static void Main()Person p = new Person();
31、p.PersonName = new Name();p.PersonName.LastName = “san“;p.PersonName.FirstName = “zhang“;p.Email = ““;Person sameNamePerson = p.Clone() as Person;sameNamePerson.ChangLastName(“clr_“);Console.WriteLine(p.PersonName.LastName);Console.WriteLine(sameNamePerson.PersonName.LastName);Person samePerson = p.
32、MemberwiseClone() as Person;samePerson.ChangLastName(“Shadow“);Console.WriteLine(p.PersonName.LastName);Console.WriteLine(sameNamePerson.PersonName.LastName);Console.Read();164.什么叫装箱? 答:装箱(boxing)是将值类型的数据转化成引用类型,int i=3; object o = i ;便是装箱过程,而拆箱(unboxing)是将饮用类型数据转换值类型,比如 int j = (int)o;属于拆箱 165.stri
33、ng 是值类型还是引用类型? 答:引用类型 166. XmlSerializer 使用的针对属性的模式有什么好处?解决了什么问题? 答:只序列化有用的数据,而不是序列化整个对象。实现没必要的数据冗余,和提升序列化时的性能。 167. 为什么不应该在.NET 中使用 out 参数?它究竟好不好 ? 答:我挺喜欢用 out 参数的,特别是当函数需要有多于 1 个返回的时候,我比较愿意用 out,至于它好不好没研究过 ? 168. 特性能够放到某个方法的参数上?如果可以,这有什么用? 答:可以,作用可以对参数有进一步限定,比如输入参数为 int 类型,可以通过允许AttributeTargets=P
34、arameterInfo 的 Attribute 自定义实现来限定输入参数的大小,比如当输入参数小于 100 的时候便报错。对方法的参数设置 Attribute 的例子AttributeUsage(AttributeTargets.Parameter)public class ParameterAtt : Attributepublic int Min = 100;public class AttributeTestpublic void TestMethod(ParameterAtt(Min = 100) int par1)ParameterInfo para = MethodInfo.Ge
35、tCurrentMethod().GetParameters()0;ParameterAtt att = ParameterAtt.GetCustomAttribute(para, typeof(ParameterAtt) as ParameterAtt;if (att.Min par1)throw new Exception(“要求 para1 最小为“ + att.Min);169. delegate 是引用类型还是值类型?enum、int和 string 呢( 难度系数 40%)?答案:delegate 引用类型,enum 值类型,int引用类型,string 引用类型(尽供参考) 。1
36、70. base 这个关键字有哪几种语法?override 呢?答案:base 两个语法,分别是调用基类构造函数和调用基类方法,override 用于重写基类方法(尽供参考)。171. 请指出 C#中是否有下列关键字?virtual、 sealed、abstract 、import 、as、in、goto、final、Const、signed 、String(提示,仅指出 C#中没有的即可)答案:没有的关键字:import、final、Const、signed、String(尽供参考) 。172. 在循环:for( int i = 0; i 标签用于描述什么?标签呢?答案:用于某个元素的概要说
37、明,用于某个方法的参数概要说明( 尽供参考)。176. 我们知道是数组和索引器的访问操作符,但它还有一个语法,是什么?答案:特性(Attribute)(尽供参考) 177. 请用代码简单描述一下 Singleton、抽象工厂、Bridge、Composite(任选三个)的设计模式的概念178. a=10,b=15,在不用第三方变题的前提下,把 a,b 的值互换179. 已知数组 int max=6,5,2,9,7,4,0;用快速排序算法按降序对其进行排列,并返回数组180. 请简述面向对象的多态的特性及意义181. session 喜欢丢值且占内存,Cookis 不安全,请问用什么办法代替这两种原始的方法182. 对数据的并发采用什么办法进行处理较好。183. 已知 Oracle 数据库有 GD 和 ZS 两个数据库,GD 数据库 v_s 表有数据写入时,从 v_s表中提取最新数据到 ZS 数据库的 D_E 表中。请问用什么办法解决这一问题?如果又碰到不能互访的问题时,又用什么办法解决?184. 已知 Oracle 数据库 a,b。现在在 a 用户权限下,访问 b 数据库 sql 语句为 select a.* From b a,请改正这一句 Sql 的写法185. 当对数据库进行海量级的数据插入时,数据库出现报错,错误原因可能有哪些,以你的经验谈谈你的解决办法1AH