1. Dotnet9首页
  2. .NET
  3. .NET相关

2020年.Net中高级开发工程师笔试题带答案(3)

文章目录

一、单选题(共11题,每题3分,共计33分)

1、阅读下面代码:

classProgram
{
    public static void ThrowException()
    {
        thrownewException();
    }
    static void Main(string[] args)
    {
        try
        {
            Console.WriteLine("try");
            ThrowException();
        }
        catch
        {
            Console.WriteLine("catch");
        }
        finally
        {
            Console.WriteLine("finally");
        }
        Console.Read();
    }
}

请问代码运行结果是:( A )

  1. try / catch / finally
  2. try
  3. try / catch
  4. try / finally

2、阅读下面的代码

public struct Rect
{
    public int e;
}
classProgram
{
    public int d = 4;

    public static void SetValue(int a, refint b, outint c, Program p,Rect r)
    {
        a = 5;
        b = 6;
        c = 7;
        p.d = 8;
        r.e = 9;
    }
    static void Main(string[] args)
    {
        int a = 1;
        int b = 2;
        int c = 3;
        Program p = newProgram();
        p.d = 4;
        Rect r = newRect();
        r.e = 5;
        SetValue(a, ref b, out c, p, r);
        Console.WriteLine("a={0},b={1},c={2},p.d={3},r.e={4}", a, b, c, p.d, r.e);
        Console.Read();
    }
}

请问程序输出结果是(C)

  1. a=1, b=2, c=3, p.d=4, r.e=5
  2. a=5, b=2, c=7, p.d=8, r.e=9
  3. a=1, b=6, c=7, p.d=8, r.e=5
  4. a=1, b=6, c=3, p.d=4, r.e=9

3、阅读下面的代码:

public abstract class Animal
{
    public Animal()
    {
        Console.WriteLine("New Animal");
    }
    public virtual void Shout()
    {
        Console.WriteLine("Animal Shout");
    }
}

public class Dog : Animal
{
    public Dog()
    {
        Console.WriteLine("New Dog");
    }
    public override void Shout()
    {
        Console.WriteLine("Dog Shout");
    }
    static void Main(string[] args)
    {
        Animal animal = newDog();
        animal.Shout();
        Console.Read();
    }
}

请问程序输出结果是(C)

  1. Dog Shout / Dog Shout
  2. New Dog / Animal Shout
  3. New Animal / New Dog / Dog Shout
  4. New Dog / New Animal / Animal Shout

4、阅读下面的代码:

class A
{
    public static int X=2;
    static A()
    {
        X = B.Y + 1;
    }
}
class B
{
    public static int Y = A.X + 1;
    static B() { }
    static void Main()
    {
        Console.WriteLine("X={0},Y={1}", A.X, B.Y);
        Console.Read();
    }
}

请问程序输出结果是(A)

  1. X=1, Y=2
  2. X=2, Y=2
  3. X=2, Y=1
  4. X=1, Y=1

5、在WinForm中,Form从创建到释放会依次触发的事件顺序是(A)

  • A 构成函数->Load->Activated->Closing->Closed->Deactivate
  • B 构成函数-> Activated -> Load ->Closing-> Deactivate-> Closed
  • C Load->构成函数->Activated->Closing->Closed->Deactivate
  • D Load->构成函数->Activated-> Closing -> Deactivate -> Closed

6、对于CSS position 属性,下面正确的说法是(B)

  • A 盒子的默认定位为fixed,即固定定位
  • B 盒子的相对定位是指相对于其身原有位置进行偏移,一般会结合left、 right、top、bottom属性使用
  • C 绝对定位是以其父元素为参考对象,绝对定位的元素会脱离文档流
  • D position属性的取值为static时,是以浏览器窗口作为定位基准

7、在Javascrip中声明一个对象,给它加上name属性和show方法显示其name值,以下代码中正确的是(D)

  • A var  obj = [name:”zhangsan”,show:function(){alert(name);}];
  • B var  obj = {name=”zhangsan”,show:”alert(this.name)”};  
  • C var  obj = {name=”zhangsan”,show:function(){alert(name);}};  
  • D var  obj = {name:”zhangsan”,show:function(){alert(this.name);}};

8、使用jQuery检查<input type=”hidden” id=”id” name=”id” />元素在网页上是否存在,正确的代码是(C)

  • A if($(“#id”)) {}
  • B if($(“.id”)) {}
  • C if($(“#id”).length>0) {}
  • D if($(“.id”).length>0) {}

9、在ASP.NET WebForm中,如果在页面上同时放入HtmlControl文本框T1和WebControl文本框T2,文本框的初始值都为aaa, 在点击提交按钮后,下面的说法正确的是(B)

  • A T1的值为aaa, T2的值为aaa
  • B T1的值为空, T2的值为aaa
  • C T1的值为aaa, T2的值为空
  • D T1的值为空, T2的值为空

10、以下多线程对int型变量x的操作,不需要进行同步处理的是(D)

A.x=y; B. x++; C. ++x;  D. x=1;

11、关于SQL的执行顺序,正确的是(A)

  • A. FROM->WHERE->GROUP BY->HAVING->SELECT->DISTINCT->ORDER BY->TOP
  • B. SELECT->FROM-> WHERE->DISTICT->GROUP BY->HAVING->TOP ->ORDER BY
  • C. HAVING -> GROUP BY ->FROM->WHERE-> SELECT-> ORDER BY->DISTINCT->TOP
  • D. WHERE->FROM>HAVING->GROUP BY–>SELECT->DISTINCT->TOP->ORDER BY

多选题(共10题,每题4分,共计40分,多选、错选不得分,少选得1分)

12、面向对象的重要特征包括(A B C)

A.继承 B. 多态 C. 封装 D. 抽象

13、下面是ADO.NET对象有( A C D E )

  • A Connection对象
  • B DataSource对象
  • C Command对象
  • D DataAdapter对象
  • E DataSet对象

14、请介绍一下SQL Server中聚簇索引和非聚簇索引的区别(A B C )

  • A. 聚簇索引的顺序就是数据的物理存储顺序
  • B. 非聚簇索引的索引顺序与数据物理排列顺序无关
  • C. 一个表只能有一个聚簇索引,但可以有多个非聚簇索引
  • D. 一个表可以有多个聚簇索引,但只能有一个非聚簇索引

15、在ASP.NET MVC中,一个合法的Action方法必须满足的要求为(A B D E)

  • A. 所有的Action方法所在的类必须继承抽象类ConctrollerBase
  • B. 必须是一个公有的实例方法
  • C. 方法返回值不能为void
  • D. 方法不能带有泛型参数
  • E. 方法不能带有输出和引用参数

16、以下说法错误的是(B C D E F)

  • A. 需求分析过程中,需求项应该清楚明确、可实现、可测试
  • B. 可以直接根据需求做编码,不需设计
  • C. 程序员只需要完成编码工作,所有的测试工作由测试人员完成
  • D. 为了增加用户的满意度,可以在开发过程中增加用户没有提出的功能
  • E. 项目经理分配任务后,只需要在任务结束后检查任务完成情况。任务的质量和进度情况由任务接收者负责
  • F. 原型开发只需要一个简单的UI即可,无需考虑细节和用户体验

17、以下有关泛型的描述中正确的是(A B C)

  • A.类、接口、函数都可以是泛型的
  • B.泛型是强类型
  • C.泛型集合与非泛型集合相比避免了装箱、拆箱操作
  • D.泛型类可以有约束,泛型方法不能有约束

18、反射可以完成以下任务(A B C D E F)

  • A.枚举类型的成员
  • B.实例化新对象
  • C.查找类型信息
  • D.查找程序集信息
  • E.检查应用于某种类型的自定义特征
  • F.创建和编译新程序集

19、关于集合,以下说法正确的是(A B D)

  • A.Dictionary<T>类适合存键值对,但不允许Key重复
  • B.Queue<T>适合组织先进先出数据
  • C.Stack<T>适合组织先进先出数据
  • D.LinkedList<T>在内部维护了一个双向的链表,在中间插入或删除元素比List<T>快

20、以下说法正确的是(A B C)

  • A.可以使用匿名方法来定义委托
  • B.Lambda表达式实际上是匿名方法
  • C.事件(Event)是委托类型
  • D.委托只能定义在类中

21、在.NET体系结构中,以下说法正确的是(B D E F)

  • A.一个进程不能同时运行多个应用程序
  • B.一个进程能同时运行多个应用程序域
  • C.静态成员能在应用程序域之间共享
  • D.ASP.NET为每个应用程序创建了一个应用程序域
  • E.只有继承了MarshalByRefObject的类才能跨应用程序域访问
  • F.应用程序域可以独立加载和卸载程序集

问答题(共5题,共计27分)

22、抽象类和接口有什么不同?(7分)

参考答案:

  • 抽象类用于共性,而接口用于规范;
  • 抽象类中可以有方法的实现,也可以定义非静态的类变量,接口中只能声明方法,属性,事件,索引器;
  • 抽象类是类,所以只能被单继承,接口却可以一次实现多个;
  • 抽象类可以提供某些方法的部分实现,接口不可以;
  • 抽象类的实例是它的子类给出的,接口的实例是实现接口的类给出的;
  • 抽象类中加入一个方法,那么它的子类就同时有了这个方法,而在接口中加入新的方法,那么实现它的类就要重新编写;
  • 接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员

23、C#中重写(override)与重载(overload)有什么区别?(5分)

参考答案:

  • 方法的重写是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系;
  • 重写要求参数列表相同,重载要求参数列表不同;
  • 重写关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定,重载关系,是根据调用时的实参表与形参表来选择方法体的;

24、有两个表如下:  (5分)

Table1                                    

IDName
1aaa
2bbb
3ccc

Table2

IDAge
220
330
440

请给出下面SQL 语句的结果

1、

1)SELECT A.ID, A.Name, B.Age
FROM Table1 as A  
INNER JOIN Table2 as B 
ON A.ID = B.ID

2、

2)SELECT A.ID, A.Name, B.Age
FROM Table1 as A  
LEFT JOIN Table2 as B 
ON A.ID = B.ID

参考答案:                                                    

1)

IDNameAge 
2bbb20 
3ccc30 
    

    2)

IDNameAge 
1aaaNULL 
2bbb20 
3ccc30 

25、有如下2个数据库表, 请写一条SQL将UserName为“Daniel”的Department更新成“MD”(5分)

020年.Net中高级开发工程师笔试题带答案(3)"

参考答案:

UPDATEB
SETB.Department ='MD'
WHERE UserId =(SELECT UserId FROMAWHERE UserName ='Daniel')

答案2

UPDATEB
SET Department ='MD'
FROMB,A
WHEREB.UserId =A.UserId
ANDA.UserName ='Daniel'

26、有张课程表(Course)如下 (5分)

IDTitle
1数学
2英语
3语文
4物理
5化学
6数学
7英语
8化学
9物理

请写出删除Title重复记录的SQL语句(保留ID最小的)

参考答案:

DELETEFROMCourse
WHERE[ID]NOTIN(SELECTMIN(ID)ASID
FROMCourse
GROUP BY[Title])

四、附加题(每小题5分,共15分)

27、请用C#实现一个单例模式。

参考答案(有多种方法):

public sealed class Singleton
{
        private static readonly Singleton instance=new Singleton();

        private Singleton()
        {
        }

        public static Singleton GetInstance()
        {
               return instance;
        }
}

28、有一列数1,1,2,3,5,8,……..,求第30个数。

参考答案:

publicclassMainClass
{
  publicstaticvoidMain()
  {
    Console.WriteLine(Foo(30));
  }
  publicstaticintFoo(inti)
  {
    if(i <= 0)
      return0;
    elseif(i > 0 && i <= 2)
      return1;
    elsereturnFoo(i - 1) + Foo(i - 2);
  }
}

除非注明,文章均由 Dotnet9 整理发布,欢迎转载。

转载请注明本文地址:https://dotnet9.com/9260.html

发表评论

登录后才能评论