C#.NET编程小考30题错题纠错
1)以下关于序列化和反序列化的描述错误的是( C)。
a) 序列化是将对象的状态存储到特定存储介质中的过程
b) 二进制格式化器的Serialize()和Deserialize()方法可以分别用来实现序列化和反序列
化过程
解析:BinaryFormatter
c) 如果一个类可序列化,则它的子类和包含的各成员对象也一定可序列化
问题出在了子类,如果子类压根不能进行序列化操作,则会抛出异常
d) 标识一个类可以序列化要使用[Serializable]
2) 在C#中,下列关于简单工厂设计模式的说法不正确的是( A )。
a) 简单工厂产生的对象都是静态对象
对象没有静态和动态之分
b) 创建产品的方法返回类型都是父类
c) 使用该模式解决了代码中大量使用new 的问题
工厂模式:
单例模式
3个:
简单工厂
工厂模式
抽象工厂模式
Public class Factory
{
Public static Animal CreateProduct(string type)
{
Animal animal=null;
Return animal;
}
}
原则:开闭原则(对修改关闭,对添加开放)
d) 简单工厂的缺点是对修改不封闭,新增加产品就需要修改工厂
3) 下列关于虚方法(virtual)和抽象方法(abstract)的描述中错误的是( 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 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
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”的方式使用
D选项可以但是麻烦
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>日本丰田Toyota</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
Public在任何位置都可以访问,甚至是跨程序集都可以访问,
Internal只能在当前程序集中的任何位置访问,出了当前程序集,就无法访问。
在定义内部类的时候可以使用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 { } Person
public class B : A { } Student
A a = new A();
B b = new B();
a) 表达式a is B的值为true 应该为false,因为人不一定是学生
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 学习Java的时候,String特殊的引用类型
d) StringBuilder 引用类型
C#.NET编程小考30题错题纠错的更多相关文章
- S2 深入.NET和C#编程 机试测试错题积累
机试第一题: //创建文件流(路径 模式) FileStream fa = new FileStream(@"D:\\S2第一次全文 ...
- S2 深入.NET和C#编程 笔试测试错题积累
---恢复内容开始--- <深入.NET平台和C#编程>内部测试题-笔试试卷错题积累 1: 1) 以下关于序列化和反序列化的描述错误的是( C). a) 序列化是将对象的状态存储到特定存储 ...
- 20175316盛茂淞 《java程序设计》第三周课堂测试错题总结
20175316盛茂淞 <java程序设计>第三周课堂测试错题总结 出现问题 错题总结 题目1 在Ubuntu中用自己的有位学号建一个文件,教材p87 Example4_15 1. 修改代 ...
- 计算机二级C语言选择题错题知识点记录。
计算机二级C语言选择题错题知识点记录. 1,在数据流图中,用标有名字的箭头表示数据流.在程序流程图中,用标有名字的箭头表示控制流. 2,结构化程序设计的基本原则:自顶向下,逐步求精,模块化,限制使用g ...
- Ajax与JqueryUI和EasyUI错题总结
Ajax与JqueryUI和EasyUI错题总结 正确答案A,解析:此题考察的是JQuery UI下的menu插件的使用,menu提供ui-state-disabled class 方法禁用任何菜单项 ...
- 错题集锦(二) -- Java专项
错题集锦(二) -- Java专项 标签(空格分隔): 找工作 JVM的内存模型 线程共享: 堆(Heap):主要存放一些对象实例 方法区(Method Area / Non-Heap):用于存储已被 ...
- objective-c 错题
//1, NSString *name = [[NSString alloc]initWithString:@"张三"]; NSLog(@"%d",[name ...
- hibernate错题解析
01 Hibernate错题分析 解析: 此题目考查的是对Hibernate中交叉连接的理解.HQL支持SQL风格的交叉连接查询,交叉连接适用于两个类之间没有定义任何关联时.在where字句中,通 ...
- NOIp2014提高组初赛错题简析
总体分析 \(89pts\),粗略来看选择题错的比较多,\(-6pts\).同时又是尿性的填空杀扣了\(5pts\). 不过后面的两大题全对了还是可喜可贺 错题精析 单项选择T8 编译器的主要功能是( ...
随机推荐
- Linux基础二:文件系统
二.文件系统: Linux系统一切皆文件!整个文件系统是一棵颠倒过来的树形结构,根目录/在顶部,且从根目录到下面的任一文件有且仅有一条路径. 1.重要目录: /usr -> 存放普通用户命令(/ ...
- Django 小实例S1 简易学生选课管理系统 1 项目流程梳理与数据库设计
Django 小实例S1 简易学生选课管理系统 第1章--项目流程梳理与数据库设计 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 1 项目流程梳理 ...
- 让textarea根据文本的长度自动调整它的高度
... <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR ...
- 算法学习->整数拆分问题
动态规划典型题目/ 00 题目 将正整数n无需拆分为最大数为k的拆分方案有多少种?要求所有的拆分方案不重复. 示例: 输入:n=5,k=5 输出:(5,5)=7 示例分析: 5=5 5=4+1 5= ...
- CTF入门学习4->前端HTML基础
Web安全基础 02 前端开发-HTML基础 浏览器对于上网者来说是一种直观.可视化的呈现.服务器发送数据到客户端,客户端需要处理这些数据,互联网就造就了这种数据语言--HTML. 02-00 概述 ...
- .NET Core 3.0 JsonSerializer.Deserialize 返回dynamic类型对象
.NET Core 3.0 JsonSerializer.Deserialize to dynamic object 因为官方还不支持返回动态类型的对象,只能自己手写一个,临时测试了下没问题,还有些地 ...
- 《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
1.简介 在使用appium写app自动化的时候介绍toast的相关元素的定位,在Web UI测试过程中,也经常遇到一些toast,那么这个toast我们这边如何进行测试呢?今天宏哥就分两篇介绍一下. ...
- 统计学习2:线性可分支持向量机(Scipy实现)
1. 模型 1.1 超平面 我们称下面形式的集合为超平面 \[\begin{aligned} \{ \bm{x} | \bm{a}^{T} \bm{x} - b = 0 \} \end{aligned ...
- 多线程Reactor模式
目录 1.1 主服务器 2.1 IO请求handler+线程池 3.1 客户端 多线程Reactor模式旨在分配多个reactor每一个reactor独立拥有一个selector,在网络通信中大体设计 ...
- 从一个简单的Delete删数据场景谈TiDB数据库开发规范的重要性
故事背景 前段时间上线了一个从Oracle迁移到TiDB的项目,某一天应用端反馈有一个诡异的现象,就是有张小表做全表delete的时候执行比较慢,而且有越来越慢的迹象.这个表每次删除的数据不超过20行 ...