首页 C#面试题及答案

C#面试题及答案

举报
开通vip

C#面试题及答案C#面试题及答案 8、如何部署一个ASP.net页面方法一编译运行后直接上传;方法二、打包成EXE后安装。9、如何理解.net中的垃圾回收机制(GC).NETFramework的垃圾回收器管理应用程序的内存分配和释放。每次您使用new运算符创建对象时,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它检查托管堆中不再...

C#面试题及答案
C#面试题及答案 8、如何部署一个ASP.net页面方法一编译运行后直接上传;方法二、打包成EXE后安装。9、如何理解.net中的垃圾回收机制(GC).NETFramework的垃圾回收器管理应用程序的内存分配和释放。每次您使用new运算符创建对象时,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。调用方法:一、System.gc();二、Runtime.getRuntime().gc();10、net中读写数据库需要用到哪些类?他们的作用分别是Connection、Command、DataReader、DataAdapter和DataSet对象。其中,Connection对象主要负责连接数据库,Command对象主要负责生成并执行SQL语句,DataReader对象主要负责读取数据库中的数据,DataAdapter对象主要负责在Command对象执行完SQL语句后生成并填充DataSet和DataTable,而DataSet对象主要负责存取和更新数据。11、C#中的接口和类有什么异同。异:不能直接实例化接口。接口不包含方法的实现。接口、类和结构可从多个接口继承。但是C#只支持单继承:类只能从一个基类继承实现。类定义可在不同的源文件之间进行拆分。同:接口、类和结构可从多个接口继承。接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。接口可以包含事件、索引器、方法和属性。一个类可以实现多个接口。12.什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?CTS、CLS和CLR分别作何解释?应用程序域:应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。托管代码:使用CLR编译语言编辑器开发编写的代码就叫托管代码。装箱和拆箱:是把值类型转换为引用类型的过程,是隐式的,相反的过程就是拆箱,是显式的。CTS通用类型系统(commontypesystem):一种确定公共语言运行库如何定义、使用和管理类型的规范。CLR公共语言运行库:.NETFramework提供了一个称为公共语言运行库的运行时环境,它运行代码并提供使开发过程更轻松的服务。CLS公共语言规范:要和其他对象完全交互,而不管这些对象是以何种语言实现的,对象必须只向调用方公开那些它们必须与之互用的所有语言的通用功能。为此定义了公共语言规范(CLS),它是许多应用程序所需的一套基本语言功能。强类型系统:C#是强类型语言;因此每个变量和对象都必须具有声明类型。13.C#中委托是什么?事件是不是一种委托?  答:委托是一种安全的类似与函数指针,但是她比指针要安全的多,它可以把方法作为一个参数传递给另一个方法,可以理解为指向函数的引用。事件是一种消息机制,它是一种委托,委托不带方法体。14.ASP.net的身份验证方式有哪些Windwos(默认)用IIS...From(窗体)用帐户....Passport(密钥)15.活动目录的作用ActiveDirectory存储了有关网络对象的信息,并且让管理员和用户能够轻松地查找和使用这些信息。ActiveDirectory使用了一种结构化的数据存储方式,并以此作为基础对目录信息进行合乎逻辑的分层组织。16.解释一下UDDI、WSDL的意义及其作用UDDI是统一描述集成 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ,是一套基于Web的,分布式的,为WEB服务提供的信息注册的实现 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 规范,同时为也是为企业本身提供的Web服务注册以让别的企业能够发现并访问的协议标准。提供了基于标准的规范,用于描述和发现服务,还提供了一组基于因特网的实现。WSDL这是一个基于XML的描述WEB服务的接口。17.什么是SOAP?SOAP是简单访问协议。是在分布式环境中,交换信息并实现远程调用的协议。是一个基于XML的协议。使用SOAP,可以不考虑任何传输协议,但通常还是HTTP协议,可以允许任何类型的对象或代码,在任何平台上,以任一种语言相互通信。它是一种轻量级协议。18、概述反射和序列化(serializable)反射:要给发射下一个定义还是比较难的,这里先说说我的理解。反射提供了封装程序集,模块和类型对象,可以用反射动态地创建类型的实例,将类型绑定到现有对象,或者从现有对象类型里获取类型,然后调用类型的方法或访问字段和属性。序列化:将对象转换为另一种媒介传输的格式过程。如,序列化一个对象,用Http通过internet在客户端和服务器之间传递该对象,在另一端用反序列化从该流中重新得到对象。19、概述O/RMapping的原理利用反射,配置将对象和数据库表映射。20、可访问性级别有哪几种(简述private、protected、public、internal修饰符的访问权限)public公共成员,完全公开,没有访问限制。protected保护成员,该类内部和继承类中可以访问。internal访问仅限于当前程序集。protectedinternal访问仅限于从包含类派生的当前程序集或类型。private访问仅限于包含类型21、sealed修饰符有什么特点sealed修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其他类的基类,则会发生编译时错误。密封类不能同时为抽象类。sealed修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。22、列举ADO.NET中的共享类和数据库特定类共享类:DataSet、DataTable、DataRow、DataColumn、DataRelation、Constraint、DataColumnMapping、DataTableMapping特定类:(x)Connection、(x)Command、(x)CommandBuilder、(x)DataAdapter、(x)DataReader、(x)Parameter、(x)Transaction23、执行下面代码后:StringstrTemp="abcdefg某某某";Inti=System.Text.Encoding.Default.GetBytes(strTemp).Length;Intj=strTemp.Length;问:i=?j=?i=(14);j=(11)(中文两个字节,包括空格)24、列举一下你所了解的XML技术及其应用XML代表ExtensibleMarkupLanguage(eXtensibleMarkupLanguage的缩写,意为可扩展的标记语言)。XML是一套定义语义标记的 规则 编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf ,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。通过XML,你可以在HTML文件之外存储数据;可以在不兼容的系统之间交换数据;可以在网络中交换金融信息;纯文本文件可以用来共享数据;纯文本文件可以用来存储数据;你的数据可以被更多的用户使用;可以用于创建新的语言。25.概述.NET里对remoting和webservice两项技术的理解和实际中的应用。答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。26.UDP连接和TCP连接的异同。答:前者无须建立连接.后者保证传输的数据准确,须要连结.27.进程和线程分别怎么理解?答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。进程是比线程大的程序运行单元,都是由操作系统所体会的系统运行单元,一个程序中至少要有一个进程,在一个进程中,至少要有一个线程,线程的划分尺度要比进程要小,进程拥有独立的内存单元,线程是共享内存,从而极大的提高了程序的运行效率同一个进程中的多个线程可以并发执行。通俗说法:进程是老子,线程是儿子,没有老子就没有儿子,一个老子可以有多个儿子.一个儿子可以成为别人的儿子,一个老子也可以为别的老子生儿子.28.常用的调用WebService的方法有哪些?答:1.使用WSDL.exe命令行工具。2.使用VS.NET中的AddWebReference菜单选项29.列举ASP.NET页面之间传递值的几种方式。答.1.使用QueryString,如....?id=1;response.Redirect()....2.使用Session变量3.使用Server.Transfer30.一列数的规则如下:1、1、2、3、5、8、13、21、34......求第30位数是多少,用递归算法实现。答:publicclassMainClass{publicstaticvoidMain(){Console.WriteLine(Foo(30));}publicstaticintFoo(inti){if(i<=0)return0;elseif(i>0&&i<=2)return1;elsereturnFoo(i-1)+Foo(i-2);}}31.如果在一个B/S结构的系统中需要传递变量值,不能使用Session、Cookie、Application有几种方法进行处理?有三种方法1.QueryString例:default.aspx?id=12.FormsAuthentication例:配置文件添加结点,利用FormsAuthentication读取3.this.Server.Transfer服务器重定向32.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?答:foreach(System.Windows.Forms.Controlcontrolinthis.Controls){if(controlisSystem.Windows.Forms.TextBox){System.Windows.Forms.TextBoxtb=(System.Windows.Forms.TextBox)control;tb.Text=String.Empty;}}33.请编程实现一个冒泡排序算法?答:int[]array=newint[*];inttemp=0;for(inti=0;i<array.Length-1;i++){for(intj=i+1;j<array.Length;j++){if(array[j]<array[i]){temp=array[i];array[i]=array[j];array[j]=temp;}}}34.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?答:C#中索引器的实现过程所谓索引器就是一类特殊的属性,通过它们你就可以像引用数组一样引用自己的类。显然,这一功能在创建集合类的场合特别有用,而在其他某些情况下,比如处理大型文件或者抽象某些有限资源等,能让类具有类似数组的行为当然也是非常有用的。首先让我们概述下属性这个概念以便了解些必要的背景知识。属性假如你曾经用VB6编写过程序,那么你应该很熟悉属性方法才对,所谓属性方法其实就是特殊的类成员,它实现了对私有类域的受控访问。在C#语言中有两种属性方法,其一是get,通过它可以返回私有域的值,其二是set,通过它就可以设置私有域的值。比如说,以下面的代码为例,其间创建了一个FirstName属性,由它控制对私有类成员firstname的访问:classPerson{privatestringfirstname;publicstringFirstName{get{returnfirstname;}set{firstname=value;}}}属性声明可以如下编码:Personp=newPerson();p.FirstName="Lamont";Console.WriteLine(p.FirstName);如你你所看到的那样,属性声明倒更像是域声明,只不过它还声明了两个特殊的成员,按照微软的说法就是所谓的访问函数(accessor)。当某一表达式的右边调用属性或者属性用作其他子程序(或者函数)的参数时即会调用get访问函数。反之,当表达式左边调用属性并且通过隐式传递value参数设置私有域值的情况下就会调用set访问函数。你可以创建只读属性,方法是省略set访问函数,这样任何设置属性的尝试都会产生编译错误。采用索引器的益处,下面是它的结构this[argumentlist]{get{//Getcodesgoeshere}set{//Setcodesgoeshere}}注:modifier:修饰词,如private,public,protectedorinternalthis:在C#中this是一个特殊的关键字,它表示引用类的当前实例。在这里它的意思是当前类的索引。argumentlist:这里指索引器的参数。说了半天咱们转到正题上来,那么为什么我要兜这个圈子呢?其实,这是因为类的索引器非常像属性,从代码上看也是这样。以下是具有索引器的类示例,通过索引器会返回一个字符串:classSample{publicstringthis[intindex]{get{return"Youpassed"+index;}}}注意,这里的属性名是this,意思是回引类的当前实例,参数列表包含在方括号而非括号之内。还有,这是一个只读索引器。为了把它改成读/写类型,我又添加了一个set访问函数。在定义索引器的时候,你不一定只采用一个参数。索引器参数可以采用任何类型,不过int是通常采用也是最为合理的类型。同一类中还可能拥有一个以上的索引器(重载)。如上定义了Sample类之后,我们就可以把索引器用作某种默认的属性,如下所示:Samples=newSample();Console.WriteLine(s[55]);属性和索引器属性和索引器之间有好些差别:类的每一个属性都必须拥有唯一的名称,而类里定义的每一个索引器都必须拥有唯一的签名(signature)或者参数列表(这样就可以实现索引器重载)。属性可以是static(静态的)而索引器则必须是实例成员。为索引器定义的访问函数可以访问传递给索引器的参数,而属性访问函数则没有参数。接口类似数组的行为常受到程序实现者的喜爱,所以你还可以为接口定义索引器,IList和IDictionary集合接口都声明了索引器以便访问其存储的项目。在为接口声明索引器的时候,记住声明只是表示索引器的存在。你只需要提供恰当的访问函数即可,不必包括范围修饰符。以下代码把索引器声明为接口IImplementMe的一部分:interfaceIImplementMe{stringthis[intindex]{get;set;}相应实现的类则必须为IimplementMe的索引器具体定义get和set访问函数。以上就是有关索引器的一些基本概述了。现在你应该对索引器在你的开发中所具有的作用有了较深入的了解。classSampleCollection{privateT[]arr=newT[100];publicTthis[inti]{get{returnarr[i];}set{arr[i]=value;}}}//ThisclassshowshowclientcodeusestheindexerclassProgram{staticvoidMain(string[]args){SampleCollectionstringCollection=newSampleCollection();stringCollection[0]="Hello,World";System.Console.WriteLine(stringCollection[0]);}}不是。可以用任意类型。35.求以下表达式的值,写出您想到的一种或几种实现方法:1-2+3-4+……+m答:intNum=this.TextBox1.Text.ToString();intSum=0;for(inti=0;i<Num+1;i++){if((i%2)==1){Sum+=i;}else{Sum=Sum-I;}}System.Console.WriteLine(Sum.ToString());System.Console.ReadLine();36.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?答:一般为3层数据访问层,业务层,表示层。数据访问层对数据库进行增删查改。业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。表示层为了与用户交互例如用户添加表单。优点:分工明确,条理清晰,易于调试,而且具有可扩展性。缺点:增加成本。37.在下面的例子里usingSystem;classA{publicA(){PrintFields();}publicvirtualvoidPrintFields(){}}classB:A{intx=1;inty;publicB(){y=-1;}publicoverridevoidPrintFields(){Console.WriteLine("x={0},y={1}",x,y);}当使用newB()创建B的实例时,产生什么输出?答:X=1,Y=0;x=1y=-138.什么是装箱和拆箱?答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。39.什么是受管制的代码?答:unsafe:非托管代码。不经过CLR运行。40.什么是强类型系统?答:RTTI:类型识别系统。41..netRemoting的工作原理是什么?答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。42.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:namespacetest{publicdelegatevoidOnDBOperate();publicclassUserControlBase:System.Windows.Forms.UserControl{publiceventOnDBOperateOnNew;privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgse){if(e.Button.Equals(BtnNew)){//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。}}}答:if(OnNew!=null)OnNew(this,e);43、SQLSERVER服务器中,给定表table1中有两个字段ID、LastUpdateDate,ID表示更新的事务号,LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号。答:SelectIDFROMtable1WhereLastUpdateDate=(SelectMAX(LastUpdateDate)FROMtable1)44、根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。publicvoidtest(inti){lock(this){if(i>10){i--;test(i);}}}答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)45.简要谈一下您对微软.NET构架下remoting和webservice两项技术的理解以及实际中的应用。答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。46.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行(排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。47.给定以下XML文件,完成算法流程图。<FileSystem><DriverC><DirDirName=”MSDOS622”><FileFileName=”Command.com”></File></Dir><FileFileName=”MSDOS.SYS”></File><FileFileName=”IO.SYS”></File></DriverC></FileSystem>请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。答:voidFindFile(Directoryd){FileOrFolders=d.GetFileOrFolders();foreach(FileOrFolderfofinFileOrFolders){if(fofisFile)YouFoundafile;elseif(fofisDirectory)FindFile(fof);}}48.写出一条Sql语句:取出表A中第31到第40 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 (SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。答:解1:selecttop10*fromAwhereidnotin(selecttop30idfromA)解2:selecttop10*fromAwhereid>(selectmax(id)from(selecttop30idfromA)asA)49.能用foreach遍历访问的对象需要实现________________接口或声明________________方法的类型。答:IEnumerable、GetEnumerator。50.Strings=newString("xyz");创建了几个StringObject?答:两个对象,一个是“xyz”,一个是指向“xyz”的引用对象s。51,死锁的必要条件?怎么克服?  答:系统的资源不足,进程的推进的顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已获得资源不放,进程获得资源时,未使用完前,不能强行剥夺。52.abstractclass和interface有什么区别?答:声明方法的存在而不去实现它的类被叫做抽象类(abstractclass),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类行为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义staticfinal成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。53.启动一个线程是用run()还是start()?答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。54.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concreteclass)?答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。55.构造器Constructor是否可被override?答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。56.是否可以继承String类?答:String类是final类故不可以继承。57.try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?答:会执行,在return前执行。58.两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对?答:不对,有相同的hashcode。59.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?答:switch(expr1)中,expr1是一个整数表达式。因此传递给switch和case语句的参数应该是int、short、char或者byte。long,string都不能作用于swtich。60.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?不能,一个对象的一个synchronized方法只能由一个线程访问。61.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?答:都不能。62.List,Set,Map是否继承自Collection接口?答:List,Set是Map不是63.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。64.数组有没有length()这个方法?String有没有length()这个方法?答:数组没有length()这个方法,有length的属性。String有有length()这个方法。65.sleep()和wait()有什么区别?答:sleep()方法是使线程停止一段时间的方法。在sleep时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级(b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。66.shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错?答:shorts1=1;s1=s1+1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1=(short)(s1+1)。shorts1=1;s1+=1正确。67.谈谈final,finally,finalize的区别。答:final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载finally—再异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。finalize—方法名。Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。68.如何处理几十万条并发数据?答:用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.69.Session有什么重大BUG,微软提出了什么方法加以解决?答:BUG是iis中由于有进程回收机制,系统繁忙的话Session会丢失。解决方法:可以用Sateserver或SQLServer数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。70.堆和栈的区别?答:栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。71.成员变量和成员函数前加static的作用?答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。72.ASP。NET与ASP相比,主要有哪些进步?答:asp解释形,aspx编译型,性能提高,有利于保护源码。73.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。int[]intArr=newint[100];ArrayListmyList=newArrayList();Randomrnd=newRandom();while(myList.Count<100){intnum=rnd.Next(1,101);if(!myList.Contains(num))myList.Add(num);}for(inti=0;i<100;i++)intArr[i]=(int)myList[i];74,HashMap和Hashtable区别?  答:HashMap是Hashtable的轻量级实现,非线程安全的实现,他们都实现了map接口,主要区别是HashMap键值可以为空null,效率可以高于Hashtable。75,Collection和Collections的区别?  答:Collection是集合类的上级接口,Collections是针对集合类的一个帮助类,它提供一系列静态方法来实现对各种集合的搜索,排序,线程安全化操作。76、C#可否对内存进行直接的操作?  答:这个问题比较难回答,也是个很大的问题。但是可以这样问答。C#是可以对内存进行直接操作的,虽然很少用到指针,但是C#是可以使用指针的,在用的时候需要在前边加unsafe,,在.net中使用了垃圾回收机制(GC)功能,它替代了程序员,不过在C#中不可以直接使用finalize方法,而是在析构函数中调用基类的finalize()方法。77,Error和Exception有是区别?  答:error表示恢复不是不可能,但是很困难,exception表示一种实际或实现问题,它表示程序运行正常不可以发生的。78,Const和ReadOnly? 答:Const编程时申明常量,ReadOnly用来申明运行时常量。79.在.net中,配件的意思是?答:程序集。(中间语言,源数据,资源,装配清单)80、&和&&的区别。答案:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).81、String和StringBuffer的区别。答案:因为StringBuffer内部实现是char数组,默认初始化长度为16,每当字符串长度大于char数组长度的时候,JVM会构造更大的新数组,并将原先的数组内容复制到新数组。String是不可变对象,每次"+="操作都会造成构造新的String对象。关键点1).简单的认为.append()效率好于"+"是错误的!2).不要使用new创建String3).注意.intern()的使用4).在编译期能够确定字符串值的情况下,使用"+"效率最高5).避免使用"+="来构造字符串6).在声明StringBuffer对象的时候,指定合适的capacity,不要使用默认值(16)
本文档为【C#面试题及答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
爱赢
公司经营范围:网络软件设计、制作、图文设计、影视制作(编辑)
格式:doc
大小:75KB
软件:Word
页数:0
分类:工学
上传时间:2020-05-19
浏览量:2