选择题讲解

1) 以下关于序列化和反序列化的描述错误的是( C)。

a) 序列化是将对象的状态存储到特定存储介质中的过程

b) 二进制格式化器的Serialize()和Deserialize()方法可以分别用来实现序列化和反序列化过程

c) 如果一个类可序列化,则它的子类和包含的各成员对象也一定可序列化

d) 标识一个类可以序列化要使用[Serializable]

C:问题出在了子类,如果子类压根不能进行序列化操作,则会抛出异常

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

a) 简单工厂产生的对象都是静态对象

b) 创建产品的方法返回类型都是父类

c) 使用该模式解决了代码中大量使用new 的问题

d) 简单工厂的缺点是对修改不封闭,新增加产品就需要修改工厂

A:对象没有静态和动态之分

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

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

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

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

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

C:密封类和静态类中不能书写

4) 在UML类图中使用( B)符号表示私有成员。

a) +

b) -

c) *

d) #

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

public abstract class Class1

{

public void F()

{

Console.Write("1");

}

abstract public void ABS();

}

public class Class2 : Class1

{

public override void ABS()

{

Console.Write("3");

}

public Class2()

{

Console.Write("2");

}

static void Main()

{

Class2 objB = new Class2();

objB.ABS();

}

}

a) 12

b) 21

c) 13

d)

D:先调用构造,然后带用自身的ABS方法()

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

class Test

{

public void F()

{

Console.Write("A");

}

}

class B : Test

{

new public void F()

{

Console.Write("B");

}

static void Main()

{

Test objA = new B();

objA.F();

}

}

a) A

b) B

c) BA

d) AB

A: 有实现多态

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

a) 使用static修饰

b) 可以没有方法体

c) 可以被子类重写

d) 使用abstract修饰

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

abstract class Animal

{

public __________ void Eat();

}

class Dog:Animal

{

public __________ void Eat()

{

Console.WriteLine("Dog Eating......");

}

static void Main(string[] args)

{

Animal animal = new Dog();

animal.Eat();

}

}

a) abstract,不填

b) abstract,override

c) virtual,不填

d) virtual,override

B:因为是抽象类所以下面也是抽象方法,是调用子类的房方法

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

a) 将类实例化为对象

b) 将对象实例化为类

c) 通过类访问非静态属性或方法

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

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

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("Jason");       //3

Console.WriteLine(teacher.Name);             //4

}

}

a) 1

b) 2

c) 3

d) 4

D:只有set访问器,证明只能赋值,不能获取值

11) 现有类“c1”,它所在的命名空间为“a.b”,则下列说法中错误的是( D)。

a) 不同命名空间下仍可存在名称为c1的类

b) 不同命名空间下使用c1时,可以通过“using a.b”引入命名空间

c) 同一命名空间下的类,使用c1时不需要引入c1的命名空间

d) 不同命名空间下使用c1时,不可以直接通过“a.b.c1”的方式使用

12) 下面关于泛型集合Dictionary<String, Person> dict = new Dictionary<String,Person>()的操作代码正确的是( C)。

a) dict.Remove(dict[0])

b) dict.RemoveAt(0)

c) foreach(Person per in dict.Values){}

d) foreach(Person per in dict.Keys){}

A:dict[0]不对,dict只能通过key访问,不可通过下标访问。

B:没有RemoveAt方法

D:获取的是Values的值

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

<Company>

<Name>一汽大众</Name><价格>10万</价格>

<Name>日本丰田</Name> <价格>20万</价格>

</Company>

现有如下C#代码片段:

XmlDocument myXml = new XmlDocument();

myXml.Load("Company.xml");

XmlNode company = myXml.DocumentElement;

foreach(XmlNode node in company.ChildNodes )

{

switch (node.Name)

{

case "一汽大众":

Console.WriteLine("车名:{0}", node.InnerText);

break;

case "价格":

Console.WriteLine("价格为:{0}", node.InnerText);

break;

}

}

则正确的输出结果为(D)。

a) 车名:一汽大众

价格为:10万

b) 车名:一汽大众

价格为:20万

c) 车名:一汽大众

车名为:日本丰田

d) 价格为:10万

价格为:20万

D:case后写的不是标签名所以只有价格

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

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

a) Cat可以访问Animal中的成员color

b) Cat可以访问Tiger中的成员weight

c) Tiger可以访问Animal中的成员color

d) Tiger可以访问Cat中的成员height

15) 在C#中,( C)关键字用于子类的构造函数明确指明调用的父类的构造函数。

a) new

b) this

c) base

d) is

A:创建对象时使用

B:代表当前类的实例

C:显示调用父类的构造方法和父类属性和常规方法

D:类型转换

16) C#中的多态不能通过(D )实现。

a) 方法重载

b) 抽象类

c) 虚方法

d) 密封类

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

ArrayList list = new ArrayList();

list.Add("Sina");

list.Add("Yahoo");

list.Add("Google");

list.RemoveAt(1);

Console.WriteLine(list[1]);

a) Yahoo

b) Sina

c) Google

d) 代码出现运行错误

C:下标1的被删除所以Google被显示

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

a) ArrayList只能通过索引来访问和删除值

b) Hashtable可以直接通过键名来获取值

c) 使用List<T>添加、读取元素时不需要拆箱和装箱,这一点和ArrayList相同

d) 使用Dictionary<K,V>可以通过Key获取Value,这一点和Hashtable相同

A:可以直接删除某个对象

19) 分析如下C#程序,运行输出的结果是(B )。

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("{0} | {1}",size1.y,size2.y);

}

}

a) 200 | 200

b) 200 | 10

c) 10 | 10

d) 10 | 200

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

a) CreateNew

b) Open

c) OpenOrCreate

d) Create

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

a) 在单例模式中,允许通过new 构造实例

b) 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例

c) 在C# 中,static 是实现单例模式的重要关键字

d) 单例模式可以确保所有对象都访问唯一的实例

22) 下面不是C#中类的访问修饰符的是(AD)。

a) protected

b) internal

c) public

d) internal protected

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

a) 结构和类都是引用类型

b) 定义结构的变量必须用new

c) 不能在定义结构时给结构的成员设置初始值

d) 结构中的整型成员被自动初始化为1

A:结构类型是引用类型

B:定义结构的变量不用NEW

D:会被自动初始化为0

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

public class A

{

string S1;

protected string S2;

protected void M1()

{}

}

public class B : A

{

protected string S3;

}

a) 在A中可以访问S3

b) 在B中可以访问S1

c) 在B中可以访问S2

d) 在M1( ) 中可以访问S3

A:父类中不可以访问子类受保护成员

B:如果类中变量没哟访问修饰符修饰,默认访问修饰符是private

C:因为其访问修饰符是protected类型

D:不可以在父类方法中访问子类字段

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

public class Test    //⑴

{

private static int Max = 100;    //⑵

public Test(int max)

{

Max = max;    //⑶

}

public int GetMax(D)

{

return Max;    //⑷

}

}

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

b) 在⑵中不能将静态成员Max定义为private的

c) 在⑶中不能给静态成员Max赋值

d) 在⑷中可以使用静态成员Max

A:静态变量可以不出现在静态类中

26) 在C#中,下面是方法的重载的是(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){ …}

AD:都是一个方法

B:方法名不同

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

public class A { }

public class B : A

{

static void Main()

{

A a = new A();

B b = a as B;

if (b == null)

Console.WriteLine("null");

else

Console.WriteLine(b is A);

}

}

a) null

b) True

c) False

d) 出现异常

28) 如下C#代码的执行结果是(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) 1

b) 2

c) 3

d) 4

C:2+1=3

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

public class A { }

public class B : A { }

A a = new A();

B b = new B();

a) 表达式a is B的值为true

b) 表达式b is A的值为true

c) 表达式a as B的值为null

d) 表达式b as A的值为null

is是类型判断  as是类型转换

30) 在C#中,下面类型中是引用类型的是(CD)。

a) DialogResult枚举

b) System.Int64

c) string

d) StringBuilder

深入.NET平台C#编程 测试题分析的更多相关文章

  1. 学而不思则罔 - SAP云平台ABAP编程环境的由来和适用场景

    最近Jerry写了一系列关于SAP云平台ABAP编程环境的技术文章,这些文章都是围绕着在云上的ABAP编程环境的具体知识点来分享,比如要完成一个具体的开发需求,所需要的编程步骤.这些文章陆续收到一些读 ...

  2. 在SAP云平台ABAP编程环境上编写第一段ABAP程序

    距2017年秋季的SAP TechEd大会上一位大佬Björn Goerke,SAP's Chief Technology Officer宣布了SAP Cloud Platform即将支持ABAP至今 ...

  3. 百度在线笔试编程测试题(Python):整数分解成素数的积

    编程测试题: 输入一个正整数将其分解成素数的乘积,输入格式连续输入m个数,然后将这m个数分别分解,如 输入: 2 10 20 输出: 2 5 2 2 5 Python code: def primes ...

  4. Mybatis接口编程原理分析(三)

    前面两篇博客Mybatis接口编程原理分析(一)和Mybatis接口编程原理分析(二)我们介绍了MapperProxyFactory.MapperProxy和MapperMethod的操作及源码分析, ...

  5. Mybatis接口编程原理分析(二)

    在上一篇博客中 Mybatis接口编程原理分析(一)中我们介绍了MapperProxyFactory和MapperProxy,接下来我们要介绍的是MapperMethod MapperMethod:它 ...

  6. 撰写一篇博客要求讲述四则运算2的设计思想,源程序代码、运行结果截图、编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志。

    一.撰写一篇博客要求讲述四则运算2的设计思想,源程序代码.运行结果截图.编程总结分析,并按照PSP0级的要求记录开发过程中的时间记录日志. 1.设计思想: ①创建test.jsp建立第一个前端界面,提 ...

  7. hadoop编程:分析CSDN注冊邮箱分布情况

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jdh99/article/details/37565825 hadoop编程:分析CSDN注冊邮箱分 ...

  8. Android8.1 MTK平台 SystemUI源码分析之 网络信号栏显示刷新

    SystemUI系列文章 Android8.1 MTK平台 SystemUI源码分析之 Notification流程 Android8.1 MTK平台 SystemUI源码分析之 电池时钟刷新 And ...

  9. 转:基于 linux 平台的 libpcap 源代码分析

    libpcap 是 unix/linux 平台下的网络数据包捕获函数包,大多数网络监控软件都以它为基础.Libpcap 可以在绝大多数类 unix 平台下工作,本文分析了 libpcap 在 linu ...

随机推荐

  1. Linux用过的命令

    -上传sudo -u b2b rz--创建文件夹sudo -u b2b mkdir--copysudo -u b2b cp /b2b/apache-tomcat-7.0.64/matt/DqN017S ...

  2. 带你玩转JavaWeb开发之六-mysql基本语法详解及实例(4)

    按照分类的名称统计每个分类商品所花的总钱数[排序查询] SQL中对查询的列进行排序,使用关键字order by.默认情况下是升序的排序(从小到大的排序顺序关键字 asc).使用降序排序需要使用关键字d ...

  3. SQL性能优化

    引言: 以前在面试的过程中,总有面试官问道:你做过sql性能优化吗?对此,我的答复是没有.一次没有不是自己的错误,两次也不是,但如果是多次呢?今天痛下决心,把有关sql性能优化的相关知识总结一下,以便 ...

  4. Java 实现函数回调

    在Java里没用委托(delegate)这方法,所以想要实现回调还是有些麻烦.(想了解C#如何实现?请查看:http://www.cnblogs.com/Martin_Q/p/4478494.html ...

  5. 通过Maven将Web程序部署到远程Tomcat8服务器的一些注意事项

    1.环境变量检查(注意一定要做,否则会出现莫名其妙的错误):JAVA_HOMEM2_HOMECATALINA_HOME 2.开发环境检查,在Eclipse开发环境中最好做以下两方面的检查 2.1)Ma ...

  6. cocos2dx 3.x(获得父类的node型指针调用父类函数this->getParent())

    void CenterLayer::zhanzheng(CCObject* pSender){ ((GameScene*)this->getParent())->showLayer(Gam ...

  7. Discovering-论文

    Discovering Spatio-Temporal Causal Interactions in Traffic Data Streams data:real taxi trajectories ...

  8. html标签分两种:块状元素和内联元素

      块状元素一般是其它元素的容器,可以容纳内联元素和其它块状元素,独占一行,宽度和高度起作用.如div,p等标签属于块状元素.     内联元素只能容纳文本和其它内联元素,可与其它内联元素位于同一行, ...

  9. android studio ndk配置和ndk开发

    配置开发环境: 1:下载ndk,导入android studio中. 2:在项目中引入NDK   3:在计算机path变量中导入NDK路径,在编译.h文件的时候会用到. 一:建立java的native ...

  10. Hybrid技术的设计与实现(转)

    浅谈Hybrid技术的设计与实现 前言 随着移动浪潮的兴起,各种APP层出不穷,极速的业务扩展提升了团队对开发效率的要求,这个时候使用IOS&Andriod开发一个APP似乎成本有点过高了,而 ...