net 面试题系列Word格式.docx
《net 面试题系列Word格式.docx》由会员分享,可在线阅读,更多相关《net 面试题系列Word格式.docx(44页珍藏版)》请在冰豆网上搜索。
程序集包含模块,而模块包含类型,类型又包含成员。
反射则提供了封装程序集、模块和类型的对象。
您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。
然后,可以调用类型的方法或访问其字段和属性
序列化:
序列化是将对象转换为容易传输的格式的过程。
例如,可以序列化一个对象,然后使用HTTP通过Internet在客户端和服务器之间传输该对象。
在另一端,反序列化将从该流重新构造对象。
5.概述o/rmapping的原理
利用反射,配置将类于数据库表映射
7.用sealed修饰的类有什么特点
sealed修饰符用于防止从所修饰的类派生出其它类。
如果一个密封类被指定为其它类的基类,则会发生编译时错误。
密封类不能同时为抽象类。
sealed修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。
具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。
11.详述.NET里class和struct的异同!
class:
放在?
struct放在?
struct值传递
类与结构有很多相似之处:
结构可以实现接口,并且可以具有与类相同的成员类型。
然而,结构在几个重要方面不同于类:
结构为值类型而不是引用类型,并且结构不支持继承。
结构的值存储在“在堆栈上”或“内联”。
细心的程序员有时可以通过聪明地使用结构来增强性能。
12.概述.NET里对remoting和webservice两项技术的理解和实际中的应用。
远程逻辑调用,remoing接口只能用在.net中
13.什么是code-behind技术
aspxandcs
14.概述三层结构体系
web/business/dataaccess
如何实现MVC模式,举例说明!
2.什么是ASP.net中的用户控件
答:
用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.
3.什么叫应用程序域?
什么是受管制的代码?
什么是强类型系统?
什么是装箱和拆箱?
什么是重载?
CTS、CLS和CLR分别作何解释?
装箱就是把值类型转成引用类型,从MSIL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相反,重载就是指一个方法名同,参数个数不同,返回值可以相同的方法.CLR是通用语言运行时,其它的不清楚.
4.列举一下你所了解的XML技术及其应用
XML可是好东西,保存配置,站与站之间的交流,WEBSERVICE都要用它.
5.值类型和引用类型的区别?
写出C#的样例代码。
结构是值类型,类是引用类型,所以传结构就是值类型的应用啦,传对象或类就是引用类型的,这个不用多写了吧.
6.ADO.net中常用的对象有哪些?
分别描述一下。
connectioncommandsqladapterdatasetdatatabledataview等等.写不完了.
7.如何理解委托?
据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.
msdn2005中是这样解释的:
委托具有以下特点:
委托类似于C++函数指针,但它是类型安全的。
委托允许将方法作为参数进行传递。
委托可用于定义回调方法。
委托可以链接在一起;
例如,可以对一个事件调用多个方法。
方法不需要与委托签名精确匹配。
有关更多信息,请参见协变和逆变。
C#2.0版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法
1、在C#中,stringstr=null与stringstr=“”请尽量使用文字或图象说明其中的区别。
回答要点:
说明详细的空间分配。
(10分)
答:
stringstr=null是不给他分配内存空间,而stringstr="
"
给它分配长度为空字符串的内存空间.
2、请详述在dotnet中类(class)与结构(struct)的异同:
Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.
3、根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:
(10)
namespacetest
{
publicdelegatevoidOnDBOperate();
publicclassUserControlBase:
System.Windows.Forms.UserControl
publiceventOnDBOperateOnNew;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgse)
if(e.Button.Equals(BtnNew))
//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。
}
if(OnNew!
=null)
OnNew(this,e);
4、分析以下代码,完成填空(10分)
stringstrTmp="
abcdefg某某某"
;
inti=System.Text.Encoding.Default.GetBytes(strTmp).Length;
intj=strTmp.Length;
以上代码执行完后,i=j=
i=13,j=10
5、SQLSERVER服务器中,给定表table1中有两个字段ID、LastUpdateDate,ID表示更新的事务号,LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号。
SelectID
FROMtable1
WhereLastUpdateDate=(SelectMAX(LastUpdateDate)FROMtable1)
6、根据线程安全的相关知识,分析以下代码,当调用test方法时i>
10时是否会引起死锁?
并简要说明理由。
publicvoidtest(inti)
lock(this)
if(i>
10)
i--;
test(i);
不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。
但如果把int换做一个object,那么死锁会发生)
7、分析以下代码。
publicstaticvoidtest(stringConnectString)
System.Data.OleDb.OleDbConnectionconn=newSystem.Data.OleDb.OleDbConnection();
conn.ConnectionString=ConnectString;
try
conn.Open();
…….
}catch(ExceptionEx)
MessageBox.Show(Ex.ToString());
}finally
if(!
conn.State.Equals(ConnectionState.Closed))
conn.Close();
请问
1)以上代码可以正确使用连接池吗?
回答:
如果传入的connectionString是一模一样的话,可以正确使用连接池。
不过一模一样的意思是,连字符的空格数,顺序完全一致。
2)以上代码所使用的异常处理方法,是否所有在test方法内的异常都可以被捕捉并显示出来?
只可以捕捉数据库连接中的异常吧.(finally中,catch中,如果有别的可能引发异常的操作,也应该用try,catch。
所以理论上并非所有异常都会被捕捉。
)
8、简要谈一下您对微软.NET构架下remoting和webservice两项技术的理解以及实际中的应用。
WS主要是可利用HTTP,穿透防火墙。
而Remoting可以利用TCP/IP,二进制传送提高效率。
9、公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:
点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行(排序的方式如DataGrid相似)。
根据您的知识,请简要谈一下您的思路:
根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中
10、给定以下XML文件,完成算法流程图。
<
FileSystem>
DriverC>
DirDirName=”MSDOS622”>
FileFileName=”C”>
/File>
/Dir>
FileFileName=”MSDOS.SYS”>
FileFileName=”IO.SYS”>
/DriverC>
/FileSystem>
请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。
voidFindFile(Directoryd)
FileOrFolders=d.GetFileOrFolders();
foreach(FileOrFolderfofinFileOrFolders)
if(fofisFile)
YouFoundafile;
elseif(fofisDirectory)
FindFile(fof);
简单的说就是从根节点开始遍历找子节点,在从找到的子节点找它的子节点,一层层下去
.net面试题系列文章一(附答案)
1
(1)面向对象的语言具有__继承性_性、_封装性_性、_多态性性。
(2)能用foreach遍历访问的对象需要实现_IEnumerable接口或声明_GetEnumerator方法的类型。
1.c#中的三元运算符是__?
:
__
2.当整数a赋值给一个object对象时,整数a将会被__装箱___?
3.类成员有__3__种可访问形式?
4.publicstaticconstintA=1;
这段代码有错误么?
是什么?
const成员都是static所以应该去掉static
5.floatf=-123.567F;
inti=(int)f;
i的值现在是_-123____?
6.利用operator声明且仅声明了==,有什么错误么?
要同时修改Equale和GetHash()?
重载了"
=="
就必须重载"
!
="
7.委托声明的关键字是___delegate___?
8.用sealed修饰的类有什么特点?
不可被继承
9.在A中所有的自定义用户控件都必须继承自_System.Web.UI.UserControl_______?
10.在.Net中所有可序列化的类都被标记为__[serializable]___?
11.在.Net托管代码中我们不用担心内存漏洞,这是因为有了_gC__?
12.下面的代码中有什么错误吗?
_abstractoverride是不可以一起修饰______
usingSystem;
classA
publicvirtualvoidF(){
Console.WriteLine("
A.F"
);
abstractclassB:
publicabstractoverridevoidF();
13.当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不可以_(可以or不可以)从T派生出新的类,_不可以_(可以or不可以)直接创建T的任何实例。
14.下面这段代码有错误么?
case():
不行default;
switch(i){
CaseZero();
break;
case1:
CaseOne();
case2:
dufault;
CaseTwo();
15.在.Net中,类System.Web.UI.Page可以被继承么?
可以
内容正文:
8.以下代码段中能否编译通过?
请给出理由。
catch(FileNotFoundExceptione1)
catch(Exceptione2)
catch(IOExceptione3)
catch
}
9.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?
(多选)(
ABC
)
A.Close
B.DisposeC.Finalize
D.using
E.Quit
10.Net依赖以下哪项技术实现跨语言互用性?
(
C
A.CLR
B.CTS
C.CLS
D.CTT
11.请问:
String类与StringBuilder类有什么区别?
为什么在.Net类库中要同时存在这2个类?
(简答)
如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。
两个类的工作原理不同:
String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。
因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。
这一来二去的,耗了不少时间。
而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。
当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。
12.以下哪个类是int的基类?
A.Int32
B.Object
C.ValueType
D.Int16
二、C#部分*
13.以下哪些可以作为接口成员?
(多选)(ABDE)
A.方法B.属性C.字段D.事件E.索引器
F.构造函数G.析构函数
14.以下关于ref和out的描述哪些项是正确的?
ACD
A.使用ref参数,传递到ref参数的参数必须最先初始化。
B.使用out参数,传递到out参数的参数必须最先初始化。
C.使用ref参数,必须将参数作为ref参数显式传递到方法。
D.使用out参数,必须将参数作为out参数显式传递到方法。
15.“访问范围限定于此程序或那些由它所属的类派生的类型”是对以下哪个成员可访问性含义的正确描述?
B
A.public
B.protected
C.internal
D.protectedinternal
16.classClass1
privatestaticintcount=0;
staticClass1()
{
count++;
}
publicClass1()
Class1o1=newClass1();
Class1o2=newClass1();
请问,o1.Count的值是多少?
A.1
B.2
C.3
D.4
17.abstractclassBaseClass
publicvirtualvoidMethodA()
publicvirtualvoidMethodB()
classClass1:
BaseClass
publicvoidMethodA(stringarg)
publicoverridevoidMethodB()
classClass2:
Class1
newpublicvoidMethodB()
classMainClass
publicstaticvoidMain(string[]args)
Class2o=newClass2();
Console.WriteLine(o.MethodA());
请问,o.MethodA调用的是:
(
A
A.BaseClass.MethodAB.Class2.MethodA
C.Class1.MethodAD.都不是
22.您要创建一个显示公司员工列表的应用程序。
您使用一个DataGrid控件显示员工的列表。
您打算修改这个控件以便在这个Grid的Footer显示员工合计数。
请问您应该怎么做?
C?
A.重写OnPreRender事件,当Grid的Footer行被创建时显示合计数。
B.重写OnItemCreated事件,当Grid的Footer行被创建时显示合计数。
C.重写OnItemDataBound事件,当Grid的Footer行被创建时显示合计数。
D.重写OnLayout事件,当Grid的Footer行被创建时显示合计数。
23.您要创建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错误。
24.您的公司有一个DBServer,名为AllWin,其上装了MSSQLSERVER2000。
现在需要您写一个数据库连接字符串,用以连接AllWin上SQLSERVER中的一个名为PubBase实例的Test库。
请问,应该选择下面哪一个字符串?
A.“Server=AllWin;
DataSource=PubBase;
InitialCatalog=Test;
IntegratedSecurity=SSPI”
B.“Server=AllWin;
Database=Test;
IntegratedSecurity=SSPI”
C.“DataSource=AllWin\PubBase;
InitialCategory=PubBase;
D.“DataSource=AllWin\PubBase;
25.您为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文件。
26.您要创建一个ASP.NET应用程序在DataGrid控件中显示一个经过排序的列表。
产品数据被存放于一个名为PubBase的M