整理点net面试之葵花宝典Word格式文档下载.docx
《整理点net面试之葵花宝典Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《整理点net面试之葵花宝典Word格式文档下载.docx(41页珍藏版)》请在冰豆网上搜索。
server"
>
<
/asp:
TextBox>
INPUTid="
Button2"
value="
Button"
name="
7.请解释ASP.NET中的web页面与其隐藏类之间的关系?
一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类。
例如一个页面Tst1.aspx的页面声明如下
%@Pagelanguage="
c#"
Codebehind="
Tst1.aspx.cs"
AutoEventWireup="
false"
Inherits="
T1.Tst1"
%>
Codebehind="
表明经编译此页面时使用哪一个代码文件
Inherits="
表用运行时使用哪一个隐藏类
8.什么是viewstate,能否禁用?
是否所有控件都可以禁用?
Viewstate是保存状态的一种机制,用来存储页面范围内的数据,以保证用户在离开页面之前数据的持续性,实现上来说,ViewState被保存在页面内的一个隐藏控件内,并且提交到服务器后被提取后使用,EnableViewState属性设置为false即可禁用:
9.当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?
怎么解决
很有可能是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断。
10.请解释什么是上下文对象,在什么情况下要使用上下文对象
上下文对象是指HttpContext类的Current属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象。
11.请解释转发与跳转的区别?
转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面
跳转就是指客户端的跳转;
超链接跳转:
通过地址栏传递字符串,丢失前面的请求,无法动态改变请求的地址;
地址栏改变。
HyperLink1.NavigateUrl=“a.aspx?
name="
+TextBox1.Text;
浏览器重定向:
通过地址栏传递字符串;
丢失前面的请求;
服务器得到的将是新的请求;
地址栏改变;
两次往返;
只能传string,255个字符,Response.Redirect(“a.aspx?
name=”+a);
服务器转发:
将新页面的输出覆盖到原页面上;
不会丢失原始请求;
地址栏没有变。
Server.Transfer("
a.aspx"
);
服务器执行:
将新页面的输出附加到原页面上;
不会丢失原始请求;
Server.Execute("
12.请简述一下用Socket进行同步通讯编程的详细步骤
1、在应用程序和远程设备中使用协议和网络地址初始化套接字
2、在应用程序中通过指定端口和地址建立监听
3、远程设备发出连接请求
4、应用程序接受连接产生通信scoket
5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)
6、通讯结束,关闭应用程序和远程设备的Socket回收资源
13.请解释web.config文件中的重要节点
appSettings包含自定义应用程序设置。
system.web系统配置。
compilation动态调试编译设置。
authentication身份验证,此节点设置应用程序的身份验证策略。
customErrors自定义错误信息设置。
authorization授权,此节设置应用程序的授权策略。
14.列举ASP.NET页面之间传递值的几种方式。
1.使用QueryString,如....?
id=1;
response.Redirect()....可以将传递的值显示在浏览器的地址栏中。
2.使用Session变量,作用于用户个人,过量的存储会导致服务器内存资源的耗尽。
3.Application对象的作用范围为全局,对所有用户都有效。
其常用方法Lock与Unlock。
4.使用Cookie对象变量,存值-Response.AppendCookie("
Cookie名称"
),拿值:
Request.Cookie["
].Value。
5.使用Server.Transfer,
15.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
session(viewstate)会话状态,简单,但易丢失。
application应用程序状态全局。
cookie简单,但可能不支持,可能被伪造。
inputtype="
hidden"
简单,可能被伪造。
url参数简单,显示于地址栏,长度有限,数据库稳定,安全,但性能相对弱。
16.override与重载的区别
Override用来重写父类的方法,
重载--使用相同名的方法或操作符拥有不同类型的参数
17、.net的错误处理机制是什么?
try{可能要出错的代码}
catch{扑捉到错误后的处理}
finally{不论代码是否出错都要执行}
18、C#中接口和类的异同:
接口是负责功能的定义,(是一种标准和规范,约束类的行为)项目中通过接口来规范类,操作类以及抽象类的概念!
而类是负责功能的具体实现!
在类中也有抽象类的定义,抽象类与接口的区别在于:
抽象类是一个不完全的类,类里面有抽象的方法和属性,也可以有具体的方法和属性,需要进一步的专业化。
但接口是一个行为的规范,里面的所有东西都是抽象的!
一个类只可以继承一个基类也就是父类,但可以实现多个接口
同:
都不能实例化对象。
都包含未实现的方法声明(两者中的方法都不可以有方法体)。
派生类必须全部实现未实现的方法。
异:
使用关键字不同。
抽象类可包含普通方法,接口只能有抽象方法。
抽象类可实现部分方法,接口则必须实现全部方法。
抽象类访问修饰符有多种,接口的方法的访问权限只有public一种。
抽象类只能单继承,接口则可多实现。
】
19、DataReader和DataSet的异同
DataReader和DataSet最大的区别:
在于DataReader使用时始终占用SqlConnection,在线操作数据库。
任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.断开与数据库连接。
读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存..但是却比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作;
20.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
Using引入一个命名空间,他实现了IDisposable的类型对象调用Dipose方法,using语句能够保证使用的对象的Dispose方法在using语句块结束时调用,无论是否有异常被抛出,C#编译器在编译时自动为using语句加上try/finally块,所有using的本质和异常捕捉语句一样,但语法更为简洁,所有using使用的对象都应该在using语句开始后再初始化,以保证所有的对象能够被Dispose
Using有三种用途:
引用命名空间;
为命名空间或类型创建别名;
使用Using语句。
New实例化一个对象,或修饰一个方法,表此方法完全重写此方法;
(使用new修饰符显式隐藏从基类继承的成员。
若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并用NEW修饰符修饰它)
21.谈谈类和结构的区别?
1.结构是值类型:
值类型在栈上分配地址,所有的基类型都是结构类型
类是引用类型:
引用类型在堆上分配地址堆栈的执行效率要比堆的执行效率高可是堆栈的资源有限,不适合处理大的逻辑复杂的对象所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑
2.继承性
结构:
不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed.
类:
完全可扩展的,除非显示的声明sealed否则类可以继承其他类和接口,自身也能被继承
注:
虽然结构不能被继承可是结构能够继承接口,方法和类继承接口一样
3.内部结构:
没有默认的构造函数,但是可以添加构造函数
没有析构函数
没有abstract和sealed(因为不能继承)
不能有protected修饰符
可以不使用new初始化
在结构中初始化实例字段是错误的
有默认的构造函数
有析构函数
可以使用abstract和sealed
有protected修饰符
必须使用new初始化
22.什么是SOAP,有哪些应用。
答:
SOAP(SimpleObjectAccessProtocol)简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。
使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一种语言相互通信。
这种相互通信采用的是XML格式的消息
23.常用的调用webservice方法有哪些?
可以从浏览器ASP页或其他WEB服务调用可以使用HTTP-GETHTTP-POST访问WEB服务。
也可以从ASP页或其他WEB服务向其他WEB服务发出SOAP请求GET、POSTSOAP使用WEB服务代理
24.私有程序集与共享程序集有什么区别?
一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。
共享程序集通常存储在全局程序集缓存(GlobalAssemblyCache)之中,这是一个由.NET运行时所维护的程序集仓库。
共享程序集通常是对许多应用程序都有用的代码库,比如.NETFramework类。
25.请解释进程与线程的区别?
进程与程序的区别?
一般,一个应用程序对应于一个或多个进程,可以把进程看作是该应用程序在*作系统中的标识;
而一个进程通常由多个线程组成,而线程是*作系统为该应用程序分配处理时间的最小单元。
26.CLR与IL分别是什么含义?
CLR:
公共语言运行时,类似于Java中的JVM,Java虚拟机;
在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是CLR,CLR将直接与操作系统进行通信,而编程语言如C#.NET将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性,可以这样看:
CLR就是具体的编程语言如:
C#.NET与*作系统之间的翻译,同时它为具体的编程语言提供了许多资源:
IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;
所有.NET源代码(不管用哪种语言编写)在进行编译时都被编译成IL。
在应用程序运行时被即时(Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。
27.什么叫做SQL注入,如何防止?
请举例说明。
利用sql关键字对网站进行攻击。
过滤关键字'
等
28.请叙述类与结构的区别。
1)、结构是值类型;
2)、结构不支持继承;
3)、结构不能定义默认的构造函数;
4)、结构不能定义析构函数;
5)、结构不能使用初始值设置域值。
29.ASP.net的身份验证方式有哪些?
分别是什么原理?
术语
定义
Windows
提供有关如何将Windows身份验证与MicrosoftInternet信息服务(IIS)身份验证结合使用来确保ASP.NET应用程序安全的信息。
Forms
提供有关如何使用您自己的代码创建应用程序特定的登录窗体并执行身份验证的信息。
使用Forms身份验证的一种简便方法是使用ASP.NET成员资格和ASP.NET登录控件,它们一起提供了一种只需少量或无需代码就可以收集、验证和管理用户凭据的方法。
有关更多信息,请参见使用成员资格管理用户和ASP.NET登录控件概述。
Passport
提供有关由Microsoft提供的集中身份验证服务的信息,该服务为成员站点提供单一登录和核心配置文0件服务。
30..请问:
String类与StringBuilder类有什么区别?
(简答)
a)string是个独特的基本数据类型,它是基本数据类型中唯一的引用类型。
StringBuilder也是引用类型;
b)string虽然是引用类型,但其分配一般不使用new表达式,而StringBuilder需要使用new表达式;
c)用string.Empty表示空字符串,不要用“”,由于string.Empty的定义为publicstaticreadonlystringEmpty,编译时会转化成“”,但是string.Empty是一个常数,“”是一个字符串对象,对字符串对象进行运算总是很慢的。
使用newStringBuilder()表示空的StringBuilder;
d)使用string或者StringBuilder前要检查字符串是否为null,null意味着字符串没有赋值,没有分配内存;
e)使用Length来检查检查String或者StringBuilder的长度,如果为0表示空字符;
f)string的值存放在常量池中,引用置于栈上;
StringBuilder的值存放在堆中,引用存放在栈上;
g)任何对string的修改都会创建一个新string对象;
而StringBuilder的Append方法只是修改最初分配的空间上的数据,并能动态改变容量;
h)需要按引用传递两个参数才能交换两个string或者StringBuilder对象;
频繁进行字符串连接操作时,使用StringBuilder来改善性能,连接操作越频繁,差别越明显。
31.请叙述属性与索引器的区别。
属性索引器
通过名称标识通过签名标识。
通过简单名称或成员访问来访问。
通过元素访问来访问。
可以为静态成员或实例成员。
必须为实例成员。
属性的get访问器没有参数。
索引器的get访问器具有与索引器相同的形参表。
属性的set访问器包含隐式value参数。
除了value参数外,索引器的set访问器还具有与索引器相同的形参表。
32.请叙述const与readonly的区别。
readonly关键字与const关键字不同:
const字段只能在该字段的声明中初始化。
readonly字段可以在声明或构造函数中初始化。
因此,根据所使用的构造函数,readonly字段可能具有不同的值。
另外,const字段是编译时常数,而readonly字段可用于运行时常数。
readonly只能在声明时或者构造函数里面初始化,并且不能在static修饰的构造函数里面。
33.重载与覆盖的区别
1、方法的覆盖是子类和父类之间的关系,是垂直关系;
方法的重载是同一个类中方法之间的关系,是水平关系。
2、覆盖只能由一个方法,或只能由一对方法产生关系;
方法的重载是多个方法之间的关系。
3、覆盖要求参数列表相同;
重载要求参数列表不同。
4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;
重载关系,是根据调用时的实参表与形参表来选择方法体的。
=*****34、在C#中,stringstr=null与stringstr=“”。
stringstr=null是不给他分配内存空间,而stringstr="
给它分配长度为空字符串的内存空间.
35.Internal修饰符有什么含义?
internal数据访问修饰符,表示对所修饰的成员在当前程序集内可以进行没有任何限制的访问;
但在当前程序集外部则不能进行访问,其可访问性级别低于public,高于protected。
36.JAVA的代码是半编译半解释的,C#的代码是否也是这样
C#中对于程序代码的处理很类似于Java中的程序代码处理机制;
也可以称作半编译半解释,具体为:
37.什么是程序集和应用程序域?
程序集(Assembly)是一个由类型定义,数据文件和资源文件组成的逻辑集合。
每个程序集都包含一个程序集清单,该清单通常被附加在某个文件头上,也可以设置单独建立一个文件来包含该清单。
应用程序域是CLR中提供代码运行范围,错误隔离和安全设置隔离的逻辑单元,功能类似于操作系统的进程。
一个或多个应用程序域在一个操作系统的进程中运行,应用程序域的创建和销毁所需的开销,相对于操作系统进程较小。
但和系统进程一样,应用程序域之间的数据共享相当困难。
38.请解释进程与线程的区别?
一般,一个应用程序对应于一个或多个进程,可以把进程看作是该应用程序在*作系统中的标识;
39.CLR与IL分别是什么含义?
CLR:
在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是CLR,CLR将直接与*作系统进行通信,而编程语言如C#.NET将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性;
40.对象能否调用静态方法
不能。
对于类内部定义的静态变量及静态方法,该类的对象均不能调用。
41.请解释ASP.NET中以什么方式进行数据验证
非空验证(RequiredFieldValidator)比较验证(CompareValidator)
范围验证(RangeValidator)正则表达式验证(RegularExpressionValidator)
自定义验证控件(CustomValidator)集中验证信息处理控件(ValidationSummary)
42.WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?
在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件
自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到服务端只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件
(c/s是客户端和服务器,b/s是浏览器和服务器。
c/s在客户端要安装软件的,b/s只要有IE就可以浏览。
c/s的扩展升级比较困难,b/s就很容易的。
c/s的安全性好一些,b/s就没有c/s的高。
c/s一般用在局域网,b/s一般用在广域网。
)
43.Session的存储方式和设置方法
Session数据一共有四种存储方式,分别为存储在IIS进程中,状态服务器中,SqlServer数据库中和自定义程序中,除了准备必要的服务外(如SQLSERVER数据库服务器),还需要配置站点的Web.config。
44.请解释什么是上下文对象,在什么情况下要使用上下文对象
上下文对象是指HttpContext类的Current属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction,page,cache,context,trace)时就要以使用此对象
44.什么是ASP.net中的用户控件,他和自定义控件的区别?
用户控件就是.ascx扩展名的东西,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.
1、用户控件只能在当前项目中使用,而自定义控件可以在多个项目中重复使用
2、自定义控件最终编译成动态连接库形式,使用自定义控件时,可以在项目中直接添加对该动态库的引用,然后通过代码创建该自定义控件
3、如果自定义控件从已有的控件继承而来,则可以在已有的控件的OnPaint事件中重绘该控件的外观
45.列举一下你所了解的XML技术及其应用
xml可以用来做网页(xslt)
xml可以当作数据库
xml可以用来保存对象的系列化(web服务好象是基于这个的)
46.ADO.net中常用的对象有哪些?
分别描述一下。
对象
说明
Connection
建立与特定数据源的连接。
所有Connection对象的基类均为DbConnection类。
Comman