C#面试题2Word文档下载推荐.docx
《C#面试题2Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C#面试题2Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
![C#面试题2Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-12/13/0b2cc466-a76a-4506-b148-f9830a9ebdf7/0b2cc466-a76a-4506-b148-f9830a9ebdf71.gif)
readonly只能在声明时或者构造函数里面初始化,并且不能在static修饰的构造函数里面。
122.您需要创建一个ASP.NET应用程序,公司考虑使用Windows身份认证。
所有的用户都存在于AllWin这个域中。
您想要使用下列认证规则来配置这个应用程序:
a、匿名用户不允许访问这个应用程序。
b、所有雇员除了Tess和King都允许访问这个应用程序。
请问您应该使用以下哪一个代码段来配置这个应用程序?
(A)
A.<
authorization>
<
denyusers="
allwin\tess,allwin\king"
>
allowusers="
*"
?
"
<
/authorization>
B.<
C.<
D.<
E.<
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.NETHTTP错误
125.您为AllWin公司创建了一个ASP.NET应用程序。
这个应用程序调用一个XmlWebService。
这个XmlWebService将返回一个包含了公司雇员列表的DataSet对象。
请问您该如何在这个程序中使用这个XmlWebService?
(?
A.在"
引用"
对话框的.Net标签中选择System.Web.Services.dll
B.在"
Web引用"
对话框中输入这个XMLWebservice的地址
C.在您的Global.asax.cs中添加一条using语句并指定这个XMLWebservice的地址
D.在您的Global.asax.cs中写一个事件处理器导入这个XmlWebService相应的.wsdl和.disco文件
126.您要创建一个ASP.NET应用程序在DataGrid控件中显示一个经过排序的列表。
产品数据被存放于一个名为PubBase的MicrosoftSQLServer数据库。
每个产品的主键是ProductID,Numeric型并且每个产品有一个字母描述字段,名为ProductName。
您使用一个SqlDataAdapter对象和一个SqlCommand对象通过调用一个存储过程从数据库中获取产品数据。
您将SqlCommand对象的CommandType属性设置为CommandType.StoredProcedure,并将它的CommandText属性设置为procProductList。
您成功的获取了一个DataTable对象,其中是已经按ProductID降序排列的产品列表。
您打算显示以相反的字母顺序排列的ProductName,请问该怎么做?
(B)
A.将SqlCommand对象的CommandType属性修改为CommandType.Text,将CommandText属性修改为"
SELECT*FROMprocProductListORDERBYProductNameDESC"
。
然后将这个DataTable对象绑定到DataGrid控件
B.创建一个基于这个DataTable对象的新的DataView并将这个DataView的Sort属性设置为"
ProductNameDESC"
然后将这个DataView对象绑定到DataGrid控件
C.将DataGrid控件的AllowSorting属性设置为True,并将DataGridColumn的SortExpression属性设置为"
.以显示ProductName。
D.将DataTable对象的DisplayExpression属性设置为"
ORDERBYProductNameDESC"
.。
127.什么是ASP.net中的用户控件
用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.
128.值类型和引用类型的区别?
写出C#的样例代码。
结构是值类型,类是引用类型,所以传结构就是值类型的应用,传对象或类就是引用类型的.
129.如何理解委托?
据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.
msdn2005中是这样解释的:
委托具有以下特点:
委托类似于C++函数指针,但它是类型安全的。
委托允许将方法作为参数进行传递。
委托可用于定义回调方法。
委托可以链接在一起;
例如,可以对一个事件调用多个方法。
方法不需要与委托签名精确匹配。
130.私有程序集与共享程序集有什么区别?
一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。
共享程序集通常存储在全局程序集缓存(GlobalAssemblyCache)之中,这是一个由.NET运行时所维护的程序集仓库。
共享程序集通常是对许多应用程序都有用的代码库,比如.NETFramework类
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中以什么方式进行数据验证
A中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件
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的页面声明如下
<
%@Pagelanguage="
c#"
Codebehind="
Tst1.aspx.cs"
AutoEventWireup="
false"
Inherits="
T1.Tst1"
%>
Codebehind="
表明经编译此页面时使用哪一个代码文件
Inherits="
表用运行时使用哪一个隐藏类
136.什么是viewstate,能否禁用?
是否所用控件都可以禁用?
Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用
137.当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?
怎么解决
很有可能是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断
138.请解释什么是上下文对象,在什么情况下要使用上下文对象
上下文对象是指HttpContext类的Current属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象
139.请解释转发与跳转的区别?
转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面;
跳转就是指客户端的跳转
140.new有几种用法
第一种:
newClass();
第二种:
覆盖方法publicnewXXXX(){}
第三种:
new约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数
141.如何把一个array复制到arrayList里
foreach(objectoinarray)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等ide将故障进程附加到进程中进行调试(debug)
147.阐述面向接口、面向对象、面向方面编程的区别
面向接口更关注的是概念,它的原则是先定义好行为规范,再根据行为规范创建实现,严格的来说,面向接口应该是面向对象中的一部分吧,因为面向对象也强调的是本末倒置原则,也就是实现依赖于抽象,而抽象不依赖于具体实现,更具比较的应该是面向接口与面向抽象对象,我的体会是面向接口更加灵活,但实现时候,稍微有些代码冗余,而面向抽象可以结合面向接口,先定义接口,再定义抽象类,在抽象类中处理一些公共逻辑,再实现具体实现类。
面向对象是对复杂问题的分解。
面向方面的编程是一种新概念,它解决了很多面向对象无法解决的问题,比如面向对象技术只能对业务相关的代码模块化,而无法对和业务无关的代码模块化。
而面向方面正是解决这一问题的方案,它的关键思想是"
将应用程序中的商业逻辑与对其提供支持的通用服务进行分离"
148.从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别?
这个就像是强弱类型的比较相似,前期绑定是在编译的时候就确定了要绑定的数据,而后期绑定是在运行的时候才填充数据。
所以前期绑定如果失败,会在编译时报编译错误,而后期绑定失败只有在运行时的时候才发生
149.调用Assembly.Load算静态引用还是动态引用?
动态
150.SQLSREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值
INSERTINTOjobs(job_desc,min_lvl,max_lvl)VALUES('
Accountant'
12,125)
SELECT@@IDENTITYAS'
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.DebugBuild和ReleaseBuild的区别,是否会有明显的速度变化?
请说明理由。
Debug会产生pdb文件,release不会。
Debug用于开发时的调试,不能要于部署,而release用于部署.debug编译一些特殊代码,比如#IFDEBUGDebug.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中如何实现深拷贝(deepcopy)?
实现IClonable接口
163.请解释一下IClonable
IClonable方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。
深度复制的特征的调用对象的构造方法,创建新的对象,包括创建对象中嵌套的引用对象的新实例。
而Shadow复制则不同,是浅表复制,不重新创建新实例。
浅表复制的实现是Object.MemberWiseClone().
深度复制(DeepCopy)与浅表复制(ShadowCopy)的比较
class
Name
string
FirstName;
LastName;
Person
:
ICloneable
Name
PersonName;
Email;
///
summary>
Deep
Copy的例子
/summary>
returns>
/returns>
Clone()
p
Person();
p.Email
this.Email;
p.PersonName
Name();
p.PersonName.FirstName
this.PersonName.FirstName;
p.PersonName.LastName
this.PersonName.LastName;
return
p;
ChangLastName(string
lastName)
this.PersonName.LastName
lastName;
static
Main()
san"
;
zhang"