C# OOP 内部测试笔试题和答案.docx
《C# OOP 内部测试笔试题和答案.docx》由会员分享,可在线阅读,更多相关《C# OOP 内部测试笔试题和答案.docx(13页珍藏版)》请在冰豆网上搜索。
![C# OOP 内部测试笔试题和答案.docx](https://file1.bdocx.com/fileroot1/2023-1/2/e7a99c8b-8438-4df6-8586-dc1149265432/e7a99c8b-8438-4df6-8586-dc11492654321.gif)
C#OOP内部测试笔试题和答案
《深入.NET平台和C#编程》内部测试题-笔试试卷
一选择题
1)以下关于序列化和反序列化的描述错误的是()。
a)序列化是将对象的状态存储到特定存储介质中的过程
b)二进制格式化器的Serialize()和Deserialize()方法可以分别用来实现序列化和反序列
化过程
c)如果一个类可序列化,则它的子类和包含的各成员对象也一定可序列化
d)标识一个类可以序列化要使用[Serializable]
2)在C#中,下列关于简单工厂设计模式的说法不正确的是()。
a)简单工厂产生的对象都是静态对象
b)创建产品的方法返回类型都是父类
c)使用该模式解决了代码中大量使用new的问题
d)简单工厂的缺点是对修改不封闭,新增加产品就需要修改工厂
3)下列关于虚方法和抽象方法的描述中错误的是()。
a)虚方法必须有方法体,可以被子类重写
b)抽象方法不允许有方法体,且必须被子类重写
c)抽象方法必须在抽象类中,而虚方法可以在所有类中
d)在子类中重写抽象方法或虚方法,都需要用override关键字
4)在UML类图中使用()符号表示私有成员。
a)+
b)-
c)*
d)#
5)分析以下使用抽象类的C#代码,其最终的运行结果是()。
publicabstractclassClass1
{
publicvoidF()
{
Console.Write("1");
}
abstractpublicvoidABS();
}
publicclassClass2:
Class1
{
publicoverridevoidABS()
{
Console.Write("3");
}
publicClass2()
{
Console.Write("2");
}
staticvoidMain()
{
Class2objB=newClass2();
objB.ABS();
}
}
a)12
b)21
c)13
d)23
6)下列代码的运行结果是()。
classTest
{
publicvoidF()
{
Console.Write("A");
}
}
classB:
Test
{
newpublicvoidF()
{
Console.Write("B");
}
staticvoidMain()
{
TestobjA=newB();
objA.F();
}
}
a)A
b)B
c)BA
d)AB
7)关于C#中的虚方法,以下说法正确的是()。
a)使用static修饰
b)可以没有方法体
c)可以被子类重写
d)使用abstract修饰
8)分析如下C#代码,如果输出结果是“DogEating......”,下划线需要填写的代码是()
abstractclassAnimal
{
public__________voidEat();
}
classDog:
Animal
{
public__________voidEat()
{
Console.WriteLine("DogEating......");
}
staticvoidMain(string[]args)
{
Animalanimal=newDog();
animal.Eat();
}
}
a)abstract,不填
b)abstract,override
c)virtual,不填
d)virtual,override
9)在开发C#程序过程中,会大量地使用类和对象,其使用方法不包括()。
a)将类实例化为对象
b)将对象实例化为类
c)通过类访问非静态属性或方法
d)通过对象访问非静态属性或方法
10)运行下面C#代码将会出现编译错误,出现错误的位置是()。
classTeacher
{
publicTeacher(stringname)
{
this.Name=name;//1
}
privatestringname;
publicstringName
{
set{name=value;}//2
}
staticvoidMain(string[]args)
{
Teacherteacher=newTeacher("Jason");//3
Console.WriteLine(teacher.Name);//4
}
}
a)1
b)2
c)3
d)4
11)现有类“c1”,它所在的命名空间为“a.b”,则下列说法中错误的是()。
a)不同命名空间下仍可存在名称为c1的类
b)不同命名空间下使用c1时,可以通过“usinga.b”引入命名空间
c)同一命名空间下的类,使用c1时不需要引入c1的命名空间
d)不同命名空间下使用c1时,不可以直接通过“a.b.c1”的方式使用
12)下面关于泛型集合Dictionarydict=newDictionary()的操作代码正确的是()。
a)dict.Remove(dict[0])
b)dict.RemoveAt(0)
c)foreach(Personperindict.Values){}
d)foreach(Personperindict.Keys){}
13)已知Company.xml文件节点代码如下:
一汽大众<价格>10万价格>
日本丰田<价格>20万价格>
现有如下C#代码片段:
XmlDocumentmyXml=newXmlDocument();
myXml.Load("Company.xml");
XmlNodecompany=myXml.DocumentElement;
foreach(XmlNodenodeincompany.ChildNodes)
{
switch(node.Name)
{
case"一汽大众":
Console.WriteLine("车名:
{0}",node.InnerText);
break;
case"价格":
Console.WriteLine("价格为:
{0}",node.InnerText);
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#代码片断,运行后输出的结果是()。
ArrayListlist=newArrayList();
list.Add("Sina");
list.Add("Yahoo");
list.Add("Google");
list.RemoveAt
(1);
Console.WriteLine(list[1]);
a)Yahoo
b)Sina
c)Google
d)代码出现运行错误
18)在C#语言中,以下关于集合的说法错误的是()。
a)ArrayList只能通过索引来访问和删除值
b)Hashtable可以直接通过键名来获取值
c)使用List添加、读取元素时不需要拆箱和装箱,这一点和ArrayList相同
d)使用Dictionary可以通过Key获取Value,这一点和Hashtable相同
19)分析如下C#程序,运行输出的结果是()。
publicstructSize
{
publicintx;
publicinty;
publicSize(intx,inty)
{
this.x=x;
this.y=y;
}
}
classTest
{
staticvoidMain()
{
Sizesize1=newSize(8,10);
Sizesize2=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的()方式创建文件流。
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)internalprotected
23)在C#中,下面关于结构的说法中,正确的是()。
a)结构和类都是引用类型
b)定义结构的变量必须用new
c)不能在定义结构时给结构的成员设置初始值
d)结构中的整型成员被自动初始化为1
24)关于如下C#的代码,说法正确的是();
publicclassA
{
stringS1;
protectedstringS2;
protectedvoidM1()
{}
}
publicclassB:
A
{
protectedstringS3;
}
a)在A中可以访问S3
b)在B中可以访问S1
c)在B中可以访问S2
d)在M1()中可以访问S3
25)关于如下C#代码的说法中,正确的是()。
publicclassTest//⑴
{
privatestaticintMax=100;//⑵
publicTest(intmax)
{
Max=max;//⑶
}
publicintGetMax()
{
returnMax;//⑷
}
}
a)在⑴行中必须将Test类定义为静态类
b)在⑵中不能将静态成员Max定义为private的
c)在⑶中不能给静态成员Max赋值
d)在⑷中可以使用静态成员Max
26)在C#中,下面是方法的重载的是()。
a)publicstringTest(intx,inty){…}和publicstringTest(inta,intb){…}
b)publicstringTest1(intx,inty){…}和publicstringTest2(intx,inty){…}
c)publicstringTest(intx,inty){…}和publicstringTest(inta){…}
d)publicstringTest(intx,inty){…}和publicintTest(intx,inty){…}
27)下面C#代码执行的结果是()。
publicclassA{}
publicclassB:
A
{
staticvoidMain()
{
Aa=newA();
Bb=aasB;
if(b==null)
Console.WriteLine("null");
else
Console.WriteLine(bisA);
}
}
a)null
b)True
c)False
d)出现异常
28)如下C#代码的执行结果是()。
publicclassTest
{
publicinti=1;
publicTest(inti)
{
this.i+=i;
}
staticvoidMain()
{
Testt=newTest
(2);
Console.WriteLine(t.i);
}
}
a)1
b)2
c)3
d)4
29)有如下C#代码,则下面选项中说法正确的是()。
publicclassA{}
publicclassB:
A{}
Aa=newA();
Bb=newB();
a)表达式aisB的值为true
b)表达式bisA的值为true
c)表达式aasB的值为null
d)表达式basA的值为null
30)在C#中,下面类型中是引用类型的是()。
a)DialogResult枚举
b)System.Int64
c)string
d)StringBuilder
二简答题:
1.请简述泛型集合List中“T”的含义和作用。
并说明List与ArrayList的异同。
2.面向对象的三大特性是什么?
并简述每个原则的基本功能。
《深入.NET平台和C#编程》内部测试题-笔试试卷答案
答案
一、选择题
1、c2、a3、c4、b5、d
6、a7、c8、b9、bc10、d
11、d12、c13、d14、d15、c
16、d17、c18、c19、b20、c
21、a22、d23、c24、c25、d
26、c27、a28、c29、bc30、cd
二简答题
1、要点:
⏹List中的T可以对集合中的元素类型进行约束;
⏹T表明集合中管理的元素类型;
⏹ArrayList与List都使用索引访问元素;
⏹ArrayList与List可以通过索引删除、也可以直接删除对象;
⏹ArrayList与List遍历时直接遍历元素对象;
⏹ArrayList获取元素时需要类型转换,List不需要类型转换;
⏹同一个ArrayList可以保存不同类型的元素,List只能保存T允许的类型。
2、要点:
⏹封装:
保证对象自身数据的完整性、安全性;
⏹继承:
建立类之间的关系,实现代码复用,方便系统的扩展;
⏹多态:
相同的方法调用可实现不同的实现方式。