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


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

                                                                            《深入.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

                   添加的元素方法相同

                   删除的方法相同  

                   遍历的方法相同

                  

       

         

     

     

  • 相关阅读:
    1026. 程序运行时间(15)
    C语言字符串/数组去重
    1025. 反转链表 (25)
    1024. 科学计数法 (20)
    1023. 组个最小数 (20)
    1022. D进制的A+B (20)
    1021. 个位数统计 (15)
    1020. 月饼 (25)
    前端001/正则表达式
    SSM001/构建maven多模块项目
  • 原文地址:https://www.cnblogs.com/3020815dzq/p/8366254.html
Copyright © 2020-2023  润新知