NET面试题汇总.docx
- 文档编号:5454270
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:19
- 大小:32.67KB
NET面试题汇总.docx
《NET面试题汇总.docx》由会员分享,可在线阅读,更多相关《NET面试题汇总.docx(19页珍藏版)》请在冰豆网上搜索。
NET面试题汇总
1.ASP.NET中的身份验证有那些?
你当前项目采用什么方式验证请解释
ASP.NET身份验证模式包括Windows、Forms(窗体)、Passport(护照)和None(无)。
Windows身份验证—常结合应用程序自定义身份验证使用使用这种身份验证模式时,ASP.NET依赖于IIS对用户进行验证,并创建一个Windows访问令牌来表示已通过验证的标识。
IIS提供以下几种身份验证机制:
Passport身份验证。
使用这种身份验证模式时,ASP.NET使用MicrosoftPassport的集中式身份验证服务,该服务为成员站点提供单一登录和核心配置文件服务。
由于访问新的受保护资源或站点时不再需要登录。
ASP.NET为MicrosoftPassport软件开发包(SDK)所提供的功能提供了一个方便的包装(Wrapper)。
此SDK必须安装在WEB服务器上。
Form窗体身份验证—常用。
这种验证方式使用客户端重定向功能,将未通过身份验证的用户转发到特定的登录窗体,要求用户输入其凭据信息(通常是用户名和密码)。
这些凭据信息被验证后,系统生成一个身份验证票证(ticket)并将其返回客户端。
身份验证票证可在用户的会话期间维护用户的身份标识信息,以及用户所属的角色列表(可选)。
None。
使用这种身份验证模式,表示你不希望对用户进行验证,或是采用自定义的身份验证协议。
2.什么是WEB控件?
使用WEB控件有那些优势?
Web服务器控件定义为抽象控件,是使用于web窗体页并运行于服务器的控件,包括传统的窗体控件,例如按钮、文本框和表等复杂控件,还包括提供在网格中显示数据、选择日期等常用窗体功能的控件。
可在服务器上使用熟悉的面向对象技术对其进行编程的对象模型。
每个服务器控件都公开一些属性,这些属性使您得以在服务器代码中通过编程操作该控件的HTML属性。
提供一组事件,您可以为其编写事件处理程序,方法与在基于客户端的窗体中大致相同,所不同的是事件处理是在服务器代码中完成的。
在客户端脚本中处理事件的能力。
自动维护控件状态。
在窗体到服务器往返期间,用户在HTML服务器控件中输入的值将在页发送回浏览器时自动维护。
与验证控件进行交互,便于您验证用户是否在控件输入了适当的信息。
数据绑定到一个或多个控件属性。
如果Web窗体页显示在支持层叠样式表的浏览器中,则支持HTML4.0样式。
直接可用的自定义属性。
您可以将任何需要的属性添加到HTML服务器控件,页框架将读取并呈现它们而不更改其任何功能。
这将允许您向控件添加浏览器特定的属性。
Web服务器控件还提供以下功能:
功能丰富的对象模型,该模型具有类型安全编程功能。
自动浏览器检测。
控件可以检测浏览器的功能,并为基本型和丰富型(HTML4.0)浏览器创建适当的输出。
对于某些控件,可以使用模板来自定义控件的外观。
对于某些控件,可以指定控件的事件是立即发送到服务器,还是先缓存然后在提交窗体时引发。
可将事件从嵌套控件(例如表中的按钮)传递到容器控件。
3.请解释ASP。
NET中以什么方式进行数据验证?
.net中提供了几个数据验证控件,可以在服务器端或者客户端进行验证。
4.请谈谈对正则表达式的看法?
正则表达式:
RegularExpress(也称为“regex”或“regexp”),是一种用来描述文本模式的特殊语法。
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。
正则表达式就是用于描述这些规则的工具
5.ASP.NET中共有几种类型的控件?
各有什么区别?
Html控件――传统的html标记+runat=”server”,可在服务器端访问,功能没有Web控件强大
Web控件――服务器端控件,可以回传数据,事件驱动
用户控件――自定义、可重用的控件,和WebForm很相似,以WebForm为容器运行
自定义控件――自定义、可重用的组件,从WebControl继承,在服务器端执行
6.WEB控件可以激法服务端事件,请谈谈服务端事件是怎么发生并解释其原理?
自动传回是什么?
为什么要使用自动传回。
通过实现IPostBack这个接口来执行事件。
自动回传就是AutoPostBack,使用自动回传可以监视客户端变化情况并将这种改变返回到服务器端
7.WEB控件及HTML服务端控件能否调用客户端方法?
如果能,请解释如何调用?
能,追根溯源,服务器端控件在html中表现形式还是html标记,所以可以执行客户端事件
例如:
控件.Attributes["客户端事件"]=”客户端脚本”;
8.ASP。
NET与ASP相比有什么优势?
1.开发语言不同ASP仅局限于使用non-type脚本语言来开发,用户给WEB页中添加ASP代码的方法与客户端脚本中添加代码的方法相同,导致代码杂乱。
ASP.NET允许用户选择并使用功能完善的strongly-type编程语言,也允许使用潜加巨大的.NETFramework。
2.运行机制不同
ASP是解释运行的编程框架,所以执行效率加较低。
ASP.NET是编译性的编程框架,运行是服务器上的编译好的公共语言运行时库代码,可以利用早期绑定,实施编译来提高效率。
3.开发方式
ASP把界面设计和程序设计混在一起,维护和重用困难。
ASP.NET把界面设计和程序设计以不同的文件分离开,复用性和维护性得到了提高。
9.请解释web.config文件中的重要节点
connectionStrings:
配置连接字符串,在程序中读取(还可直接提供给其他节点使用,如缓存依赖节点)
AppSettings:
可以提供用户自己配置参数,然后在程序中读取
customErrors:
配置程序的错误处理
authentication和authorization:
配置程序的安全验证和授权
trace:
配置程序的跟踪
globalization:
配置程序的全球化,比如:
语言
pages:
配置程序的页设置
10.请解释ASP。
NET中的Web页面与其隐藏类之间的关系?
ASP.NET中的页面由两部分组成,页面显示(aspx文件)和代码逻辑(aspx.cs文件)
通过Page指令联系在一起,如下:
<%@PageCodeBehind=”后台代码文件”Inherite=”继承的类”%>
所以关系为:
Web页面会继承隐藏类
11.什么是ViewState,能否禁用?
是否所用控件都可以禁用?
Web页面是没有状态的,ViewState(视图状态)可用来保存Web页面在客户端和服务器端往返过程的状态
说简单点ViewState只不过是Hidden控件,加上微软写上的一些代码而已
可以禁用,由三种方法:
1)禁用单个控件:
控件.EnableViewState=false;
2)禁用单个页面:
<%@PageEnableViewState=“false”%>
3)禁用整个程序:
web.config中,
12.当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?
怎么解决
可能情况:
1)可能事件没有关联
2)根本就没有写读取代码
3)写错了事件
4)在Load事件中有清空代码,但没有写if(!
IsPostBack)
14.请解释一个WEB页面中代码执行次序。
常用事件执行次序:
Init(初始化)->Load(加载)->Event(控件事件)->PreRender(呈现之前)->UnLoad(卸载)
15.请解释什么是上下文对象,在什么情况下要使用上下文对象
HttpContext,封装有关个别HTTP请求的所有HTTP特定的信息
无论在Page或者cs中,只要获得有关HTTP有关信息,都可以进行调用
16.请解释转发与跳转的区别?
转发:
HttpServerUtility.Transfer();
对于当前请求,终止当前页的执行,并使用指向一个新页的指定URL路径来开始执行此新页。
可以清除QueryString和Form集合
跳转:
HttpResponse.Redirect();
将客户端重定向到新的URL并指定该新URL,默认不终止当前页的执行.
17.请解释ASP.NET中不同页面之间数据传递有那些方式?
ASP.NET默认提交地址的是本页,要提交到其他页有以下几种方式:
1)会话Session
写:
Session[“name”]=value;读:
Session[“name”]
2)应用程序对象Application
写:
Application[“name”]=value;读:
Application[“name”]
3)转发:
第一个页面:
Server.Transfer(“WebForm1.aspx”,true);
第二个页面:
Request.Form[“TextBox1”]
4)跨页提交:
第一个页面:
指明提交按钮要回发的URL
TextBoxID=“txtContent“runat=”server”/> ButtonID=“btnOK”PostBackUrl=“B.aspx”runat=“server”Text=“提交”/> 第二个页面: ((TextBox)PreviousPage.FindControl(“txtContent”)).Text 5)QueryString 第一个页面: URL? 名称=值 第二个页面: Request.QueryString[“名称”] 6)Cookie 第一个页面: HttpCookiecookie=newHttpCookie(名称,值);Response.Cookies.Add(cookie); 第二个页面: Request.Cookies["名称"].Value 18.请解释ASP.NET中button、linkbutton、imagebutton 及hyperlink这四个控件之间的功别 Button、LinkButton、ImageButton三个控件比较相似,都可以进行提交并支持了事件驱动,只是样式不同。 Button为按钮样式,LinkButton为超链接样式,ImageButton为图片样式 HyperLink为运行在服务器端的超级链接,不支持事件驱动 19.请解释一下。 NET多层应用程序中层与层之间以那几种方式进行数据传递。 并解释你自己的项目中采用那种方式进行。 传递的类型不一定,视情况而定,一般可以是DataSet、DataTable、List、Hashtable、泛型等,我一般使用泛型集合List<类型>。 20.如果出现ASP.NET中的事件不能触发可能由于什么原因造成? 可能的原因有: 事件丢失、没有注册事件、客户端验证没有通过等 21.如果需要在GridView控件中的某一列中添加下拉列表框并绑定数据怎么解决? 使用模板列ItemTemplate来添加DropDownList 绑定数据有两种方式: 1、在GridView执行DataBind()后,for循环FindControl每行的下拉列表并绑定数据 2、在GridView的RowDataBound事件中,FindControl当前行的下拉列表并绑定数据 22.BS与CS的联系与区别。 C/S是Client/Server的缩写。 服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、 Sybase、Informix或SQLServer。 客户端需要安装专用的客户端软件。 B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如NetscapeNavigator或 InternetExplorer,服务器安装Oracle、Sybase、Informix或SQLServer等数据库。 在这种结构下,用户界面 完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。 浏览器通过W ebServer同数据库进行数据交互。 C/S与B/S区别: 1.硬件环境不同: C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务. B/S建立在广域网之上的,不必是专门的网络硬件环境,例与电话上网,租用设备.信息自己管理.有比C/S更强的适应范围,一般只要有操作系统和浏览器就行 2.对安全要求不同 C/S一般面向相对固定的用户群,对信息安全的控制能力很强.一般高度机密的信息系统采用C/S结构适宜.可以通过B/S发布部分可公开信息. B/S建立在广域网之上,对安全的控制能力相对弱,可能面向不可知的用户。 3.对程序架构不同 C/S程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑. B/S对安全以及访问速度的多重的考虑,建立在需要更加优化的基础之上.比C/S有更高的要求B/S结构的程序架构是发展的趋势,从MS的.Net系列的BizTalk2000Exchange2000等,全面支持网络的构件搭建的系统.SUN和IBM推的JavaBean构件技术等,使B/S更加成熟. 4.软件重用不同 C/S程序可以不可避免的整体性考虑,构件的重用性不如在B/S要求下的构件的重用性好. B/S对的多重结构,要求构件相对独立的功能.能够相对较好的重用.就入买来的餐桌可以再利用,而不是做 在墙上的石头桌子 5.系统维护不同 C/S程序由于整体性,必须整体考察,处理出现的问题以及系统升级.升级难.可能是再做一个全新的系统 B/S构件组成,方面构件个别的更换,实现系统的无缝升级.系统维护开销减到最小.用户从网上自己下载安 装就可以实现升级. 6.处理问题不同 C/S程序可以处理用户面固定,并且在相同区域,安全要求高需求,与操作系统相关.应该都是相同的系统 B/S建立在广域网上,面向不同的用户群,分散地域,这是C/S无法作到的.与操作系统平台关系最小. 7.用户接口不同 C/S多是建立的Window平台上,表现方法有限,对程序员普遍要求较高 B/S建立在浏览器上,有更加丰富和生动的表现方式与用户交流.并且大部分难度减低,减低开发成本. 8.信息流不同 C/S程序一般是典型的中央集权的机械式处理,交互性相对低 B/S信息流向可变化,B-BB-CB-G等信息、流向的变化,更像交易中心。 23.面向对象的特征有哪些方面 1、封装 封装是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏 2、继承 继承指可以使用现有类,并在无需重新编写的情况下创建新类的过程 通过继承创建的新类称为“子类”或“派生类” 被继承的类称为“基类”、“父类”或“超类” 3、多态 是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。 简单的说,就是一句话: 允许将子类类型的指针赋值给父类类型的指针。 25.abstractclass和interface有什么区别? 接口(Interface)是用来定义行为规范的,不会有具体实现,而抽象类除定义行为规范外,可以有部分实现,但一个类能实现多个接口,但只能继承一个父类 26.用C#实现以下功能 a产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。 b对上面生成的数组排序,需要支持升序、降序两种顺序 int[]iArray=newint[100]; Randomrandom=newRandom(); ArrayListarraylist=newArrayList(100); for(inti=0;i<100;i++){ arraylist.Add(i); } for(inti=0;i<100;i++){ intiKey=random.Next(0,99-i); IArray[i]=Convert.ToInt32(arraylist[iKey]); arraylist.RemoveAt(iKey); } Array.Sort(iArray);//排序 Array.Reverse(iArray);//反序 27.请说出强名的含义 垃圾回收的原理是根据是否空引用,和该数据类型占用内存来判断该收回多少内存.强类型说白就是必须要有个数据类型.强名称是由程序集的标识加上公钥和数字签名组成的,其中,程序集的标识包括简单文本名称、版本号和区域性信息(如果提供的话)。 您可以确保名称的全局唯一性。 28.请列出c#中几种循环的方法,并指出他们的不同 1)do: 先循环后判断循环条件 do{ //循环体 }while(循环条件); 2)while: 根据条件判断是否循环 While(循环条件) { 循环体 } 3)for: 可以指定循环次数,递增量等,功能强大 for(初始值;条件;递增) { 循环体 } 4)foreach: 遍历集合,效率最好 foreach(类型变量in集合) { 循环体 } 33.请指出.net中所有类型的基类 Object 34.请指出GAC的含义 全局程序集缓存(globalassemblycache,GAC)。 它解决了几个程序共享某一个程序集的问题。 不必再将那个被共享的程序集拷贝到应用程序目录了,其实这道理很简单,.net应用程序在加载的时候,会首先查看全局应用程序集缓存,如果有就可以直接使用,没有再到应用程序目录进行查找。 35.SQLSREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值 INSERTINTOjobs(job_desc,min_lvl,max_lvl)VALUES(‘Accountant’,12,125) SELECT@@IDENTITYAS‘Identity’ 37.请解释ASP.NET中以什么方式进行数据验证? 可以使用验证控件进行客户端和服务器端验证 也可以使用传统方式: 用客户端脚本在客户端验证,用服务器语言在服务器端验证 38.ArrayList,Array,string[]三者的区别? ArrayList用于不定长的数组,可以随意的增删。 Array的容量是固定的,在Array中,您只能一次获取或设置一个元素的值,支持排序、反转等操作 Stirng[]和Array比较相似,不支持排序、反转等操作 39.请说明.net中的错误处理机制,并举例 异常是从Exception类继承的对象,异常从发生问题的代码区域引发,然后沿堆栈向上传递,直到应用程序处理它或程序终止 try {//执行代码 } catch { //出错处理} finally { //无论怎样,都要执行} 42.什么叫应用程序域? 应用程序域提供安全而通用的处理单元,公共语言运行库可使用它来提供应用程序之间的隔离。 您可以在具有同等隔离级别(存在于单独的进程中)的单个进程中运行几个应用程序域,而不会造成进程间调用或进程间切换等方面的额外开销。 在一个进程内运行多个应用程序的能力显著增强了服务器的可伸缩性。 43.常用的调用webservice方法有哪些 1)使用WSDL.exe命令行工具。 2)使用VS.NET中的AddWebReference菜单选项 44.什么是ASP.net中的用户控件 用户控件,其实就是网页的一部分,包括ascx与.cs文件前台标签无素与后台逻辑代码两部分。 他不能独立存在,必须用在页面中才有意思。 当然,他的目的就是提高页面的相同部分内容的重用 45.列举一下你所了解的XML技术及其应用 XML的应用可分为四类: 1.可根据客户需要与不同的数据源进行交互。 2.可将大量运算负荷分布在客户端,即客户可根据自己的需求选择和制作不同的应用程序以处理数据,而服务器只须发出同一个XML文件。 3.可将同一数据以不同面貌展现给不同的用户。 4.网络代理可对所取得的信息进行编辑、增减以适应个人用户的需要 具体热门应用有: ajax技术,WebServices技术。 46.值类型和引用类型的区别? 写出C#的样例代码。 值类型: 存放的是实际的值,在堆栈中,大多数数据类型、枚举、结构体都是值类型,如: inti=2; 引用类型: 存放的是地址,在堆中,接口、类、字符串、数组都是引用类型,如: Students=newStudent(); 47.ADO.net中常用的对象有哪些? 分别描述一下。 Connection: 连接对象. 传递连接字符串,以连接数据库。 Command: 命令对象 传递T-sql语句或者存储过程,以执行对数据库的查询与操作。 DataAdpater: 适配器对象 管理Command对像。 主要用于查询或更新数据。 DataReader: 数据读取器对象 快速、以向前、不断开连接的情况下读取数据。 DataSet: 数据集对象 从数据库中取出数据,保存到内存,即可断开连接。 48.如何理解委托? 委托实际上是一种函数指针,指向函数的入口地址。 可以动态地将与委托签名(返回类型,参数类型,参数个数)相同的方法赋给一个委托实例,以实现动态调用方法。 49.C#中的接口和类有什么异同。 接口里只能有方法、属性、索引器声明,不能有任何实现。 其方法的实现,必须由类来完成。 其作用是广泛接收实现过它的类的实例,以实现子类的灵活替换。 类是对一类事物的描述。 有属性,有方法,有成员。 方法可以有抽像方法,虚方法。 抽像方法也是只有声明,没有实现,必段由继承它的子类来重写。 虚方法是实现了的方法,只是,在子类,根据需要可重写,也可以不重写。 50.UDP连接和TCP连接的异同。 TCP协议是面向连接的,每个数据包的传输过程是: 先建立链路、数据传输、然后清除链路。 数据包不包含目的地址。 受端和发端不但顺序一致,而且内容相同。 它的可靠性高, UDP协议是面向无连接的,每个数据包都有完整的源、目的地址及分组编号,各自在网络中独立传输,传输中不管其顺序,数据到达收端后再进行排序组装,遇有丢失、差错和失序等情况,通过请求重发来解决。 它的效率比较高。 51.进程和线程的区别? 进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源 52.什么是Code-Behind技术。 就是代码隐藏,在ASP.NET中通过ASPX页面指向CS文件的方法实现显示逻辑和处理逻辑的分离,这样有助于web应用程序的创建。 比如分工,美工和编程的可以个干各的,不用再像以前asp那样都代码和html代码混在一起,难以维护。 52.net中读写XML的类都归属于哪些命名空间? System.Xml; 53.解释一下UDDI、WSDL的意义及其作用。 UDDI: 是UniversalDescription,Discovery,andIntegration的缩写。 简单说,UDDI用于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NET 试题 汇总