本文转自:http://www.cnblogs.com/JCSU/articles/1289762.html
120. 请叙述属性与索引器的区别
属性:
(1) 经过名称标识
(3) 经过简单名称或成员访问来访问
(3) 能够为静态成员或实例成员
(4) 属性的get访问器没有参数
(5) 属性的set访问器包含隐式value参数
索引器:
(1) 经过签名标识
(2) 经过元素访问来访问
(3) 必须为实例成员
(4) 索引器的get访问器具备与索引器相同的形参表
(5) 除了value参数外,索引器的set访问器还具备与索引器相同的形参表
121. 请叙述const与readonly的区别。
答:每个class至多只能够定义一个static构造函数,而且不容许增长访问级别关键字,参数列必须为空。为了避免违背编码规则,一般把static数据成员声明为private,而后经过static property提供读写访问。
const关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。
const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。由于它是在编译时就须要彻底评估。
const成员可使用另外一个const成员来初始化,前提是二者之间没有循环依赖。
readonly在运行期评估赋值,使咱们得以在确保"只读访问"的前提下,把object的初始化动做推迟到运行期进行。
readonly关键字与const关键字不一样:const字段只能在该字段的声明中初始化。readonly字段能够在声明或构造函数中初始化。所以,根据所使用的构造函数,readonly字段可能具备不一样的值。另外,const字段是编译时常数,而readonly字段可用于运行时常数。
readonly只能在声明时或者构造函数里面初始化,而且不能在static修饰的构造函数里面。
122. 您须要建立一个ASP.NET应用程序,公司考虑使用Windows身份认证。全部的用户都存在于AllWin这个域中。您想要使用下列认证规则来配置这个应用程序:
a、 匿名用户不容许访问这个应用程序。
b、 全部雇员除了Tess和King都容许访问这个应用程序。
请问您应该使用如下哪个代码段来配置这个应用程序?( A )
A. <authorization>
<deny users="allwin\tess, allwin\king">
<allow users="*">
<deny users="?">
</authorization>
B. <authorization>
<allow users="*">
<deny users="allwin\tess, allwin\king">
<deny users="?">
</authorization>
C. <authorization>
<deny users="allwin\tess, allwin\king">
<deny users="?">
<allow users="*">
</authorization>
D. <authorization>
<allow users="allwin\tess, allwin\king">
<allow users="*">
</authorization>
E.<authorization>
<allow users="*">
<deny users="allwin\tess, allwin\king">
</authorization>
123. 您要建立一个显示公司员工列表的应用程序。您使用一个DataGrid控件显示员工的列表。您打算修改这个控件以便在这个Grid的Footer显示员工合计数。请问您应该怎么作? ( C? )
A.重写OnPreRender事件,当Grid的Footer行被建立时显示合计数
B.重写OnItemCreated事件,当Grid的Footer行被建立时显示合计数
C.重写OnItemDataBound事件,当Grid的Footer行被建立时显示合计数
D.重写OnLayout事件,当Grid的Footer行被建立时显示合计数
123. 您要建立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错误
125. 您为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 文件
126. 您要建立一个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控件
127. 什么是ASP.net中的用户控件
答:用户控件就是.ascx扩展名的东西喽,能够拖到不一样的页面中调用,以节省代码.好比登录可能在多个页面上有,就能够作成用户控件,可是有一个问题就是用户控件拖到不一样级别的目录下后里面的图片等的相对路径会变得不许确,须要自已写方法调整.
128. 值类型和引用类型的区别?写出C#的样例代码。
答:结构是值类型,类是引用类型,因此传结构就是值类型的应用,传对象或类就是引用类型的.
129. 如何理解委托?
答:听说至关于函数指针,定义了委托就能够在不调用原方法名称的状况下调用那个方法.
msdn2005中是这样解释的:
委托具备如下特色:
委托相似于 C++ 函数指针,但它是类型安全的。
委托容许将方法做为参数进行传递。
委托可用于定义回调方法。
委托能够连接在一块儿;例如,能够对一个事件调用多个方法。
方法不须要与委托签名精确匹配。
130. 私有程序集与共享程序集有什么区别?
答:一个私有程序集一般为单个应用程序所使用,而且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集一般存储在全局程序集缓存 (Global Assembly Cache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集一般是对许多应用程序都有用的代码库,好比.NET Framework类
131. CLR与IL分别是什么含义?
答:CLR:公共语言运行时,相似于Java中的JVM,Java虚拟机;在.Net环境下,各类编程语言使用一种共同的基础资源环境,这就是 CLR,CLR将直接与*做系统进行通讯,而编程语言如C#.NET将尽可能避免直接与*做系统直接通讯,增强了程序代码的执行安全性,能够这样看:CLR 就是具体的编程语言如:C#.NET与*做系统之间的翻译,同时它为具体的编程语言提供了许多资源:
IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;全部.NET源代码 (无论用哪一种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时 (Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。
132. 请解释ASP.NET中以什么方式进行数据验证
答:Aps.net 中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件
133. WEB控件能够激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为何要使用自动传回
答:在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,而后根据传回的状态信息自动调用服务端事件自动传回是当咱们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端
只有经过自动传回才能实现服务端事件的机制,若是没有自动回传机制就只能调用客户端事件,而不能调用服务端事件
134. 请解释web.config文件中的重要节点
appSettings包含自定义应用程序设置。
system.web 系统配置
compilation动态调试编译设置
customErrors自定义错误信息设置
authentication身份验证,此节设置应用程序的身份验证策略
authorization受权, 此节设置应用程序的受权策略
135. 请解释ASP.NET中的web页面与其隐藏类之间的关系?
答:一个ASP.NET页面通常都对应一个隐藏类,通常都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明以下
<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>
Codebehind="Tst1.aspx.cs" 代表经编译此页面时使用哪个代码文件
Inherits="T1.Tst1" 表用运行时使用哪个隐藏类
136. 什么是viewstate,可否禁用?是否所用控件均可以禁用?
答:Viewstate是保存状态的一种机制,EnableViewState属性设置为false便可禁用
137. 当发现不能读取页面上的输入的数据时颇有多是什么缘由形成的?怎么解决
答:颇有多是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断
138. 请解释什么是上下文对象,在什么状况下要使用上下文对象
答:上下文对象是指HttpContext类的Current 属性,当咱们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象
139. 请解释转发与跳转的区别?
答:转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理而后从服务端跳转到其它页面; 跳转就是指客户端的跳转
140. new有几种用法
第一种:new Class();
第二种:覆盖方法 public new XXXX() { }
第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数
141. 如何把一个array复制到arrayList里
答:foreach( object o in array )arrayList.Add(o);
142. datagrid.datasouse能够链接什么数据源 [dataset,datatable,dataview,IList]
143. 什么是Windows服务,它的生命周期与标准的EXE程序有什么不一样
答:Windows服务是运行在windows后台指定用户下(默认System)的应用程序,它没有标准的UI界面,想比标准的EXE程序,Windows服务是在服务开始的时候建立,而在服务结束的时候销毁,并且能够设置服务是否与操做系统一块儿启动,一块儿关闭。它支持三种方式:1)自动方式 2)手动方式 3)禁用。自动方式的时候,windows服务将在OS启动后自动启动运行,而手动方式则必须手工启动服务,禁用的状况下服务将不能被启动。另外标准的 EXE默认使用的当前登陆的用户,而windows服务则默认使用System用户,这在对系统资源访问的时候特别须要注意。
144. Windows单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存同样吗?这对于系统设计有什么影响?
答:这个须要针对硬件平台,公式为单个进程能访问的最大内存量=2的处理器位数次方/2,好比一般状况下,32位处理器下,单个进程所能访问的最大内存量为:232 /2 = 2G 。单个进程能访问的最大内存量是最大虚拟内存的1/2,由于要分配给操做系统一半虚拟内存。
145. 什么是强类型,什么是弱类型?哪一种更好些?为何?
答:强类型是在编译的时候就肯定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会肯定类型。没有好很差,两者各有好处,强类型安全,由于它事先已经肯定好了,并且效率高。通常用于编译型编程语言,如c++,java,c#,pascal等,弱类型相比而言不安全,在运行的时候容易出现错误,但它灵活,多用于解释型编程语言,如javascript,vb等
146. PID是什么?在作系统的故障排除时如何使用它?
PID是进程编号,在系统发现故障的时候,能够根据它寻找故障所发生的具体进程,而且可经过visual studio.net等ide将故障进程附加到进程中进行调试(debug)
147. 阐述面向接口、面向对象、面向方面编程的区别
答:面向接口更关注的是概念,它的原则是先定义好行为规范,再根据行为规范建立实现,严格的来讲,面向接口应该是面向对象中的一部分吧,由于面向对象也强调的是本末倒置原则,也就是实现依赖于抽象,而抽象不依赖于具体实现,更具比较的应该是面向接口与面向抽象对象,个人体会是面向接口更加灵活,但实现时候,稍微有些代码冗余,而面向抽象能够结合面向接口,先定义接口,再定义抽象类,在抽象类中处理一些公共逻辑,再实现具体实现类。面向对象是对复杂问题的分解。面向方面的编程是一种新概念,它解决了不少面向对象没法解决的问题,好比面向对象技术只能对业务相关的代码模块化,而没法对和业务无关的代码模块化。而面向方面正是解决这一问题的方案,它的关键思想是"将应用程序中的商业逻辑与对其提供支持的通用服务进行分离"。
148. 从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别?
答:这个就像是强弱类型的比较类似,前期绑定是在编译的时候就肯定了要绑定的数据,然后期绑定是在运行的时候才填充数据。因此前期绑定若是失败,会在编译时报编译错误,然后期绑定失败只有在运行时的时候才发生
149. 调用Assembly.Load算静态引用仍是动态引用?
答:动态
150. SQL SREVER中,向一个表中插入了新数据,如何快捷的获得自增量字段的当前值
答:
INSERT INTO jobs (job_desc,min_lvl,max_lvl) VALUES ('Accountant',12,125)
SELECT @@IDENTITY AS 'Identity'
151. DateTime.Parse(myString); 这行代码有什么问题?
答:有问题,当myString不能知足时间格式要求的时候,会引起异常,建议使用DateTime.TryParse()
152. PDB是什么东西? 在调试中它应该放在哪里?
答:PDB是用于保存调试和项目状态信息的文件,在debug的时候将产生pdb文件,调试的时候应该放在和对应应用程序集相同目录。
153. 写一个标准的lock(),在访问变量的先后建立临界区,要有"双重检查",lock的使用
public
void
LockTest()
{
Object lockObj
=
new
Object();
lock
(lockObj)
{
//
}
}
154. 对比OOP和SOA,它们的目的分别是什么?
答:我想OOP和SOA应该没有对比性吧。OOP是一种编程模型,强调将复杂的逻辑分解出小的模块,特性是继承,封装和多态。而SOA是一个技术框架,技术框架和编程模型应该说不是一码事吧?SOA的思想是将业务逻辑封装成服务或者中间件提供给应用程序来调用,固然其组件化思想是继承和发扬了OOP的优势。
155. XmlSerializer是如何工做的?使用这个类的进程须要什么ACL权限?
答:我只知道XmlSerializer是将对象的属性和字段进行序列化和反序列化的,序列化成为xml数据,反序列化再将xml转换成对象。应该至少须要ACL权限中的读权限.
156. 为何不提倡catch(Exception)?
答:缘由可能有两点:1. try...catch在出现异常的时候影响性能 2.应该捕获更具体得异常,好比IOExeception,OutOfMemoryException等
157. Debug.Write和Trace.Write有什么不一样?什么时候应该使用哪个?
答:Debug.Write是调试的时候向跟踪窗口输出信息。当编译模式为debug的时候才有效,为release的时候Debug.Write在编译的时候会忽略,而Trace则是在debug和release两种模式下都可以向跟踪窗口输出信息。
158. Debug Build和Release Build的区别,是否会有明显的速度变化?请说明理由。
答:Debug会产生pdb文件,release不会。Debug用于开发时的调试,不能要于部署,而release用于部署.debug编译一些特殊代码,好比#IFDEBUG Debug.Write等,而Release则会将那些特殊标记省略
159. JIT是以assembly为单位发生仍是以方法为单位发生?这对于工做区有何影响?
答:方法,道理很简单,由于对于一次运行,极可能只用到一个程序集中极少数类型和对象,而大部分可能并不会被使用,此时CLR傻乎乎的给整个程序集都给Compile了,CLR不是傻疯了么
160. a.Equals(b)和a == b同样吗?
答:不同。a.Equals(b)表示a与b一致, a==b表示a与b的值相等
161. 在对象比较中,对象一致和对象相等分别是指什么?
答:对象一致是指两个对象是同一个对象,引用相同。而对象相等是指两个对象的值相同,但引用不必定相同
162. 在.NET中如何实现深拷贝(deep copy)?
答:实现IClonable接口
163. 请解释一下IClonable
答:IClonable方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。深度复制的特征的调用对象的构造方法,建立新的对象,包括建立对象中嵌套的引用对象的新实例。而Shadow复制则不一样,是浅表复制,不从新建立新实例。浅表复制的实现是 Object.MemberWiseClone().
深度复制(Deep Copy)与浅表复制(Shadow Copy)的比较
public
class
Name
{
public
string
FirstName;
public
string
LastName;
}
public
class
Person : ICloneable
{
public
Name PersonName;
public
string
Email;
///
<summary>
///
Deep Copy的例子
///
</summary>
///
<returns></returns>
public
Object Clone()
{
Person 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();
p.PersonName
=
new
Name();
p.PersonName.LastName
=
"san
"
;
p.PersonName.FirstName
=
"
zhang
"
;
p.Email
=
"san
zhang@126.com
"
;
Person sameNamePerson
=
p.Clone()
as
Person;
sameNamePerson.ChangLastName(
"
clr_
"
);
Console.WriteLine(p.PersonName.LastName);
Console.WriteLine(sameNamePerson.PersonName.LastName);
Person samePerson
=
p.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.string是值类型仍是引用类型?
答:引用类型
166. XmlSerializer使用的针对属性的模式有什么好处?解决了什么问题?
答:只序列化有用的数据,而不是序列化整个对象。实现不必的数据冗余,和提高序列化时的性能。
167. 为何不该该在.NET中使用out参数?它究竟好很差?
答:我挺喜欢用out参数的,特别是当函数须要有多于1个返回的时候,我比较愿意用out,至于它好很差没研究过 ?
168. 特性可以放到某个方法的参数上?若是能够,这有什么用?
答:能够,做用能够对参数有进一步限定,好比输入参数为int类型,能够经过容许AttributeTargets=ParameterInfo的Attribute自定义实现来限定输入参数的大小,好比当输入参数小于100的时候便报错。
对方法的参数设置Attribute的例子
[AttributeUsage(AttributeTargets.Parameter)]
public
class
ParameterAtt : Attribute
{
public
int
Min
=
100
;
}
public
class
AttributeTest
{
public
void
TestMethod([ParameterAtt(Min
=
100
)]
int
par1)
{
ParameterInfo para
=
MethodInfo.GetCurrentMethod().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引用类型(尽供参考)。
170. 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 < 100; i++ ) Console.WriteLine( i );中,请指出i++的执行时机。
答案:在Console.WriterLine( i );执行以后(尽供参考)。
173. 试说明continue关键字的用处。
答案:立刻开始下一次循环,忽略循环体余下的语句(尽供参考)。
174. object是C#的关键字吗?请指出C#中有哪些类型关键字,如int、float。(提示,写得越多越好)。
答案:是,object、int、uint、long、ulong、short、ushort、byte、sbyte、char、float、double、decimal、bool,如回答:enum、struct、class、delegate也算对(尽供参考)。
175. C#的XML文档注释中(以///开头的注释),<summary>标签用于描述什么?<param>标签呢?
答案:<summary>用于某个元素的概要说明,<param>用于某个方法的参数概要说明(尽供参考)。
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. 当对数据库进行海量级的数据插入时,数据库出现报错,错误缘由可能有哪些,以你的经验谈谈你的解决办法
186. 算法分析 AH 20060625 12 44 01 CAD001 AH 20060625 12 44 01 CAD001 AH 20060625 13 44 02 CAD001 AH 20060625 14 44 03 CAD001 说明:第二列表示日期,第三列表示温度,第四列表示水位,第五列表示流量,第6列表示水位测站编码,每一列表示一个字段 很明显第一条数据和第二条数据重复,然数据表中有主键和外键的约束,是不容许有重复的数据存在的,请构造算法将重复的数据Del掉