分享

【工程基础】校招研发工程师笔试题

 老马的程序人生 2021-10-14

1、以下代码违反了什么设计原则()

public class Student
{

    public int Id;
    public string StudentName;
}

public class MClass
{

    public int Id;
    public string ClassName;
    public List<Student> students = new List<Student>();
    public void print()
    
{
        foreach(Student stu in students)
        {
            Console.WriteLine("student id:{0},student name{1}", stu.Id, stu.StudentName);
        }
    }
}

public class School
{

    public int Id;
    public string SchoolName;
    public List<MClass> mClasses = new List<MClass>();
    public void Print()
    
{
        Console.WriteLine("school id:{0},school name{1}", Id, SchoolName);
        foreach (MClass mclss in mClasses)
        {
            Console.WriteLine("class id:{0},class name{1}", mclss.Id, mclss.ClassName);
            List<Student> students = mclss.students;

            foreach (Student stu in students)
            {
                Console.WriteLine("student id:{0},student name{1}", stu.Id, stu.StudentName);
            }
        }
    }
}
  • A. 依赖倒转原则
  • B. 接口隔离原则
  • C. 合成复用原则
  • D. 迪米特法则

2、以下代码违反的原则是()

public class Chart
{

    private string _type;
    private double[][] _data;
    
    public Chart(double[][] data, string type)
    
{
        _type = type.ToLower();
        _data = data;
        if (_type == "histogram")
        {
            //初始化柱状图
        }
        else if (_type == "pie")
        {
            //初始化饼状图
        }
        else if (_type=="line")
        {
            //初始化折线图
        }
    }
    
    public void Display()
    {
        if (_type == "histogram")
        {
            //显示柱状图
        }
        else if (_type == "pie")
        {
            //显示饼状图
        }
        else if (_type == "line")
        {
            //显示折线图
        }
    }
}
  • A. 开闭原则,迪米特法则
  • B. 开闭原则,单一职责原则
  • C. 单一职责原则,里氏代换原则
  • D. 依赖倒转原则,合成复用原则

3、以下代码是对哪种设计模式的简化()

abstract class Product
{

    public Product CreateProduct(string type)
    
{
        Product product = default(Product);
        switch (type.ToLower())
        {
            case "a":
                product = new ProductA();
                break;
            case "b":
                product = new ProductB();
                break;
        }
        return product;
    }
}
class ProductA : Product
{
}
class ProductB : Product
{
}
  • A. 工厂方法模式
  • B. 单件模式
  • C. 简单工厂模式
  • D. 抽象工厂模式

4、下列关于单例模式错误的说法是()。

  • A. 为了防止在外部对其实例化,将其构造函数设计为私有。
  • B. 在单例类内部定义一个Singleton类型的静态对象,作为外部共享的唯一实例。
  • C. 在单例类的内部实现只生成一个实例,同时它提供一个静态的GetInstance()工厂方法,让客户可以访问它的唯一实例。
  • D. 懒汉式单例类无须考虑多线程访问问题。

5、下面不属于创建型模式的有()

  • A. 抽象工厂模式(Abstract Factory)
  • B. 工厂方法模式(Factory Method)
  • C. 适配器模式(Adapter)
  • D. 单例模式(Singleton)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多