net面试题 总结.docx
《net面试题 总结.docx》由会员分享,可在线阅读,更多相关《net面试题 总结.docx(33页珍藏版)》请在冰豆网上搜索。
net面试题总结
ASP.NET2.0页面事件启动顺序。
PreInit
页面初始化前的那一刻
Init
页面初始化
InitComplete
页面初始化完成
PreLoad
加载到内存前的那一刻
Load
LoadComplete
页面完全加载到内存中
PreRender
在加载Control对象之后、呈现之前发生
PreRenderComplete
显示在浏览器之前的那一刻
Unload
1.new有几种用法
第一种:
newClass();
第二种:
隐藏方法
publicnewXXXX(){}
第三种:
new约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。
2.如何把一个array复制到arrayList里
foreach(objectoinarray)arrayList.Add(o);
3.datagrid.datasouse可以连接什么数据源[dataset,datatable,dataview]
dataset,datatable,dataview,IList
4.概述反射和序列化
反射:
程序集包含模块,而模块包含类型,类型又包含成员。
反射则提供了封装程序集、模块和类型的对象。
您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。
然后,可以调用类型的方法或访问其字段和属性
序列化:
序列化是将对象转换为容易传输的格式的过程。
例如,可以序列化一个对象,然后使用HTTP通过Internet在客户端和服务器之间传输该对象。
在另一端,反序列化将从该流重新构造对象。
5.概述o/rmapping的原理
利用反射,配置将类于数据库表映射
6.类成员有()种可访问形式
可访问形式?
不懂。
可访问性:
public,protected,private,internal
7.用sealed修饰的类有什么特点
sealed修饰符用于防止从所修饰的类派生出其它类。
如果一个密封类被指定为其他类的基类,则会发生编译时错误。
密封类不能同时为抽象类。
sealed修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。
具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。
8.列举ADO.NET中的五个主要对象,并简单描述
connection,command,dataReader,trans,dataset...
9.Server.Transfer,Response.Redirect的区别
过Server.Transfer引导到另一页面保留服务器资源,通过更改服务器端“焦点”和传输请求来代替告诉浏览器重定向,这就意味着你不会占用较多的HTTP请求,因此这可以减轻服务器的压力,使你的服务器运行更快。
不过,请注意,由于"transfer"只能在同一服务器端的同一站点间运行,所以你不能用Server.Transfer将用户重定向到另一服务器上的站点。
要重定向到服务器以外的站点,只有Response.Redirect能办到。
其次,Server.Transfer保留浏览器端的URL地址。
这对流线型的数据输入很有帮助,不过这也增加了调试的复杂度。
还有:
Server.Transfer方法还有另一个参数——"preserveForm"。
如果你设置这个参数为True,比如:
Server.Transfer("WebForm2.aspx",True),那么querystring和任何form变量都会同时传递到你定位的页面。
1.Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Response.Redirect则十分灵活;
2.Server.Transfer可以将页面参数方便传递到指定页面;
3.使用时,Server.Transfer跳到别的页面后,浏览器显示的地址不会改变,有时反而会造成误会,当然也有些场合需要这样的效果;
4.Server.Transfer可以减少客户端对服务器的请求;
System.array.copyTo()和System.array.Clone()的区别
copyTo()的方法是一个浅拷贝的过程;clone()的方法是一个深拷贝的过程;
copyTo()它的过程是引用的过程,就相当于
string[]a=newstring[]{"7","1","3","4"};
string[]b;
b=a.copyto();
就相当于b=a;这种情况a和b引用都是相同内存地址;
而clone()就相当于
string[]a=newstring[]{"7","1","3","4"};
string[]b;
string[]c=a.copyto();
b=c;
这种情况a和b引用都是不同内存地址;
10.C#中,stringstr2=null与stringstr1="",请尽量用文字说明区别。
(要点:
说明详细的内存空间分配)
stringstr=""分配空间
stringstr=""初始化对象分配空间
而stringstr=null初始化对象
更详细的解释
这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的。
stringstr2=null,这样定义后,只是定义了一个string类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,将报错。
11.详述.NET里class和strUCt的异同!
class:
放在?
struct放在?
struct值传递
类与结构有很多相似之处:
结构可以实现接口,并且可以具有与类相同的成员类型。
然而,结构在几个重要方面不同于类:
结构为值类型而不是引用类型,并且结构不支持继承。
结构的值存储在“在堆栈上”或“内联”。
细心的程序员有时可以通过聪明地使用结构来增强性能。
12.概述.NET里对remoting和webservice两项技术的理解和实际中的应用。
远程逻辑调用,remoing接口只能用在.net中
其实现的原理并没有本质的区别,在应用开发层面上有以下区别:
1、Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与WebService就没有什么区别了,一般都喜欢定义为TCP,这样比WebService稍为高效一些
2、Remoting不是标准,而WebService是标准;
3、Remoting一般需要通过一个WinForm或是Windows服务进行启动,而WebService则需要IIS进行启动。
4、在VS.net开发环境中,专门对WebService的调用进行了封装,用起来比Remoting方便
我建议还是采用WebService好些,对于开发来说更容易控制
Remoting一般用在C/S的系统中,WebService是用在B/S系统中
后者还是各语言的通用接口
相同之处就是都基于XML
13.什么是code-behind技术
ASPX,RESX和CS三个后缀的文件,这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理.
14.概述三层结构体系
web/business/dataAccess
15.Asp.Net如何实现MVC模式,举例说明!
web/business/dataaccess
1.面向对象的思想主要包括什么?
答:
继承多态封装
●封装:
用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。
●继承:
子类拥有父类的所有数据和操作。
●多态:
一个程序中同名的不同方法共存的情况。
有两种形式的多态–重载与重写。
2.什么是ASP.net中的用户控件
答:
用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.
3.什么叫应用程序域?
什么是受管制的代码?
什么是强类型系统?
什么是装箱和拆箱?
什么是重载?
CTS、CLS和CLR分别作何解释?
答:
1)应用程序域可以理解为一种轻量级进程。
起到安全的作用。
占用资源小。
2)unsafe:
非托管代码。
不经过CLR运行。
3)RTTI:
类型识别系统。
4)从值类型接口转换到引用类型装箱。
从引用类型转换到值类型拆箱。
5)重载是方法的名称相同。
参数或参数类型不同,进行多次重载以适应不同的需要
6)CTS:
公共类型系统。
CLS:
通用语言规范。
CLR:
公共语言运行库。
5.值类型和引用类型的区别?
写出C#的样例代码。
答:
结构是值类型,类是引用类型,所以传结构就是值类型的应用啦,传对象或类就是引用类型的,这个不用多写了吧.
6.ADO.net中常用的对象有哪些?
分别描述一下。
答:
connectioncommandsqladapterdatasetdatatabledataview等等.写不完了.
Connection数据库连接对像Command数据库命令DataReader数据读取器
DataSet数据集
7.如何理解委托?
答:
据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.
msdn2005中是这样解释的:
委托具有以下特点:
委托类似于C++函数指针,但它是类型安全的。
委托允许将方法作为参数进行传递。
委托可用于定义回调方法。
委托可以链接在一起;例如,可以对一个事件调用多个方法。
方法不需要与委托签名精确匹配。
有关更多信息,请参见协变和逆变。
C#2.0版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。
8.C#中的接口和类有什么异同。
答:
抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。
Interfaceabstract
但接口是一个行为的规范,里面的所有东西都是抽象的!
一个类只可以继承一个基类也就是父类,但可以实现多个接口,抽象类是单一继承,接口可以多继承,
9.。
net中读写数据库需要用到哪些类?
他们的作用
答:
1、DataSet用来无连接的储存多个表的数据,并包含表与表之间的关联关系
2、DataTable用来存储一个表的数据
3、SqlConnection用来创建一个到数据库的连接
4、SqlCommand用来执行SQL语句
5、SqlDataReader用来顺序读取数据
6、SqlDataAdapter用来将数据填充到DataSet或DataTable
10.UDP连接和TCP连接的异同。
答:
TCP是有连接状态的,而UDP没有,所以TCP是一种比较安全的通讯协议,而UDP则比较方便。
前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结.
11.ASP.net的身份验证方式有哪些?
分别是什么原理?
答:
Windwos(默认)用IIS...From(窗体)用帐户....Passport(密钥)
12.进程和线程分别怎么理解?
答:
进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。
线程是指进程内的一个执行单元,也是进程内的可调度实体.
与进程的区别:
(1)调度:
线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
(2)并发性:
不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
(3)拥有资源:
进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.
(4)系统开销:
在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
14.活动目录的作用。
答:
活动目录是微软推出的目录服务,他的主要功能是集中化、统一化的管理计算机和用户以及网络资源。
这就是他的主要作用,他的主要管理方法是通过组策略来实现的。
他的作用还可以为用户实现统一的网络身份验证。
更重要的是他是微软其他几大高级服务的后台服务。
16.解释一下UDDI、WSDL的意义及其作用。
7.什么是SOAP,有哪些应用。
答:
SOAP(SimpleObjectAccessProtocol)简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。
使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。
这种相互通信采用的是XML格式的消息,
18.如何部署一个ASP.net页面。
19.如何理解.net中的垃圾回收机制。
答:
GC?
对象创建了总要清除啊,不然内存哪够用?
GC是垃圾收集器。
程序员不用担心内存管理,因为垃圾收集器会自动进行管理。
要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
20.常用的调用webservice方法有哪些?
答:
1.使用WSDL.exe命令行工具。
2.使用VS.NET中的AddWebReference菜单选项
1.简述private、protected、public、internal修饰符的访问权限。
答.private:
私有成员,在类的内部才可以访问。
protected:
保护成员,该类内部和继承类中可以访问。
public:
公共成员,完全公开,没有访问限制。
internal:
在同一命名空间内可以访问。
4.C#中的委托是什么?
事件是不是一种委托?
答:
委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的引用。
是,是一种特殊的委托
5.override与重载的区别
答:
override与重载的区别。
重载是方法的名称相同。
参数或参数类型不同,进行多次重载以适应不同的需要
Override是进行基类中函数的重写。
为了适应需要。
7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
foreach(System.Windows.Forms.Controlcontrolinthis.Controls)
{
if(controlisSystem.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBoxtb=(System.Windows.Forms.TextBox)control;
tb.Text=String.Empty;
}
}
8.请编程实现一个冒泡排序算法?
int[]array=newint
;
inttemp=0;
for(inti=0;i{
for(intj=i+1;j{
if(array[j]{
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
9.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
答:
不是。
可以用任意类型。
10.求以下表达式的值,写出您想到的一种或几种实现方法:
1-2+3-4+……+m
intNum=this.TextBox1.Text.ToString();
intSum=0;
for(inti=0;i{
if((i%2)==1)
{
Sum+=i;
}
else
{
Sum=Sum-I;
}
}
System.Console.WriteLine(Sum.ToString());
System.Console.ReadLine();
13.什么叫应用程序域?
答:
应用程序域可以理解为一种轻量级进程。
起到安全的作用。
占用资源小。
14.CTS、CLS、CLR分别作何解释?
答:
CTS:
公共类型系统。
CLS:
通用语言规范。
CLR:
公共语言运行库。
15.什么是装箱和拆箱?
答:
从值类型接口转换到引用类型装箱。
从引用类型转换到值类型拆箱。
16.什么是受管制的代码?
答:
unsafe:
非托管代码。
不经过CLR运行。
17.什么是强类型系统?
答:
RTTI:
类型识别系统。
中读写数据库需要用到那些类?
他们的作用?
答:
DataSet:
数据存储器。
DataCommand:
执行语句命令。
DataAdapter:
数据的集合,用语填充。
19.ASP.net的身份验证方式有哪些?
分别是什么原理?
答:
10。
Windwos(默认)用IIS...From(窗体)用帐户....Passport(密钥)
21.在.net中,配件的意思是?
答:
程序集。
(中间语言,源数据,资源,装配清单)
Remoting的工作原理是什么?
答:
服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。
24.在C#中,stringstr=null与stringstr=“”请尽量使用文字或图象说明其中的区别。
答:
stringstr=null是不给他分配内存空间,而stringstr=""给它分配长度为空字符串的内存空间。
25.请详述在dotnet中类(class)与结构(struct)的异同?
答:
Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.
26.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:
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);
27.分析以下代码,完成填空
stringstrTmp="abcdefg某某某";
inti=System.Text.Encoding.Default.GetBytes(strTmp).Length;
intj=strTmp.Length;
以上代码执行完后,i=j=
答:
i=13,j=10
30.简要谈一下您对微软.NET构架下remoting和webservice两项技术的理解以及实际中的应用。
答:
WS主要是可利用HTTP,穿透防火墙。
而Remoting可以利用TCP/IP,二进制传送提高效率。
31.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:
点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行(排序的方式如DataGrid相似)。
根据您的知识,请简要谈一下您的思路
答:
根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。
32.给定以下XML文件,完成算法流程图。
请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。
答:
voidFindFile(Directoryd)
{
FileOrFolders=d.GetFileOrFolders();
foreach(FileOrFolderfofinFileOrFolders)
{
if(fofisFile)
YouFoundafile;
elseif(fofisDirectory)
FindFile(fof);
}
}
34.面向对象的语言具有________性、_________性、________性
答:
封装、继承、多态。
35.能用foreach遍历访问的对象需要实现________________接口或声明________________方法的类型。
答:
IEnumerable、GetEnumerator。
36.GC是什么?
为什么要有GC?
答:
GC是垃圾收集器。
程序员不用担心内存管理,因为垃圾收集器会自动进行管理。
要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
37.Strings=newString("xyz");创建了几个StringObject?
答:
两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。
38.abstractclass和interface有什么区别?
答:
声明方法的存在而不去实现它的类被叫做抽象类(abstractclass),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。
不能创建abstract类的实例。
然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。
不能有抽象构造函数或抽象静态方法。
Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。
取而代之,在子类中实现该方法。
知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。
在接口中,所有方法都是抽象的。
多继承性可通过实现这样的接口而获得。
接口中的所有方法都是抽象的,没有一个有程序体。
接口只可以定义staticfinal成员变量。
接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。
当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。
然后,它可以在实现了该接口的类的任何对象上调用接口的方法。
由于有抽象类,它允许使用接口名作为引用变量的类型。
通常的动态联编将生效。
引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。
39.启动一个线程是用run()还是start()?
答:
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。
这并不意味着线程就会立即运行。
run()方法可以产生必须退出的标志来停止一个线程。
40.接口是否可继承接口?
抽