点net面试之葵花宝典.docx
《点net面试之葵花宝典.docx》由会员分享,可在线阅读,更多相关《点net面试之葵花宝典.docx(73页珍藏版)》请在冰点文库上搜索。
点net面试之葵花宝典
.net
1、ASP.NET里命名空间的定义;
答:
命名空间是类的逻辑分组,它组织成一个层次结构——逻辑树。
这个树的根是System。
在ASP.NET页面中,可以默认的使用某些命名空间中包含的类,称做标准的ASP.NET命名空间。
对于其他命名空间,则必须显式地导入
2、.net中类与对象的关系;
答:
万物都是对象,而类是对象的一个编程语言概念上的描述
3、IspostBack的作用,当其值为TRUE或FALSE时的作用;
答:
IspostBack可以防止每次加载页面时都绑定一些数据,第一次加载页面时IspostBack的值是false,以后每次加载页面时都是true
4.CLR、CTS、CLS分别是什么意思?
共公语言运行库,通用类型系统,公共语言规范
5.什么是基元类型?
由编译器直接支持的数据类型称为基元类型.
6、简要谈一下您对微软.NET构架下remoting和webservice两项技术的理解以及实际中的应用。
remoting是.net中用来跨越machine,process,appdomain进行方法调用的技术,对于三成结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的DCOMWebService是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。
WebService令基于组件的开发和web的结合达到最佳,基于组件的对象模型;
7.请解释ASP。
NET中以什么方式进行数据验证;
非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件
8.WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?
自动传回是什么?
为什么要使用自动传回。
在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件
9.WEB控件及HTML服务端控件能否调用客户端方法?
如果能,请解释如何调用?
可以调用
例如:
TextBoxid="TextBox1"onclick="clientfunction();"runat="server">
TextBox>
10.请解释ASP.NET中的web页面与其隐藏类之间的关系?
一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下
<%@Pagelanguage="c#"Codebehind="Tst1.aspx.cs"AutoEventWireup="false"Inherits="T1.Tst1"%>
Codebehind="Tst1.aspx.cs"表明经编译此页面时使用哪一个代码文件
Inherits="T1.Tst1"表用运行时使用哪一个隐藏类
11.什么是viewstate,能否禁用?
是否所有控件都可以禁用?
Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用:
12.当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?
怎么解决
很有可能是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断
13.请解释什么是上下文对象,在什么情况下要使用上下文对象
上下文对象是指HttpContext类的Current属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象
14.请解释转发与跳转的区别?
转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面
跳转就是指客户端的跳转
15.请简述一下用Socket进行同步通讯编程的详细步骤
1、在应用程序和远程设备中使用协议和网络地址初始化套接字
2、在应用程序中通过指定端口和地址建立监听
3、远程设备发出连接请求
4、应用程序接受连接产生通信scoket
5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)
6、通讯结束,关闭应用程序和远程设备的Socket回收资源
16.请解释web.config文件中的重要节点
appSettings包含自定义应用程序设置。
system.web系统配置
compilation动态调试编译设置
customErrors自定义错误信息设置
authentication身份验证,此节设置应用程序的身份验证策略。
authorization授权,此节设置应用程序的授权策略.
17.列举ASP.NET页面之间传递值的几种方式。
1.使用QueryString,如....?
id=1;response.Redirect()....
2.使用Session变量
3.使用Server.Transfer
18.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
session(viewstate)简单,但易丢失
application全局
cookie简单,但可能不支持,可能被伪造
inputttype="hidden"简单,可能被伪造:
url参数简单,显示于地址栏,长度有限:
数据库稳定,安全,但性能相对弱:
19.override与重载的区别
Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数
20、.net的错误处理机制是什么
try{可能要出错的代码}
catch{扑捉到错误后的处理}
finally{不论代码是否出错都要执行}
21、C#中接口和类的异同
接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!
而类是负责功能的具体实现!
在类中也有抽象类的定义,抽象类与接口的区别在于:
抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。
但接口是一个行为的规范,里面的所有东西都是抽象的!
一个类只可以继承一个基类也就是父类,但可以实现多个接口
22、DataReader和DataSet的异同
DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作;
23.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
Using引入一个名子空间,或在使用了一个对像后自动调用其IDespose,New实例化一个对像,或修饰一个方法,表此方法完全重写此方法;
24.谈谈类和结构的区别?
1.结构是值类型:
值类型在堆栈上分配地址,所有的基类型都是结构类型
类是引用类型:
引用类型在堆上分配地址堆栈的执行效率要比堆的执行效率高可是堆栈的资源有限,不适合处理大的逻辑复杂的对象所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑
2.继承性
结构:
不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed.
类:
完全可扩展的,除非显示的声明sealed否则类可以继承其他类和接口,自身也能被继承
注:
虽然结构不能被继承可是结构能够继承接口,方法和类继承接口一样
3.内部结构:
结构:
没有默认的构造函数,但是可以添加构造函数
没有析构函数
没有abstract和sealed(因为不能继承)
不能有protected修饰符
可以不使用new初始化
在结构中初始化实例字段是错误的
类:
有默认的构造函数
有析构函数
可以使用abstract和sealed
有protected修饰符
必须使用new初始化
25.什么是SOAP,有哪些应用。
答:
SOAP(SimpleObjectAccessProtocol)简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。
使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。
这种相互通信采用的是XML格式的消息,具体请看:
26.常用的调用webservice方法有哪些?
可以从浏览器、ASP页或其他WEB服务调用可以使用HTTP-GETHTTP-POST访问WEB服务也可以从ASP页或其他WEB服务向其他WEB服务发出SOAP请求GET、POSTSOAP使用WEB服务代理
27.私有程序集与共享程序集有什么区别?
一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。
共享程序集通常存储在全局程序集缓存(GlobalAssemblyCache)之中,这是一个由.NET运行时所维护的程序集仓库。
共享程序集通常是对许多应用程序都有用的代码库,比如.NETFramework类。
28.请解释进程与线程的区别?
进程与程序的区别?
一般,一个应用程序对应于一个或多个进程,可以把进程看作是该应用程序在*作系统中的标识;而一个进程通常由多个线程组成,而线程是*作系统为该应用程序分配处理时间的最小单元。
29.CLR与IL分别是什么含义?
CLR:
公共语言运行时,类似于Java中的JVM,Java虚拟机;在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是CLR,CLR将直接与*作系统进行通信,而编程语言如C#.NET将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性,可以这样看:
CLR就是具体的编程语言如:
C#.NET与*作系统之间的翻译,同时它为具体的编程语言提供了许多资源:
IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;所有.NET源代码(不管用哪种语言编写)在进行编译时都被编译成IL。
在应用程序运行时被即时(Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。
30.什么叫做SQL注入,如何防止?
请举例说明。
利用sql关键字对网站进行攻击。
过滤关键字'等
31.请叙述类与结构的区别。
1)、结构是值类型;
2)、结构不支持继承;
3)、结构不能定义默认的构造函数;
4)、结构不能定义析构函数;
5)、结构不能使用初始值设置域值。
32.ASP.net的身份验证方式有哪些?
分别是什么原理?
术语
定义
Windows
提供有关如何将Windows身份验证与MicrosoftInternet信息服务(IIS)身份验证结合使用来确保ASP.NET应用程序安全的信息。
Forms
提供有关如何使用您自己的代码创建应用程序特定的登录窗体并执行身份验证的信息。
使用Forms身份验证的一种简便方法是使用ASP.NET成员资格和ASP.NET登录控件,它们一起提供了一种只需少量或无需代码就可以收集、验证和管理用户凭据的方法。
有关更多信息,请参见使用成员资格管理用户和ASP.NET登录控件概述。
Passport
提供有关由Microsoft提供的集中身份验证服务的信息,该服务为成员站点提供单一登录和核心配置文0件服务。
33..请问:
String类与StringBuilder类有什么区别?
为什么在.Net类库中要同时存在这2个类?
(简答)
如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。
两个类的工作原理不同:
String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。
因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。
这一来二去的,耗了不少时间。
而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。
当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。
34.请叙述属性与索引器的区别。
属性索引器
通过名称标识通过签名标识。
通过简单名称或成员访问来访问。
通过元素访问来访问。
可以为静态成员或实例成员。
必须为实例成员。
属性的get访问器没有参数。
索引器的get访问器具有与索引器相同的形参表。
属性的set访问器包含隐式valu参数。
除了value参数外,索引器的set访问器还具有与索引器相同的形参表。
35.请叙述const与readonly的区别。
每一个class至多只可以定义一个static构造函数,并且不允许增加访问级别关键字,参数列必须为空。
为了不违背编码规则,通常把static数据成员声明为private,然后通过statciproperty提供读写访问。
const关键字用于修改字段或局部变量的声明。
它指定字段或局部变量的值不能被修改。
常数声明引入给定类型的一个或多个常数。
const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。
因为它是在编译时就需要完全评估。
const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。
readonly在运行期评估赋值,使我们得以在确保“只读访问”的前提下,把object的初始化动作推迟到运行期进行。
readonly关键字与const关键字不同:
const字段只能在该字段的声明中初始化。
readonly字段可以在声明或构造函数中初始化。
因此,根据所使用的构造函数,readonly字段可能具有不同的值。
另外,const字段是编译时常数,而readonly字段可用于运行时常数。
readonly只能在声明时或者构造函数里面初始化,并且不能在static修饰的构造函数里面。
36.重载与覆盖的区别
1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。
2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
3、覆盖要求参数列表相同;重载要求参数列表不同。
4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。
37、在C#中,stringstr=null与stringstr=“”。
stringstr=null是不给他分配内存空间,而stringstr=""给它分配长度为空字符串的内存空间.
38.Internal修饰符有什么含义?
internal数据访问修饰符,表示对所修饰的成员在当前程序集内可以进行没有任何限制的访问;但在当前程序集外部则不能进行访问,其可访问性级别低于public,高于protected。
39.JAVA的代码是半编译半解释的,C#的代码是否也是这样
C#中对于程序代码的处理很类似于Java中的程序代码处理机制;也可以称作半编译半解释,具体为:
所有.NET源代码(不管用哪种语言编写)在进行编译时都被编译成IL。
在应用程序运行时被即时(Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。
40.私有程序集与共享程序集有什么区别?
一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。
共享程序集通常存储在全局程序集缓存(GlobalAssemblyCache)之中,这是一个由.NET运行时所维护的程序集仓库。
共享程序集通常是对许多应用程序都有用的代码库,比如.NETFramework类。
41.请解释进程与线程的区别?
进程与程序的区别?
一般,一个应用程序对应于一个或多个进程,可以把进程看作是该应用程序在*作系统中的标识;而一个进程通常由多个线程组成,而线程是*作系统为该应用程序分配处理时间的最小单元。
42.CLR与IL分别是什么含义?
CLR:
公共语言运行时,类似于Java中的JVM,Java虚拟机;在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是CLR,CLR将直接与*作系统进行通信,而编程语言如C#.NET将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性,可以这样看:
CLR就是具体的编程语言如:
C#.NET与*作系统之间的翻译,同时它为具体的编程语言提供了许多资源:
43.对象能否调用静态方法
不能。
对于类内部定义的静态变量及静态方法,该类的对象均不能调用。
44.请解释ASP.NET中以什么方式进行数据验证
A中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件
45.WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?
自动传回是什么?
为什么要使用自动传回。
在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件
自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到服务端只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件
46.什么是viewstate,能否禁用?
是否所用控件都可以禁用?
Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用
47.请解释什么是上下文对象,在什么情况下要使用上下文对象
上下文对象是指HttpContext类的Current属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction,page,cache,context,trace)时就要以使用此对象
48.什么是ASP.net中的用户控件,他和自定义控件的区别?
用户控件就是.ascx扩展名的东西,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.
1、用户控件只能在当前项目中使用,而自定义控件可以在多个项目中重复使用
2、自定义控件最终编译成动态连接库形式,使用自定义控件时,可以在项目中直接添加对该动态库的引用,然后通过代码创建该自定义控件
3、如果自定义控件从已有的控件继承而来,则可以在已有的控件的OnPaint事件中重绘该控件的外观
49.列举一下你所了解的XML技术及其应用
xml可以用来做网页(xslt)
xml可以当作数据库
xml可以用来保存对象的系列化(web服务好象是基于这个的)
50.ADO.net中常用的对象有哪些?
分别描述一下。
Connection数据库连接对像
Command数据库命令
DataReader数据读取器
DataSet数据集
51如何理解委托?
委托类似于C++函数指针,但它是类型安全的。
委托允许将方法作为参数进行传递。
委托可用于定义回调方法。
委托可以链接在一起;例如,可以对一个事件调用多个方法。
中读写数据库需要用到哪些类?
他们的作用
Configuration,Sqlconnection,Sqlcommand
53.UDP连接和TCP连接的异同。
UDP传输速度快但不安全
TCP传输速度相比UDP而言慢一些但是安全
54.什么是code-Behind技术。
ASPX,RESX和CS三个后缀的文件,这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理
55.如何理解.net中的垃圾回收机制。
在.NET与J2EE中的垃圾回收不同,在J2EE中,垃圾回收要写一大堆代码来处理,但是。
NET中将会自动处理。
垃圾回收就是将占用在内存中用不到的东西回收从而释放内存。
56.概述反射和序列化
反射:
程序集包含模块,而模块包含类型,类型又包含成员。
反射则提供了封装程序集、模块和类型的对象。
您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。
然后,可以调用类型的方法或访问其字段和属性
序列化:
序列化是将对象转换为容易传输的格式的过程。
例如,可以序列化一个对象,然后使用HTTP通过Internet在客户端和服务器之间传输该对象。
在另一端,反序列化将从该流重新构造对象。
57.概述o/rmapping的原理
利用反射,配置将类于数据库表映射
58.用sealed修饰的类有什么特点
sealed修饰符用于防止从所修饰的类派生出其它类。
如果一个密封类被指定为其它类的基类,则会发生编译时错误。
密封类不能同时为抽象类。
sealed修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。
具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。
59.概述.NET里对remoting和webservice两项技术的理解和实际中的应用。
远程逻辑调用,remoing接口只能用在.net中
60.EXE与DLL之间的区别?
EXE可以直接执行,DLL是动态链接库,不能被直接执行,附加到某个进程中才能执行.
61什么是强类型,什么是弱类型,那种更好些为什么?
强类型Java,C#,强类型在一块内存上定义了某种类型之后无法改变起类型的,例如stringstr;那么str不能当作int类型来使用,可以使用强制类型转化,弱类型:
javascript,弱类型把一块内存上定义为多种类型
62.阐述面向接口、面向对象、面向方面编程的区别
面向接口:
通过接口