1、简述private、protected、public、internal修饰符的访问权限。答:private私有成员在该类的内部才可以访问Protected保护成员在该类中和该类的继承类中可以访问Public公共成员完全公开,没有访问权限Internal在同一个命名空间内可以访问2、列举ASP.NET页面之间传递值的几种方式。答:Querrysting属性;session变量;server.transfer方法3.一列数的规则如下:1、1、2、3、5、8、13、21、34......求第30位数是多少,用递归算法实现。答:publicclassMainClass{publicstaticvoidMain(){Console.WriteLine(Foo(30));}publicstaticintFoo(inti){if(i=0)return0;elseif(i0&&i=2)return1;elsereturnFoo(i-1)+Foo(i-2);}}4.C#中的委托是什么?事件是不是一种委托?答:委托是一种可以把引用存储为函数的类型。委托的声明非常类似于函数,但不带函数体,且要使用delegate关键字。委托的声明制定了一个返回类型和一个参数列表。声明委托后就可以定义该该委托类型的变量,接着把这个变量初始化为与委托有相同返回类型和参数列表的的函数引用,之后就可以使用委托变量调用这个函数,就像该变量是一个函数一样。委托类似于函数指针,但函数指针只能引用静态方法,而委托既能引用静态方法,也能引用实例方法。委托使用分三步:1、委托声明。2、委托实例化。3、委托调用。委托声明了以后,就可以象类一样进行实例化,实例化时把要引用的方法(如:Add)做为参数,这样委托和方法就关联了起来,就可以用委托来引用方法了。委托和所引用的方法必须保持一致:1、参数个数、类型、顺序必须完全一致。i02、返回值必须一致。有事件,就会有对事件进行处理的方法,而事件和处理方法之间是怎么联系起来的呢?委托就是他们中间的桥梁,事件发生时,委托会知道,然后将事件传递给处理方法,处理方法进行相应处理。比如在WinForm中最常见的是按钮的Click事件,它是这样委托的:this.button1.Click+=newSystem.EventHandler(this.button1_Click);按按钮后就会出发button1_Click方法进行处理。EventHandler就是系统类库里已经声明的一个委托。-------委托实例化,this.buttion1_click为方法名EventHandler以及其它自定义的事件委托都是一类特殊的委托,他们有相同的形式:delegatevoid事件委托名(objectsender,EventArgse);5.重写(override)与重载(overloads)的区别答:使用overrride修饰符来修改方法、属性、索引器或事件。重写方法提供从基类继承的成员的实现。重写基方法必须和重写方法具有相同的签名。重写基方法必须是虚拟的、抽象的或重写的。继承时发生,在子类中重新定义父类中的方法,子类中的方法和父类的方法是一样的Overloads是指在一个类中用相同名称但是不同的参数类型创建一个以上的过程、实例构造函数和属性。同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法的参数列表不同。7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?答:使用递归对页面control树进行完全遍历,并对每一个control进行处理。递归算法如下:传入page的this.Colletions;对每一个contorl,如果contorl没有包含子control,进行处理;如果包含,递归调用这个函数处理子controlprivatevoidInitialControl(System.Web.UI.ControlCollectionobjControlCollection){foreach(System.Web.UI.ControlobjControlinobjControlCollection){if(objControl.HasControls()){InitialControl(objControl.Controls);}else{if(objControlisSystem.Web.UI.WebControls.TextBox){((TextBox)objControl).Text=String.Empty;}}}}8.请编程实现一个冒泡排序算法?答:classProgram{staticvoidMain(string[]args){int[]str={12,5,21,45,9,5,48,15,59,78};inttemp=0;for(inti=0;istr.Length-1;i++){for(intj=i+1;jstr.Length;j++){if(str[i]str[j]){temp=str[i];str[i]=str[j];str[j]=temp;}}}foreach(intxinstr){Console.WriteLine(x);}Console.ReadKey();}}9.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?答:所谓索引器就是一类特殊的属性,通过他们你就像引用数组一样引用自己的类。类里定义的每一个索引器必须拥有唯一的标签或参数列表;索引器必须是实例成员;为索引器定义的访问函数可以访问传递给索引器的参数。modifierreturntypethis[argumentlist]...{get...{//Getcodesgoeshere}set...{//Setcodesgoeshere}}注:modifier:修饰词,如private,public,protectedorinternalthis:在C#中this是一个特殊的关键字,它表示引用类的当前实例。在这里它的意思是当前类的索引。argumentlist:这里指索引器的参数。索引器参数可以采用任何类型,不过int是通常采用也是最为合理的类型。10.求以下表达式的值,写出您想到的一种或几种实现方法:1-2+3-4+……+m答:11.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?答:用3层结构来开发;数据访问层,业务层,表示层;数据访问层对数据库进行增删改查,业务层分业务表观层和业务规则层,表观层实现与表示层的沟通,规则层实现用户密码的安全,表示层用于与用户交互;优点:分工明确,条理清晰,易于调试,可扩展性好;缺点:增加成本13.什么叫应用程序域?答:a.应用程序域是为隔离正在运行的应用程序提供了一种灵活而安全的方法;b.应用程序域通常由运行库宿主创建和操作,有时,你可能希望应用程序以编程的方式与应用程序域交互,例如想在不停止某个应用程序时卸载某个组件;c.应用程序域使得应用程序以及应用程序的数据彼此分离,有助于提高安全性。单个进程可以运行多个应用程序域,并具有在单独进程中所存在的隔离级别。在单个进程中运行多个应用程序提高服务器的伸缩性;14.CTS、CLS、CLR分别作何解释?答:CTS是通用类型系统(CommonTypeSystem):主要是实现了com的变量兼容类型,而且还定义了通过用户自定义类型的方式来进行类型扩展;任何以.net平台作为目标的语言必须建立他的数据类型与CTS的类型间的映射;CLS是公共语言规范(CommonLanguageSpecification):很显然编程语言的区别不仅仅在于类型还有是否支持多继承性、是否支持无符号数据类型、是否支持运算符重载等,CLS限制了有这些不同而所引发的互操作性问题;CLS制定了一种以.net平台为目标的语言所必须支持的最小特征,以及该语言和其他.net语言之间实现互操作性所需要的完备特征;CLS是CTS的一个子集;CLR是公共语言运行库(CommonLanguageRunTime):CLR是CTS的实现;CLR是应用程序的执行引擎和功能齐全的类库。该类库严格按照CTS规范实现;作为程序执行引擎,CLR负责安全的载入和运行用户的程序代码,包括对不用对象的垃圾回收和安全检查;在CLR监控之下的代码为托管代码,做为类库CLR提供上百个可用的有用类型,这些类型可通过继承进行扩展;Clr---是一个托管的处理的环境,用以处理存储配置、错误跟踪以及与操作系统服务的信息交互,他其实是一个虚拟执行系统,主要负责运行所有的托管代码;15.什么是装箱和拆箱?答:装箱是指将值类型转换为引用类型;一个装箱的过程是将值类型转换为引用类型的过程:如:intval=100;objectobj=val;console.WriteLine(“对象的值是:{0}”,obj);拆箱是指将引用类型转换为值类型;一个拆箱的过程是将值类型转换为引用类型,再将引用类型转换为值类型的过程;如:intval=100;objectobj=val;intnum=(int)obj;Console.WriteLine(“num的值:{0}”,num);16.什么是受管制的代码?答:托管代码就是把有关内存管理(内存分配、内存释放、垃圾回收之类)都是由.net的CLR来管理的程序代码,也就是说使用托管代码把底层的一些操作都封装起来了,不能直接进行内存读取之类的和硬件相关的操作;优点:比较安全不会出现内存泄露的问题。缺点:不能直接读取内存,性能上会有所损失。使用起来有时也不够灵活。17.什么是强类型系统?答:使用强类型语言的系统,因为每个对象和变量都必须要声明类型。18.net中读写数据库需要用到那些类?他们的作用?答:DataSet数据存储器,用来无连接的存储多个表的数据及表之间的关联关系;SqlConnection连接数据库;SqlCommand执行SQL语句和存储过程;SqlDatareader实现对数据表记录向前读取,一次读取一条记录;SqlDataAdapter用来将数据填充到dataset和从dataset中把数据更新到数据库。19.ASP.net的身份验证方式有哪些?分别是什么原理?答:Windows身份验证提供程序:提供有关如何将Windows身份验证与Microsoftinternet信息服务(IIS)身份验证结合使用来确保asp.net应用程序安全的信息。Forms身份验证提供程序:提供有关如何使用您自己的代码来创建应用程序特定登陆页面并执行什么验证的信息,使用forms身份验证的最简单的方法是asp.net的成员资格和asp.net的登陆控件,他们一起提供了一种只需少量或无需代码就可以收集、验证、管理用户凭据的方法。Passport身份验证提供程序:提供有关由Microsoft提供的集中身份验证服务的信息,该服务为成员站点提供单一登录和核心配置。20.什么是Code-Behind技术?答:即代码隐藏,主要是通过aspx页面指向对应的cs文件,可以实现显示逻辑和处理逻辑的分离,这样做有别于以前asp页面和代码全混在一起不容易后期的维护和修改,使用codebehind更容易维护,美工和程序员可以很好的分工。ASPX,RESX和CS三个后缀的文件,这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理.21.在.net中,配件的意思是?答:指程序集,包括中间语言、元数据、资源、装配清单等;有时一个配件是指一个exe或dll文件,实际上是一个应用程序(就是指带有主程序入口点的模块)或者一个库文件;但配件实际上可以是由一个或者多个文件组成,代表一组资源以及类型的定义和实现的集合。一个配件也可以包含其他配件的引用,所有这些资源、类型、引用都在一个列表中描述。22.常用的调用WebService的方法有哪些?答:可以根据WSDL文件生成客户端。或直接根据地址调用,直接调用主要有axis和soap两种方法;在vs.net中常规处理是添加