版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.net笔试题姓名:日期:1.填空:(1)面向对象的语言具有____封装____性、_____继承____性、____多态____性。(2)能用foreach遍历访问的对象需要实现_______IEnumerable_________接口或声明_______GetEnumerable_________方法的类型。(3)列举ADO.net中的五个重要对象_______Command________、______Connection_______、_______DataAdapter________、_______DataSet________、_______DataReader__________。2.不定项选择:(1)以下叙述对的的是:bcA.接口中可以有虚方法。B.一个类可以实现多个接口。C.接口不能被实例化。D.接口中可以包含已实现的方法。(2)从数据库读取记录,你也许用到的方法有:bcdA.ExecuteNonQueryB.ExecuteScalarC.FillD.ExecuteReader3.简述private、protected、public、internal修饰符的访问权限。答:public不受限制的访问 Private只能在本类中访问 Protected本类和继承与他的类中的都能访问 Internal同一个应用程序或类库中4.写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID也许不是连续的。)答:selecttop10fromawhereidnotin(selecttop30froma)或:selecttop10fromawhereid>(selectmax(id)from(selecttop30froma)asb)5.列举ASP.NET页面之间传递值的几种方式。答:session(viewstate) 简朴,但易丢失application 全局cookie 简朴,但也许不支持,也许被伪造inputtype="hidden" 简朴,也许被伪造url参数 简朴,显示于地址栏,长度有限数据库 稳定,安全,但性能相对弱6.写出程序的输出结果classClass1{privatestringstr="Class1.str";privateinti=0;staticvoidStringConvert(stringstr){str="stringbeingconverted.";}staticvoidStringConvert(Class1c){c.str="stringbeingconverted.";}staticvoidAdd(inti){i++;}staticvoidAddWithRef(refinti){i++;}staticvoidMain(){inti1=10;inti2=20;stringstr="str";Class1c=newClass1();Add(i1);AddWithRef(refi2);Add(c.i);StringConvert(str);StringConvert(c);Console.WriteLine(i1);Console.WriteLine(i2);Console.WriteLine(c.i);Console.WriteLine(str);Console.WriteLine(c.str);}}答:10,21,0,str,stringbeingconverted.7.写出程序的输出结果publicabstractclassA{publicA(){Console.WriteLine('A');}publicvirtualvoidFun(){Console.WriteLine("A.Fun()");}}publicclassB:A{publicB(){Console.WriteLine('B');}publicnewvoidFun(){Console.WriteLine("B.Fun()");}publicstaticvoidMain(){Aa=newB();a.Fun();}}答:A,B,A.Fun()8.写出程序的输出结果:publicclassA{publicvirtualvoidFun1(inti){Console.WriteLine(i);}publicvoidFun2(Aa){a.Fun1(1);Fun1(5);}}publicclassB:A{publicoverridevoidFun1(inti){base.Fun1(i+1);}publicstaticvoidMain(){Bb=newB();Aa=newA();a.Fun2(b);b.Fun2(a);}}答:2,5,1,69.一列数的规则如下:1、1、2、3、5、8、13、21、34求第30位数是多少,用递归算法实现。(C#语言)答:privateintAdd(inti){if(i<=0){return0;}elseif(i==1||i==2){return1;}else{returnAdd(i-1)+Add(i-2);}}10.程序设计:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)规定:1.要有联动性,老鼠和主人的行为是被动的。2.考虑可扩展性,猫的叫声也许引起其他联动效应。publicinterfaceObserver{voidResponse();//观测者的响应,如是老鼠见到猫的反映}publicinterfaceSubject{voidAimAt(Observerobs);//针对哪些观测者,这里指猫的要扑捉的对象老鼠}publicclassMouse:Observer{privatestringname;publicMouse(stringname,Subjectsubj){=name;subj.AimAt(this);}publicvoidResponse(){Console.WriteLine(name+"attempttoescape!");}}publicclassMaster:Observer{publicMaster(Subjectsubj){subj.AimAt(this);}publicvoidResponse(){Console.WriteLine("Hostwaken!");}}publicclassCat:Subject{privateArrayListobservers;publicCat(){this.observers=newArrayList();}publicvoidAimAt(Observerobs){this.observers.Add(obs);}publicvoidCry(){Console.WriteLine("Catcryed!");foreach(Observerobsinthis.observers){obs.Response();}}}classMainClass{staticvoidMain(string[]args){Catcat=newCat();Mousemouse1=newMouse("mouse1",cat);Mousemouse2=newMouse("mouse2",cat);Mastermaster=newMaster(cat);cat.Cry();}}//设计方法二:使用event--delegate设计..publicdelegatevoidSubEventHandler();publicabstractclassSubject{publiceventSubEventHandlerSubEvent;protectedvoidFireAway(){if(this.SubEvent!=null)this.SubEvent();}}publicclassCat:Subject{publicvoidCry(){Console.WriteLine("catcryed.");this.FireAway();}}publicabstractclassObserver{publicObserver(Subjectsub){sub.SubEvent+=newSubEventHandler(Response);}publicabstractvoidResponse();}publicclassMouse:Observer{privatestringname;publicMouse(stringname,Subjectsub):base(sub){=name;}publicoverridevoidResponse(){Console.WriteLine(name+"attempttoescape!");}}publicclassMaster:Observer{publicMaster(Subjectsub):base(sub){}publicoverridevoidResponse(){Console.WriteLine("hostwaken");}}classClass1{staticvoidMain(string[]args){Catcat=newCat();Mousemouse1=newMouse("mouse1",cat);Mousemouse2=newMouse("mouse2",cat);Mastermaster=newMaster(cat);cat.Cry();}}1.C#中property与attribute的区别,他们各有什么用处,这种机制的好处在哪里?答:一个是属性,用于存取类的字段,一个是特性,用来标记类,方法等的附加性质2.讲一讲你理解的webservice,在dotnetframework中,怎么很好的结合xml?(讲概念就行了)答:web服务,是运用SOAP(简朴对象访问协议,SimpleObjectAccessProtocol)在HTTP上执行远程方法调用的一种方法,也可以使用WSDL(WebServiceDescriptionLanguage,Web服务描述语言)来完整的描述Web服务,基于XML标准。3.C#,Java和c++的特点,有什么相同的地方,不同的地方,C#分别从c++和java中吸取了他们那些优点?答:都是面向对象的语言,C#和java都是建立在虚拟机上的。从java中吸取了跨语言。4.C#可否对内存进行直接的操作?(这可是个难点哦?要注意!)答:可以,只要标记为unsafe5.用VisualC++6.0编写的代码(unmanagedcode),如何在CLR下和其他dotnetcomponent结合?答:被编译成dll6.以前作过的一些项目?介绍一下自己的编程经验。(这是蒙混但是去的,基本一问就知道是真是假)7.你对公司有什么盼望?你的薪水盼望值?为什么学计算机?以前的工作经验(这非常重要)?Q3:维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么答:使用数据库关系:这样可以尽也许的规范编码、对比较大型的开发来说也容易维护数据的一致性和完整性,也让数据库的性能尽也许的发挥出来。实在是不能使用数据库的关系的时候才使用触发器,这让数据逻辑简朴,但这时候要注意记录文档,不然,触发器多了,维护难度会相称大。最后是自己编写逻辑:这样会导致数据的一致性,完整性的维护逻辑相称大,也十分分散,没有良好的文档记录习惯的话,一旦任务出现交接,其别人很难继续你未完毕的工作,甚至于过一段时间以后,自己要完全理请逻辑都是一个麻烦的事!由于这些逻辑相称于隐藏起来了的。Q4:ADO。NET相对于ADO等重要有什么改善?答:ADO以Recordset存储,而ADO.NET则以DataSet表达。Recordset看起来更像单表,假如让Recordset以多表的方式表达就必须在SQL中进行多表连接。反之,DataSet可以是多个表的集合。ADO的运作是一种在线方式,这意味着不管是浏览或更新数据都必须是实时的。ADO.NET则使用离线方式,在访问数据的时候ADO.NET会运用XML制作数据的一份幅本,ADO.NET的数据库连接也只有在这段时间需要在线。由于ADO使用COM技术,这就规定所使用的数据类型必须符合COM规范,而ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导致的数据类型转换,从而提高了整体性能。Q5:ASP。NET与ASP相比,重要有哪些进步?答:ASP.Net摆脱了以前ASP使用脚本语言来编程的缺陷,理论上可以使用任何编程语言涉及C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但事实上我还是认为它和Java更象一些吧。一方面它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清楚,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java同样提供了完善的调试/纠错体系。Q6:C#中的委托是什么?事件是不是一种委托?答:委托是一种安全的函数指针,事件是一种消息机制Q7:描述一下C#中索引器的实现过程,是否只能根据数字进行索引?Q8:C#中要使一个类支持FOREACH遍历,实现过程如何?答:实现接口IEnumerableQ10:写一个HTML页面,实现以下功能,左键点击页面时显示“您好”,右键点击时显示“严禁右键”。并在2分钟后自动关闭页面。Q11:你对XMLHTTP、WEBSERVICE了解吗?简朴描述其特点、作用答:XMLHTTP可以积极获取远端web代码,类似HttpWebRequestQ12:接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?答:接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。抽象类可以提供某些方法的部分实现,接口不可以.抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。再抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。此外接口不能包含字段、构造函数、析构函数、静态成员或常量。Q13:自定义控件和一般用户控件的异同?假如要用这两者之一,你会选择哪种?为什么答:用户控件(UserControl):扩展名为*.ascx,跟*.aspx在结构上相似,是指页面中加载的功能块,只是用户控件不能单独作为页面运营,必须嵌入到*.aspx页面或其它用户控件中使用。自定义控件,跟HtmlControl或WebControl相似,编译后可以添加引用到工具栏里面,直接用鼠标拖动使用。看情况使用,假如功能比较多,会用自定义控件。Q14:大约描述一下ASP。NET服务器控件的生命周期答:(1)初始化在此阶段中,重要完毕两项工作:一、初始化在传入Web请求生命周期内所需的设立;二、跟踪视图状态。一方面,页面框架通过默认方式引发Init事件,并调用OnInit()方法,控件开发人员可以重写该方法为控件提供初始化逻辑。此后,页面框架将调用TrackViewState方法来跟踪视图状态。需要注意的是:多数情况下,Control基类提供的TrackViewState方法实现已经足够了。只有在控件定义了复杂属性时,开发人员才也许需要重写TrackViewState方法。(2)加载视图状态此阶段的重要任务是检查服务器控件是否存在以及是否需要将其状态恢复到它在解决之前的请求结束的状态。因此该过程发生在页面回传过程中,而不是初始化请求过程。在此阶段,页面框架将自动恢复ViewState字典。假如服务器控件不维持其状态,或者它有能力通过默认方式保存其所有状态而使用ViewState字典,那么开发人员则不必实现任何逻辑。针对那些无法在ViewState字典中存储的数据类型或者需要自定义状态管理的情况,开发人员可以通过重写LoadViewState方法来自定义状态的恢复和管理。(3)解决回发数据若要使控件可以检查客户端发回的窗体数据,那么必须实现System.Web.UI.IPostBackDataHandler接口的LoadPostData()方法。因此只有解决回发数据的控件参与此阶段。(4)加载至此阶段开始,控件树中的服务器控件已创建并初始化、状态已还原并且窗体控件反映了客户端的数据。此时,开发人员可以通过重写OnLoad()方法来实现每个请求共同的逻辑。(5)发送回发更改告知在此阶段,服务器控件通过引发事件作为一种信号,表白由于回发而发生的控件状态变化(因此该阶段仅用于回发过程)。为了建立这种信号,开发人员必须再次使用System.Web.UI.IPostBackDataHandler接口,并实现另一方法-RaisePostBackChangedEvent()。其判断过程为:假如控件状态因回发而更改,则LoadPostData()返回true;否则返回false。页面框架跟踪所有返回true的控件并在这些控件上调用RaisePostDataChangedEvent()。(6)解决回发事件该阶段解决引起回发的客户端事件。为了便于将客户端事件映射到服务器端事件上进行解决,开发人员在此阶段可以通过实现System.Web.UI.IPostBackEventHandler接口的RaisePostBackEvent()方法来实现该逻辑。由此途径,服务器控件将成功捕获回发的客户端事件进行服务器端的相应解决。(7)预呈现该阶段完毕在生成控件之前所需要的任何工作。通常情况下是通过重写OnPreRender()方法完毕该工作。需要注意的是:在该阶段,可以保存在预呈现阶段对控件状态所做的更改,而在呈现阶段进行的更改则会丢失。(8)保存状态假如服务器控件不维持状态,或者它有能力通过默认方式保存其所有状态而使用ViewState字典,那么开发人员不必在该阶段实现任何逻辑。由于这个保存状态的过程是自动的。假如服务器控件需要自定义状态保存,或者控件无法在ViewState字典中存储特殊的数据类型,则需要通过重写SaveViewState()方法来实现状态保存。(9)呈现表达向HTTP输出流中写入标记文本的过程。开发人员通过重写Render()方法使其在输出流上自定义标记文本。(10)处置在此阶段中,通过重写Dispose()方法完毕释放对昂贵资源的引用,如数据库链接等。(11)卸载完毕的工作与"处置"阶段相同,但是,开发人员通常在Dispose()方法中执行清除,而不解决Unload事件。Q15:UML答:统一建模语言。Q16:面向对象的概念,重要特点答:封装,继承,多态Q17:类划分的依据。类粒度问题Q18:事物管理问题第一, 谈谈final,finally,finalize的区别。答:final用于声明属性,方法和类,分别表达属性不可变,方法不可覆盖,类不可继承。finally是异常解决语句结构的一部分,表达总是执行。finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文献等。第二,AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?第三,StaticNestedClass和InnerClass的不同,说得越多越好(面试题有的很笼统)。答:NestedClass(一般是C++的说法),InnerClass(一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上第四,&和&&的区别。答:&是位运算符,表达与;&&是逻辑运算符,表达”and”第五,HashMap和Hashtable的区别。答:Hashtable和HashMap类有三个重要的不同之处。第一个不同重要是历史因素。Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现。也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。这就意味着,虽然你可以不用采用任何特殊的行为就可以在一个多线程的应用程序中用一个Hashtable,但你必须同样地为一个HashMap提供外同步。一个方便的方法就是运用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象,并把它作为一个封装的对象来返回。这个对象的方法可以让你同步访问潜在的HashMap。这么做的结果就是当你不需要同步时,你不能切断Hashtable中的同步(比如在一个单线程的应用程序中),并且同步增长了很多解决费用。第三点不同是,只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的key,但任意数量的条目可以是空的value。这就是说,假如在表中没有发现搜索键,或者假如发现了搜索键,但它是一个空的值,那么get()将返回null。假如有必要,用containKey()方法来区别这两种情况。一些资料建议,当需要同步时,用Hashtable,反之用HashMap。但是,由于在需要时,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,并且它不是基于一个陈旧的类的,所以有人认为,在各种情况下,HashMap都优先于Hashtable。关于Properties有时侯,你也许想用一个hashtable来映射key的字符串到value的字符串。DOS、Windows和Unix中的环境字符串就有一些例子,如key的字符串PATH被映射到value的字符串C:\WINDOWS;C:\WINDOWS\SYSTEM。Hashtables是表达这些的一个简朴的方法,但Java提供了此外一种方法。Java.util.Properties类是Hashtable的一个子类,设计用于Stringkeys和values。Properties对象的用法同Hashtable的用法相象,但是类增长了两个节省时间的方法,你应当知道。Store()方法把一个Properties对象的内容以一种可读的形式保存到一个文献中。Load()方法正好相反,用来读取文献,并设定Properties对象来包含keys和values。注意,由于Properties扩展了Hashtable,你可以用超类的put()方法来添加不是String对象的keys和values。这是不可取的。此外,假如你将store()用于一个不包含String对象的Properties对象,store()将失败。作为put()和get()的替代,你应当用setProperty()和getProperty(),它们用String参数。第六,Collection和Collections的区别。答:Collection是集合类的上级接口,继承与他的接口重要有Set和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作第七,什么时候用assert。答:断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为true。假如表达式计算为false,那么系统会报告一个Assertionerror。它用于调试目的:assert(a>0);//throwsanAssertionerrorifa<=0断言可以有两种形式:assertExpression1;assertExpression1:Expression2;Expression1应当总是产生一个布尔值。Expression2可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的String消息。断言在默认情况下是禁用的。要在编译时启用断言,需要使用source1.4标记:javac-source1.4Test.java要在运营时启用断言,可使用-enableassertions或者-ea标记。要在运营时选择禁用断言,可使用-da或者-disableassertions标记。要系统类中启用断言,可使用-esa或者-dsa标记。还可以在包的基础上启用或者禁用断言。可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。但是,断言不应当用于验证传递给公有方法的参数,由于不管是否启用了断言,公有方法都必须检查其参数。但是,既可以在公有方法中,也可以在非公有方法中运用断言测试后置条件。此外,断言不应当以任何方式改变程序的状态。第八,GC是什么?为什么要有GC?答:垃圾回收器。释放被视为垃圾的内存第九,Strings=newString("xyz");创建了几个StringObject?答:创建了一个对象,一个引用.对象newString("xyz")呆在堆里,那个引用s在栈中第十,Math.round(11.5)等於多少?Math.round(-11.5)等於多少?答:12.0;-12;第十一,shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错?答:s1+1是int型,所以改成s1=(short)(s1+1);后面的没错。第十二,sleep()和wait()有什么区别?答:sleep()方法是使线程停止一段时间的方法。在sleep时间间隔期满后,线程不一定立即恢复执行。这是由于在那个时刻,其它线程也许正在运营并且没有被调度为放弃执行,除非(a)"醒来"的线程具有更高的优先级(b)正在运营的线程由于其它因素而阻塞。wait()是线程交互时,假如线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。第十三,Java有没有goto?答:没有第十四,数组有没有length()这个方法?String有没有length()这个方法?答:数组有length属性,没有length()方法1String有length()方法,没有length属性第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?答:重载和覆盖。覆写(Override)的两个函数的函数特性相同,重载(Overload)的两个函数的函数名虽然相同,但函数特性不同。函数特性涉及函数名,参数的类型和个数。Override是在继承的时候,假如你写的函数与要继承的函数函数特性相同,那么,加上这个关键字,在使用这个子类的这个函数的时候就看不见父类(或超类)的函数了,它被覆盖掉了。第十六,Set里的元素是不能反复的,那么用什么方法来区分反复与否呢?是用==还是equals()?它们有何区别?答:Set里的元素是不能反复的,那么用iterator()方法来区分反复与否。equals()是判读两个Set是否相等。equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖第十七,给我一个你最常见到的runtimeexception。答:NullPointException第十八,error和exception有什么区别?答:error表达恢复不是不也许但很困难的情况下的一种严重问题。比如说内存溢出。不也许指望程序能解决这样的情况。exception表达一种设计或实现问题。也就是说,它表达假如程序运营正常,从不会发生的情况第十九,List,Set,Map是否继承自Collection接口?答:List和Set是,Map不是。第二十,abstractclass和interface有什么区别?答:接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。抽象类可以提供某些方法的部分实现,接口不可以.抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。再抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。此外接口不能包含字段、构造函数、析构函数、静态成员或常量。第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?答:不可以将abstract与static合用。不可以将abstract与native合用第二十二,接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concreteclass)?答:可以,可以,可以第二十三,启动一个线程是用run()还是start()?答:start();第二十四,构造器Constructor是否可被override?答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。当两个分离的对象的内容和类型相配的话,返回真值第二十五,是否可以继承String类?答:不能第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?答:不能,一个对象的一个synchronized方法只能由一个线程访问。第二十七,try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?答:会,之前。第二十八,编程题:用最有效率的方法算出2乘以8等於几?答:2<<3;第二十九,两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对?答:不对,其hashcode应当是相等。由于hashcode用的是同一个类的方法,同时其每一个属性值是相等的。第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?答:引用ref第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?答:必须为byte,short,int或char,不可以是其它类型第三十二,编程题:写一个Singleton出来。答:48、编程题:写一个Singleton出来。一个类Class只有一个实例存在。一般Singleton模式通常有几种种形式:第一种形式:定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。publicclassSingleton{privateSingleton(){}//在自己内部定义自己一个实例,是不是很奇怪?//注意这是private只供内部调用privatestaticSingletoninstance=newSingleton();//这里提供了一个供外部访问本class的静态方法,可以直接访问publicstaticSingletongetInstance(){returninstance;}}第二种形式:publicclassSingleton{privatestaticSingletoninstance=null;publicstaticsynchronizedSingletongetInstance(){//这个方法比上面有所改善,不用每次都进行生成对象,只是第一次//使用时生成实例,提高了效率!if(instance==null)instance=newSingleton();returninstance;}}其他形式:定义一个类,它的构造函数为private的,所有方法为static的。一般认为第一种形式要更加安全些数据库方面:1.存储过程和函数的区别答:存储过程是编译好的存储在数据库的操作,函数中不能使用临时表,和动态SQL2.事务是什么?答:数据库事务是指作为单个逻辑工作单元执行的一系列操作。数据库事务的ACID属性事务解决可以保证除非事务性单元内的所有操作都成功完毕,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么所有成功要么所有失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性:•原子性事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目的,并且是互相依赖的。假如系统只执行这些操作的一个子集,则也许会破坏事务的总体目的。原子性消除了系统解决操作子集的也许性。•一致性事务在完毕时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如B树索引或双向链表)都必须是对的的。某些维护一致性的责任由应用程序开发人员承担,他们必须保证应用程序已强制所有已知的完整性约束。例如,当开发用于转帐的应用程序时,应避免在转帐过程中任意移动小数点。•隔离性由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,由于它可以重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。当事务可序列化时将获得最高的隔离级别。在此级别上,从一组可并行执行的事务获得的结果与通过连续运营每个事务所获得的结果相同。由于高度隔离会限制可并行执行的事务数,所以一些应用程序减少隔离级别以换取更大的吞吐量。•持久性事务完毕之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。DBMS的责任和我们的任务公司级的数据库管理系统(DBMS)都有责任提供一种保证事务的物理完整性的机制。就常用的SQLServer2023系统而言,它具有锁定设备隔离事务、记录设备保证事务持久性等机制。因此,我们不必关心数据库事务的物理完整性,而应当关注在什么情况下使用数据库事务、事务对性能的影响,如何使用事务等等。3.游标的作用?如何知道游标已经到了最后?答:指示当前记录的位置,检查NULL4.触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。答:一个事前,一个事后。通常事前触发器可以获取事件之前和新的字段值1。用C#实现以下功能a产生一个int数组,长度为100,并向其中随机插入1-100,并且不能反复。b对上面生成的数组排序,需要支持升序、降序两种顺序答:ArrayListar=newArrayList();int[]list=newint[100];for(inti=1;i<=100;i++){ar.Add(i);}Randomrm=newRandom();for(inti=0;i<100;i++){intindex=rm.Next(99-i);list[i]=(int)ar[index];ar.RemoveAt(index);}升序:privateintmin;publicvoidxuanZhe(int[]list)//选择排序{for(inti=0;i<list.Length-1;i++){min=i;for(intj=i+1;j<list.Length;j++){if(list[j]<list[min])min=j;}intt=list[min];list[min]=list[i];list[i]=t;}}降序:privateintmax;publicvoidxuanZhe(int[]list)//选择排序{for(inti=0;i<list.Length-1;i++){max=i;for(intj=i+1;j<list.Length;j++){if(list[j]<list[min])max=j;}intt=list[max];list[max]=list[i];list[i]=t;}}2。请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺陷。答:session(viewstate) 简朴,但易丢失application 全局cookie 简朴,但也许不支持,也许被伪造inputttype="hidden" 简朴,也许被伪造url参数 简朴,显示于地址栏,长度有限数据库 稳定,安全,但性能相对弱3。请说明.net中的错误解决机制,并举例答:try{也许要犯错的代码}catch{犯错后如何解决}finally{不管是否犯错都要执行}4。请说出强名的含义答:具有自己的key,可以在GAC为公用5。请列出c#中几种循环的方法,并指出他们的不同答:forwhileforeach6。请指出.net中所有类型的基类答:object7。请指出GAC的含义答:全局程序集缓存8。SQLSREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值答:用max聚合函数您在什么情况下会用到虚方法?它与接口有什么不同?Q:Override与重载有什么区别?答:其实很本质的区别就是看函数特性:覆写(Override)的两个函数的函数特性相同,重载(Overload)的两个函数的函数名虽然相同,但函数特性不同。函数特性涉及函数名,参数的类型和个数。Override是在继承的时候,假如你写的函数与要继承的函数函数特性相同,那么,加上这个关键字,在使用这个子类的这个函数的时候就看不见父类(或超类)的函数了,它被覆盖掉了。Q:值类型与引用类型有什么区别?答:值类型直接存储其值,引用类型存储对值的引用。值类型存储在堆栈中,而引用类型存储在托管堆上。值类型涉及:简朴类型、结构类型、枚举类型;引用类型涉及:类、数组、接口、委托、字符串、数组。Q:如何理解静态变量?答:所有实例公用一个的变量Q:向服务器发送请求有几种方式?答:post,getQ:DataReader与Dataset有什么区别?答:dataset是保存数据的数据结构,断开模式,而DataReader不承担保存数据的责任,需要自己手动关闭连接数据库,它只负责从数据源读取数据到本地而已,是只读向前的,它不是数据结构,而是网络通讯组件的高层封装。Q:假如在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行解决?答:inputtype=hidden;url;数据库;Q:用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?答:3层,表达层,逻辑层,数据层;安全,可维护性高Q:软件开发过程一般有几个阶段?每个阶段的作用?答:分析,开发,测试,维护Q:微软推出了一系列的ApplicationBlock,请举出您所知道的ApplicationBlock并说明其作用?Q:请列举一些您用到过的设计模式以及在什么情况下使用该模式?Q:您对WebService的体会?答:在网络上共享Q:您对编程的爱好如何?工作中碰到不懂的问题是如何去解决的?您一般如何去提高自己的编程水平?答:很高;问,查;多看,多动手。Q:您离职的因素是什么?Q:通过超链接如何传递中文参数?答:URLEncode,URLDecode;Q:请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?答:c#方法:publicvoidFindTextBox(Controlctr){foreach(Controlparentinctr.Controls){ foreach(Controlchildinparent.Controls){ If(child.GetType().ToString()==“System.Web.UI.WebControls.TextBox”){((TextBox)child).Text=string.Empty;}FindTextBox(child);}}}Javascript方法:<scripttype="text/javascript">FunctionFindTextBox(){varcontrols=document.getElementsByTagName(‘input’);for(vari=0;i<controls.length;i++){if(controls[i].type==‘text’){Controls[i].value=‘’;}}}Q:请编程实现一个冒泡排序算法?答:publicint[]maoPao(int[]list)//冒泡排序{inti,j,temp;booldone=false;j=1;while((j<list.Length)&&(!done)){done=true;for(i=0;i<list.Length-j;i++){if(list[i]>list[i+1]){done=false;temp=list[i];list[i]=list[i+1];list[i+1]=temp;}}j++;}returnlist;}1、override与重载的区别答:其实很本质的区别就是看函数特性:覆写(Override)的两个函数的函数特性相同,重载(Overload)的两个函数的函数名虽然相同,但函数特性不同。函数特性涉及函数名,参数的类型和个数。Override是在继承的时候,假如你写的函数与要继承的函数函数特性相同,那么,加上这个关键字,在使用这个子类的这个函数的时候就看不见父类(或超类)的函数了,它被覆盖掉了。2、.net的错误解决机制是什么答:try{也许要犯错的代码}catch{犯错后如何解决}finally{不管是否犯错都要执行}3、C#中接口和类的异同答:类是引用类型,可以继承类、接口和被继承,有默认的构造函数,有析构函数,可以使用abstract和sealed,有protected修饰符,必须使用new初始化。接口可以说是比抽象类更抽象的类,只能继承接口,是一种规范4、DataReader和DataSet的异同答:dataset是保存数据的数据结构,断开模式,而DataReader不承担保存数据的责任,需要自己手动关闭连接数据库,它只负责从数据源读取数据到本地而已,是只读向前的,它不是数据结构,而是网络通讯组件的高层封装。1.有哪几种方法可以实现一个类存取此外一个类的成员函数及属性,并请举列来加以说明和分析.答:反射,base2.假如需记录类的实例个数,该如何实现,请写一个简朴的类于以证明.答:staticintnum=0;在构造函数里num++。3.A类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函数的执行过程.答:A构造→B构造→B析构→A析构4.需要实现对一个字符串的解决,一方面将该字符串首尾的空格去掉,假如字符串中间尚有连续空格的话,仅保存一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.答:stringa="abcdecd";stringd=a.Replace("","");while(true){d=d.Replace("","");if(d.IndexOf("")==-1){break;}}一.填空题1.c#中的三元运算符是__?:___?2.当整数a赋值给一个object对象时,整数a将会被__装箱(封装)___?3.类成员有_____种可访问形式?(public,private,protected,internal)4.publicstaticconstintA=1;这段代码有错误么?是什么?const不能用static修饰5.floatf=-123.567F;inti=(int)f;i的值现在是_____?答:1236.运用operator声明且仅声明了“==”,有什么错误么?答:还要声明“!=”7.委托声明的关键字是______?答:delegate8.用sealed修饰的类有什么特点?答:密封,不能继承9.在A中所有的自定义用户控件都必须继承自________?答:Control10.在.Net中所有可序列化的类都被标记为__serializable__?11.在.Net托管代码中我们不用紧张内存漏洞,这是由于有了______?垃圾回收器12.下面的代码中有什么错误吗?_______usingSystem;classA{publicvirtualvoidF(){Console.WriteLine("A.F");}}abstractclassB:A{publicabstractoverridevoidF();//newpublicabstractvoidF();}13.当类T只声明了私有实例构造函数时,则在T的程序文本外部,___不可以___(可以or不可以)从T派生出新的类,不可以____(可以or不可以)直接创建T的任何实例。14.下面这段代码有错误么?switch(i){case():CaseZero();break;case1:CaseOne();break;case2:dufault;//错误CaseTwo();break;}15.在.Net中,类System.Web.UI.Page可以被继承么?可以二.简答题1.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?答:1).using指令。using+命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的具体命名空间。2).using别名。using+别名=涉及具体命名空间信息的具体的类型。当一个cs引用多个命名空间时,而有相同的类型时可以这样做。比如namespace1和namespace2下面都有myClass类时,可以usingclass1=namespace1.myClass;usingclass2=namespace2.myClass。3).using语句,定义一个范围,在范围结束时解决对象。(1)new运算符用于创建对象和调用构造函数。(2)new修饰符用于向基类成员隐藏继承成员。(3)new约束用于在泛型声明中约束也许用作类型参数的参数的类型。4.谈谈类和结构的区别?答:类是引用类型,可以继承类、接口和被继承,有默认的构造函数,有析构函数,可以使用abstract和sealed,有protected修饰符,必须使用new初始化。结构是值类型,只能继承接口,不能被继承,没有默认的构造函数,可以创建,没有析构函数,不可以用abstract和sealed,没有protected修饰符,可以不用new初始化。如何选择使用结构还是类:1).堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些2).结构表达如点、矩形和颜色这样的轻量对象,例如,假如声明一个具有1000个点对象的数组,则将为引用每个对象分派附加的内存。在此情况下,结构的成本较低。3).在表现抽象和多级别的对象层次时,类是最佳的选择4).大多数情况下该类型只是一些数据时,结构是最佳的选择5.一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成。请用c#语言编写重要程序来实现。答:usingSystem.Text;StringBuildersb=newStringBuilder(0,10000);stringstrABC="a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";string[]ABC=strABC.Split(',');intlen=ABC.Length;Randomrd=newRandom();for(inti=0;i<10000;i++){sb.Append(ABC[rd.Next(len)]);}6.对于这样的一个枚举类型:enumColor:byte{Red,Green,Blue,Orange}试写一段程序显示出枚举类型中定义的所有符号名称以及它们相应的数值。答:string[]ss=Enum.GetNames(typeof(Color));byte[]bb=Enum.GetValues(typeof(Color));7.您了解设计模式么?请列出您所知道的设计模式的名称。//答:设计模式是一套被反复使用、多数人知晓的、通过度类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被别人理解、保证代码可靠性。设计模式使人们可以更加简朴方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思绪。一个模式的四个基本要素1.模式名称(patternname)一个助记名,它用一两个词来描述模式的问题、解决方案和效果。命名一个新的模式增长了我们的设计词汇。设计模式允许我们在较高的抽象层次上进行设计。基于一个模式词汇表,我们自己以及同事之间就可以讨论模式并在编写文档时使用它们。模式名可以帮助我们思考,便于我们与其别人交流设计思想及设计结果。找到恰当的模式名也是我们设计模式编目工作的难点之一。2.问题(problem)描述了应当在何时使用模式。它解释了设计问题和问题存在的前因后果,它也许描述了特定的设计问题,如如何用对象表达算法等。也也许描述了导致不灵活设计的类或对象结构。有时候,问题部分会涉及使用模式必须满足的一系列先决条件。3.解决方案(solution)描述了设计的组成成分,它们之间的互相关系及各自的职责和协作方式。由于模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和如何用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。4.效果(consequences)描述了模式应用的效果及使用模式应权衡的问题。尽管我们描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有重要意义。软件效果大多关注对时间和空间的衡量,它们也表述了语言和实现问题。由于复用是面向对象设计的要素之一,所以模式效果涉及它对系统的灵活性、扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些模式很有帮助。MVC,factory,singleton8.请在SQLServer中设计表来保存一个树状结构的组织结构图(假设结构图中只有名称这一项内容需要保存),假如我想查询某一职位下的所有职位,用一个存储过程来实现,你有什么思绪?答:parent表(字段:pid,pname),child表(字段:cid,cname,pid)递归9.什么叫做SQL注入,如何防止?请举例说明。答:运用sql关键字对网站进行袭击。过滤关键字'等10.下面这段代码输出什么?为什么?inti=5;intj=5;if(Object.ReferenceEquals(i,j))Console.WriteLine("Equal");elseConsole.WriteLine("NotEqual");答:不相等,由于比较的是对象1.写一个实现对一段字符串翻转的方法,附加一些条件,如其中涉及“,”、“.”,对其设计测试用例。答: usingSystem.Text;stringinputStr="a,b,c,d,e,f,g,h,i,j,k,l";char[]inputChar=inputStr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026疫苗稳定性加速试验方法创新与监管认可进展报告
- 小学心理健康北师大版(2013)三年级下册第二十三课理财是一门学问教案
- 高中物理 第三章 气体 1 气体实验定律教学设计1 教科版选修3-3
- 学期评价教学设计小学信息技术重大版六年级下册-重大版
- 2026年彝良县医疗事业单位人员招聘笔试备考试题及答案解析
- 2026年汤阴县医疗事业单位人员招聘考试备考题库及答案解析
- 2026年隆尧县带编教师招聘笔试参考题库及答案解析
- 2026年遂溪县社区工作者招聘考试备考试题及答案解析
- 2026年新县社区工作者招聘考试模拟试题及答案解析
- 2026年庆云县社区工作者招聘考试模拟试题及答案解析
- VDA6.3-2023过程审核检查表
- 实验动物与动物实验
- 眼的胚胎发育课件
- 双红活血胶囊作用机制的网络药理学研究
- 穴位埋线疗法调节内分泌与激素平衡
- 《医学心理学》学生课后作业
- 高一数学人教版集合的概念
- 围棋启蒙教程
- GA/T 2008-2022法庭科学枪支检验技术规范
- 初级养老护理员培训全套
- 马工程《刑法学(下册)》教学课件 第17章 危害国家安全罪
评论
0/150
提交评论