Net面试题大全个人整理.docx
《Net面试题大全个人整理.docx》由会员分享,可在线阅读,更多相关《Net面试题大全个人整理.docx(26页珍藏版)》请在冰豆网上搜索。
Net面试题大全个人整理
2.列举ASP.NET页面之间传递值几种方式。
答:
ØQueryString是一种非常简朴传值方式,她可以将传送值显示在浏览器地址栏中。
如果是传递一种或各种安全性规定不高或是构造简朴数值时,可以使用这个办法。
但是对于传递数组或对象话,就不能用这个办法了。
ØApplication对象作用范畴是整个全局,也就是说对所有顾客均有效。
其惯用办法用Lock和UnLock。
ØSession变量想必这个必定是人们使用中最常用用法了,作用于顾客个人,因此,过量存储会导致服务器内存资源耗尽。
ØCookie对象变量这个也是人们常用法,与Session同样,其是什对每一种顾客而言,但是有个本质区别,即Cookie是存储在客户端,而session是存储在服务器端。
并且Cookie使用要配合ASP.NET内置对象Request来使用。
ØServer.Transfer办法这个才可以说是面象对象开发所用法,其使用Server.Transfer办法把流程从当前页面引导到另一种页面中,新页面使用前一种页面应答流,因此这个办法是完全面象对象,简洁有效。
3.一列数规则如下:
1、1、2、3、5、8、13、21、34......求第30位数是多少,用递归算法实现。
publicstaticintCalculate(intx)
{
intretInt=1;
if(x>2)
returnCalculate(x-2)+Calculate(x-1);
}
else
returnretInt;
4.C#中委托是什么?
事件是不是一种委托?
委托是一种定义办法签名类型,可以与具备兼容签名任何办法关联。
可以通过委
托调用办法。
委托用于将办法作为参数传递给其她办法。
委托具备如下特点:
Ø委托类似于C++函数指针,但它们是类型安全。
Ø委托容许将办法作为参数进行传递。
Ø委托可用于定义回调办法。
Ø委托可以链接在一起;例如,可以对一种事件调用各种办法。
Ø办法不必与委托签名完全匹配。
事件是一种特殊委托。
5.override与重载区别
Override:
要扩展或修改继承办法、属性、索引器或事件抽象实现或虚实现,重写基办法必要与override办法具备相似签名。
办法重载:
一种类中可以有一种以上办法拥有相似名称。
但必要有不相似签名。
6.如果在一种B/S构造系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种办法进行解决?
QueryString、Server.Transfer办法。
7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
foreach(Controlcontrolinthis.Controls)
if(controlisTextBox)
TextBoxtb=(TextBox)control;
tb.Text=String.Empty;
8.请编程实现一种冒泡排序算法?
//冒泡排序
publicstaticvoidMaoPaoSort(refint[]arrays)
if(arrays!
=null&&arrays.Length>0)
for(inti=1;i{boolisChange=false;for(intj=0;j{if(arrays[j]>arrays[j+1]){inttempValue=arrays[j];arrays[j]=arrays[j+1];arrays[j+1]=tempValue;isChange=true;}}if(!isChange)break;}}} 9.描述一下C#中索引器实现过程,与否只能依照数字进行索引?答:索引器容许类或构造实例就像数组同样进行索引。索引器类似于属性,不同之处在于它们访问器采用参数。PublicReturnTypethis[paramTypeindex]{get{}set{}},可以用任何类型进行索引。10.求如下表达式值,写出您想到一种或几种实现办法:1-2+3-4+……+m答:publicstaticintsumMethod1(intm){intsum=0;for(inti=1;i<=m;i++){if(i%2!=0)sum+=i;elsesum-=i;}returnsum;}publicstaticintsumMethod2(intm){intsum=0;if(m%2!=0)sum=m/2+1;elsesum=-(m/2);returnsum;}12.在下面例子里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=013.什么叫应用程序域?答:应用程序域(applicationdomain)(AppDomain)一种边界,它由公共语言运营库环绕同一应用程序范畴内创立对象建立(即,从应用程序入口点开始,沿着对象激活序列任何位置)。应用程序域有助于将在一种应用程序中创立对象与在其她应用程序中创立对象隔离,以使运营时行为可以预知。在一种单独进程中可以存在各种应用程序域。14.CTS、CLS、CLR分别作何解释?答:CTS:通用类型系统。CLS:通用语言规范。CLR:公共语言运营库。15.什么是装箱和拆箱?答:装箱:装箱转换是指将一种值类型隐式或显式地转换成一种object类型,拆箱:拆箱转换是指将一种对象类型显式地转换成一种值类型。16.什么是受管制代码?答:受托管代码不能直接写内存,是安全,它受CLR内存安全管理,而非托管代码是非安全代码,可以使用指针操作内存中读写数据库需要用到那些类?她们作用?答:DataSet:数据存储器Connection对象,用来创建和打开,关闭数据库连接。Command对象,用来执行各种sql语句或者调用存储过程。Adapter对象,数据适配器,用来执行SQL语句,配合数据集执行比较多。DataReader,只读对象,有着很高性能。21.在.net中,配件意思是?答:程序集。(中间语言,源数据,资源,装配清单)22.惯用调用WebService办法有哪些?答:1.使用WSDL.exe命令行工具。2.使用VS.NET中AddWebReference菜单选项Remoting工作原理是什么?答:服务器端向客户端发送一种进程编号,一种程序域编号,以拟定对象位置。31.公司规定开发一种继承System.Windows.Forms.ListView类组件,规定达到如下特殊功能:点击ListView各列列头时,能按照点击列每行值进行重排视图中所有行(排序方式如DataGrid相似)。依照您知识,请简要谈一下您思路答:依照点击列头,包该列名称取出,按照该列名排序后,再绑定到ListView中。35.能用foreach遍历访问对象需要实现IEnumerable接口或声明GetEnumerator办法类型。36.GC是什么?为什么要有GC?答:GC是垃圾收集器。程序员不用紧张内存管理,由于垃圾收集器会自动进行管理。要祈求垃圾收集,可以调用下面办法之一:System.GC.Collect();37.Strings=newString("xyz");创立了几种StringObject?答:两个对象,一种是“xyx”,一种是指向“xyx”引用对像s。38.abstractclass和interface有什么区别?答:抽象类:Ø只能用做其他类基类,它就是被设计来被继承。Ø不能创立它实例。Ø它使用abstract修饰符来声明。Ø抽象类可以包括抽象成员,但不是必要,它成员可以抽象成员和普通带实现成员任意组合。Ø它自己可以派生自另一种抽象类。任何派生自抽象类类必要使用override核心字实现该类所有抽象成员,除非派生类自己也是抽象类。接口:Ø接口是表达一组函数成员而不实现成员引用类型。其他类和构造可以实现接口。Ø接口声明不涉及数据成员。Ø接口声明只能包括如下类型静态成员函数声明:办法、属性、事件、索引。Ø接口成员不能包括任何实当代码,而在每一种成员声明主体后必要使用分号。Ø接口名称必要从大写I开始。它和类同样,也可以声明成分部接口。Ø接口声明可以有任何访问类型:public、protected、internal、private。Ø接口成员是隐式Public,不容许有任何访问修饰符。1,什么是线程池为了帮咱们减少创立和销毁线程有关成本,CLR为每一种进程维护了一种线程池。一开始进程线程池是空,如果进程使用线程被创立,并且完毕了线程执行,它不会被销毁,而是加入到进程线程池中,这后,如果进程需要一种此外一种线程,CLR就会从池中还原一种线程,这就节约了诸多时间。39.启动一种线程是用run()还是start()?答:启动一种线程是调用start()办法,这并不意味着线程就会及时运营,只是进入了可运营状态。直接调用run()办法不会产生线程,而是把它当作普通办法调用,立即执行40.接口与否可继承办口?抽像类与否可实现(implements)接口?抽像类与否可继承实体类(concreteclass)?答:接口可以继承办口。抽像类可以实现(implements)接口,抽像类与否可继承实体类,但前提是实体类必要有明确构造函数。41.构造器Constructor与否可被override?答:构造器Constructor不能被继承,因而不能重写Overriding,但可以被重载Overloading。42.与否可以继承String类?答:不可以,由于String类是密封类,被Sealed修饰符所修饰。44.两个对像值相似(x.equals(y)==true),但却可有不同hashcode,这句话对不对?答:不对,有相似hashcode。HashCode:可以简朴理解为内存地址。"==":操作比较是两个变量值与否相等,对于引用型变量表达是两个变量在堆中存储地址与否相似,即栈中内容与否相似。"equals":操作表达两个变量与否是对同一种对象引用,即堆中内容与否相似。而字符串是一种特殊引用型类型,在C#语言中,重载了string对象诸多办法办法(涉及equals()办法),使string对象用起来就像是值类型同样。45.swtich与否能作用在byte上,与否能作用在long上,与否能作用在String上?答:可以。47.当一种线程进入一种对象一种synchronized办法后,其他线程与否可进入此对象其他办法?不能,一种对象一种synchronized办法只能由一种线程访问。49.List,Set,Map与否继承自Collection接口?答:List,Set是Map不是51.数组有无length()这个办法?String有无length()这个办法?答:数组和string都没有Length()办法,只有Length属性。52.sleep()和wait()有什么区别?答:sleep()办法是将当前线程挂起指定期间。wait()释放对象上锁并阻塞当前线程,直到它重新获取该锁。53.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对的。复合赋值表达式自动地将所执行计算成果转型为其左侧变量类型,s1+=1等价于s1=(short)s1+1;55.如何解决几十万条并发数据?答:用存储过程或事务。获得最大标记时候同步更新..注意主键不是自增量方式这种办法并发时候是不会有重复主键..获得最大标记要有一种存储过程来获取.56.Session有什么重大BUG,微软提出了什么办法加以解决?答:是iis中由于有进程回收机制,系统繁忙话Session会丢失,可以用Sateserver或SQLServer数据库方式存储Session但是这种方式比较慢,并且无法捕获SessionEND事件。57.进程和线程区别?答:进程是系统进行资源分派和调度单位;线程是CPU调度和分派单位,一种进程可以有各种线程,这些线程共享这个进程资源。进程:进程就是一组资源,它们构成了一种正在运营程序。线程:在进程中系统创立了一种叫做线程内核对象,线程体现了一种程序真实执行状况。58.堆和栈区别?答:栈是编译期间就分派好内存空间,因而你代码中必要就栈大小有明拟定义;堆是程序运营期间动态分派内存空间,你可以依照程序运营状况拟定要分派堆内存大小。栈:它是一种内存数组,是一种LIFO数据构造,数据只能从栈顶插入和删除。堆:它是一块内存区域,在堆里可以分派大块内存用于存储某类型数据,堆里内存可以以任意顺序存入和取出。59.成员变量和成员函数前加static作用?答:Ø它们用来反映类状态。Ø静态成员它被类所有实例所共享,所有实例都访问同一内存位置。Ø它们独立于所有类实例,虽然没有类实例,也可以调用类静态成员。60.ASP。NET与ASP相比,重要有哪些进步?答:asp解释形,aspx编译型,性能提高,可以跟美工工作分开进行,更有助于团队开发。61.产生一种int数组,长度为100,并向其中随机插入1-100,并且不能重复。publicstaticint[]BuildIntArray(){int[]retsInt=newint[100];ListtempList=newList();Randomrandom=newRandom();while(tempList.Count<100){intnum=random.Next(1,101);if(!tempList.Contains(num))tempList.Add(num);}tempList.Sort();for(inti=0;iretsInt[i]=tempList[i];returnretsInt;}62.请阐明在.net中惯用几种页面间传递参数办法,并说出她们优缺陷。答:ØQueryString传递一种或各种安全性规定不高或是构造简朴数值。但是对于传递数组或对象话,就不能用这个办法了Øsession(viewstate)简朴,但易丢失作用于顾客个人,过量存储会导致服务器内存资源耗尽。Øapplication对象作用范畴是整个全局,也就是说对所有顾客均有效。其惯用办法用Lock和UnLockØcookie简朴,但也许不支持,也许被伪造Cookie是存储在客户端,而session是存储在服务器端。并且Cookie使用要配合ASP.NET内置对象Request来使用Øinputttype="hidden"简朴,也许被伪造Øurl参数简朴,显示于地址栏,长度有限ØServer.Transfer把流程从当前页面引导到另一种页面中,新页面使用前一种页面应答流Ø数据库稳定,安全,但性能相对弱63.请指出GAC含义?答:全局程序集缓存。GAC(Global AssemblyCache),她作用是可以存储某些有诸多程序都要用到公共Assembly。这样,诸多程序就可以从GAC里面获得Assembly,而不需要再把所有要用到Assembly都拷贝到应用程序执行目录下面。64.向服务器发送祈求有几种方式?答:get,post。get普通为链接方式,post普通为按钮方式。区别: Get方式,服务器端用Request.Qurystring取变量值,安全性不高,传送数据量小。 post方式,服务器端用Request.Form获取提交数据,安全性高。建议:1、get方式安全性较Post方式要差些,包括机密信息话,建议用Post数据提交方式;2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式。65.DataReader与Dataset有什么区别?答:Ø连接数据库时DataSet是非面向连接,而DataReader是面向连接。ØDataSet表达一种数据集,是数据在内存中缓存,可以涉及各种表,是保存数据数据构造。而Datareader不承担保存数据责任,它只负责从数据源读取数据到本地而已,它不是数据构造,而是网络通讯组件高层封装。ØDataSet可以离线解决,先后滚动,而DataReader不能离线解决,且是只读向前,速度快。ØDataSet可以存储数据库各种对象,例如表触发器等,可以更新回本来数据库。而DataReader只能存储游标记录,不可以更新回本来数据库, 它类似一种只能向前游标记录集。66.软件开发过程普通有几种阶段?每个阶段作用?答:软件开发普通分为五个阶段:Ø问题定义及规划此阶段是软件开发与需求方共同讨论,重要拟定软件开发目的及其可行性。Ø需求分析在拟定软件开发可行性状况下,对软件需要实现各个功能进行详细需求分析。需求分析阶段是一种很重要阶段,这一阶段做好,将为整个软件项目开发打下良好基本。“唯一不变是变化自身”,同样软件需求也是在软件开发过程中不断变化和进一步,因而,咱们必要定制需求变更筹划来应付这种变化,以保护整个项目正常进行。Ø软件设计此阶段中要依照需求分析成果,对整个软件系统进行设计,如系统框架设计、数据库设计等。软件设计普通分为概要设计和详细设计,软件设计将为软件程序编写打下良好基本。Ø程序编码此阶段是将软件设计成果转化为计算机可运营程序代码。在程序编码中必然要制定统一、符合原则编写规范。以保证程序可读性、易维护性。提高程序运营效率。Ø软件测试在软件设计完毕之后要进行严密测试,一发现软件在整个软件设计过程中存在问题并加以纠正。整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。测试办法重要有白盒测试和黑盒测试。Ø6.布置及维护。67.在c#中using和new这两个核心字有什么意义,请写出你所懂得意义?Uning:Øusing做为命名空间指令:通过在源文献顶端放置Using命名空间指令以避免不得不使用长名称,它告知编译器你将要使用来自某个指定命名空间类型。Øusing做为别名指令:它容许对一种命名空间或命名空间中一种类型起一种别名。Øusing语句:某些类型非托管对象有数量限制或很耗费系统资源,这样在代码使用完它们后,就得尽量快释放它们,using语句有助于简化该过程并保证这些资源被恰当处置。New:Ø创立类和构造实例。Ø隐藏基类办法。Ø创立匿名类型(var和new核心字一起使用时可以创立匿名类型,匿名类型只是一种继承了Object、没有名称类,该类定义从初始化器中推断,类似于隐匿类型化变量)。68.需要实现对一种字符串解决,一方面将该字符串首尾空格去掉,如果字符串中间尚有持续空格话,仅保存一种空格,即容许字符串中间有各种空格,但持续空格数不可超过一种.答:stringstr="afdkdaskdfjiksdafj";stringstrAfter=Regex.Replace(str.Trim(),@"\s+","");69.下面这段代码输出什么?为什么?inti=5;intj=5;if(Object.ReferenceEquals(i,j))Console.WriteLine("Equal");elseConsole.WriteLine("NotEqual");答:NotEqual,由于ReferenceEquals是Object静态办法,用于比较两个引用类型对象与否是对于同一种对象引用,对于值类型它总是返回false。34.ReferenceEquals,==,Equals区别ØString对于声明相似字符串在堆上只保存一种Copy,因此有相似字符串值两个字符串变量将会指向相似Reference。ØReferenceEquals:它是Object静态办法,用于比较两个引用类型对象与否是对于同一种对象引用,对于值类型它总是返回false。Ø==:它是一种可以重载二元操作符,可以用于比较两个对象与否相等。对于内置值类型,==判断是两个对象代数值与否相等。它会依照需要自动进行必要类型转换,并依照两个对象值与否相等返回true或者false,而对于顾客定义值类型,如果没有重载==操作符,==将是不可以使用。对于引用类型,==默认行为与ReferenceEquals行为相似,仅有两个对象指向同一种Reference时候才返回true。但是.NETFramework中类诸多对==进行了重载,例如String类==与Equals行为相似,判断两个字符串内容与否相等。因此在应用中,对于系统定义引用类型建议不要使用==操作符,以免程序浮现与预期不同运营成果。ØEquals():它对于值类型和引用类型定义不同,对于值类型,类型相似,并且数值相似(对于struct每个成员都必要相似),则Equals返回true,否则返回false。而对于引用类型,默认行为与ReferenceEquals行为相似,仅有两个对象指向同一种Reference时候才返回true。可以依照需要对Equals进行重载,例如String类Equals用于判断两个字符串内容与否相等。70.什么叫做SQL注入,如何防止?请举例阐明。答:运用sql语言漏洞获得合法身份登陆系统。如身份验证程序设计成:SqlCommandcom=newSql
boolisChange=false;
for(intj=0;j{if(arrays[j]>arrays[j+1]){inttempValue=arrays[j];arrays[j]=arrays[j+1];arrays[j+1]=tempValue;isChange=true;}}if(!isChange)break;}}} 9.描述一下C#中索引器实现过程,与否只能依照数字进行索引?答:索引器容许类或构造实例就像数组同样进行索引。索引器类似于属性,不同之处在于它们访问器采用参数。PublicReturnTypethis[paramTypeindex]{get{}set{}},可以用任何类型进行索引。10.求如下表达式值,写出您想到一种或几种实现办法:1-2+3-4+……+m答:publicstaticintsumMethod1(intm){intsum=0;for(inti=1;i<=m;i++){if(i%2!=0)sum+=i;elsesum-=i;}returnsum;}publicstaticintsumMethod2(intm){intsum=0;if(m%2!=0)sum=m/2+1;elsesum=-(m/2);returnsum;}12.在下面例子里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=013.什么叫应用程序域?答:应用程序域(applicationdomain)(AppDomain)一种边界,它由公共语言运营库环绕同一应用程序范畴内创立对象建立(即,从应用程序入口点开始,沿着对象激活序列任何位置)。应用程序域有助于将在一种应用程序中创立对象与在其她应用程序中创立对象隔离,以使运营时行为可以预知。在一种单独进程中可以存在各种应用程序域。14.CTS、CLS、CLR分别作何解释?答:CTS:通用类型系统。CLS:通用语言规范。CLR:公共语言运营库。15.什么是装箱和拆箱?答:装箱:装箱转换是指将一种值类型隐式或显式地转换成一种object类型,拆箱:拆箱转换是指将一种对象类型显式地转换成一种值类型。16.什么是受管制代码?答:受托管代码不能直接写内存,是安全,它受CLR内存安全管理,而非托管代码是非安全代码,可以使用指针操作内存中读写数据库需要用到那些类?她们作用?答:DataSet:数据存储器Connection对象,用来创建和打开,关闭数据库连接。Command对象,用来执行各种sql语句或者调用存储过程。Adapter对象,数据适配器,用来执行SQL语句,配合数据集执行比较多。DataReader,只读对象,有着很高性能。21.在.net中,配件意思是?答:程序集。(中间语言,源数据,资源,装配清单)22.惯用调用WebService办法有哪些?答:1.使用WSDL.exe命令行工具。2.使用VS.NET中AddWebReference菜单选项Remoting工作原理是什么?答:服务器端向客户端发送一种进程编号,一种程序域编号,以拟定对象位置。31.公司规定开发一种继承System.Windows.Forms.ListView类组件,规定达到如下特殊功能:点击ListView各列列头时,能按照点击列每行值进行重排视图中所有行(排序方式如DataGrid相似)。依照您知识,请简要谈一下您思路答:依照点击列头,包该列名称取出,按照该列名排序后,再绑定到ListView中。35.能用foreach遍历访问对象需要实现IEnumerable接口或声明GetEnumerator办法类型。36.GC是什么?为什么要有GC?答:GC是垃圾收集器。程序员不用紧张内存管理,由于垃圾收集器会自动进行管理。要祈求垃圾收集,可以调用下面办法之一:System.GC.Collect();37.Strings=newString("xyz");创立了几种StringObject?答:两个对象,一种是“xyx”,一种是指向“xyx”引用对像s。38.abstractclass和interface有什么区别?答:抽象类:Ø只能用做其他类基类,它就是被设计来被继承。Ø不能创立它实例。Ø它使用abstract修饰符来声明。Ø抽象类可以包括抽象成员,但不是必要,它成员可以抽象成员和普通带实现成员任意组合。Ø它自己可以派生自另一种抽象类。任何派生自抽象类类必要使用override核心字实现该类所有抽象成员,除非派生类自己也是抽象类。接口:Ø接口是表达一组函数成员而不实现成员引用类型。其他类和构造可以实现接口。Ø接口声明不涉及数据成员。Ø接口声明只能包括如下类型静态成员函数声明:办法、属性、事件、索引。Ø接口成员不能包括任何实当代码,而在每一种成员声明主体后必要使用分号。Ø接口名称必要从大写I开始。它和类同样,也可以声明成分部接口。Ø接口声明可以有任何访问类型:public、protected、internal、private。Ø接口成员是隐式Public,不容许有任何访问修饰符。1,什么是线程池为了帮咱们减少创立和销毁线程有关成本,CLR为每一种进程维护了一种线程池。一开始进程线程池是空,如果进程使用线程被创立,并且完毕了线程执行,它不会被销毁,而是加入到进程线程池中,这后,如果进程需要一种此外一种线程,CLR就会从池中还原一种线程,这就节约了诸多时间。39.启动一种线程是用run()还是start()?答:启动一种线程是调用start()办法,这并不意味着线程就会及时运营,只是进入了可运营状态。直接调用run()办法不会产生线程,而是把它当作普通办法调用,立即执行40.接口与否可继承办口?抽像类与否可实现(implements)接口?抽像类与否可继承实体类(concreteclass)?答:接口可以继承办口。抽像类可以实现(implements)接口,抽像类与否可继承实体类,但前提是实体类必要有明确构造函数。41.构造器Constructor与否可被override?答:构造器Constructor不能被继承,因而不能重写Overriding,但可以被重载Overloading。42.与否可以继承String类?答:不可以,由于String类是密封类,被Sealed修饰符所修饰。44.两个对像值相似(x.equals(y)==true),但却可有不同hashcode,这句话对不对?答:不对,有相似hashcode。HashCode:可以简朴理解为内存地址。"==":操作比较是两个变量值与否相等,对于引用型变量表达是两个变量在堆中存储地址与否相似,即栈中内容与否相似。"equals":操作表达两个变量与否是对同一种对象引用,即堆中内容与否相似。而字符串是一种特殊引用型类型,在C#语言中,重载了string对象诸多办法办法(涉及equals()办法),使string对象用起来就像是值类型同样。45.swtich与否能作用在byte上,与否能作用在long上,与否能作用在String上?答:可以。47.当一种线程进入一种对象一种synchronized办法后,其他线程与否可进入此对象其他办法?不能,一种对象一种synchronized办法只能由一种线程访问。49.List,Set,Map与否继承自Collection接口?答:List,Set是Map不是51.数组有无length()这个办法?String有无length()这个办法?答:数组和string都没有Length()办法,只有Length属性。52.sleep()和wait()有什么区别?答:sleep()办法是将当前线程挂起指定期间。wait()释放对象上锁并阻塞当前线程,直到它重新获取该锁。53.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对的。复合赋值表达式自动地将所执行计算成果转型为其左侧变量类型,s1+=1等价于s1=(short)s1+1;55.如何解决几十万条并发数据?答:用存储过程或事务。获得最大标记时候同步更新..注意主键不是自增量方式这种办法并发时候是不会有重复主键..获得最大标记要有一种存储过程来获取.56.Session有什么重大BUG,微软提出了什么办法加以解决?答:是iis中由于有进程回收机制,系统繁忙话Session会丢失,可以用Sateserver或SQLServer数据库方式存储Session但是这种方式比较慢,并且无法捕获SessionEND事件。57.进程和线程区别?答:进程是系统进行资源分派和调度单位;线程是CPU调度和分派单位,一种进程可以有各种线程,这些线程共享这个进程资源。进程:进程就是一组资源,它们构成了一种正在运营程序。线程:在进程中系统创立了一种叫做线程内核对象,线程体现了一种程序真实执行状况。58.堆和栈区别?答:栈是编译期间就分派好内存空间,因而你代码中必要就栈大小有明拟定义;堆是程序运营期间动态分派内存空间,你可以依照程序运营状况拟定要分派堆内存大小。栈:它是一种内存数组,是一种LIFO数据构造,数据只能从栈顶插入和删除。堆:它是一块内存区域,在堆里可以分派大块内存用于存储某类型数据,堆里内存可以以任意顺序存入和取出。59.成员变量和成员函数前加static作用?答:Ø它们用来反映类状态。Ø静态成员它被类所有实例所共享,所有实例都访问同一内存位置。Ø它们独立于所有类实例,虽然没有类实例,也可以调用类静态成员。60.ASP。NET与ASP相比,重要有哪些进步?答:asp解释形,aspx编译型,性能提高,可以跟美工工作分开进行,更有助于团队开发。61.产生一种int数组,长度为100,并向其中随机插入1-100,并且不能重复。publicstaticint[]BuildIntArray(){int[]retsInt=newint[100];ListtempList=newList();Randomrandom=newRandom();while(tempList.Count<100){intnum=random.Next(1,101);if(!tempList.Contains(num))tempList.Add(num);}tempList.Sort();for(inti=0;iretsInt[i]=tempList[i];returnretsInt;}62.请阐明在.net中惯用几种页面间传递参数办法,并说出她们优缺陷。答:ØQueryString传递一种或各种安全性规定不高或是构造简朴数值。但是对于传递数组或对象话,就不能用这个办法了Øsession(viewstate)简朴,但易丢失作用于顾客个人,过量存储会导致服务器内存资源耗尽。Øapplication对象作用范畴是整个全局,也就是说对所有顾客均有效。其惯用办法用Lock和UnLockØcookie简朴,但也许不支持,也许被伪造Cookie是存储在客户端,而session是存储在服务器端。并且Cookie使用要配合ASP.NET内置对象Request来使用Øinputttype="hidden"简朴,也许被伪造Øurl参数简朴,显示于地址栏,长度有限ØServer.Transfer把流程从当前页面引导到另一种页面中,新页面使用前一种页面应答流Ø数据库稳定,安全,但性能相对弱63.请指出GAC含义?答:全局程序集缓存。GAC(Global AssemblyCache),她作用是可以存储某些有诸多程序都要用到公共Assembly。这样,诸多程序就可以从GAC里面获得Assembly,而不需要再把所有要用到Assembly都拷贝到应用程序执行目录下面。64.向服务器发送祈求有几种方式?答:get,post。get普通为链接方式,post普通为按钮方式。区别: Get方式,服务器端用Request.Qurystring取变量值,安全性不高,传送数据量小。 post方式,服务器端用Request.Form获取提交数据,安全性高。建议:1、get方式安全性较Post方式要差些,包括机密信息话,建议用Post数据提交方式;2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式。65.DataReader与Dataset有什么区别?答:Ø连接数据库时DataSet是非面向连接,而DataReader是面向连接。ØDataSet表达一种数据集,是数据在内存中缓存,可以涉及各种表,是保存数据数据构造。而Datareader不承担保存数据责任,它只负责从数据源读取数据到本地而已,它不是数据构造,而是网络通讯组件高层封装。ØDataSet可以离线解决,先后滚动,而DataReader不能离线解决,且是只读向前,速度快。ØDataSet可以存储数据库各种对象,例如表触发器等,可以更新回本来数据库。而DataReader只能存储游标记录,不可以更新回本来数据库, 它类似一种只能向前游标记录集。66.软件开发过程普通有几种阶段?每个阶段作用?答:软件开发普通分为五个阶段:Ø问题定义及规划此阶段是软件开发与需求方共同讨论,重要拟定软件开发目的及其可行性。Ø需求分析在拟定软件开发可行性状况下,对软件需要实现各个功能进行详细需求分析。需求分析阶段是一种很重要阶段,这一阶段做好,将为整个软件项目开发打下良好基本。“唯一不变是变化自身”,同样软件需求也是在软件开发过程中不断变化和进一步,因而,咱们必要定制需求变更筹划来应付这种变化,以保护整个项目正常进行。Ø软件设计此阶段中要依照需求分析成果,对整个软件系统进行设计,如系统框架设计、数据库设计等。软件设计普通分为概要设计和详细设计,软件设计将为软件程序编写打下良好基本。Ø程序编码此阶段是将软件设计成果转化为计算机可运营程序代码。在程序编码中必然要制定统一、符合原则编写规范。以保证程序可读性、易维护性。提高程序运营效率。Ø软件测试在软件设计完毕之后要进行严密测试,一发现软件在整个软件设计过程中存在问题并加以纠正。整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。测试办法重要有白盒测试和黑盒测试。Ø6.布置及维护。67.在c#中using和new这两个核心字有什么意义,请写出你所懂得意义?Uning:Øusing做为命名空间指令:通过在源文献顶端放置Using命名空间指令以避免不得不使用长名称,它告知编译器你将要使用来自某个指定命名空间类型。Øusing做为别名指令:它容许对一种命名空间或命名空间中一种类型起一种别名。Øusing语句:某些类型非托管对象有数量限制或很耗费系统资源,这样在代码使用完它们后,就得尽量快释放它们,using语句有助于简化该过程并保证这些资源被恰当处置。New:Ø创立类和构造实例。Ø隐藏基类办法。Ø创立匿名类型(var和new核心字一起使用时可以创立匿名类型,匿名类型只是一种继承了Object、没有名称类,该类定义从初始化器中推断,类似于隐匿类型化变量)。68.需要实现对一种字符串解决,一方面将该字符串首尾空格去掉,如果字符串中间尚有持续空格话,仅保存一种空格,即容许字符串中间有各种空格,但持续空格数不可超过一种.答:stringstr="afdkdaskdfjiksdafj";stringstrAfter=Regex.Replace(str.Trim(),@"\s+","");69.下面这段代码输出什么?为什么?inti=5;intj=5;if(Object.ReferenceEquals(i,j))Console.WriteLine("Equal");elseConsole.WriteLine("NotEqual");答:NotEqual,由于ReferenceEquals是Object静态办法,用于比较两个引用类型对象与否是对于同一种对象引用,对于值类型它总是返回false。34.ReferenceEquals,==,Equals区别ØString对于声明相似字符串在堆上只保存一种Copy,因此有相似字符串值两个字符串变量将会指向相似Reference。ØReferenceEquals:它是Object静态办法,用于比较两个引用类型对象与否是对于同一种对象引用,对于值类型它总是返回false。Ø==:它是一种可以重载二元操作符,可以用于比较两个对象与否相等。对于内置值类型,==判断是两个对象代数值与否相等。它会依照需要自动进行必要类型转换,并依照两个对象值与否相等返回true或者false,而对于顾客定义值类型,如果没有重载==操作符,==将是不可以使用。对于引用类型,==默认行为与ReferenceEquals行为相似,仅有两个对象指向同一种Reference时候才返回true。但是.NETFramework中类诸多对==进行了重载,例如String类==与Equals行为相似,判断两个字符串内容与否相等。因此在应用中,对于系统定义引用类型建议不要使用==操作符,以免程序浮现与预期不同运营成果。ØEquals():它对于值类型和引用类型定义不同,对于值类型,类型相似,并且数值相似(对于struct每个成员都必要相似),则Equals返回true,否则返回false。而对于引用类型,默认行为与ReferenceEquals行为相似,仅有两个对象指向同一种Reference时候才返回true。可以依照需要对Equals进行重载,例如String类Equals用于判断两个字符串内容与否相等。70.什么叫做SQL注入,如何防止?请举例阐明。答:运用sql语言漏洞获得合法身份登陆系统。如身份验证程序设计成:SqlCommandcom=newSql
if(arrays[j]>arrays[j+1])
inttempValue=arrays[j];
arrays[j]=arrays[j+1];
arrays[j+1]=tempValue;
isChange=true;
if(!
isChange)
break;
9.描述一下C#中索引器实现过程,与否只能依照数字进行索引?
索引器容许类或构造实例就像数组同样进行索引。
索引器类似于属性,不同之处在于它们访问器采用参数。
PublicReturnTypethis[paramTypeindex]{get{}set{}},可以用任何类型进行索引。
10.求如下表达式值,写出您想到一种或几种实现办法:
1-2+3-4+……+m
publicstaticintsumMethod1(intm)
intsum=0;
for(inti=1;i<=m;i++)
if(i%2!
=0)
sum+=i;
sum-=i;
returnsum;
publicstaticintsumMethod2(intm)
if(m%2!
sum=m/2+1;
sum=-(m/2);
12.在下面例子里
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
13.什么叫应用程序域?
应用程序域(applicationdomain)(AppDomain)一种边界,它由公共语言运营库环绕同一应用程序范畴内创立对象建立(即,从应用程序入口点开始,沿着对象激活序列任何位置)。
应用程序域有助于将在一种应用程序中创立对象与在其她应用程序中创立对象隔离,以使运营时行为可以预知。
在一种单独进程中可以存在各种应用程序域。
14.CTS、CLS、CLR分别作何解释?
CTS:
通用类型系统。
CLS:
通用语言规范。
CLR:
公共语言运营库。
15.什么是装箱和拆箱?
装箱:
装箱转换是指将一种值类型隐式或显式地转换成一种object类型,拆箱:
拆箱转换是指将一种对象类型显式地转换成一种值类型。
16.什么是受管制代码?
受托管代码不能直接写内存,是安全,它受CLR内存安全管理,而非托管代码是非安全代码,可以使用指针操作内存
中读写数据库需要用到那些类?
她们作用?
DataSet:
数据存储器
Connection对象,用来创建和打开,关闭数据库连接。
Command对象,用来执行各种sql语句或者调用存储过程。
Adapter对象,数据适配器,用来执行SQL语句,配合数据集执行比较多。
DataReader,只读对象,有着很高性能。
21.在.net中,配件意思是?
程序集。
(中间语言,源数据,资源,装配清单)
22.惯用调用WebService办法有哪些?
1.使用WSDL.exe命令行工具。
2.使用VS.NET中AddWebReference菜单选项
Remoting工作原理是什么?
服务器端向客户端发送一种进程编号,一种程序域编号,以拟定对象位置。
31.公司规定开发一种继承System.Windows.Forms.ListView类组件,规定达到如下特殊功能:
点击ListView各列列头时,能按照点击列每行值进行重排视图中所有行(排序方式如DataGrid相似)。
依照您知识,请简要谈一下您思路
依照点击列头,包该列名称取出,按照该列名排序后,再绑定到ListView中。
35.能用foreach遍历访问对象需要实现IEnumerable接口或声明GetEnumerator办法类型。
36.GC是什么?
为什么要有GC?
GC是垃圾收集器。
程序员不用紧张内存管理,由于垃圾收集器会自动进行管理。
要祈求垃圾收集,可以调用下面办法之一:
System.GC.Collect();
37.Strings=newString("xyz");创立了几种StringObject?
两个对象,一种是“xyx”,一种是指向“xyx”引用对像s。
38.abstractclass和interface有什么区别?
抽象类:
Ø只能用做其他类基类,它就是被设计来被继承。
Ø不能创立它实例。
Ø它使用abstract修饰符来声明。
Ø抽象类可以包括抽象成员,但不是必要,它成员可以抽象成员和普通带实现成员任意组合。
Ø它自己可以派生自另一种抽象类。
任何派生自抽象类类必要使用override核心字实现该类所有抽象成员,除非派生类自己也是抽象类。
接口:
Ø接口是表达一组函数成员而不实现成员引用类型。
其他类和构造可以实现接口。
Ø接口声明不涉及数据成员。
Ø接口声明只能包括如下类型静态成员函数声明:
办法、属性、事件、索引。
Ø接口成员不能包括任何实当代码,而在每一种成员声明主体后必要使用分号。
Ø接口名称必要从大写I开始。
它和类同样,也可以声明成分部接口。
Ø接口声明可以有任何访问类型:
public、protected、internal、private。
Ø接口成员是隐式Public,不容许有任何访问修饰符。
1,什么是线程池
为了帮咱们减少创立和销毁线程有关成本,CLR为每一种进程维护了一种线程池。
一开始进程线程池是空,如果进程使用线程被创立,并且完毕了线程执行,它不会被销毁,而是加入到进程线程池中,这后,如果进程需要一种此外一种线程,CLR就会从池中还原一种线程,这就节约了诸多时间。
39.启动一种线程是用run()还是start()?
启动一种线程是调用start()办法,这并不意味着线程就会及时运营,只是进入了可运营状态。
直接调用run()办法不会产生线程,而是把它当作普通办法调用,立即执行
40.接口与否可继承办口?
抽像类与否可实现(implements)接口?
抽像类与否可继承实体类(concreteclass)?
接口可以继承办口。
抽像类可以实现(implements)接口,抽像类与否可继承实体类,但前提是实体类必要有明确构造函数。
41.构造器Constructor与否可被override?
构造器Constructor不能被继承,因而不能重写Overriding,但可以被重载Overloading。
42.与否可以继承String类?
不可以,由于String类是密封类,被Sealed修饰符所修饰。
44.两个对像值相似(x.equals(y)==true),但却可有不同hashcode,这句话对不对?
不对,有相似hashcode。
HashCode:
可以简朴理解为内存地址。
"==":
操作比较是两个变量值与否相等,对于引用型变量表达是两个变量在堆中存储
地址与否相似,即栈中内容与否相似。
"equals":
操作表达两个变量与否是对同一种对象引用,即堆中内容与否相似。
而字符串是一种特殊引用型类型,在C#语言中,重载了string对象诸多办法办法(涉及equals()办法),使string对象用起来就像是值类型同样。
45.swtich与否能作用在byte上,与否能作用在long上,与否能作用在String上?
可以。
47.当一种线程进入一种对象一种synchronized办法后,其他线程与否可进入此对象其他办法?
不能,一种对象一种synchronized办法只能由一种线程访问。
49.List,Set,Map与否继承自Collection接口?
List,Set是Map不是
51.数组有无length()这个办法?
String有无length()这个办法?
数组和string都没有Length()办法,只有Length属性。
52.sleep()和wait()有什么区别?
sleep()办法是将当前线程挂起指定期间。
wait()释放对象上锁并阻塞当前线程,直到它重新获取该锁。
53.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对的。
复合赋值表达式自动地将所执行计算成果转型为其左侧变量类型,s1+=1等价于s1=(short)s1+1;
55.如何解决几十万条并发数据?
用存储过程或事务。
获得最大标记时候同步更新..注意主键不是自增量方式这种办法并发时候是不会有重复主键..获得最大标记要有一种存储过程来获取.
56.Session有什么重大BUG,微软提出了什么办法加以解决?
是iis中由于有进程回收机制,系统繁忙话Session会丢失,可以用Sateserver或SQLServer数据库方式存储Session但是这种方式比较慢,并且无法捕获SessionEND事件。
57.进程和线程区别?
进程是系统进行资源分派和调度单位;线程是CPU调度和分派单位,一种进程可以有各种线程,这些线程共享这个进程资源。
进程:
进程就是一组资源,它们构成了一种正在运营程序。
线程:
在进程中系统创立了一种叫做线程内核对象,线程体现了一种程序真实执行状况。
58.堆和栈区别?
栈是编译期间就分派好内存空间,因而你代码中必要就栈大小有明拟定义;堆是程序运营期间动态分派内存空间,你可以依照程序运营状况拟定要分派堆内存大小。
栈:
它是一种内存数组,是一种LIFO数据构造,数据只能从栈顶插入和删除。
堆:
它是一块内存区域,在堆里可以分派大块内存用于存储某类型数据,堆里内存可以以任意顺序存入和取出。
59.成员变量和成员函数前加static作用?
Ø它们用来反映类状态。
Ø静态成员它被类所有实例所共享,所有实例都访问同一内存位置。
Ø它们独立于所有类实例,虽然没有类实例,也可以调用类静态成员。
60.ASP。
NET与ASP相比,重要有哪些进步?
asp解释形,aspx编译型,性能提高,可以跟美工工作分开进行,更有助于团队开发。
61.产生一种int数组,长度为100,并向其中随机插入1-100,并且不能重复。
publicstaticint[]BuildIntArray()
int[]retsInt=newint[100];
ListtempList=newList();
Randomrandom=newRandom();
while(tempList.Count<100)
intnum=random.Next(1,101);
tempList.Contains(num))
tempList.Add(num);
tempList.Sort();
for(inti=0;iretsInt[i]=tempList[i];returnretsInt;}62.请阐明在.net中惯用几种页面间传递参数办法,并说出她们优缺陷。答:ØQueryString传递一种或各种安全性规定不高或是构造简朴数值。但是对于传递数组或对象话,就不能用这个办法了Øsession(viewstate)简朴,但易丢失作用于顾客个人,过量存储会导致服务器内存资源耗尽。Øapplication对象作用范畴是整个全局,也就是说对所有顾客均有效。其惯用办法用Lock和UnLockØcookie简朴,但也许不支持,也许被伪造Cookie是存储在客户端,而session是存储在服务器端。并且Cookie使用要配合ASP.NET内置对象Request来使用Øinputttype="hidden"简朴,也许被伪造Øurl参数简朴,显示于地址栏,长度有限ØServer.Transfer把流程从当前页面引导到另一种页面中,新页面使用前一种页面应答流Ø数据库稳定,安全,但性能相对弱63.请指出GAC含义?答:全局程序集缓存。GAC(Global AssemblyCache),她作用是可以存储某些有诸多程序都要用到公共Assembly。这样,诸多程序就可以从GAC里面获得Assembly,而不需要再把所有要用到Assembly都拷贝到应用程序执行目录下面。64.向服务器发送祈求有几种方式?答:get,post。get普通为链接方式,post普通为按钮方式。区别: Get方式,服务器端用Request.Qurystring取变量值,安全性不高,传送数据量小。 post方式,服务器端用Request.Form获取提交数据,安全性高。建议:1、get方式安全性较Post方式要差些,包括机密信息话,建议用Post数据提交方式;2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式。65.DataReader与Dataset有什么区别?答:Ø连接数据库时DataSet是非面向连接,而DataReader是面向连接。ØDataSet表达一种数据集,是数据在内存中缓存,可以涉及各种表,是保存数据数据构造。而Datareader不承担保存数据责任,它只负责从数据源读取数据到本地而已,它不是数据构造,而是网络通讯组件高层封装。ØDataSet可以离线解决,先后滚动,而DataReader不能离线解决,且是只读向前,速度快。ØDataSet可以存储数据库各种对象,例如表触发器等,可以更新回本来数据库。而DataReader只能存储游标记录,不可以更新回本来数据库, 它类似一种只能向前游标记录集。66.软件开发过程普通有几种阶段?每个阶段作用?答:软件开发普通分为五个阶段:Ø问题定义及规划此阶段是软件开发与需求方共同讨论,重要拟定软件开发目的及其可行性。Ø需求分析在拟定软件开发可行性状况下,对软件需要实现各个功能进行详细需求分析。需求分析阶段是一种很重要阶段,这一阶段做好,将为整个软件项目开发打下良好基本。“唯一不变是变化自身”,同样软件需求也是在软件开发过程中不断变化和进一步,因而,咱们必要定制需求变更筹划来应付这种变化,以保护整个项目正常进行。Ø软件设计此阶段中要依照需求分析成果,对整个软件系统进行设计,如系统框架设计、数据库设计等。软件设计普通分为概要设计和详细设计,软件设计将为软件程序编写打下良好基本。Ø程序编码此阶段是将软件设计成果转化为计算机可运营程序代码。在程序编码中必然要制定统一、符合原则编写规范。以保证程序可读性、易维护性。提高程序运营效率。Ø软件测试在软件设计完毕之后要进行严密测试,一发现软件在整个软件设计过程中存在问题并加以纠正。整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。测试办法重要有白盒测试和黑盒测试。Ø6.布置及维护。67.在c#中using和new这两个核心字有什么意义,请写出你所懂得意义?Uning:Øusing做为命名空间指令:通过在源文献顶端放置Using命名空间指令以避免不得不使用长名称,它告知编译器你将要使用来自某个指定命名空间类型。Øusing做为别名指令:它容许对一种命名空间或命名空间中一种类型起一种别名。Øusing语句:某些类型非托管对象有数量限制或很耗费系统资源,这样在代码使用完它们后,就得尽量快释放它们,using语句有助于简化该过程并保证这些资源被恰当处置。New:Ø创立类和构造实例。Ø隐藏基类办法。Ø创立匿名类型(var和new核心字一起使用时可以创立匿名类型,匿名类型只是一种继承了Object、没有名称类,该类定义从初始化器中推断,类似于隐匿类型化变量)。68.需要实现对一种字符串解决,一方面将该字符串首尾空格去掉,如果字符串中间尚有持续空格话,仅保存一种空格,即容许字符串中间有各种空格,但持续空格数不可超过一种.答:stringstr="afdkdaskdfjiksdafj";stringstrAfter=Regex.Replace(str.Trim(),@"\s+","");69.下面这段代码输出什么?为什么?inti=5;intj=5;if(Object.ReferenceEquals(i,j))Console.WriteLine("Equal");elseConsole.WriteLine("NotEqual");答:NotEqual,由于ReferenceEquals是Object静态办法,用于比较两个引用类型对象与否是对于同一种对象引用,对于值类型它总是返回false。34.ReferenceEquals,==,Equals区别ØString对于声明相似字符串在堆上只保存一种Copy,因此有相似字符串值两个字符串变量将会指向相似Reference。ØReferenceEquals:它是Object静态办法,用于比较两个引用类型对象与否是对于同一种对象引用,对于值类型它总是返回false。Ø==:它是一种可以重载二元操作符,可以用于比较两个对象与否相等。对于内置值类型,==判断是两个对象代数值与否相等。它会依照需要自动进行必要类型转换,并依照两个对象值与否相等返回true或者false,而对于顾客定义值类型,如果没有重载==操作符,==将是不可以使用。对于引用类型,==默认行为与ReferenceEquals行为相似,仅有两个对象指向同一种Reference时候才返回true。但是.NETFramework中类诸多对==进行了重载,例如String类==与Equals行为相似,判断两个字符串内容与否相等。因此在应用中,对于系统定义引用类型建议不要使用==操作符,以免程序浮现与预期不同运营成果。ØEquals():它对于值类型和引用类型定义不同,对于值类型,类型相似,并且数值相似(对于struct每个成员都必要相似),则Equals返回true,否则返回false。而对于引用类型,默认行为与ReferenceEquals行为相似,仅有两个对象指向同一种Reference时候才返回true。可以依照需要对Equals进行重载,例如String类Equals用于判断两个字符串内容与否相等。70.什么叫做SQL注入,如何防止?请举例阐明。答:运用sql语言漏洞获得合法身份登陆系统。如身份验证程序设计成:SqlCommandcom=newSql
retsInt[i]=tempList[i];
returnretsInt;
62.请阐明在.net中惯用几种页面间传递参数办法,并说出她们优缺陷。
ØQueryString传递一种或各种安全性规定不高或是构造简朴数值。
但是对于传递数组或对象话,就不能用这个办法了
Øsession(viewstate)简朴,但易丢失作用于顾客个人,过量存储会导致服务器内存资源耗尽。
Øapplication对象作用范畴是整个全局,也就是说对所有顾客均有效。
其惯用办法用Lock和UnLock
Øcookie简朴,但也许不支持,也许被伪造Cookie是存储在客户端,而session是存储在服务器端。
并且Cookie使用要配合ASP.NET内置对象Request来使用
Øinputttype="hidden"简朴,也许被伪造
Øurl参数简朴,显示于地址栏,长度有限
ØServer.Transfer把流程从当前页面引导到另一种页面中,新页面使用前一种页面应答流
Ø数据库稳定,安全,但性能相对弱
63.请指出GAC含义?
全局程序集缓存。
GAC(Global AssemblyCache),她作用是可以存储某些有诸多程序都要用到公共Assembly。
这样,诸多程序就可以从GAC里面获得Assembly,而不需要再把所有要用到Assembly都拷贝到应用程序执行目录下面。
64.向服务器发送祈求有几种方式?
get,post。
get普通为链接方式,post普通为按钮方式。
区别:
Get方式,服务器端用Request.Qurystring取变量值,安全性不高,传送数据量小。
post方式,服务器端用Request.Form获取提交数据,安全性高。
建议:
1、get方式安全性较Post方式要差些,包括机密信息话,建议用Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式。
65.DataReader与Dataset有什么区别?
Ø连接数据库时DataSet是非面向连接,而DataReader是面向连接。
ØDataSet表达一种数据集,是数据在内存中缓存,可以涉及各种表,是保存数据数据构造。
而Datareader不承担保存数据责任,它只负责从数据源读取数据到本地而已,它不是数据构造,而是网络通讯组件高层封装。
ØDataSet可以离线解决,先后滚动,而DataReader不能离线解决,且是只读向前,速度快。
ØDataSet可以存储数据库各种对象,例如表触发器等,可以更新回本来数据库。
而DataReader只能存储游标记录,不可以更新回本来数据库, 它类似一种只能向前游标记录集。
66.软件开发过程普通有几种阶段?
每个阶段作用?
软件开发普通分为五个阶段:
Ø问题定义及规划
此阶段是软件开发与需求方共同讨论,重要拟定软件开发目的及其可行性。
Ø需求分析
在拟定软件开发可行性状况下,对软件需要实现各个功能进行详细需求分析。
需求分析阶段是一种很重要阶段,这一阶段做好,将为整个软件项目开发打下良好基本。
“唯一不变是变化自身”,同样软件需求也是在软件开发过程中不断变化和进一步,因而,咱们必要定制需求变更筹划来应付这种变化,以保护整个项目正常进行。
Ø软件设计
此阶段中要依照需求分析成果,对整个软件系统进行设计,如系统框架设计、数据库设计等。
软件设计普通分为概要设计和详细设计,软件设计将为软件程序编写打下良好基本。
Ø程序编码
此阶段是将软件设计成果转化为计算机可运营程序代码。
在程序编码中必然要制定统一、符合原则编写规范。
以保证程序可读性、易维护性。
提高程序运营效率。
Ø软件测试
在软件设计完毕之后要进行严密测试,一发现软件在整个软件设计过程中存在问题并加以纠正。
整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。
测试办法重要有白盒测试和黑盒测试。
Ø6.布置及维护。
67.在c#中using和new这两个核心字有什么意义,请写出你所懂得意义?
Uning:
Øusing做为命名空间指令:
通过在源文献顶端放置Using命名空间指令以避免不得不使用长名称,它告知编译器你将要使用来自某个指定命名空间类型。
Øusing做为别名指令:
它容许对一种命名空间或命名空间中一种类型起一种别名。
Øusing语句:
某些类型非托管对象有数量限制或很耗费系统资源,这样在代码使用完它们后,就得尽量快释放它们,using语句有助于简化该过程并保证这些资源被恰当处置。
New:
Ø创立类和构造实例。
Ø隐藏基类办法。
Ø创立匿名类型(var和new核心字一起使用时可以创立匿名类型,匿名类型只是一种继承了Object、没有名称类,该类定义从初始化器中推断,类似于隐匿类型化变量)。
68.需要实现对一种字符串解决,一方面将该字符串首尾空格去掉,如果字符串中间尚有持续空格话,仅保存一种空格,即容许字符串中间有各种空格,但持续空格数不可超过一种.
stringstr="afdkdaskdfjiksdafj";
stringstrAfter=Regex.Replace(str.Trim(),@"\s+","");
69.下面这段代码输出什么?
为什么?
inti=5;
intj=5;
if(Object.ReferenceEquals(i,j))
Console.WriteLine("Equal");
Console.WriteLine("NotEqual");
NotEqual,由于ReferenceEquals是Object静态办法,用于比较两个引用类型对象与否是对于同一种对象引用,对于值类型它总是返回false。
34.ReferenceEquals,==,Equals区别
ØString对于声明相似字符串在堆上只保存一种Copy,因此有相似字符串值两个字符串变量将会指向相似Reference。
ØReferenceEquals:
它是Object静态办法,用于比较两个引用类型对象与否是对于同一种对象引用,对于值类型它总是返回false。
Ø==:
它是一种可以重载二元操作符,可以用于比较两个对象与否相等。
对于内置值类型,==判断是两个对象代数值与否相等。
它会依照需要自动进行必要类型转换,并依照两个对象值与否相等返回true或者false,而对于顾客定义值类型,如果没有重载==操作符,==将是不可以使用。
对于引用类型,==默认行为与ReferenceEquals行为相似,仅有两个对象指向同一种Reference时候才返回true。
但是.NETFramework中类诸多对==进行了重载,例如String类==与Equals行为相似,判断两个字符串内容与否相等。
因此在应用中,对于系统定义引用类型建议不要使用==操作符,以免程序浮现与预期不同运营成果。
ØEquals():
它对于值类型和引用类型定义不同,对于值类型,类型相似,并且数值相似(对于struct每个成员都必要相似),则Equals返回true,否则返回false。
而对于引用类型,默认行为与ReferenceEquals行为相似,仅有两个对象指向同一种Reference时候才返回true。
可以依照需要对Equals进行重载,例如String类Equals用于判断两个字符串内容与否相等。
70.什么叫做SQL注入,如何防止?
请举例阐明。
运用sql语言漏洞获得合法身份登陆系统。
如身份验证程序设计成:
SqlCommandcom=newSql
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1