就业模拟试题_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 

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.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(); 
        }

    }

 

分类:  面试题


本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2010/12/19/1910683.html,如需转载请自行联系原作者
目录
相关文章
|
移动开发 负载均衡 前端开发
2022届软件技术专业毕业生就业岗位分析(.Net方向)(7)
2022届软件技术专业毕业生就业岗位分析(.Net方向)(7)
182 0
2022届软件技术专业毕业生就业岗位分析(.Net方向)(7)
|
网络架构
2022届软件技术专业毕业生就业岗位分析(.Net方向)(6)
2022届软件技术专业毕业生就业岗位分析(.Net方向)(6)
198 0
2022届软件技术专业毕业生就业岗位分析(.Net方向)(6)
|
SQL 运维 监控
2022届软件技术专业毕业生就业岗位分析(.Net方向)(5)
2022届软件技术专业毕业生就业岗位分析(.Net方向)(5)
237 0
2022届软件技术专业毕业生就业岗位分析(.Net方向)(5)
|
SQL 消息中间件 存储
2022届软件技术专业毕业生就业岗位分析(.Net方向)(4)
2022届软件技术专业毕业生就业岗位分析(.Net方向)(4)
180 0
2022届软件技术专业毕业生就业岗位分析(.Net方向)(4)
|
SQL 运维 关系型数据库
2022届软件技术专业毕业生就业岗位分析(.Net方向)(3)
2022届软件技术专业毕业生就业岗位分析(.Net方向)(3)
187 0
2022届软件技术专业毕业生就业岗位分析(.Net方向)(3)
|
存储 SQL 关系型数据库
2022届软件技术专业毕业生就业岗位分析(.Net方向)(2)
2022届软件技术专业毕业生就业岗位分析(.Net方向)(2)
130 0
2022届软件技术专业毕业生就业岗位分析(.Net方向)(2)
|
人工智能 运维 Java
2022届软件技术专业毕业生就业岗位分析(.Net方向)(1)
2022届软件技术专业毕业生就业岗位分析(.Net方向)(1)
463 0
2022届软件技术专业毕业生就业岗位分析(.Net方向)(1)
|
.NET 开发框架 Java
|
设计模式 .NET 开发框架
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
45 7