• 就业模拟试题_Net(答案)


    一、 基础知识部分(每题3分,共60分)

     

    1. 委托是什么,事件跟委托是不是一回事?

    答案

    委托是一种传递消息的机制,可以将与委托签名相同的方法作为参数传递

    签名相同包括:方法的返回值类型,参数个数和类型

    事件是一种特殊的委托

    1. net中读写数据库需要用到那些类?他们的作用?

    答案

    SqlConnection 连接数据库

    SqlCommand 执行Sql语句或存储过程

    SqlDataReader 实现对数据表记录向前只读,一次读取一条记录

    SqlDataAapter 执行Sql语句或存储过程

    SqlParameter  向Sql语句或存储过程传递参数

    1. DataSet和DataReader的区别是什么?

    答案

    DataSet提供一个内存中数据的关系表示形式,相当于内存中的数据库。DataSet中包含表集合和表和表之间的关系。

    DataReader提供一个来自数据库的快速、向前、只读数据流。

    DataSet 和DataReader都是ADO.NET提供以下两个操作关系数据库的主要对象。

    DataSet经常会利用DataAdapter一次性从数据库里提取大量数据存放在其中,实现与用户数据源进行双向交互。当使用DataSet时,也可以利用DataView对DataSet中的数据应用排序和筛选。也可以从DataSet继承,创建强类型DataSet,用于将表、行和列作为强类型对象属性公开。
    当设计应用程序时,要考虑应用程序所需功能的等级,以确定使用DataSet或者是DataReader。

    1. 能用foreach遍历访问的对象需要实现哪个接口或声明哪个方法的类型?

    答案

    IEnumerable 、 GetEnumerator

    1. 简述 private、 protected、 public、 internal 修饰符的访问权限

    答案

    Public 公有,其他类都可以访问

        Protected 保护,只有本类和子类可以访问

        Private 私有,只有本类可以使用

        Internal 内部,本程序集中的类可以使用。

    1. 列举ASP.NET 页面之间传递值的几种方式

    答案

    1.使用Url重写QueryString, 如....?id=1; response. Redirect()....
    2.使用Session变量

    3.使用Cookie

    4.使用Server.Transfer

    5.使用Button控件的PostBackUrl属性

    1. CTS、CLS、CLR分别作何解释?

    答案

    CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。

    1. 什么是装箱和拆箱?

    答案

    从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。

    1. 分析以下代码,完成填空
      string strTmp = "abcdefg某某某";
      int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
      int j= strTmp.Length;
      以上代码执行完后,i=?  j=?

    答案

    i=13(i输出的是字节数,一个汉字占两个字节),j=10(输出字符数,不分中英文)

    1. GC是什么? 如何请求GC?

    答案

    GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
    System.gc()
    Runtime.getRuntime().gc()

    1. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

    答案

    接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,前提是实体类必须有明确的构造函数。

    1. 什么是自定义控件?动态如何传数据?

    答案

    1)        概述:自定义控件也是asp.net的一种服务器控件,体现格式为*.dll

    2)        适用场合:当.net平台给我们提供的web服务器控件不够用的时候,就需要我们自己开发一个自定义控件,或者又称为第三方控件;可以把该种控件添加到工具箱中,然后就像使用Web服务器控件一样。例如:分页控件

    3)        在控件内部公开属性,通过给属性赋值进行数据的交互; 控件最终体现在界面上的样式是靠重写父类的Render方法来实现的

    1. 什么是Code-Behind技术?

    答案

    字面意思就是:代码在后面,也就是代码隐藏的意思。

    主要是通过aspx页面指向对应的CS文件,可以实现显示逻辑和处理逻辑的分离,这样做有别于以前的asp页面和代码全混在一起不容易后期的修改和维护,使用code behind更容易维护,美工和程序员可以很好的分工

    1. 说明.net中的错误处理机制

    答案

      异常处理有两种方法:一种是使用Try Catch处理,一种使用throw扔出

    1. 列举一种适合asp.net应用开发的分层结构,介绍每层的作用

    答案

    1)表现层  显示数据和接受输入

       2)业务逻辑层  用于进行业务数据的处理

       3)数据访问层  用于访问数据

       4)实体层  用于封装数据传递的对象

    1. net的身份验证方式有哪些?分别是什么原理?

    答案

    Windows身份验证,基于Windows系统的用户的认证

    Forms身份验证,基于Form表单的认证

    1. 请详述在dotnet中类(class)与结构(struct)的异同?

    答案

    Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.Class可以被继承,struct不可以被继承

    1. 常用的调用WebService的方法有哪些?

    答案

    手动建立Web服务代理,

    利用开发环境建立Web服务代理

    1. 在net中读取XML文件要用到那些包,类,方法?

    答案

    System.Xml命名空间包含了一些最重要的XML类,其中最主要的类是和XML文档的读写操作相关的类。这些类中包括4个与读相关的类以及2个与写相关的类。它们分别是:XmlReader、XmlTextReader、XmlValidatingReader、XmlNodeReader、XmlWriter以及 XmlTextWriter。

    XmlReader类是一个虚基类,它包含了读XML文档的方法和属性。该类中的Read方法是一个基本的读XML文档的方法,它以流形式读取XML文档中的节点(Node)。另外,该类还提供了ReadString、ReadInnerXml、ReadOuterXml和ReadStartElement等更高级的读方法。除了提供读XML文档的方法外,XmlReader类还为程序员提供了MoveToAttribute、MoveToFirstAttribute、MoveToContent、MoveToFirstContent、MoveToElement以及 MoveToNextAttribute等具有导航功能的方法。

    XmlTextReader、XmlNodeReader以及XmlValidatingReader等类是从XmlReader类继承过来的子类。根据它们的名称,我们可以知道其作用分别是读取文本内容、读取节点和读取XML模式(Schemas)。

    XmlWriter类为程序员提供了许多写XML文档的方法,它是XmlTextWriter类的基类,我在后面的实例中会给出相关的运用方法。

    XmlNode类是一个非常重要的类,它代表了XML文档中的某个节点。该节点可以是XML文档的根节点,这样它就代表整个XML文档了。它是许多很有用的类的基类,这些类包括插入节点的类、删除节点的类、替换节点的类以及在XML文档中完成导航功能的类。同时,XmlNode类还为程序员提供了获取双亲节点、子节点、最后一个子节点、节点名称以及节点类型等的属性。它的三个最主要的子类包括:XmlDocument、XmlDataDocument以及XmlDocumentFragment。XmlDocument类代表了一个XML文档,它提供了载入和保存XML文档的方法和属性。这些方法包括了Load、LoadXml和Save等。同时,它还提供了添加特性(Attributes)、说明(Comments)、空间(Spaces)、元素(Elements)和新节点(New Nodes)等XML项的功能。XmlDocumentFragment类代表了一部分XML文档,它能被用来添加到其他的XML文档中。XmlDataDocument类可以让程序员更好地完成和ADO.NET中的数据集对象之间的互操作。

    1. 什么是强类型系统?

    答案

    RTTI:类型识别系统。

    二、 程序题(前6题每题5分,第7题10分。共40分)

    1.  公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路。

    答案

    根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。

    2.  根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:
    namespaceTest
    {
        public delegate void OnDBOperate();
        public class UserControlBase : System.Windows.Forms.UserControl
        {
           public event OnDBOperate OnNew;
           privatevoidtoolBar_ButtonClick(objectsender,

    System.Windows.Forms.ToolBarButtonClickEventArgs e)
    {
        if(e.Button.Equals(BtnNew))
        {
          //请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。

    }

    }

    }

       }

    答案

    if( OnNew != null )
    OnNew( this, e );

    3.  仔细阅读下列代码
    using System;
    class A
    {
        public A()
        {
           PrintFields();
        }

    //类中定义了一个虚方法
        public virtual void PrintFields(){}
    }

    //类B继承自类A
    class B:A
    {
        int x=1;
        int y;
       public B()
       {
         y=-1;
       }
      public override void PrintFields()
       {
         Console.WriteLine("x={0},y={1}",x,y);
       }

    }
    当使用new B()创建B的实例时,产生什么输出?

    答案

    X=1,Y=0;x= 1 y = -1

    4.  写出程序的输出结果

    class Class1 

    {
              private string str = "Class1.str";
              private int i = 0;
              static void StringConvert(string str) 

       {
                   str = "string being converted.";
             }
             static void StringConvert(Class1 c) 

    {
                 c.str = "string being converted.";
             }
             static void Add(int i) 

    {
                  i++;
             }
             static void AddWithRef(ref int i) 

     {
                 i++;
             }
             static void Main() 

    {
                  int i1 = 10;
                  int i2 = 20;
                  string str = "str";
                  Class1 c = new Class1();
                  Add(i1);
                  AddWithRef(ref i2);
                 Add(c.i);
                 StringConvert(str);        
                 StringConvert(c);
                 Console.WriteLine(i1);
                 Console.WriteLine(i2);
                 Console.WriteLine(c.i);
                 Console.WriteLine(str);
                 Console.WriteLine(c.str);
            } 
        }

    答案

    (考查值引用和对象引用)
    10
    21
    0
    str
    string being converted.

    5.  用socket实现服务器端向客户端传递几个字符,在客户端输出

    答案

    Using System.Net.Sockets;

    //启动监听

    TcpListener objLsn = new TcpListener(1000);

    objLsn.Start();

    Socket objSocket = objLsn.AcceptSocket();

    //发送

    String msg = “测试发送”;

    Byte[] arr = System.Text.Encoding.Default.GetBytes(msg);

    objSocket.Send(arr);

    参考:WinForm第八章Socket编程

    6.  写出程序的输出结果

    public abstract class A 
    {
            public A() 
            {
                 Console.WriteLine('A');
            }
            public virtual void Fun() 
           {
                 Console.WriteLine("A.Fun()");
            }
    }

    public class B: A 
    {
            public B()
            {
                 Console.WriteLine('B');
            }

            public new void Fun() 
             {
                  Console.WriteLine("B.Fun()");
             }

            public static void Main() 
             {
                 A a = new B();
                 a.Fun();
             }
    }

    答案

    A
    B
    A.Fun()
    评分标准: 写出A.B 得5分,写出A.Fun()得5分,满分10分。
    (考查在继承类中构造函数, 以及new 方法, )

    7.  程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)

    要求:  1.要有联动性,老鼠和主人的行为是被动的。

    2.考虑可扩展性,猫的叫声可能引起其他联动效应。

    答案

    要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象
    评分标准: <1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分)
                <2>从Mouse和Master中提取抽象(5分)
                <3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分)


        public interface Observer
        {
            void Response();    //观察者的响应,如是老鼠见到猫的反映
        }
        public interface Subject
        {
            void AimAt(Observer obs);  //针对哪些观察者,这里指猫的要扑捉的对象---老鼠
        }
        public class Mouse : Observer
        {
            private string name;
            public Mouse(string name, Subject subj)
            {          
                this.name = name;
                subj.AimAt(this);
            }
           
            public void Response()
            {
                Console.WriteLine(name + " attempt to escape!");
            }
        }
        public class Master : Observer
        {  
            public Master(Subject subj)
            {          
                subj.AimAt(this);
            }
           
            public void Response()
            {
                Console.WriteLine("Host waken!");
            } 
        }
     
        public class Cat : Subject
        {
            private ArrayList observers;
            public Cat()
            {  
                this.observers = new ArrayList();
            }
            public void AimAt(Observer obs)
            {
                this.observers.Add(obs);
            }
            public void Cry()
            {
                Console.WriteLine("Cat cryed!");
                foreach (Observer obs in this.observers)
                {
                    obs.Response();
                }
            }
        }
        class MainClass
        {      
            static void Main(string[] args)
            {
                Cat cat = new Cat();
                Mouse mouse1 = new Mouse("mouse1", cat);
                Mouse mouse2 = new Mouse("mouse2", cat);
                Master master = new Master(cat);
                cat.Cry();
            }
        }


    //---------------------------------------------------------------------------------------------

    设计方法二: 使用event -- delegate设计..
        public delegate void SubEventHandler();
        public abstract class Subject
        {
            public event SubEventHandler SubEvent;
            protected void FireAway()
            {
                if (this.SubEvent != null)
                    this.SubEvent();
            }  
        }
        public class Cat : Subject
        { 
            public void Cry()
            {
                Console.WriteLine("cat cryed.");
                this.FireAway();
            }
        }
        public abstract class Observer
        {
            public Observer(Subject sub)
            {
                sub.SubEvent += new SubEventHandler(Response);
            }
            public abstract void Response();   
        }
        public class Mouse : Observer
        {
            private string name;
            public Mouse(string name, Subject sub) : base(sub)
            {  
                this.name = name;
            }
            public override void Response()
            {
                Console.WriteLine(name + " attempt to escape!");
            }
        }
        public class Master : Observer
        {
            public Master(Subject sub) : base(sub){}
            public override void Response()
            {
                Console.WriteLine("host waken");
            }
        }
        class Class1
        {
            static void Main(string[] args)
            {
                Cat cat = new Cat();
                Mouse mouse1 = new Mouse("mouse1", cat);
                Mouse mouse2 = new Mouse("mouse2", cat);
                Master master = new Master(cat);
                cat.Cry();
            }

        }

  • 相关阅读:
    vue项目常用
    centos7之关于时间和日期以及时间同步的应用
    nginx 配置 https
    nginx 转发 minio 服务
    MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。
    SpringCloud第三弹(Feign客户端)
    IDEA代码里的黄色提示
    H3C配置tftp参数,搭配WDS,windows部署服务器。
    手动为nextclou添加插件(Collabora Online 在线OFFICE)
    nextcloud集成LDAP登录
  • 原文地址:https://www.cnblogs.com/soundcode/p/1910683.html
Copyright © 2020-2023  润新知