---恢复内容开始---

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

1:

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

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

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

解析:BinaryFormatter

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

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

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

2:

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

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

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

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

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

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

注意:

1:如果一个类用Abstract修饰,那么该类就是抽象类;

2:抽象方法中可以有方法体,也可以有普通方法

3:抽象方法不能有方法体,甚至连{}都不能有,直接以分号结尾;

4:抽象类可以有构造

5:抽象类不能实例化

6:抽象类不能是密封类或者静态类的

为什么不能是静态类的:

静态类会静态存储区构建一个类的实例,而抽象类不能实例化,所以两者是相违背的

为什么不能是密封类的:

抽象类是让别人去继承 ,然后重写抽象方法

密封类不想让别人去继承,两者是相违背的

7:如果一个类继承自抽象类,必须重写抽象类的所有方法,除非子类本身也是抽象类

8:一键重写的快捷键是:Ctrl+.,或者是alt +shif +F10

9:抽象类中的抽象方法用来约束子类方法的格式的

10:抽象方法必须存在于抽象类中

4:

分析以下使用抽象类的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

5:

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

class Test

{

Public  void F()

{

Console.Write("A");

}

}

class B : Test

{

Public  new  void F()

{

Console.Write("B");

}

Public  void Say()

{

}

static void Main()

{

Test objA = new B();

objA.F();

}

}

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

以后我们碰到通过父类变量保存在对象的题目时,应该具备以下理解能力:

01.当new一个子类的时候,可以看成在子类对象中已经完全包含一个父类对象,所以我们可以在子类中通过this点出来父类的非私有成员。

02.父类变量只能调用到父类的方法,而不能调用子类的方法,即使该父类变量存储是子类。

程序员;编码能力   打字能力。

打字员:打字能力

a) A

b) B

c) BA

d) AB

6:

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

a) 将类实例化为对象

b) 将对象实例化为类

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

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

7:

下面关于泛型集合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){}

8:

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

a) new  创建对象时使用

b) this   代表当前类的实例

c) base  显示调用父类的构造方法和父类属性和常规方法

d) is

9:

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

public class A { }   Person

public class B : A { }  Student

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

10:

在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){ …}同一个方法

方法重载的特点:

1:方法名相同

2:方法参数的类型不同或者是参数的个数不同

3:在同一个类中

4:和返回值没有关系

11:

关于如下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   解析(不可以在父类方法中访问子类字段)

12:

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

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

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

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

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

13:

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

a) protected

b) internal

c) public

d) internal protected

14:

假设要使用C#设计一个日志系统,要求程序运行时,

检查 system.log 文件是否存在,如果已经存在则直接打开,

如果不存在则创建一个,为了实现这个目的,应该以FileMode的(C)方式创建文件流。

a) CreateNew

b) Open

c) OpenOrCreate

d) Create

15:

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

16:

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

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

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

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

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

注意:

区分:

list<T>                                                                      ArrayList

不同点:对于所保存的元素进行类型约束                                              可以增加任何的类型

添加/读取值类型元素无须拆箱和装箱                                     添加/读取值类型元素要拆箱和装箱

相同点:通过索引访问集合中的元素

添加的元素方法相同

删除的方法相同

Dictionary<K,V>                                                      Hashtable

不同点: 对于所保存的元素进行类型约束                                            可以增加任何的类型

添加/读取值类型元素无须拆箱和装箱                                     添加/读取值类型元素要拆箱和装箱

相同点:通过Key获取Value

添加的元素方法相同

删除的方法相同

遍历的方法相同

S2 深入.NET和C#编程 笔试测试错题积累的更多相关文章

  1. S2 深入.NET和C#编程 机试测试错题积累

    机试第一题:                              //创建文件流(路径 模式) FileStream fa = new FileStream(@"D:\\S2第一次全文 ...

  2. 20175316盛茂淞 《java程序设计》第三周课堂测试错题总结

    20175316盛茂淞 <java程序设计>第三周课堂测试错题总结 出现问题 错题总结 题目1 在Ubuntu中用自己的有位学号建一个文件,教材p87 Example4_15 1. 修改代 ...

  3. 笔试测试开发题三道(python)

    笔试遇到的三道测试开发题,虽然都不难,但关键还是思路吧!我想在开发东西的时候应该具备的就是思路,有了思路尝试去写,或查相关文档或代码,在此基础上需要不断调整最终达到需求.思路又是在不断练习中获得的. ...

  4. C++笔试易错题集(持续更新)

    1.如下代码输出结果是什么? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include<stdio.h> char *myString() {     ...

  5. Hibernate第三次测试错题解析

    此题目考查的是Hibernate查询缓存适用的场合,对于经常使用的查询语句, 如果启用了查询缓存,当第一次执行查询语句时,Hibernate会把查询结果存放在第二缓存中. 以后再次执行该查询语句时,只 ...

  6. UI测试 错题分析

    从服务器端获取的json对象,可以直接访问对象中的属性 该属性的作用就是C text属性显示节点文本,state属性默认为open 看错行  不能用 ' ' 包裹 state:节点状态,'open' ...

  7. struts2 测试错题解析

    解析:$.parseJSON()方法是将字符串转换成Json类型数据,$.getJSON()方法是获取JSON数据,两者不用联合使用. 解析: A:ActionContext接口没有getReques ...

  8. 20165223 week6测试错题总结

    由于时间预估错误及手机自身卡顿问题,虽然已经作答完成,却在最后提交时出现错误,错失提交时间,所以没能按时提交答案,也就没有纠错,以下仅凭印象列出错题: Q1:若超出JVM运行能力,如"byt ...

  9. Java 整体测试重点题 错题积累

    重点题    错题积累 1: 解析: %d:用来设置输出日志的日期和时间 %m:用来输出代码中指定的消息 %n:用来输出一个回车换行符 %l:用来输出日志事件的发生位置 %p:用来输出优先级 %f:用 ...

随机推荐

  1. Python全栈开发-Day3-Python基础3

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3.递归 4.函数式编程介绍 5.高阶函数 1.函数基本语法及特性 三种编程范式: 1.面向过程:过程——> def 2.面向对象:类— ...

  2. 第 4 章 容器 - 028 - 限制容器对CPU的使用

    限制容器对CPU的使用 默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制. Docker 可以通过 -c 或 --cpu-shares 设置容器使用 CPU 的权重.如果不指定, ...

  3. 高并发之限流RateLimiter(二)

    Guava RateLimiter提供了令牌桶算法实现:平滑突发限流(SmoothBursty)和平滑预热限流(SmoothWarmingUp)实现. SmoothBursty:令牌生成速度恒定 @T ...

  4. 决策论 | 信息论 | decision theory | information theory

    参考: 模式识别与机器学习(一):概率论.决策论.信息论 Decision Theory - Principles and Approaches 英文图书 What are the best begi ...

  5. 20180821ImportContactFromExcel

    Excel创建vcf文件,借助百度云助手导入Iphone6Plus Sub CreateContractList() Set Wb = Application.ThisWorkbook FilePat ...

  6. stark 组件 url 二级分发的实现

    模拟 admin 组件url设计思路 项目urls 文件中: from django.contrib import admin from django.urls import path from st ...

  7. windows系统文件和linux系统文件

    windows系统文件和linux系统文件 1.单用户操作系统和多用户操作系统 单用户操作系统:指一台计算机在同一时间 只能由一个用户 使用,一个用户独自享用系统的全部硬件和软件资源 Windows ...

  8. 『计算机视觉』各种Normalization层辨析

    『教程』Batch Normalization 层介绍 知乎:详解深度学习中的Normalization,BN/LN/WN 一.两个概念 独立同分布(independent and identical ...

  9. 函数式编程语言(Fuction Program Language)

    一.什么是函数式编程语言 函数式编程语言(functional progarm language)一类程序设计语言,是一种非冯·诺伊曼式的程序设计语言.函数式语言主要成分是原始函数.定义函数和函数型. ...

  10. 类似“未能加载文件或程序集“tesseractengine3”或它的某一个依赖项”等一些问题的解决方案

    有些时候我们引用了一些32位的dll,结果就会出现类似“未能加载文件或程序集“tesseractengine3”或它的某一个依赖项”这样的问题,原因是IIS的应用程序池的设置中默认是不启用32位的应用 ...