1、C# OOP 内部测试笔试题和答案深入.NET平台和C#编程内部测试题-笔试试卷一 选择题1) 以下关于序列化和反序列化的描述错误的是( )。 a) 序列化是将对象的状态存储到特定存储介质中的过程 b) 二进制格式化器的Serialize()和Deserialize()方法可以分别用来实现序列化和反序列化过程 c) 如果一个类可序列化,则它的子类和包含的各成员对象也一定可序列化 d) 标识一个类可以序列化要使用Serializable2) 在C#中,下列关于简单工厂设计模式的说法不正确的是( )。 a) 简单工厂产生的对象都是静态对象b) 创建产品的方法返回类型都是父类c) 使用该模式解决了代
2、码中大量使用new 的问题 d) 简单工厂的缺点是对修改不封闭,新增加产品就需要修改工厂3) 下列关于虚方法和抽象方法的描述中错误的是( )。 a) 虚方法必须有方法体,可以被子类重写 b) 抽象方法不允许有方法体,且必须被子类重写 c) 抽象方法必须在抽象类中,而虚方法可以在所有类中 d) 在子类中重写抽象方法或虚方法,都需要用override关键字4) 在UML类图中使用( )符号表示私有成员。 a) + b) - c) * d) #5) 分析以下使用抽象类的C代码,其最终的运行结果是( )。public abstract class Class1 public void F() Cons
3、ole.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) 236) 下列代码的运行结果是( )。class Test public void F() Console.Write(A); class B
4、 : Test new public void F() Console.Write(B); static void Main() Test objA = new B(); objA.F(); a) A b) B c) BA d) AB7) 关于C#中的虚方法,以下说法正确的是( )。 a) 使用static修饰 b) 可以没有方法体 c) 可以被子类重写 d) 使用abstract修饰8) 分析如下C#代码,如果输出结果是“Dog Eating.”,下划线需要填写的代码是( ) abstract class Animal public _ void Eat(); class Dog:Anima
5、l 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,override9) 在开发C#程序过程中,会大量地使用类和对象,其使用方法不包括( )。 a) 将类实例化为对象 b) 将对象实例化为类 c) 通过类访问非静态属性或方法 d) 通过对象访问非静态属性或方法10) 运行下面C#
6、代码将会出现编译错误,出现错误的位置是( )。 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) 411) 现有类“c1”,它所在的命名空间为“a.b”
7、,则下列说法中错误的是( )。 a) 不同命名空间下仍可存在名称为c1的类 b) 不同命名空间下使用c1时,可以通过“using a.b”引入命名空间 c) 同一命名空间下的类,使用c1时不需要引入c1的命名空间 d) 不同命名空间下使用c1时,不可以直接通过“a.b.c1”的方式使用12) 下面关于泛型集合Dictionary dict = new Dictionary()的操作代码正确的是( )。 a) dict.Remove(dict0) b) dict.RemoveAt(0) c) foreach(Person per in dict.Values) d) foreach(Person
8、 per in dict.Keys)13) 已知Company.xml文件节点代码如下: 一汽大众10万 日本丰田 20万 现有如下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; ca
9、se 价格: 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,则下面描述中错误的是( )
10、。 a) Cat可以访问Animal中的成员color b) Cat可以访问Tiger中的成员weight c) Tiger可以访问Animal中的成员color d) Tiger可以访问Cat中的成员height15) 在C#中,( )关键字用于子类的构造函数明确指明调用的父类的构造函数。 a) new b) this c) base d) is16) C#中的多态不能通过( )实现。 a) 方法重载 b) 抽象类 c) 虚方法 d) 密封类17) 分析如下C#代码片断,运行后输出的结果是( )。ArrayList list = new ArrayList();list.Add(Sina);
11、list.Add(Yahoo);list.Add(Google);list.RemoveAt(1);Console.WriteLine(list1); a) Yahoo b) Sina c) Google d) 代码出现运行错误18) 在C#语言中,以下关于集合的说法错误的是()。 a) ArrayList只能通过索引来访问和删除值 b) Hashtable可以直接通过键名来获取值 c) 使用List添加、读取元素时不需要拆箱和装箱,这一点和ArrayList相同 d) 使用Dictionary可以通过Key获取Value,这一点和Hashtable相同19) 分析如下C#程序,运行输出的结果
12、是( )。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 | 20020) 假设要使用C#设计一个
13、日志系统,要求程序运行时,检查 system.log 文件是否存在,如果已经存在则直接打开,如果不存在则创建一个,为了实现这个目的,应该以FileMode的( )方式创建文件流。 a) CreateNew b) Open c) OpenOrCreate d) Create21) 下面关于单例模式说法错误的是()。 a) 在单例模式中,允许通过new 构造实例 b) 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例 c) 在C# 中,static 是实现单例模式的重要关键字 d) 单例模式可以确保所有对象都访问唯一的实例22) 下面不是C#中类的访问修饰符的是()。 a)
14、protected b) internal c) public d) internal protected23) 在C#中,下面关于结构的说法中,正确的是()。 a) 结构和类都是引用类型b) 定义结构的变量必须用newc) 不能在定义结构时给结构的成员设置初始值d) 结构中的整型成员被自动初始化为124) 关于如下C#的代码,说法正确的是();public class A string S1; protected string S2; protected void M1() public class B : A protected string S3;a) 在A中可以访问S3b) 在B中可以
15、访问S1c) 在B中可以访问S2d) 在M1( ) 中可以访问S325) 关于如下C#代码的说法中,正确的是()。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) 在中可以使用静态成员Max26) 在C#中,下面是方法的重载的是()。 a) public string Test
16、(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#代码执行的结果是()。public class A public class B
17、: 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) nullb) Truec) Falsed) 出现异常28) 如下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.
18、i); a) 1b) 2c) 3d) 429)有如下C# 代码,则下面选项中说法正确的是()。public class A public class B : A A a = new A();B b = new B();a) 表达式a is B的值为trueb) 表达式b is A的值为truec) 表达式a as B的值为nulld) 表达式b as A的值为null30) 在C#中,下面类型中是引用类型的是()。a) DialogResult枚举b) System.Int64c) stringd) StringBuilder二 简答题:1请简述泛型集合List中“T”的含义和作用。并说明Li
19、st与ArrayList的异同。2面向对象的三大特性是什么?并简述每个原则的基本功能。深入.NET平台和C#编程内部测试题-笔试试卷答案答案一、选择题1、c 2、a 3、c 4、b 5、d6、a 7、c 8、b 9、bc 10、d11、d 12、c 13、d 14、d 15、c16、d 17、c 18、c 19、b 20、c21、a 22、d 23、c 24、c 25、d26、c 27、a 28、c 29、bc 30、cd二 简答题1、要点: List中的T可以对集合中的元素类型进行约束; T表明集合中管理的元素类型; ArrayList与List都使用索引访问元素; ArrayList与List可以通过索引删除、也可以直接删除对象; ArrayList与List遍历时直接遍历元素对象; ArrayList获取元素时需要类型转换,List不需要类型转换; 同一个ArrayList可以保存不同类型的元素,List只能保存T允许的类型。2、要点: 封装:保证对象自身数据的完整性、安全性; 继承:建立类之间的关系,实现代码复用,方便系统的扩展; 多态:相同的方法调用可实现不同的实现方式。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1