• 北航软院2014级C#期末考试部分考题解答


    博主注:本渣渣水平有限,文中若有不对的地方敬请指出,谢谢。

    本文中大部分图片来自老师的PPT,感谢邵老师,想要的可以点击右边QQ联系我:)

     

    一、选择

    6.Which of the following is wrong?

    ①Abstract class could contain non abstract method//抽象类可能没有抽象方法

    ②A class containing abstract method must be a abstract class.//含有抽象方法的类一定是抽象类

    ③An abstract class cannot be instantiated.//不能实例化

    ④An abstract class can be sealed class.

    解答:基础知识


    7. Which of the following is right use of generic?

    ①List<int> f = new List<int>()

    ②List<int> f = new List()

    ③List f = new List()

    ④List<int> f = new List<int>

    解答:通用类的使用方法


    8.Which of the statements is correct to declare a two-dimensional array in C#?

    ①int[][] a

    ②int a[][]

    ③int[2]a

    ④int a[2]

    解答:创建数组

                //一维
                int[] a = new int[3];
                int[] b = new int[] { 3, 4, 5 };
                int[] c = { 3, 4, 5 };
    
                //非矩阵二维数组
                //int wrong1[1][2];//错误
                
                int[][] aa = new int[2][];// array of references to other arrays
                aa[0] = new int[] { 1, 2, 3 };// cannot be initialized directly
                aa[1] = new int[] { 4, 5, 6 };
    
                //矩阵二维数组
                int[,] aaa = new int[2, 3];// block matrix
                int[,] bbb = { { 1, 2, 3 }, { 4, 5, 6 } };// can be initialized directly
                int[,,] ccc = new int[2, 4, 2];
    View Code

    9.A property’s ______ accessor enable a client to modify the value of the instance variable associated with the property.

    ①base             ②this               ③get                ④set


    10. Only the methods that are declared as ______ can be overridden in subclass.

    ①abstract                 ②virtual          ③new              ④override


    15. In .NET Framework class library, all multithread application related classes are in which following namespace?

    ①System.SysThread             

    ②System.Thread   

    ③System.Threading

    ④NetException


    17. In C# variables confined by which of the following modifies can only be accessed by the current assembly?

    ①public            ②protected            ③internal                ④private

    解答:


    17.Which of the following is the right output?

    using System;
    class A
    {
        struct Student
        {
            public int age;
            public string name;
            public Student(int age,string name)
            {
                this.age = age;
                this.name = name;
            }
        };
    
        static void Main(string[] args)
        {
            Student stu1 = new Student(18, " Tom");
            Student stu2 = new Student(24, " Jerry");
            stu2 = stu1;
            stu1.age = 30;
            stu1.name = "Jerry";
            Console.Write(stu2.age);
            Console.Write(stu2.name);
    
            Console.ReadKey();
        }
    }
    View Code

    ①18 Tom                 ②18 Jerry                ③30 Jerry                ④30 Tom

    解答:结构体实值类型,赋值之后就把<18,Tom>给了stu2,不管你stu1怎么变,与stu2无关。


    18. Which of the following results is the right output?

    ArrayList arr = new ArrayList();
    int[] num = { 1, 3, 5 };
    for (int i = 0; i < num.Length; i++)
    {
      arr.Add(num[i]);
    }
    arr.Insert(1, 4);
    Console.WriteLine(arr[2]);

                       ①1          ②3          ③4          ④5

    解答:了解insert函数的定义就知道啦。


    19.Which of the following description is true about the keyword “ref”?

    ①”ref” only passes values from caller(调用者)to callee(被调者)

    ②”ref” only passes values from the callee to caller

    ③”ref” must be initialized before its method is called.//方法被调用之前,必须初始化

    ④None of above 

    解答:VS爸爸最厉害~


    20.Which of the following description about constants is true?

    ①Declare the constants with the keyword “static”

    ②The constants must be initialized when declaring.

    ③Constants can be assigned repeatedly.

    ④Constants can be declared first and assigned later.

    解答:常量的基本知识


    二、判断

    1.Only one method can be called using a delegate.

    解答:F


     2.If no constructor was declared in a class, the compiler generates default constructor which has no parameter.

    解答:T)可能类不是亲生的吧。(PPT115页)


    3.All methods in an abstract class must be declared as abstract methods.

    解答:(F)没这个道理!道理在下面(PPT146页):


    4.If a base class declares an abstract method, a derived class must implement that method.

    解答:(F)派生类确实要实现所有抽象方法,但是派生类也可以继续是抽象的呀!,这样就不用管实不实现了。


    5.Sizeof can be applied to reference types.

    解答:F


    6.One file could have multiple namespaces.

    解答:T)PPT197页


    7.Nested types can be interfaces and delegates.

    解答:T)PPT131页


    8.If a method is marked as Protected, it will be able to access in the derived class.

    解答:(T)


    9.Sizeof can be applied to reference types.(重复了啊啊啊)

    10.If a base declares an abstract method, a derived class should implement that method.(握草一个should一个must,搞什么鬼!)


    三、填空

    1.In C#, the type System.Int32 map to keyword  _____int______

    解答:这个还真没仔细看过,万一考个偏的怎么办。


    2.In C#, if you want to change a thread’s state from suspended into running, what method you should call?  Resume


    3.The following class is often called  _____Generic______

           class Buffer<Element> {
                  private Element[] data;
                  public Buffer( int size ) {…}
                 public void Put(Element x) {…}
                    public Element Get() {…}
             }

    
    

    4.Every interface member must be __implemented___ or ___inherited____ from a base class.

    解答:接口的成员要么自己定义要么继承自父类。

    接口不能包含常量、字段、操作符、构造函数、析构函数、任何静态成员、方法的实现


    5.??????

    6.Write the output.

    static void Main()
    {
        String[] cities = {"London","Vienna","Paris","Linz", "Brussels"};
        //using Linq to Objects
        IEnumerable<string> result = from c in cities
                         where c.StartsWith("L")
                         orderby c
        select c.ToUpper();
    
        foreach (string s in result)
            Console.WriteLine(s);
        Console.ReadKey();
    }

    解答:原题目好像并不能输出什么啊,改了一下题目,他的意思应该是是要输出result内容。结果如下:

    LINZ

    LONDON


    7. Fill in the blank

    using System;
    
    class Program
    {
        static void Main()
        {
            Myclass m = new Myclass();
            int[] s = new int[5] { 1, 2, 3, 4, 5 };
            int smax, smin;
            m.MaxMin(s, out smax, out smin);
    
            Console.WriteLine("{0} {1}", smax, smin);
            Console.ReadKey();
        }
    }
    class Myclass
    {
        public void MaxMin(int[] a, out int max, out int min)
        {
            max = min = a[0];
            for (int i = 1; i < a.Length; i++)
            {
                if (a[i] > max) max = a[i];
                if (a[i] < min) min = a[i];
            }
        }
    }

    解答:out的用法(默默在MaxMin前面加了一个public)。


    8.Write the output.

    delegate void Notifier (string sender);
    
    void SayHello(string sender) 
    {
        Console.WriteLine("Hello from " + sender);
    }
    void SayGoodBye(string sender) 
    {
         Console.WriteLine("Goodbye from " + sender);
    }
    
        Notifier greetings;
        greetings = SayHello;
        greetings += SayGoodBye;
        greetings("John");  
        greetings -= SayHello;
        greetings("John");

    解答:代理的基本用法。输出结果:

    Hello from John

    Goodbye from John

    Goodbye from John


    9.Write the result of array A.

    static void Main()
    {
        int[] A = new int[5] { 1, 2, 3, 4, 5 };
        Object[] B = new Object[5] { 6, 7, 8, 9, 10 };
    
        Array.Copy(A, B, 2);
    
        foreach (int x in A)
            Console.WriteLine(x);
      foreach (int x in B)
            Console.WriteLine(x);

      Console.ReadKey();
    }

    解答:考察Copy的用法。这里面A没有变哦,反倒是B变成了{1,2,8,9,10}

    输出结果(数组A内容):


    10.Please fill in the blanks.

    namespace test
    {
        public delegate void OnDBOperate();
        public class UserControlBase : System.Windows.Forms.UserControl
        {
            public event OnDBOperate OnNew;
            private void toolbar_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
            {
                if (e.Button.Equals(BtnNew))
                {
                    //Please write code to call OnNew events
                    if (OnNew != null)
                        OnNew();
                }
            }
        }
    }

    四、简答

    1.What is the difference between virtual method and the abstract method?

    解答:抽象方法是只有定义、没有实际方法体的函数,它只能在抽象类中出现,并且在子类中必须重写;抽象方法是一种强制派生类覆盖的方法,必须被派生类覆写的方法,否则派生类将不能被实例化。抽象方法是可以看成是没有实现体的虚方法,如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其它一般方法。

    虚方法则有自己的函数体,已经提供了函数实现,而且允许在子类中重写或覆盖。虚方法可以不在派生类中重写。


    2.C# uses different modifiers to confine the data security. There are 5 different modifiers. Please list out each of them and explain their security level.

    解答:简单叙述了一下。

    public 公有访问。不受任何限制。
    private 私有访问。只限于本类成员访问,子类,实例都不能访问。
    protected 保护访问。只限于本类和子类访问,实例不能访问。
    internal 内部访问。只限于本项目内访问,其他不能访问。
    protected internal 内部保护访问。只限于本项目或是子类访问,其他不能访问。


     3.What are the difference between the value type and the reference type.

    Value Type

    Reference Type

    解答:去年原题,看他这意思是要写三个对比QAQ。

    值类型直接存储其值,值类型部署在栈上,初始化为0,false,''等。

    而引用类型存储对其值的引用,引用类型部署在托管堆上,初始化为null。

    具体详解:http://blog.csdn.net/qiaoquan3/article/details/51202926

     


    4. Write down the differences between Overloading and Overriding?

    解答:陈年老题了。


    5.Please give a brief description about the difference and connection between the class and interface.

    Class

    Interface

    解答:前年原题qwq

    对了,看到一篇讲了C#各种对比的帖子,分享给你们,可以参考:http://www.jb51.net/article/37971.htm

    最后,大家加油呀,祝下午考试顺利~

    作者: AlvinZH

    出处: http://www.cnblogs.com/AlvinZH/

    本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    CSS3—— 2D转换 3D转换 过渡 动画
    CSS3——边框 圆角 背景 渐变 文本效果
    CSS3——表单 计数器 网页布局 应用实例
    CSS3——提示工具 图片廓 图像透明 图像拼接技术 媒体类型 属性选择器
    CSS3——对齐 组合选择符 伪类 伪元素 导航栏 下拉菜单
    CSS3——分组和嵌套 尺寸 display显示 position定位 overflow float浮动
    CSS3——盒子模型 border(边框) 轮廓(outline)属性 margin外边距 padding填充
    Eclipse连接数据库报错Local variable passwd defined in an enclosing scope must be final or effectively final
    数据库——单表查询
    数据库——添加,修改,删除
  • 原文地址:https://www.cnblogs.com/AlvinZH/p/6839034.html
Copyright © 2020-2023  润新知