net程序员面试题Word格式.docx
《net程序员面试题Word格式.docx》由会员分享,可在线阅读,更多相关《net程序员面试题Word格式.docx(24页珍藏版)》请在冰豆网上搜索。
据库表的数据,它通常将包含多个DataTable对象。
即,每个DataTable对象通常对应于单个数据库表或视图。
这样,数据集可以
模仿基础数据库的结构。
数据集通常还包含关系。
数据集内的关系类似于数据库中的外键关系,即它使多个表中的行彼此关联。
例如,如果数据集包含一个有
关投资者的表和另一个有关每个投资者的股票购买情况的表,则数据集可能还包含一个关系来连接投资者表的各个行和购买表的对应
行。
由于数据集可以保存多个独立的表并维护有关表之间关系的信息,因此它可以保存比记录集丰富得多的数据结构,包括自关联的表和
具有多对多关系的表。
数据导航和游标
在ADO中,您使用ADOMoveNext方法顺序扫描记录集的行。
在ADO.NET中,行表示为集合,因此您可以像依次通过任何集合那样
依次通过表,或通过序号索引或主键索引访问特定行。
DataRelation对象维护有关主记录和详细资料记录的信息,并提供方法使您
可以获取与正在操作的记录相关的记录。
例如,从Investor表的"
NateSun"
的行开始,可以定位到Purchase表中描述其购买情况
的那组行。
"
游标"
是数据库元素,它控制记录导航、更新数据的能力和其他用户对数据库所做更改的可见性。
ADO.NET不具有固有的游标对象,
而是包含提供传统游标功能的数据类。
例如,在ADO.NETDataReader对象中提供只进、只读游标的功能。
有关游标功能的更多信息
,请参见数据访问技术。
将打开连接的时间降至最低
在ADO.NET中,打开连接的时间仅足够执行数据库操作,例如"
选择"
(Select)或"
更新"
(Update)。
您可以将行读入数据集中,然后
在不保持与数据源的连接的情况下使用它们。
在ADO中,记录集可以提供不连接的访问,但ADO主要是为连接的访问设计的。
ADO和ADO.NET中的不连接处理之间存在一个显著差异。
在ADO中,通过调用OLEDB提供程序来与数据库通信。
但在ADO.NET
中,您通过数据适配器(OleDbDataAdapter、SqlDataAdapter、OdbcDataAdapter或OracleDataAdapter对象)与数据库通信,这
将调用OLEDB提供程序或基础数据源提供的API。
ADO和ADO.NET之间的主要区别在于:
在ADO.NET中,数据适配器允许您控制
将对数据集所做的更改传输到数据库的方式,方法是实现性能优化、执行数据验证检查或添加其他任何额外处理。
注意数据适配器、数据连接、数据命令和数据读取器是组成.NETFramework数据提供程序的组件。
Microsoft和第三方供应商
可能会提供其它提供程序,这些提供程序也可集成到VisualStudio中。
有关不同.NET数据提供程序的信息,请参见.NET数据
提供程序。
在应用程序间共享数据
在应用程序间传输ADO.NET数据集比传输ADO不连接的记录集要容易得多。
若要将ADO不连接的记录集从一个组件传输到另一个
组件,请使用COM封送。
若要在ADO.NET中传输数据,请使用数据集,它可以传输XML流。
相对于COM封送,XML文件的传输提供以下便利之处:
更丰富的数据类型
COM封送提供一组有限的数据类型(由COM标准定义的那些类型)。
由于ADO.NET中的数据集传输基于XML格式,所以对数据类
型没有限制。
因此,共享数据集的组件可以使用这些组件一般会使用的任何丰富的数据类型集。
性能
传输大型ADO记录集或大型ADO.NET数据集会使用网络资源;
随着数据量的增长,施加于网络的压力也在增加。
ADO和ADO.NET
都使您可以最大限度地降低所传输的数据。
但ADO.NET还提供另一个性能优势:
ADO.NET不需要数据类型转换。
而需要COM封送来
在组件间传输记录集的ADO,则需要将ADO数据类型转换为COM数据类型。
穿透防火墙
防火墙可以影响试图传输不连接的ADO记录集的两个组件。
请记住,防火墙通常配置为允许HTML文本通过,但防止系统级请求(
如COM封送)通过。
因为组件使用XML交换ADO.NET数据库,所以防火墙可以允许数据集通过。
页面在什么时候产生?
又在什么时候销毁?
答:
(1)Page_Init();
---初始化对象
这一过程主要是初始化包括页面本身的所有控件,每次的页面载入就会执行一次初试过程,而在这里面访问到的也是控件的初始值。
还有就是可以通过OnInit()来重载初试化事件。
(2)LoadViewState---导入Viewstate数据
在初试化事件后,在loadvireState事件中所有控件将获得他们的第一个属性ViewState属性,这个属性最终将被返回给服务器以判断
这个页面是已经被用户访问完毕还是仍然在被用户所访问。
也可重载loadvireState事件对相应的控件进行值设定。
(3)LoadPostbackdata;
---用LoadPostData处理Postback数据
Postback数据也可以理解成就是服务器页面提交的表单数据,每一次表单数据的提交都会触发执行IPostBackDataHandler接口操作的
控件。
(4)Page_Load();
---导入对象
这个过程就比较熟悉了,也是在页面的每次载入时一定会执行,但是注意和PageInit()之间的区别,所有的对象第一次被布置在DOM
页面(在A中称控件树)里了并且可以通过代码或是相关的位置被引用。
这样,对象就可以很容易的从客户端获得诸如宽度、
高度、值、可见性等在Html中的属性值。
经常会用到的Page.IsPostBack()指示该页是否正为响应客户端回发而加载,或者它是否正
被首次加载和访问.
(5)Handlecontrolevents;
---具体的控件事件
这个过程执行的是相应具体控件事件,比如按钮事件..等。
(6)Page_PreRender();
---预先呈递对象
预先呈递对象可以改变对象并将改变保存的最后时刻.可以对控件的属性、控件树的结构等做出最后的修改,同时还不用考虑A
对其作出任何改变,因为此时已经脱离了数据库调用以及viewstate更新了,也可以通过OnPreRender来重载。
(7)Page_Render();
---呈递对象呈递页面
所有对页面控件的修改完成后viewstate就被保存了。
运用Html创建给浏览器输出的页面的时候Render事件就发生了。
在Render事件
过程中,页面调用其中的对象将它们呈递给Html。
然后,页面就可以以Html的形式被用户的浏览器访问了。
当Render事件被重载时,
开发者可以编写自定义的Html代码使得原先生成的Html都无效而按照新的Html来组织页面。
Render方法将一个HtmlTextWriter对象作
为参数并用它将Html在浏览器上以网页的形式显示。
这时仍然可以做一些修改动作,不过它们只是客户端的一些变化而已了。
亦可以
重载Render事件。
(8)Unloadevent;
---卸载对象
当想服务器请求一个对象的时候,就会在内存里生成一个继承页面对象,也就是页面的类,它继承自System.Web.UI.Page.
当页面对象从内存中卸载时发生,将触发该事件.
(9)Disposemethodcalled
在呈递给Html完成后,所有的对象都应被销毁。
在Dispose事件中,你应该销毁所有在建立这个页面时创建的对象。
这时,所有的处
理已经完毕,所以销毁任何剩下的对象都是不会产生错误的,包括页面对象。
你可以重载Dispose事件。
5.Session,ViewState,Application,cookie的区别?
Session:
Session用于保持状态的基于Web服务器的方法。
Session允许通过将对象存储在Web服务器的内存中在整个用户
会话过程中保持任何对象。
主要用于保持代码隐藏类中对象的状态。
为每个用创建的,用于存储单个用户,因为他是相对每个用户的.
所以可能来取得在线人数等。
ViewState:
主要用于保持Web页上控件的状态。
当Web页上的控件被绑定到代码隐藏类中的对象。
Application用于存储所有用户都可视的信息.所以它存储的是要让所有用户共享的一些信息.如总访问数等;
Cache:
页面缓存。
cookie:
通常我们都把它放在客户端,也可以存储在服务器端。
主要用它存储用户的个性设制,和登陆信息。
6.面向对象的思想主要包括什么?
开发人员应该熟悉面向对象软件开发(OOP)基本概念,熟悉面向对象软件开发中的类、继承、封装、多态等概念,具备良好的
面向对象软件开发思想和设计原则。
7.什么是ASP.net中的用户控件?
用户控件。
用户控件是能够在其中放置标记和Web服务器控件的容器。
然后,可以将用户控件作为一个单元对待,为其定义
属性和方法。
8.什么叫应用程序域?
什么是受管制的代码?
什么是强类型和强类型系统?
什么是装箱和拆箱?
什么是重载?
CTS、CLS和CLR分别作
何解释?
(1)应用程序域为隔离正在运行的应用程序提供了一种灵活而安全的方法。
(2)受管制的代码:
在.NET环境中运行的任何代码都称为受管制的代码(unmanagedcode),.NET外部的其他代码也运行在
Windows上,这些代码称为未受管制的代码(unmanagedcode)。
(3)强类型和弱类型的区别在与,在编码过程中是否要指定数据类型,作为强类型必须指定数据类型,编译器为其分配相应的
存储空间(如c,pascal)否则编译出错。
而弱类型不一定需要指定数据类型,编译器会用相同的空间去分配各种类型,
除非你指定了(如basic)。
作为强类型语言,在编译阶段的安全性要高于弱语言型。
强类型系统:
RTTI:
类型识别系统。
(4)装箱就是隐式的将一个值型转换为引用型对象。
比如:
inti=0;
Syste.Objectobj=i;
这个过程就是装箱!
就是将i装箱!
拆箱就是将一个引用型对象转换成任意值型!
System.Objectobj=i;
intj=(int)obj;
这个过程前2句是将i装箱,后一句是将obj拆箱!
再写个代码,看看进行了几次装拆箱!
Console.WriteLine(i+"
"
+(int)obj);
其中共发生了3次装箱和一次拆箱!
^_^,看出来了吧?
!
第一次是将i装箱,第2次是输出的时候将i转换成string类型,而string类型为引用类型,即又是装箱,第三次装箱就是(int)
obj的转换成string类型,装箱!
拆箱就是(int)obj,将obj拆箱!
(5)重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同
)。
(6)CLR的全称是公共语言运行库(CommonLanguageRuntime),读者可以把CLR理解为一个包含运行.NET程序的引擎和一堆
符合公共语言基础结构的类库的集合。
CLR是一个规范的实现,我们开发的几乎所有的.NET程序都基于CLR的类库来实现,并且运行在
CLR提供的运行引擎之上。
所谓.NET框架,指的就是公共语言运行库。
公共语言基础(CLI)是微软公司向ECMA提交的一份语言和数据格式规范,CLR是目前为止唯一一个公共语言基础的实现版本。
CTS的全称是通用类型系统(CommonTypeSystem)。
前文已经介绍了公共语言基础(CLI)的概念,微软公司提交的CLI规范
,包括了公共类型系统(CTS)、公共中间语言(CIL)、底部文件格式以及元数据格式等。
公共类型系统定义了一个能够在CLR上运
行的语言规范。
尽管有很多语言本身不符合CTS规范,但是通过加强编译器,改变语言附加规范等手段,使得许多语言能够编写出能
在CLR上运行的程序。
一种语言编写的程序编译能够在CLR上运行,并不代表这种语言本身完全符合CTS的规范。
例如C++语言,仍然保持了其不符合
CTS规范的部分,并且在编译时把这部分不符合CTS的代码编译成原始代码而非中间代码。
最后来看一下CLS的概念。
公共语言规范(CLS)是CTS的一个子集,它定义了希望编写在.NET平台上运行的程序的语言所需符
合的最小规范。
正因为.NET允许由不同语言编写的程序一起执行,所以才制定出CLS规范,用以避免不同语言特性产生的错误。
9.列举一下你所了解的XML技术及其应用
xml可以用来做网页(xslt)xml可以当作数据库xml可以用来保存对象的系列化
10.值类型和引用类型的区别?
写出C#的样例代码。
值类型包括简单类型、结构体类型和枚举类型,引用类型包括自定义类、数组、接口、委托等
11.ADO.net中常用的对象有哪些?
分别描述一下。
我直接用sqlhelper了有connectioncommand还有参数
12.如何理解委托?
简单的说:
委托是一种方法容器,里面可以装载若干个具有相同签名的方法引用地址,那么调用委托,就相当于同时调用了
该容器内的所有方法。
13.C#中的接口和类有什么异同。
区别一,两者表达的概念不一样。
抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于"
是"
的关系;
而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是"
行为需要按照接口来完成"
。
区别二,抽象类在定义类型方法的时候,可以给出方法的实现部分,也可以不给出;
而对于接口来说,其中所定义的方法都不能
给出实现部分。
区别三,继承类对于两者所涉及方法的实现是不同的。
继承类对于抽象类所定义的抽象方法,可以不用重写,也就是说,可以
延用抽象类的方法;
而对于接口类所定义的方法或者属性来说,在继承类中必须要给出相应的方法和属性实现。
区别四,在抽象类中,新增一个方法的话,继承类中可以不用作任何处理;
而对于接口来说,则需要修改继承类,提供新定义的
方法。
如下给出两者的简单对比表格。
接口
抽象类
多继承
支持
不支持
类型限制
没有
有,只能是引用类型
方法实现
继承类型中必须给出方法实现
继承类中可以不给出
扩展性
比较麻烦
相对比较灵活
多层继承
比较麻烦,需要借助虚函数
比较灵活
中读写数据库需要用到哪些类?
他们的作用
(1)DataSet用来无连接的储存多个表的数据,并包含表与表之间的关联关系
(2)DataTable用来存储一个表的数据
(3)SqlConnection用来创建一个到数据库的连接
(4)SqlCommand用来执行SQL语句
(5)SqlDataReader用来顺序读取数据
(6)SqlDataAdapter用来将数据填充到DataSet或DataTable
15.UDP连接和TCP连接的异同。
TCP是传输控制协议,提供的是面向连接的,是可靠的,字节流服务,当用户和服务器彼此进行数据交互的时候,必须在他们
数据交互前要进行TCP连接之后才能传输数据。
TCP提供超时重拨,检验数据功能。
UDP是用户数据报协议,是一个简单的面向数据报
的传输协议,是不可靠的连接。
16.ASP.net的身份验证方式有哪些?
分别是什么原理?
Windows身份验证提供程序:
提供有关如何将Windows身份验证与MicrosoftInternet信息服务(IIS)身份验证结合使用来确保ASP.NET应用程序安全的信
息。
Forms身份验证提供程序:
提供有关如何使用您自己的代码创建应用程序特定的登录窗体并执行身份验证的信息。
使用Forms身份验证的一种简便方法是使用
ASP.NET成员资格和ASP.NET登录控件,它们一起提供了一种只需少量或无需代码就可以收集、验证和管理用户凭据的方法。
Passport身份验证提供程序:
提供有关由Microsoft提供的集中身份验证服务的信息,该服务为成员站点提供单一登录和核心配置
17.进程和线程分别怎么理解?
进程是比线程大的程序运行单元,都是由操作系统所体会的系统运行单元,一个程序中至少要有一个进程,有一个进程中,至少要有
一个线程,线程的划分尺度要比进程要小,进程拥有独立的内存单元,线程是共享内存,从而极大的提高了程序的运行效率同一个进
程中的多个线程可以并发执行。
18.什么是code-Behind技术。
就是代码隐藏,在ASP.NET中通过ASPX页面指向CS文件的方法实现显示逻辑和处理逻辑的分离,这样有助于web应用程序的创
建。
比如分工,美工和编程的可以个干各的,不用再像以前asp那样都代码和html代码混在一起,难以维护。
19.活动目录的作用。
中读写XML的类都归属于哪些命名空间?
System.Xml;
21.解释一下UDDI、WSDL的意义及其作用。
UDDI
统一描述、发现和集成协议(UDDI,UniversalDescription,DiscoveryandIntegration)是一套基于Web的、分布式的、为Web服务
提供的信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web服务注册以使得别的企业能够发现的访问协议的实
现标准。
UDDI提供了一组基于标准的规范用于描述和发现服务,还提供了一组基于因特网的实现。
WSDL
WSDL描述Web服务的公共接口。
这是一个基于XML的关于如何与Web服务通讯和使用的服务描述;
22.什么是SOAP,有哪些应用。
答:
SOAP(SimpleObjectAccessProtocol)简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一
个基于XML的协议。
使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何
平台上,以任何一直语言相互通信。
这种相互通信采用的是XML格式的消息
SOAP是一种轻量级协议,用于在分散型、分布式环境中交换结构化信息。
SOAP利用XML技术定义一种可扩展的消息处理框架,它
提供了一种可通过多种底层协议进行交换的消息结构。
这种框架的设计思想是要独立于任何一种特定的编程模型和其他特定实现的
语义。
23.如何部署一个ASP.net页面。
VS2005和VS2003都有发布机制。
2003可以发布然后再复制部署。
VS2005基本上可以直接部署到对应位置。
24.如何理解.net中的垃圾回收机制。
NETFramework的垃圾回收器管理应用程序的内存分配和释放。
每次您使用new运算符创建对象时,运行库都从托管堆为该对象分
配内存。
只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。
但是,内存不是无限大的。
最终,垃圾回收器必须执行
回收以释放一些内存。
垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。
当垃圾回收器执行回收时,它检查托
管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。
25.常用的调用webservice方法有哪些?
1.使用WSDL.exe命令行工具。
2.使用VS.NET中的AddWebReference菜单选项
26.简述private、protected、public、internal修饰符的访问权限。
private:
私有成员,在类的内部才可以访问。
protected:
保护成员,该类内部和继承类中可以访问。
public:
公共成员,完全公开,没有访问限制。
internal:
在同一命名空间内可以访问。
27.列举ASP.NET页面之间传递值的几种方式。
答.
1.使用QueryString,如....?
id=1;
response.Redirect()....
2.使用Session变量
3.使用Server.Transfer
28.一列数的规则如下:
1、1、2、3、5、8、13、21、34......求第30位数是多少,用递归算法实现。
publ