C# OOP 内部测试笔试题和答案

更新时间:2024-06-07 15:47:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《深入.NET平台和C#编程》内部测试题-笔试试卷

一 选择题

1) 以下关于序列化和反序列化的描述错误的是( )。 a) 序列化是将对象的状态存储到特定存储介质中的过程 b) 二进制格式化器的Serialize()和Deserialize()方法可以分别用来实现序列化和反序列

化过程

c) 如果一个类可序列化,则它的子类和包含的各成员对象也一定可序列化 d) 标识一个类可以序列化要使用[Serializable]

2) 在C#中,下列关于简单工厂设计模式的说法不正确的是( )。

a) 简单工厂产生的对象都是静态对象 b) 创建产品的方法返回类型都是父类

c) 使用该模式解决了代码中大量使用new 的问题 d) 简单工厂的缺点是对修改不封闭,新增加产品就需要修改工厂

3) 下列关于虚方法和抽象方法的描述中错误的是( )。 4)

a) b) c) d)

虚方法必须有方法体,可以被子类重写

抽象方法不允许有方法体,且必须被子类重写

抽象方法必须在抽象类中,而虚方法可以在所有类中

在子类中重写抽象方法或虚方法,都需要用override关键字

在UML类图中使用( )符号表示私有成员。 a) b) c) d)

+ - * #

5) 分析以下使用抽象类的C#代码,其最终的运行结果是( )。

public abstract class Class1 {

public void F() {

Console.Write(\ }

abstract public void ABS(); }

public class Class2 : Class1 {

public override void ABS()

6) 下列代码的运行结果是( )。

class Test {

public void F() {

Console.Write(\ } }

class B : Test {

new public void F() {

Console.Write(\ }

static void Main() {

Test objA = new B(); objA.F(); } } a) A b) B c) BA d) AB

7) 关于C#中的虚方法,以下说法正确的是( )。

{

Console.Write(\ }

public Class2() {

Console.Write(\ }

static void Main() {

Class2 objB = new Class2(); objB.ABS(); } }

a) 12 b) 21 c) 13 d) 23

a) 使用static修饰 b) 可以没有方法体 c) 可以被子类重写 d) 使用abstract修饰

8) 分析如下C#代码,如果输出结果是“Dog Eating......”,下划线需要填写的代码是( ) abstract class Animal {

public __________ void Eat(); }

class Dog:Animal {

public __________ void Eat() {

Console.WriteLine(\ }

static void Main(string[] args) {

Animal animal = new Dog(); animal.Eat(); } } a) abstract,不填 b) abstract,override c) virtual,不填 d) virtual,override

9) 在开发C#程序过程中,会大量地使用类和对象,其使用方法不包括( )。

a) b) c) d)

将类实例化为对象 将对象实例化为类

通过类访问非静态属性或方法 通过对象访问非静态属性或方法

10) 运行下面C#代码将会出现编译错误,出现错误的位置是( )。

class Teacher {

public Teacher(string name) {

this.Name = name; //1 }

private string name; public string Name

{

set { name = value; } //2 }

static void Main(string[] args) {

Teacher teacher = new Teacher(\ //3 Console.WriteLine(teacher.Name); //4 }

} a) 1 b) 2 c) 3 d) 4

11) 现有类“c1”,它所在的命名空间为“a.b”,则下列说法中错误的是( )。 a) 不同命名空间下仍可存在名称为c1的类 b) 不同命名空间下使用c1时,可以通过“using a.b”引入命名空间 c) 同一命名空间下的类,使用c1时不需要引入c1的命名空间 d) 不同命名空间下使用c1时,不可以直接通过“a.b.c1”的方式使用

12) 下面关于泛型集合Dictionary dict = new Dictionary()的操作代码正确的是( )。 a) dict.Remove(dict[0]) b) dict.RemoveAt(0) c) foreach(Person per in dict.Values){} d) foreach(Person per in dict.Keys){}

13) 已知Company.xml文件节点代码如下:

一汽大众<价格>10万 日本丰田 <价格>20万

现有如下C#代码片段:

XmlDocument myXml = new XmlDocument(); myXml.Load(\

XmlNode company = myXml.DocumentElement; foreach(XmlNode node in company.ChildNodes ) {

switch (node.Name)

{

case \一汽大众\

Console.WriteLine(\车名:{0}\ break;

case \价格\

Console.WriteLine(\价格为:{0}\ break; } }

则正确的输出结果为()。 a) 车名:一汽大众

价格为:10万 b) 车名:一汽大众

价格为:20万 c) 车名:一汽大众

车名为:日本丰田 d) 价格为:10万

价格为:20万

14) 已知Animal、Cat、Tiger三个类,其继承关系为Cat: Animal,Tiger: Animal,

已知Animal中成员color的访问修饰符为protected,Cat中成员height的访问修饰符为private,Tiger中成员weight的访问修饰符为public,则下面描述中错误的是( )。 a) Cat可以访问Animal中的成员color b) Cat可以访问Tiger中的成员weight c) Tiger可以访问Animal中的成员color d) Tiger可以访问Cat中的成员height

15) 在C#中,( )关键字用于子类的构造函数明确指明调用的父类的构造函数。 a) new b) this c) base d) is

16) C#中的多态不能通过( )实现。 a) 方法重载 b) 抽象类 c) 虚方法 d) 密封类

17) 分析如下C#代码片断,运行后输出的结果是( )。

ArrayList list = new ArrayList();

list.Add(\list.Add(\list.Add(\list.RemoveAt(1);

Console.WriteLine(list[1]);

a) Yahoo b) Sina c) Google

d) 代码出现运行错误

18) 在C#语言中,以下关于集合的说法错误的是()。 19)

a) b) c) d)

ArrayList只能通过索引来访问和删除值 Hashtable可以直接通过键名来获取值

使用List添加、读取元素时不需要拆箱和装箱,这一点和ArrayList相同 使用Dictionary可以通过Key获取Value,这一点和Hashtable相同

分析如下C#程序,运行输出的结果是( )。 public struct Size {

public int x; public int y;

public Size(int x, int y) {

this.x = x; this.y = y; } }

class Test {

static void Main() {

Size size1 = new Size(8,10); Size size2 = size1; size1.y = 200;

Console.WriteLine(\ } } a) 200 | 200 b) 200 | 10 c) 10 | 10

d) 10 | 200

20) 假设要使用C#设计一个日志系统,要求程序运行时,检查 system.log 文件是否存在,如果已经存在则直接打开,如果不存在则创建一个,为了实现这个目的,应该以FileMode的( )方式创建文件流。 a) CreateNew b) Open c) OpenOrCreate d) Create

21) 下面关于单例模式说法错误的是()。

a) 在单例模式中,允许通过new 构造实例 b) 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例 c) 在C# 中,static 是实现单例模式的重要关键字 d) 单例模式可以确保所有对象都访问唯一的实例

22) 下面不是C#中类的访问修饰符的是()。 a) protected b) internal c) public d) internal protected

23) 在C#中,下面关于结构的说法中,正确的是()。

a) b) c) d)

24) 关于如下C#的代码,说法正确的是();

public class A {

string S1;

protected string S2; protected void M1() {} }

public class B : A {

protected string S3; }

结构和类都是引用类型 定义结构的变量必须用new

不能在定义结构时给结构的成员设置初始值 结构中的整型成员被自动初始化为1

a) b) c) d)

在A中可以访问S3 在B中可以访问S1 在B中可以访问S2 在M1( ) 中可以访问S3

25) 关于如下C#代码的说法中,正确的是()。

public class Test //⑴ {

private static int Max = 100; //⑵ public Test(int max) {

Max = max; //⑶ }

public int GetMax() {

return Max; //⑷ } }

a) b) c) d)

26) 在C#中,下面是方法的重载的是()。

a) public string Test(int x, int y){ ?}和public string Test(int a, int b){ ?} b) public string Test1(int x, int y){ ?}和public string Test2(int x, int y){ ?} c) public string Test(int x, int y){ ?}和public string Test(int a){ ?} d) public string Test(int x, int y){ ?}和public int Test(int x, int y){ ?}

27) 下面C#代码执行的结果是()。

public class A { } public class B : A {

static void Main() {

A a = new A(); B b = a as B; if (b == null)

Console.WriteLine(\

在⑴行中必须将Test类定义为静态类

在⑵中不能将静态成员Max定义为private的 在⑶中不能给静态成员Max赋值 在⑷中可以使用静态成员Max

else

Console.WriteLine(b is A); } }

a) null b) True c) False d) 出现异常

28) 如下C#代码的执行结果是()。

public class Test {

public int i = 1; public Test(int i) {

this.i += i; }

static void Main() {

Test t = new Test(2); Console.WriteLine(t.i); } }

a) b) c) d)

29)有如下C# 代码,则下面选项中说法正确的是()。

public class A { } public class B : A { } A a = new A(); B b = new B();

a) b) c) d)

表达式a is B的值为true 表达式b is A的值为true 表达式a as B的值为null 表达式b as A的值为null 1 2 3 4

30) a) b) c) d) 在C#中,下面类型中是引用类型的是()。 DialogResult枚举 System.Int64 string

StringBuilder

二 简答题:

1.请简述泛型集合List中“T”的含义和作用。并说明List与ArrayList的异同。

2.面向对象的三大特性是什么?并简述每个原则的基本功能。

《深入.NET平台和C#编程》内部测试题-笔试试卷答案

答案

一、选择题 1、c 6、a 11、d 16、d 21、a 26、c

2、a 7、c 12、c 17、c 22、d 27、a 3、c 8、b 13、d 18、c 23、c 28、c 4、b 9、bc 14、d 19、b 24、c 29、bc 5、d 10、d 15、c 20、c 25、d 30、cd

二 简答题 1、要点:

? List中的T可以对集合中的元素类型进行约束; ? T表明集合中管理的元素类型;

? ArrayList与List都使用索引访问元素;

? ArrayList与List可以通过索引删除、也可以直接删除对象; ? ArrayList与List遍历时直接遍历元素对象;

? ArrayList获取元素时需要类型转换,List不需要类型转换;

? 同一个ArrayList可以保存不同类型的元素,List只能保存T允许的类型。

2、要点:

? 封装:保证对象自身数据的完整性、安全性;

? 继承:建立类之间的关系,实现代码复用,方便系统的扩展; ? 多态:相同的方法调用可实现不同的实现方式。

《深入.NET平台和C#编程》内部测试题-笔试试卷答案

答案

一、选择题 1、c 6、a 11、d 16、d 21、a 26、c

2、a 7、c 12、c 17、c 22、d 27、a 3、c 8、b 13、d 18、c 23、c 28、c 4、b 9、bc 14、d 19、b 24、c 29、bc 5、d 10、d 15、c 20、c 25、d 30、cd

二 简答题 1、要点:

? List中的T可以对集合中的元素类型进行约束; ? T表明集合中管理的元素类型;

? ArrayList与List都使用索引访问元素;

? ArrayList与List可以通过索引删除、也可以直接删除对象; ? ArrayList与List遍历时直接遍历元素对象;

? ArrayList获取元素时需要类型转换,List不需要类型转换;

? 同一个ArrayList可以保存不同类型的元素,List只能保存T允许的类型。

2、要点:

? 封装:保证对象自身数据的完整性、安全性;

? 继承:建立类之间的关系,实现代码复用,方便系统的扩展; ? 多态:相同的方法调用可实现不同的实现方式。

本文来源:https://www.bwwdw.com/article/odv6.html

Top