答题要求:打*号的部分为必答题,未指明为多选题的选择题均为单选题。
一、.Net Framework部分*
1.装箱、拆箱操作发生在: ( C  )
A.类与对象之间
B.对象与对象之间
C.引用类型与值类型之间
D.引用类型与引用类型之间
2.用户类若想支持Foreach语句需要实现的接口是: (  B  )
A.IEnumerable
B.IEnumerator
C.ICollection
D.ICollectData
3..Net Framework通过什么与COM组件进行交互操作?( C  )
A.Side By Side
B.Web Service
C.Interop
D.PInvoke
4..Net依靠以下哪一项技术解决COM存在的Dll Hell问题的?(  A  )
A.Side By Side
B.Interop
C.PInvoke
D.COM+
5.装箱与拆箱操作是否是互逆的操作?( A  )
A.是
B.否
6.以下哪个是可以变长的数组?(  D  )
A.Array
B.string[]
C.string[N]
D.ArrayList
7.用户自定义异常类需要从以下哪个类继承:( C  )
A.Exception
B.CustomException
C.ApplicationException
D.BaseException
8.以下代码段中能否编译通过?请给出理由。
try
{
}
catch(FileNotFoundException e1)
{
}
catch(Exception e2)
{
}
catch(IOException e3)
{
c 字符串数组怎么定义}
catch
{
}
不能编译通过,因为e3是e2的子类,所有属于e3异常会被e2捕获。
9.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相
关的应用程序定义的任务?(多选) (    BD  )
A.Close
B.Dispose
C.Finalize
D.using
E.Quit
10..Net依赖以下哪项技术实现跨语言互用性?(  C  )
A.CLR
B.CTS
C.CLS
D.CTT
11.请问: String类与StringBuilder类有什么区别?为什么在.Net类库中要同时存在这2个
类?(简答)
和JAVA中的StringBuffer类似,StringBuilder可以提高字符串连接时的性能。因为String是只读的,连接时内存中需要存在临时对象,而StringBuilder在内存中仅仅只有一份。
12.以下哪个类是int的基类?(  C  )
A.Int32
B.Object
C.ValueType
D.Int16
二、C# 部分*
13.以下哪些可以作为接口成员?(多选) ( ABDE)
A.方法
B.属性
C.字段
D.事件
E.索引器
F.构造函数
G.析构函数
14.以下关于ref和out的描述哪些项是正确的?(多选) ( ACD      )
A.使用ref参数,传递到ref参数的参数必须最先初始化。
B.使用out参数,传递到out参数的参数必须最先初始化。
C.使用ref参数,必须将参数作为ref参数显式传递到方法。
D.使用out参数,必须将参数作为out参数显式传递到方法。
15.“访问范围限定于此程序集或那些由它所属的类派生的类型”是对以下哪个成员可访问性
含义的正确描述?(  D )
A.public
B.protected
C.internal
D.protected internal
可访问性的关键字有如下5个:
internal:在所属程序集中可以访问。
private:私有成员, 在当前类中可以访问。
protected:保护成员,在当前类及其子类中可以访问。
public:公共成员,完全公开,没有访问限制。
internal protected:在所属程序集或当前类的子类中可以访问。(题目中未提及)
【扩展】
类的修饰符:abstract,sealed,static,unsafe 4个。
abstract:类是抽象的,不能创建类的实例
sealed:类是密封的,不能被继承
static:类是静态的,只有静态成员,没有非静态成员
unsafe:类有非安全的结构,比如指针
16. abstract class BaseClass
{
public virtual void MethodA()
{
}
public virtual void MethodB()
{
}
}
class Class1: BaseClass
{
public void MethodA(string arg)
{
}
public override void MethodB()
{
}
}
class Class2: Class1
{
new public void MethodB()
{
}
}
class MainClass
{
public static void Main(string[] args)
{
Class2 o = new Class2();
Console.WriteLine(o.MethodA());
}
}
请问,o.MethodA调用的是: ( )
A.BaseClass.MethodA
B.Class2.MethodA
C.Class1.MethodA
D.都不是
17.请叙述属性与索引器的区别。
属性索引器通过名称标识。通过签名标识。
通过简单名称或成员访问来访问。通过元素访问来访问。
可以为静态成员或实例成员。必须为实例成员。
属性的get访问器没有参数。索引器的get访问器具有与索引器相同的形参
表。
属性的set访问器包含隐式value 参数。除了value参数外,索引器的set访问器还具有与索引器相同的形参表。
18.请叙述const与readonly的区别。
const必须在声明时赋值,而readonly可以在构造函数中赋值;
const会被编译器优化,编译后const常量会消失,而readonly在运行时才确定值;
当版本升级,const变量修改后,调用const变量的所有应用程序需要重新编译,而readonly
不需要重新编译。
19.请叙述类与结构的区别。
1)语法不同(比如class默认是无参构造函数,但是可以显示声明;struct不能显示声明无参构造函数)。
2)struct对struct赋值是拷贝,而class是引用。
3)struct不能存在继承,class可以继承一个class
4)struct定义的属性不能直接在构造函数给赋值,但是class可以。
5)struct没有析构函数和重写什么的概念(因为不存在继承啊)。
20.
从值类型和引用类型的区别展开
、值类型通常被分配在栈上,它的变量直接包含变量的实例,使用效率比较高。
2、引用类型分配在托管堆上,引用类型的变量通常包含一个指向实例的指针,变量通过该
指针来引用实例。
3、值类型继承自V alueType(注意:而System.V alueType又继承自System.Object);而引用
类型继承自System.Object。
4、值类型变量包含其实例数据,每个变量保存了其本身的数据拷贝(副本),因此在默认
情况下,值类型的参数传递不会影响参数本身;而引用类型变量保存了其数据的引用地址,因此以引用方式进行参数传递时会影响到参数本身,因为两个变量会引用了内存中的同一
块地址。
5、值类型有两种表示:装箱与拆箱;引用类型只有装箱一种形式。我会在下节以专门的篇
幅来深入讨论这个话题。
6、典型的值类型为:struct,enum以及大量的内置值类型;而能称为类的都可以说是引用
类型。
7、值类型的内存不由GC(垃圾回收,Gabage Collection)控制,作用域结束时,值类型会
自行释放,减少了托管堆的压力,因此具有性能上的优势。例如,通常struct比class更高效;而引用类型的内存回收,由GC来完成,微软甚至建议用户最好不要自行释放内存。
8、值类型是密封的(sealed),因此值类型不能作为其他任何类型的基类,但是可以单继承
或者多继承接口;而引用类型一般都有继承性。
9、值类型不具有多态性;而引用类型有多态性。
10、值类型变量不可为null值,值类型都会自行初始化为0值;而引用类型变量默认情况
下,创建为null值,表示没有指向任何托管堆的引用地址。对值为null的引用类型的任何操作,都会抛出NullReferenceException异常。
11、值类型有两种状态:装箱和未装箱,运行库提供了所有值类型的已装箱形式;而引用
类型通常只有一种形式:装箱。
21.Override与重载有什么区别?
Override涉及到继承,而重载则是方法的名称相同,而签名不同
重写(override)指用override关键字重新实现基类中的虚方法,在运行过程中,无论通过哪个类型的引用,真正对象类型的方法将被调用。
重载(overload)指多个方法共享一个名字并且拥有相同的返回值,但是拥有不同的参数。
隐藏(new)指用new关键字重新实现基类中的方法,在运行的过程中通过引用的类型判断应该调用哪个类型的方法。
22.怎样理解静态变量?
类的静态变量只维护一份
C#中的委托是什么?
答:委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的调用可以像其他任何方法一样,具有参数和返回值。
委托是函数的封装,代表一"类"函数,它们都符合一定的签名:拥有相同的参数列表、返回值类型。同时,委托也可以看成是对函数的抽象,是函数的"类"。此时委托的实例代表一个具体的函数
三、ASP.NET & ADO.NET部分*
23. 您需要创建一个ASP.NET应用程序,公司考虑使用Windows身份认证。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。