ASPNET提供两种类型的服务器控件:HTML服务器控件和Web服务器控件。Html服务器控件就是在其代码中加入runat=“server”。web服务器控件就是通常使用的 列举ADO.net中的五个主要对象Command、Connection、DataSet、DataAdapter、DataReader。Connection对象用于在应用程序和数据库之间的连接Command可以检索和操纵数据库中的数据DataAdapter对象充当DataSet和数据源之间用于检索和保存数据的桥接器DataSet对象从数据库检索的数据可以存储在其中能够以XML形式保存DataReader是查询结果的一种只进。只读的视图不具有DataSet的任何复杂功能所以可以加快访问和查看数据的速度不提供断开式访问2.简述IsPostBack的作用?3.向服务器发送请求有几种方式?分别是如何获取值的?4.简述session、cookie、application的作用及异同?C#中接口和类的异同?类是负责功能的实现接口则是负责功能的定义项目中可以通过实现接口来规范类.DataReader和DataSet的异同?DataReader使用时始终占用SqlConnection,在线操作数据库每次只在内存中加载一条数据,所以占用的内存是很小的是只进的、只读的DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接(非连接式)DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作(动态操作读入到内存的数据)大概描述一下ASP。NET服务器控件的生命周期答:初始化加载视图状态处理回发数据加载存状态呈现处置卸载发送回发更改通知处理回发事件预呈现保C#支持多重继承么?类之间不支持,接口之间支持。类对接口叫做实现,不叫继承。C#中所有对象共同的基类是什么?System.Object重载和覆写有什么区别?重载提供了对一个方法签名的不同参数调用的实现覆写提供了子类中改变父类方法行为的实现。ADO。NET相对于ADO等主要有什么改进1:ado.net不依赖于oledb提供程序,而是使用.net托管提供的程序,2:不使用com3:不在支持动态游标和服务器端游标4:,可以断开connection而保留当前数据集可用5:强类型转换6:xml支持接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?接口用于规范,抽象类用于共性.声明方法的存在而不去实现它的类被叫做抽象类接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。4、C#中接口和类的异同接口和类都是类,不同的事,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。8.C#中的接口和类有什么异同。答:接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!而类是负责功能的具体实现!在类中也有抽象类的定义,抽象类与接口的区别在于:抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。但接口是一个行为的规范,里面的所有东西都是抽象的!一个类只可以继承一个基类也就是父类,但可以实现多个接口堆和栈的区别?堆:由系统管理,随系统产生而存在。有关键字NEW栈:依赖于线程,随时线程产生而产生,消亡而消亡。共同点:都是一块存储区域。sleep()和wait()有什么区别?sleep()将当前线程阻塞指定的毫秒数wait()释放对象上的锁并阻塞当前线程,直到它重新获取该锁请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。session(viewstate)applicationcookieinputtype=\"hidden\"url参数数据库简单,但易丢失简单,但易丢失全局简单,但可能不支持,可能被伪造简单,可能被伪造简单,显示于地址栏,长度有限稳定,安全,但性能相对弱CTS、CLS、CLR分别作何解释?答:CTS:通用类型系统。CLS:通用语言规范。CLR:公共语言运行时。Strings=newString(\"xyz\");创建了几个StringObject?//java题答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。对WebService的体会?答:特殊的web应用程序,http协议,80端口,按照soap协议xml协议进行封装,传递的是xml的信息报包好处:跨平台,无处不到缺点:速度慢,服务器压力大out和ref的区别out关键字[输出型参数],指定给定的参数是一个输出参数,它也可以在函数结束时将值返回给调用的变量,out在方法调用时可以不用初始化,在返回时必须初始化。ref关键字[引用型参数],声明为ref的参数变量传递的是指针[指向实际内存地址]的地址区别:1.把未赋值的变量用ref参数时非法的,而out可以.2.在使用out时,该参数必须是看作还未赋值的,如果对一个已经赋值的变量使用out参数,则该值在函数调用的过程中,存储在该变量中的值会在执行时丢失.简述private、protected、public、internal修饰符的访问权限。private:私有成员,在类的内部才可以访问。protected:保护成员,该类内部和继承类中可以访问。public:公共成员,完全公开,没有访问限制。internal:在同一命名空间内可以访问。Protectedinternal:包括了Protected和Internal修饰符,成员只能由包含了基类的应用程序中的从该基类派生的子类所访问。当你希望一个类中的成员只能由其子类访问,并且拒绝其他应用程序访问该类的这个成员的时候,你就要将其声明未受保护内部成员。Application、Session、Cookie、ViewState和Cache等变量的区别是什么?Application是公共的,所有人都能看到,所以可以用来做聊天室,session是私有的,每个客户端都存在一个不同的session生存期正常是20分钟,也可以自己设定为1分钟或2个小时,它存在于服务器端cookie是保存在本机的文件,记录短小的信息,除非你让cookie过期,否则会一直存在。viewstate类似于asp中的hidden控件,用来记录页面中的控件的状态的,主要在页面间信息传递时用,cache是缓存,用来记录已经执行过的一些数据,比如读取数据库,目的是加速显示,减少服务器的负担,过期时间也是可以自己设定的。(2)能用foreach遍历访问的对象需要实现_IEnumerable接口或声明_GetEnumerator方法的类型。publicstaticconstintA=1;这段代码有错误么?是什么?const成员都是static所以应该去掉static.多次出现过这样的问题在.Net中所有可序列化的类都被标记为__[serializable]___在Asp.net中所有的自定义用户控件都必须继承自_System.Web.UI.UserControl__枚举中数据可以被赋值为负数,例:c)publicenumvar1{Mike=-1,Nike,Jike}根据C标准的规定,枚举常量的类型为int,枚举变量的类型应该与char、有符号或无符号整型兼容。因此,枚举变量可以接受char、有符号或无符号整型数,而不限于仅从此枚举类型所定义的枚举常量中取值。由于上述原因,在C语言中无法从语法上保证枚举变量只能在定义的枚举成员中取值,只能由程序员自身保证不使用除枚举成员之外的值。10.int[][]myArray3=newint[3][]{newint[3]{5,6,2},newint[5]{6,9,7,8,3},newint[2]{3,2}};myArray3[2][2]的值是(D)。a)9b)2c)6d)越界11.接口是一种引用类型,在接口中可以声明(A),但不可以声明公有的域或私有的成员变量。a)方法、属性、索引器和事件;b)方法、属性信息、属性;c)索引器和字段;d)事件和字段;14.在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(C)。a)insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;b)ExecuteNonQuery()方法返回执行Sql语句所影响的行数。c)Select操作的Sql语句只能由ExecuteReader()方法来执行;d)ExecuteReader()方法返回一个DataReder对象;11.请问:String类与StringBuilder类有什么区别?为什么在.Net类库中要同时存在这2个类?(简答)如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。12.以下哪个类是int的基类?(C)找最近的父类,int继承ValueType,ValueType继承ObjectA.Int32B.ObjectC.ValueTypeD.Int16object是所有类型的基类,当然也是Int的基类,可是Int继承自ValueType,ValueType又继承自object,那是不是可以说ValueType也是Int的基类呢?基类是面向对象语言中的一个概念18.请叙述属性与索引器的区别。属性通过名称标识。通过简单名称或成员访问来访问。可以为静态成员或实例成员。属性的属性的数。getset访问器没有参数。访问器包含隐式value参通过签名标识。通过元素访问来访问。必须为实例成员。get表。访问器具有与索引器相同的形参表。除value参数外,set访问器还具有与索引器相同的形参索引器19.请叙述const与readonly的区别。每一个class至多只可以定义一个static构造函数,并且不允许增加访问级别关键字,参数列必须为空。为了不违背编码规则,通常把static数据成员声明为private,然后通过statciproperty提供读写访问。const关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。readonly在运行期评估赋值,使我们得以在确保“只读访问”的前提下,把object的初始化动作推迟到运行期进行。readonly关键字与const关键字不同:const字段只能在该字段的声明中初始化。readonly字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly字段可能具有不同的值。另外,const字段是编译时常数,而readonly字段可用于运行时常数。readonly只能在声明时或者构造函数里面初始化,并且不能在static修饰的构造函数里面。Const可以看做自然数中的常量,一旦定义就不会改变:readonly只读信息,只可以在构造函数中赋值和改变,在其他地方不能改变。4.写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。)selecttop10*fromAwhereidnotin(selecttop30idfromA)解2:selecttop10*fromAwhereid>(selectmax(id)from(selecttop30idfromA)asA)2.override与重载的区别Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数1.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?Using引入一个命名空间,或在使用了一个对像后自动调用其IDespose,New实例化一个对像,或修饰一个方法,表此方法完全重写此方法56:请指出GAC的含义答全局访问缓存4.谈谈类和结构的区别?最大区别一个是引用类型,一个是值类型默认成员访问为public是另外一个区别8.62-63=1等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?答案:62移动成2的6次方.如何把一个array复制到arrayList里foreach(objectoinarray)arrayList.Add(o);4.概述反射和序列化反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用HTTP通过Internet在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。7.用sealed修饰的类有什么特点sealed修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其它类的基类,则会发生编译时错误。密封类不能同时为抽象类。总的来说就是不能被继承.其他用法和普通类相同.sealed修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。7.如何理解委托?答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.msdn2005中是这样解释的:委托具有以下特点:委托类似于C++函数指针,但它是类型安全的。委托允许将方法作为参数进行传递。委托可用于定义回调方法。委托可以链接在一起;例如,可以对一个事件调用多个方法。方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。10.UDP连接和TCP连接的异同。答:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结.8.CLR与IL分别是什么含义?CLR:公共语言运行时,类似于Java中的JVM,Java虚拟机;在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是CLR,CLR将直接与操作系统进行通信,而编程语言如C#.NET将尽量避免直接与操作系统直接通信,加强了程序代码的执行安全性,可以这样看:CLR就是具体的编程语言如:C#.NET与操作系统之间的翻译,同时它为具体的编程语言提供了许多资源:IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;所有.NET源代码(不管用哪种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时(Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。10.请解释ASP。NET中以什么方式进行数据验证Aps.net中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件13.请解释web.config文件中的重要节点appSettings包含自定义应用程序设置。system.web系统配置compilation动态调试编译设置customErrors自定义错误信息设置authentication身份验证,此节设置应用程序的身份验证策略。authorization授权,此节设置应用程序的授权策略.17.请解释什么是上下文对象,在什么情况下要使用上下文对象上下文对象是指HttpContext类的Current属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象68:请解释什么是上下文对象,在什么情况下要使用上下文对象答HttpContext,在类中调用的时候需要用到HttpContext9:什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?答应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小受管制的代码:unsafe:非托管代码。不经过CLR运行。强类型系统RTTI:类型识别系统。装箱就是把值类型到引用类型的转换拆箱就是引用类型到值类型的转换重载方法名相同不用个数的参数或者指定不同参数类型CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。26:进程和线程分别怎么理解?答:进程是老子,线程是儿子,没有老子就没有儿子,一个老子可以有多个儿子.一个儿子可以成为别人的儿子,一个老子也可以为别的老子生儿子.1、==与Equals方法的区别?对于值类型:由于值类型是存储在栈中,两者都是比较的是两个变量的在栈中的值是否相等。对于引用类型:引用类型是对堆中的一个存储地址的引用,指向堆中的某个具体值。==判断的是引用地址是否相同,equals判断的是值是否相同,因此如果用equals去判断两个待比较的值之前,一定要确保待比较两个值不能为Null否则可能会出错。请写出String的常用方法(10个),并描述功能Equals():判断值相等Split():以…分割每个字符为string[]数组Trim():忽略前后空格IndexOf():返回指定字符的索引ToLower():转换为小写Concat():连接,相当于’+’号ToUpper():转换为大写StartsWith():开头字符是否匹配SubString():截取字符串ToCharArray():转换为char[]数组Windows窗体的生命周期常用事件有哪些?Initialize(初始化),Load(加载),Activated(窗体被激活时),Deactivate(窗体被停用时),FormClosed(窗体被关闭时),FormClosing(窗体关闭中)接口告诉我们做什么(IDisposable释放资源的),抽象类告诉我们是什么(Stream,流)垃圾回收,早定义晚回收,晚定义早回收,所以关于优化的要设置好定义的顺序构造函数的执行意味着对象重新实例化 1;.NETFramework组成包括fcl(微软提供的一些标准的类库);CLR(公共语言运行时,功能是提供管理功能,分配内存,释放内存,编译运行功能等)这两部分作为。NETFramwork的重要组成部分,以后学习重点在CLR。 2;c#项目第一次编译是由源码编译成c#中间语言,依靠C#编译器编译,既成为(.exe或者.dll)文件,再次编译则通过JIT编译器上生成,发送在执行程序时,既点击exe文件时,编译成机器语言,在客户机上执行。 4;在.NETFramework里是区分大小写的,类名,项目名,或者方法名开头字母最好大写。命名规则之类的最好按自己的习惯形成自己的命名方式。namespace,using都是属于命名空间的,using在引用系统类库;namespace命名项目的名称。(Thread.sleep(毫秒数)使程序休眠或者挂起多少时间后再次运行) 5;main函数的形式有四种;一般式;staticvoidMain(string[]args);没有参数的;staticvoidmain();整形没有参数的;staticintmain()返回值(整数有参数的)类型;staticintMain(string[]args){return1;}; 6;关于注释;注释的三种方式;1、//单行注释2、/**/多行注释3、///xml注释区域注释;#region末尾#endregion 7;对文件和文件夹的操作要引用一个命名空间usingSystem.IO(计算代码)文件夹目录是string类型的path; 8;一个小手和标签的表示属性,带方块的表示方法,闪电表示事件 9;c#有内置数值类型、用户自定义类型、匿名类型(由一组封装在无名称引用类型中的公共属性组成)。五个自定义类型包括类,委托,枚举,结构体,接口。五种类包括实例化类,密封类,接口,静态类,抽象类。 10;数值类型的值在线程堆栈中一个变量的改变并不会引起另一个变量的改变;引用类型中存放的是真正数据在托管堆中存放的地址,托管堆中数值的改变也会引起所有指向该地址的变量的改变。 11;值类型;基于值类型的变量直接包含值。将一个值类型的变量赋予另一个值类型时,将复制包含的值。值类型表示实际的数据,将值存储在内存中,放在线程堆栈中。引用类型;存储对实际数据的引用。表示指向数据的引用,包含内存堆中对象的地址,存放在托管堆中。 12;数值类型包括值类型和引用类型。值类型在栈中分配内容在申明的同时就初始化,以确保数据不为NULL。包括简单类型(int、char、、)枚举类型、结构类型;引用类型在托管堆中分配内存,初始化为NULL包括类类型(object、class)接口类型、Unicode字符类型(string)、数组类型(一维、多维)委托类型 13;float单精度浮点数类型,double双精度浮点数类型。范围上D>F,所以F类型可以转换成D类型。反向的话则会报错。 14;break跳出全部循环continue跳出本次循环 15;装箱与拆箱;装箱就是隐式的将一个值型转换为引用类型。比如inti=0;System。Objectobj=i;这个过程就是装箱,就是将i装箱;拆箱就是将一个应用类型转化成任意值型。比如inti=0;System.Objectobj=i;Console.Writeline(i+\发生了三次装箱和一次拆箱;第一次是将i装箱,第二次是输出的时候将i转化成string类型,而string类型为引用类型,即又是装箱,第三次装箱是(int)obj的转化成string类型,装箱。拆箱就是(int)obj,将obj拆箱。(对装箱拆箱的讲解在5数值类型第50分钟左右)装箱拆箱必须是匹配的,装箱时的类型也是拆箱时的类型。 14;Parse类型转换只能转换string类型的数字转换到相应的类型。Convert.ToInt32也是类型转换,范围更广更强大。 15;三元运算符的使用i==12(判断语句)?等于(如果对则显示等于):不等于(不对则显示后面的):形式{i<12?等于:不等于}关于三元运算符的双重嵌套形式为(***?(***?***:***):***) 16;字段是存储数据的,方法是实现功能的。属性是封装字段的 17;ArrayList集合默认的是object类型,如果定义的数据是整形或者其他类型的数据就会发生装箱操作。foreach循环是只读的不能在循环中给数据赋值。for循环中则可以。18;集合和数组的区别,集合不定长,数组定长。都是用来存放数据的。静态成员是属于类的,非静态成员是属于对象的。 19;集合包括的内容;ArrayList队列先进先出栈先进后出hash哈希表(不定顺序存放,按输入的键取值,键是唯一的,值可以相同,遍历的时候可以遍历键也可以遍历值,也可以两者都遍历) 20;静态和非静态的区别;静态在主函数中可以直接调用,静态方法中只能调用静态方法21;类型中的三种成员;方法(方法是实现功能的)属性(属性是封装字段的)字段(字段是存储数据的)访问修饰符是一些关键字,用于指定声明的成员或类型的可访问性。五种访问修饰符1.public访问不受限制,可以在任何地方访问;2.protected(受保护的)访问仅限于包含类或包含派生类的类型;3.internal访问仅限于当前程序集,既在当前项目里;4.private(私有的)访问仅限于包含类型,以及相互继承的类。5;protectedinternal访问仅限于当前项目或者当前类派生出来的类型。类里面为加修饰符则默认为最小的,既private。类没有加修饰符则默认为最小的,既internal。 22;构造函数;名称与类名相同,无返回值类型每个类都有自己本身的构造函数,默认隐藏,构造函数可以有多个,可以是有参的也可以是无参的,调用时主要看构造时有参的返回值,每new一个函数只能调用一个构造函数。通常在new的时候就执行了。构造函数是程序执行最早的函数。初始化资源 23;析构函数只能有一个,是程序执行中最后执行的方法。析构函数相当于取栈操作,采取先进后出的顺序。释放资源。默认被调用。 24;==和equals的区别equals对两者相比较时要将比较的类型转换为原类型,然后再进行比较==直接对两者进行比较并不进行转换(引用类型比较的是指向托管堆中的地址,值类型比较的是内存中的数据) 24;一般时候定义属性为共有的,定义字段为私有的,因为字段本身就是数据,要对原始的数据进行封装,进行保护,而用属性给字段进行封装,给字段加限制方法,对字段进行保护。给字段加属性 25;静态类中所有的字段或者方法也必须定义为静态的。静态类除了索引器其他都可以有。静态的成员属于类,调用静态成员必须用类名点出来:实例化的成员属于对象。抽象类本身不能实例化,只能靠子类的继承来实例化父类。然后靠对象点出来使用。抽象类的用途是提供多个派生类可共享的基类的公共定义。例如,类库可以定义一个作为其多个函数的参数的抽象类,并要求程序员使用该库通过创建派生类来提供自己的类实现(既父类和子类)。接口中只能定义;方法、属性、索引器、事件。接口中全部是抽象的,也都是默认的public修饰的。接口里的默认修饰符是公有的,任何自定义类型前都不可以写。接口说明某些功能,能做什么。但凡是类都是说明了可以是什么的;静态类与非静态类定义时选择的原则;静态类只有一个,如果有多个则可以定义为实例化的类(就好比国家总理只有一个,但各个省委书记可以有多个)。26;事件的定义需要先定义一个委托 27;抽象能定义抽象类,抽象属性,抽象方法(可以直接在方法名括号后加分号,而不报错),抽象事件(事件只是提供一个开发的接口,用来调用别的方法)抽象不能定义抽象字段,字段在定义时就要赋予默认值,所以无法对其进行抽象 28;方法的签名包括,修饰符返回值类型方法名(参数列表);委托的签名(由返回类型和参数组成)匹配的任何可访问类或结构中的任何方法都可以分配给该委托。委托;可以把一个方法封装在委托里面进行来回的传递,把执行和定义分开了,但里面的内容并没有改变。 29;new的过程包括两个动作,第一个动作就是在托管堆中分配空间,第二个动作就是把托管空间的地址赋给等号左边的变量。 30;string=null表示没有分配托管堆内存string=“”表示分配托管堆内存但没有赋值 31;面向对象的三个特性;封装,继承,多态,封装将客观事务封装成为抽象化的类,可以实现细节使得代码模块化;继承;使用现有类的所有功能,并在无需重新编写原来类的情况下对继承的类的功能进行扩展(一个父类可以有多个子类);多态:允许将子类类型的指针赋值给父类类型的指针;包括覆盖,重载。多态的作用就是为了类在继承和派生的时候保证使用家谱中任一类的实例的某一属性时的正确调用 因篇幅问题不能全部显示,请点此查看更多更全内容