.Net笔试题一、选择题1、DateTime.Now.ToString(yyyyMMddhhmmss)(假如今天的日期是2012-12-2215:34:50)的结果是()(1分)A.20121222153450B.2012-12-2215:34:50C.20121222D.121222153450答:A2、classClass1{privatestaticintcount=0;staticClass1(){count++;}publicClass1(){count++;}}Class1o1=newClass1();Class1o2=newClass1();请问,o1.Count的值是多少?()(2分)A.1B.2C.3D.4答:C3、声明一个委托publicdelegateintmyCallBack(intx);则用该委托产生的回调方法的原型应该是()(3分)A.voidmyCallBack(intx)B.intreceive(intnum)C.stringreceive(intx)D.不确定的答:B4、阅读下面代码:publicstructInventory{publicstringItem;publicintunitPrice;}publicInventoryCreateItem(){Inventorytemp;Console.Write(“EntertheItemsName:”);temp.Item=Console.ReadLine();Console.Write(“EntertheUnitPrice:”);temp.unitPrice=Convert.ToInt32(Console.ReadLine());returntemp;}5、下面选项关于上述代码中定义的结构和方法的描述正确的是()。(3分)A.结构定义正确。方法定义不正确,因为在方法中对结构实例化时,没有使用new运算符B.结构定义不正确,因为结构中没有构造函数。方法定义正确。C.结构定义正确,方法定义正确。D.结构定义不正确,因结构中没有构造函数。方法定义不正确,因为在方法中对结构实例化时,没有使用new运算符。答:C6、当你需要使用一种数据类型表达同一类事物的不同状态,比如:男人、女人、小孩、老人或者春夏秋冬时,C#中最可靠和直观的解决方案是什么?()(3分)A.使用struct结构B.使用enum枚举C.使用int类型,用不同的数值{0,1,2……}表示D.C#中无法通过一种数据类型实现同一事务的不同状态。答:B7、在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和(),必要时还要设置参数尺寸。(2分)A.大小;B.上限;C.初始值;D.类型;答:D8、以下的C#程序代码,程序运行时在控制台打印输出值为()(2分)intcount=3;while(count1){Console.Write(--count);}A.32B.321C.21D.2答:C9、下面关于委托的描述,错误的是()(3分)A.委托类似于C++函数指针,同样是类型不安全的。B.委托允许将方法作为参数进行传递。C.委托可用于定义回调方法。D.方法bu需要与委托签名精确匹配。答:A10、关于反射,描述错误的是()(3分)A.可以使用反射动态地创建类型的实例。B.可以使用反射将类型绑定到现有对象。C.反射主要应用与类库,这些类库需要知道一个类型的定义,以便提供更多的功能。D.只要在编程时没有调用任何反射类库,应用程序的性能就不会受到反射机制的影响。答:D11、下面关进程和线程的描述,错误的是()。(3分)A.线程作为调度和分配的基本单位,进程可包含一个或者几个线程。B.不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行C.进程和线程是拥有资源的一个独立单位,线程也可以可以访问隶属于进程的资源。D.线程执行开销小,但不利于资源管理和保护;而进程正相反。答:C12、以下关于WCF,描述错误的是()(4分)A.WCF支持请求-回复、单向和双工通信。B.WCF支持Http和TCP等多种传输机制。C.WCF中的安全包括保密性、完整性、身份验证以及授权。D.服务可以是自承载的。答:D13、下面的代码实现了设计模式中的什么模式(3分)publicclassA{privatestaticAinstance;privateA(){}publicstaticAInstance{get{if(A==null)A=newA();returninstance;}}}A.FactoryB.AbstractFactoryC.SingletonD.Builder答:C14、采用(X)设计模式可保证一个类仅有一个实例:采用(Y)设计模式可将组合成树形结构以表示“部分-整体”的层次结构,使用户对单个对象和组合对象的使用具有一致性;采用(Z)设计模式可动态地给一个对象添加一些额外的职责。(9分)A.命令(Command)B.单例(Singleton)C.装饰(Decorate)D.组合(Composite)A.命令(Command)B.单例(Singleton)C.装饰(Decorate)D.组合(Composite)A.命令(Command)B.单例(Singleton)C.装饰(Decorate)D.组合(Composite)答:X:B,Y:D,Z:C,评分标准:每答对一项给3分。15、张工程师被任命为一个大型复杂项目的项目经理,他对于该项目的过程管理有以下认识,其中()是不正确的。(5分)A.可把该项目分解成为一个个目标相互关联的小项目,形成项目群进行管理B.建立统一的项目过程会大大提高项目之间的协作效率,为项目质量提供有力保证C.需要平衡成本和收益决定是否建立适用于本项目的过程D.对于此类持续时间较长并且规模较大的项目来说,项目初期所建立的过程,在项目进行过程中可以不断优化和改进答:C二、问答题1、C#访问修饰符有哪些,分别有什么作用?(3分)答:A、public:访问不受限制。B、protected:访问仅限于自身类或从包含类派生的子类。C、private:访问仅限于自身类型。D、Internal:访问仅限于当前程序集。评分标准:答对ABC得2分,全部答对得3分,否则不得分。2、抽象类和接口的区别(6分)答:1)抽象类可以定义字段。接口不能包含字段。2)抽象类是多个类的公共模板,而接口是一个约定规范。3)一个类只能继承一个抽象类,但是可以实现多个接口。4)抽象类用于多个相似的类,而接口都实现某一功能的多个任意类。5)接口可以用于支持回调。6)抽象类里面方法可以有方法体,接口中的方法不能有方法体。7)抽象类可以有私有成员,接口不能有私有成员。8)抽象类继承类同时实现接口,接口只能继承接口。评分说明:答对一项得1分,每增加一项加一分,最多6分。3、说明base关键字、new关键字和override关键字各自的作用。(3分)答:base,用于调用父类的成员。new,用于显示隐藏父类的成员或创建一个对象。override,用于覆盖父类同名成员。4、try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?(2分)答:会执行,在return前执行。5、C#线程同步方式有哪些?(6分)答:A、volatile。B、Interlocked。C、lock。D、Monitor。E、Mutex(互斥体)。F、ReaderWriterLock。G、SynchronizationAttribute。H、ManualResetEvent或AutoResetEvent类。评分标准:答对1项得1分,多答对一项加一分,最多6分。6、int?count;...intm=count;该程序有什么错误吗,该怎么处理?(3分)答:错误:count可以为null,不能赋值给m。if(count!=null){m=count.Value;}7、DataReader与Dataset有什么区别?(3分)答:(1)DataSet非面向连接的,也支持串行化。datareader面向连接的,向前读取数据,针对数据量大的数据。(2)DataSet可以存储数据库各种对象的,比如表、触发器等,而DataReader只能存储记录。(3)DataSet可以更新回原来的数据库,DataReader不行。评分说明:每一项1分。8、ASP.NET页面之间传递值的几种方式,与各自的优缺点:(5分)答:(1)URL:简单;显示于地址栏,长度有限。(2)Session:简单;但易丢失。(3)Application:全局;易被误操做。(4)Cookie:使用简单;存在客户端可能被伪造。(5)Server.Transfer:可以传递各种数据类型的值;显示在地址栏。评分说明:每一项1分。9、ASP.NET的身份验证方式:(3)答:Windows身份验证提供程序Forms身份验证提供程序Passport身份验证提供程序评分说明:每一项1分。10、简述一下eval()函数的作用(3分)答:eval()可以对JS代码字符串求值(执行)。11、写一个HTML页面,实现以下功能,页面在打开3秒钟后自动关闭页面。(4分)答:scriptsetTimeout('window.close();',3000);/script12、表名:高考信息表准考证号科目成绩2006001语文1192006001数学1082006002物理1422006001化学1362006001物理1272006002数学149给出高考总分在600以上的学生准考证号(3分)答:select准考证号from高考信息表groupby准考证号havingsum(成绩)60013、写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。)(3分)答:解1:selecttop10*fromAwhereidnotin(selecttop30idfromA)解2:selecttop10*fromAwhereid(selectmax(id)from(selecttop30idfromA)asA)oracle的写法,取出表A中第31到第40记录select*from(selectrownumrn,t.*from(selectA.*fromAorderbyidasc)t)wherernbetween31and4014、请编程实现将整数数组中的元素按照从大到小排列的冒泡排序。(3分)答:privatevoidSort(int[]a){if(a==null)return;for(inti=0;ia.Length-1;i++){intt=i;for(intj=i+1;ja.Length;j++){if(a[i]a[j])t=j;}if(t!=i){inttmp=a[i];a[i]=a[j];a[j]=tmp;}}}15、求以下表达式的值,写出您想到的一种或几种实现方法:1-2+3-4+……+m。(一种方法给3分,一共6分)答:方法一:Privateintsum(intm){intsum=0;boolflag=true;for(inti=1;i=m;i++){if(flag)sum+=i;elsesum-=i;flag=!flag;}returnsum;}方法二:Privateintsum(intm){if((m%2)0)returnm/2;elsereturn-m/2;}