软件设计师.NET认证考试测试卷
注意事项:用蓝、黑色钢笔答题。保持卷面整洁。
得分 |
阅卷人 |
一、单项选择(40分,每小题1分)
1.以下标识符中不全是关键字的是(D )
A、case for int B、while goto foreach
C、bool class long D、then if char
2. 一个C#程序总是调用哪个方法作为开始(入口):( A )
A、Main B、main C、MAIN D、任意一个方法即可
3. 设“int a=12;”,则执行完语句“a+=a*a;”后,a的值是( C )
A、12 B、144 C、156 D、288
4. 在类作用域中能够通过直接使用该类的(D )成员名进行访问。
A、私有 B、公有 C、保护 D、任何
5.decimal类型和float(double)类型都可以表示小数,正确说法是( C )
A、两者没有任何区别
B、decimal比float和double类型取值范围大
C、decimal比float和double类型精度高
D、以上说法都不对
6. 可用作C#程序用户标识符的一组是( B )
A、void define +word B、a3_b3 _12 Ys
C、for -a1 Case D、2a c3 DO
7. 以下不是引用类型的是(A )
A、结构体 B、对象类型 C、接口类型 D、委托类型
8.windows应用程序开发时,窗体加载时触发的事件是( C )
A、Click B、Paint C、Load D、Init
9.C#中定义枚举使用的关键字是(A )
A、enum B、interface C、struct D、class
10. 类的成员中,可以用来存储数据的是(B )
A、属性 B、字段 C、方法 D、事件
11. 要修改窗体的标题,需要修改窗体的哪个属性(D )
A、Title B、Caption C、Head D、Text
12. 在Array类中,可以对一维数组中的元素进行排序的方法是(A )
A、Sort() B、Clear() C、Copy() D、Reverse()
13. 关于字符串变量的类型转换,下列语句错误的是( C )
A、string str=”123”;int i=int.Parse(str);
B、string str=”123”;int i=System.Convert.ToInt32(str);
C、string str=”123”;int i=(int)str;
D、以上语句都没有错误
14. 声明一个10行,5列的整型二维数组,下列正确的是( C )
A、int[] arr = new int[10,5];
B、int[10,5] arr = new int[];
C、int[,] arr = new int[10,5];
D、int[10,5] arr = new int[10,5];
15. C#语言的值类型不包括:( D )
A、枚举类型 B、结构体类型 C、数值类型 D、对象类型
16. 以下说法正确的是( C )
A、接口可以实例化 B、抽象类可以实例化
C、类可以实现多个接口 D、接口中可以包含字段
17. 关于虚方法实现多态,下列说法错误的是(C )
A、定义虚方法使用关键字virtual
B、虚方法是实现多态的一种应用形式
C、虚方法在子类中必须被重写
D、重写虚方法使用的关键字是override
18. 以下关于继承的说法错误的是( D )
A、.NET框架类库中,Object类是所有类的基类
B、派生类不能直接访问基类的私有成员
C、protected修饰符修饰的成员在子类中可以被访问
D、在任何情况下,基类对象都不能转换为派生类对象
19. ASP.NET中,用户自定义控件的文件扩展名是( A )
A、.ascx B、.aspx C、.asax D、.asp
20. 在ASP.NET的内置对象中,必须要有Lock和Unlock方法以确保多个用户无法同时改变某一变量的对象是( D )
A、Sessioin B、Cookie C、Request D、Application
21. Application对象的默认有效期是(B)
A、15分钟 B、应用程序启动到结束 C、15分钟 D、30分钟
22. 在执行A页面时,若要调用B页面,B页面执行完后,继续执行A页面,可以通过Server对象的哪个方法来实现(B )
A、Transfer B、Execute C、Redirect D、MapPath
23. 在对Sql Server数据库进行访问时,应该使用的是(A )
A、SQL Server .NET Framework 数据提供程序
B、OLE DB .NET Framework 数据提供程序
C、Oracle .NET Framework 数据提供程序
D、ODBC .NET Framework 数据提供程序
24. 下列字符串能够正确链接SQL Server 2005数据库的是(A )。
A、Data Source=(local);Integrated Security=SSPI; Initial Catalog=myDB
B、DataSource=(local);Integrated Security=SSPI;Initial Catelog=myDB
C、DataSource=(local);IntegratedSecurity=SSPI;Intial Catelog=myDB
D、Data Source=(local);Integrated Security=SSPI;InitialCatelog=myDB
25. 要从数据库读取符合某一条件的记录数量,下列方法最合适的是(B )
A、ExecuteNonQuery B、ExecuteScalar
C、ExecuteReader D、Fill
26. 下列关于ref和out的描述,错误的是( B )
A、使用ref参数,传递到ref参数的参数必须最先初始化
B、使用out参数,传递到out参数的参数必须最先初始化
C、使用ref参数,必须将参数作为ref参数显示传递到方法
D、使用out参数,必须将参数作为out参数显示传递到方法
27.下列关于构造函数的描述正确的是( C )
A、构造函数可以声明返回类型 B、构造函数不可以用private修饰
C、构造函数必须与类名相同 D、构造函数不能带参数
28. 关于ASP.NET中的代码隐藏文件的描述正确的是( C )
A、Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。
B、项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。
C、项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。
D、以上都不正确。
29. ASP.NET中,服务器控件是为Web表单专门设计的。服务器控件有两种类型,它们是( A )
A、HTML控件和Web控件 B、HTML控件和XML控件
C、XML控件和Web控件 D、HTML控件和IIS控件
30. 在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是( C )
A、insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;
B、ExecuteNonQuery()方法返回执行Sql语句所影响的行数。
C、Select操作的Sql语句只能由ExecuteReader()方法来执行;
D、ExecuteReader()方法返回一个DataReder对象;
31. 如果要将窗体设置为透明的,则( A )
A、要将Opacity属性设置为小于100%得值;
B、要将FormBoderStyle属性设置为None;
C、要将locked 属性设置为True;
D、要将 Enabled属性设置为True;
32. 装箱、拆箱操作发生在( C )
A、类与对象之间 B、对象与对象之间
C、引用类型与值类型之间 D、引用类型与引用类型之间
33. 若想支持Foreach语句需要实现的接口是( A )
A、IEnumerable B、IEnumerator C、ICollection D、ICollectData
34. .以下哪个是可以变长的数组( D )
A.Array B.string[] C.string[N] D.ArrayList
35. 用户自定义异常类需要从以下哪个类继承(A )
A.Exception B.CustomException C.ApplicationException D.BaseException
36. .Net依赖以下哪项技术实现跨语言互用性?( C )
A.CLR B.CTS C.CLS D.CTT
37. 以下哪个类型和int类型相同?( A )
A.Int32 B.Object C.ValueType D.Int16
38. “访问范围限定于此程序或那些由它所属的类派生的类型”是对以下哪个成员可访问性含义的正确描述?( B )
A.public B.protected C.internal D.protected internal
39. 以下叙述正确的是:( B )
A. 接口中可以定义字段。 B. 一个类可以实现多个接口。
C. 接口可以被实例化。 D. 接口中可以包含已实现的方法。
40. 下列关于C#中索引器理解正确的是( D )
A、索引器的参数必须是两个或两个以上
B、索引器的参数类型必须是整数型
C、索引器必须定义一个名字
D、以上皆非
二、多项选择(10分,每小题2分)
1. 对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务? ( ABC )
A、Close B、Dispose C、Finalize D、using E、Quit
2. 下面描述错误的是( CD )。
A、窗体也是控件; B、窗体也是类;
C、控件是从窗体继承来的; D、窗体的父类是控件类;
3. 以下哪些可以作为接口成员? ( ABDE )
A、方法 B、属性 C、字段 D、事件 E、索引器
4. 您要创建ASP.NET应用程序用于运行AllWin公司内部的Web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标,您应该怎么做?( CD )
A、在应用程序的Global.asax文件中创建Application_Error过程去处理ASP.NET代码错误。
B、在应用程序的Web.config文件中创建applicationError节去处理ASP.NET代码错误。
C、在应用程序的Global.asax文件中创建CustomErrors事件去处理HTTP错误。
D、在应用程序的Web.config文件中创建CustomErrors节去处理HTTP错误。
E、在应用程序的每一页中添加一个Page指示符去处理ASP.NET 代码错误。
F.、在应用程序的每一页中添加一个Page指示符去处理ASP.NET HTTP错误。
5. 下列类是访问数据库时使用的是:( ABC )
A、SqlConnection B、SqlCommand C、SqlDataReader D、DataTable
四、填空题(10分,每空1分)
1.c#中的三元运算符是 ? : 。
2.面向对象的语言具有 封装 性、 继承 性、 多态 性。
3.当整数a赋值给一个object对象时,整数a将会被____装箱______。
4.委托声明的关键字是____delegate________。
5.在Asp.net中所有的自定义用户控件都必须继承自_____System.Web.UI.UserControl___________________。
6. 在.Net托管代码中我们不用担心内存漏洞,这是因为有了 GC 。
7. 用 sealed 修饰的类不能被继承。
8. float f=-123.567F; int i=(int)f; i的值现在是 -123 。
五、简答题(40分)
1.写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。) (5分)
select top 10 * from A where id not in (select top 30 id from A)
解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)
2.请详述在.NET中类(class)与结构(struct)的异同?(5分)
Class可以被实例化,属于引用类型,是分配在内存的堆上的。类是引用传递的。
Struct属于值类型,是分配在内存的栈上的。结构体是复制传递的。加分的回答:Int32、Boolean等都属于结构体。
Class可以被实例化
3. StringBuilder 和 String 的区别? (5分)
答:String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String
如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的
4.简述DataReader和DataSet的异同 (5分)
DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作...
5.值类型和引用类型的区别?写出C#的样例代码。(10分)
1.将一个值类型变量赋给另一个值类型变量时,将复制包含的值。引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
2.值类型不可能派生出新的类型:所有的值类型均隐式派生自 System.ValueType。但与引用类型相同的是,结构也可以实现接口。
3.值类型不可能包含 null 值:然而,可空类型功能允许将 null 赋给值类型。
4.每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。
6. 编写代码实现:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。(10分)
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
int num=rnd.Next(1,101);
if(!myList.Contains(num))
myList.Add(num);
}
for(int i=0;i<100;i++)
intArr[i]=(int)myList[i];
}