选择题

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

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

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

化过程

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

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

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

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

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

    对象没有静态和动态之分

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

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

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

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

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

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

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

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

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

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

a)      +  公共成员

b)      -

c)      *    ~:package

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();

}

}

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

a)      12

b)      21

c)      13

d)      23

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

class Test

{

Public  void F()

{

Console.Write("A");

}

}

class B : Test

{

Public  new  void F()

{

Console.Write("B");

}

static void Main()

{

Test objA = new B();

objA.F();

}

}

注意:这里不是多态,所以用父类变量保存子类对象,取的是父类的方法。哪怕父类方法使用Virtual关键字,子类没有Override就不会实现多态。

a)      A

b)      B

c)      BA

d)      AB

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

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

只有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])   //dict[0]不对,dict只能通过key访问,不可通过下标访问。

b)      dict.RemoveAt(0)  //没有RemoveAt方法

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

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

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万

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

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)      代码出现运行错误

List集合会自动调整(维护)索引。

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

a)      ArrayList只能通过索引来访问和删除值     也可以直接删除某个对象

b)      Hashtable可以直接通过键名来获取值 table[key]

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

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

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

在定义内部类的时候可以使用A和D作为类的访问修饰符

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

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

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

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

d)      结构中的整型成员被自动初始化为1    自动初始化为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  解析( 如果类中变量没哟访问修饰符修饰,默认访问修饰符是private)

c)      在B中可以访问S2   解析(可以:因为其访问修饰符是protected类型)

d)      在M1( ) 中可以访问S3   解析(不可以在父类方法中访问子类字段)

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

public class Test    //⑴

{

private static int Max = 100;    //⑵ 成员变量:

public Test(int max)

{

Max = max;    //⑶

}

public int GetMax()

{

return Max;    //⑷

}

}

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

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

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

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

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

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){ …}

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

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

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

a)      DialogResult枚举

b)      System.Int64

c)      string

d)      StringBuilder

二 简答题:

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

List<T>中的T可以对集合中的元素类型进行约束;

T表明集合中管理的元素类型;

ArrayList与List<T>都使用索引访问元素;

ArrayList与List<T>可以通过索引删除、也可以直接删除对象;

ArrayList与List<T>遍历时直接遍历元素对象;

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

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

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

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

继承:建立类之间的关系,实现代码复用,方便系统的扩展;

多态:相同的方法调用可实现不同的实现方式。

《深入.NET平台和C#编程》内部测试题的更多相关文章

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

    1)      以下关于序列化和反序列化的描述错误的是( C). a)      序列化是将对象的状态存储到特定存储介质中的过程 b)      二进制格式化器的Serialize()和Deseria ...

  2. S2---深入.NET平台和C#编程的完美总结

    1.NET简单解说 l 面向对象提升 OOP(Object Oriented  Programming)面向对象编程 AOP:(Aspache  Oriented Programming):面向切面编 ...

  3. 深入.net平台和c#编程 学习笔记

    深入.net平台和c#编程 一:理解.nteFramwork与c# 1.1,:Microsoft.net框架概述 1.2:.net框架结构 1.3.:c#语言概述 1.4:体验框架类库的强大功能 二: ...

  4. 使用ReactiveCocoa实现iOS平台响应式编程

    使用ReactiveCocoa实现iOS平台响应式编程 ReactiveCocoa和响应式编程 在说ReactiveCocoa之前,先要介绍一下FRP(Functional Reactive Prog ...

  5. [转]使用ReactiveCocoa实现iOS平台响应式编程

    原文:http://www.itiger.me/?p=38 使用ReactiveCocoa实现iOS平台响应式编程 ReactiveCocoa和响应式编程 在说ReactiveCocoa之前,先要介绍 ...

  6. JAVA语言基础内部测试题(50道选择题)

    JAVA语言基础内部测试题 选择题(针对以下题目,请选择最符合题目要求的答案,针对每一道题目,所有答案都选对,则该题得分,所选答案错误或不能选出所有答案,则该题不得分.)(每题2分) 没有注明选择几项 ...

  7. 我们可以用JAX-WS轻松实现JAVA平台与其他编程环境(.net等)的互操作

    在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP,在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码.JAX-WS的运行时实现会将这些API的调用转换 ...

  8. ROS Learning-029 (提高篇-007 A Mobile Base-05) 控制移动平台 --- (Python编程)控制虚拟机器人的移动(精确的制定目标位置)

    ROS 提高篇 之 A Mobile Base-05 - 控制移动平台 - (Python编程)控制虚拟机器人的移动(精确的制定目标位置) 使用 odometry 消息类型 重写 out_and_ba ...

  9. ROS Learning-028 (提高篇-006 A Mobile Base-04) 控制移动平台 --- (Python编程)控制虚拟机器人的移动(不精确的制定目标位置)

    ROS 提高篇 之 A Mobile Base-04 - 控制移动平台 - (Python编程)控制虚拟机器人的移动(不精确的制定目标位置) 我使用的虚拟机软件:VMware Workstation ...

随机推荐

  1. Android WebView 开发教程

    声明在先:必须在AndroidMainfest.xml 里面声明权限,否则在Java里面编写的所有WebView浏览网页的代码都无法正常使用 <uses-permission android:n ...

  2. 常用Math 方法

    /** * * @authors Your Name (you@example.org) * @date 2016-11-18 11:26:44 * @version $Id$ */ Math.pow ...

  3. jquerymobile仿微信 - 01

    jquerymobile仿微信 - 01 jquerymobile的组件感觉不咋地哇 本地调试最好是开一个web server,不然数据访问会有问题 <div data-role="p ...

  4. ng-表单验证

    表单验证<AngularJs>   常用的表单验证指令 1. 必填项验证 某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type ...

  5. Android入门(二十)HttpURLConnection与HttpClient

    原文链接:http://www.orlion.ga/679/ 在 Android上发送 HTTP请求的方式一般有两种,HttpURLConnection和 HttpClient. 一.HttpURLC ...

  6. PhoneGap介绍及简单部署

    一.什么是PhoneGap: PhoneGap是一个自由开放源码的开发工具和框架,允许利用HTML + JavaScript + CSS的强大功能在多个手机平台上开发程序,开发出来的程序经过在各自的平 ...

  7. 自制jQuery标签插件

    在项目中需要一个添加标签的小插件,查看了一些已有插件后,发现很现成的高级插件,也有比较简单的插件.最后还是决定自己来写,这样能控制代码,以后与其他插件结合使用的时候能更好的把控.初步在IE6 7 8, ...

  8. PetaPoco 访问SQL SERVER 存储过程

    博客园有篇文章<小巧方便的ORM类库——PetaPoco>  介绍了PetaPoco调用存储过程: //调用存储过程 db.Execute("exec procSomeHandl ...

  9. 轻松自动化---selenium-webdriver(python) (十一)

    本节重点: 控制滚动条到底部 有时候我们需要控制页面滚动条上的滚动条,但滚动条并非页面上的元素,这个时候就需要借助js是来进行操作.一般用到操作滚动条的会两个场景: 注册时的法律条文需要阅读,判断用户 ...

  10. .Net常见错误

    常见错误 #1: 把引用当做值来用,或者反过来 C++ 和其他很多语言的程序员,习惯了给变量赋值的时候,要么赋单纯的值,要么是现有对象的引用.然而,在C# 中,是值还是引用,是由写这个对象的程序员决定 ...