面试题及答案_NET

时间:2021-08-26 19:06:42
  1. 1.         什么是自定义控件?动态如何传数据?

答案

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

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

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

 

  1. 2.         列举几种C#中常见用的类(如:dataset),以及类得简单介绍

答案

1)DataSet:数据集,用于缓存从数据库中取到的数据,可以提供数据库的访问速度。

2)Connection:连接对象,用于应用程序与数据进行连接。

3)TreeView:树形控件,主要用于向树一样显示数据

 

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

答案

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

 

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

答案

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

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

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

   4)实体层  用于控制数据传递对象

 

  1. 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编程

 

  1. 6.         List list=new List(); 对不对 如何改正

答案

1)        不对

2)        List为泛型集合, List<T> list = new List<T>();

3)        例: List<string> list = new List<string>();

 

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

答案

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

事件是一种特殊的委托

 

 

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

答案

IEnumerable接口    IEnumerator GetEnumerator()

 

  1. 9.         C#的三元运算符是什么?

答案

?:

  

 

  1. 10.     GC是什么

答案

Garbage Collection 垃圾回收器

 

  1. 简要谈一下您对微软NET 构架下remoting和webservice两项技术的理解以及实际中的应用。

答案

ASP.NET Web 服务的基础结构是通过将SOAP消息映射到Web方法调用,为Web服务提供了简单的API。通过提供一种非常简单的编程模型

(基于将 SOAP 消息交换映射到方法调用),它实现了此机制。ASP.NET Web 服务的客户端不需要了解用于创建它们的平台、对象模型或编程语言。而服务也不需要了解向它们发送消息的客户端。唯一的要求是:双方都要认可正在创建和使用的 SOAP 消息的格式,该格式是由使用 WSDL 和 XML 架构 (XSD) 表示的 Web 服务合约定义来定义的。

.NET Remoting 为分布式对象提供了一个基础结构。它使用既灵活又可扩展的管线向远程进程提供 .NET 的完全对象语义。ASP.NET Web 服务基于消息传递提供非常简单的编程模型,而 .NET Remoting 提供较为复杂的功能,包括支持通过值或引用传递对象、回调,以及多对象激活和生命周期管理策略等。要使用 .NET Remoting,客户端需要了解所有这些详细信息,简而言之,需要使用 .NET 建立客户端。(或者使用支持 .NET Remoting 的其他框架)。

 

 

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

答案

类和结构都可以有字段、属性和方法

类的引用类型,结构是值类型

类可以被继承,结构不可以被继承

 

  1. net Remoting 的工作原理是什么?

答案

建立.NET 远程客户端,实现远端进程通讯服务。

 

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

答案

手动建立Web服务代理,

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

 

 

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

答案

SqlConnection 连接数据库

SqlCommand 执行Sql语句或存储过程

SqlDataReader 实现对数据表记录向前只读

SqlDataAapter 执行Sql语句或存储过程

 

 

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

答案

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

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

 

  1. 什么是强类型系统?

答案

强类型系统是相对于弱类型而言的,系统设计时尽量把对弱类型数据的操作映射为对强类型对象的操作,增强系统的健壮性。

 

  1. 什么是受管制的代码?

答案

的.NET Framework框架下运行的代码都是托管代码

 

  1. 什么是装箱和拆箱?

答案

装箱:将值类型的数据转化为引用类型的数据

拆箱:将引用类型数据转化为值类型

 

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

答案

CTS 公共类型系统, CLS 公共语言规范, CLR公共语言运行时 

 

  1. DataSet和DataReader的区别

答案

DataSet提供一个内存中数据的关系表示形式,一整套包括一些表在内的数据(这些表包含数据、对数据进行排序并约束数据),以及表之间的关系。DataReader提供一个来自数据库的快速、仅向前、只读数据流。

ADO.NET提供以下两个对象,用于检索关系数据并将其存储在内存中:DataSet和DataReader。DataSet提供一个内存中数据的关系表示形式,一整套包括一些表在内的数据(这些表包含数据、对数据进行排序并约束数据),以及表之间的关系。DataReader提供一个来自数据库的快速、仅向前、只读数据流。
当使用DataSet时,经常会利用DataAdapter(也可能是CommandBuilder)与数据源进行交互。当使用DataSet时,也可以利用DataView对DataSet中的数据应用排序和筛选。也可以从DataSet继承,创建强类型DataSet,用于将表、行和列作为强类型对象属性公开。
当设计应用程序时,要考虑应用程序所需功能的等级,以确定使用DataSet或者是DataReader。

 

  1. 简单叙述委托

答案

委托实际上是类(一个貌似函数一样的类),我们已经使用函数指针很多年了——函数指针也被称为过程类型,但是它们的实现都不是类。它们是单独的函数指针的简单实例。委托是包含这些功能的类,委托类通过保留的列表来确定某些事物是否已经指派给了委托,这种算法可以理解为:“对于内部列表中的每一个回调函数,都调用函数”。委托除了支持回调函数外,还可以通过该列表来实现多播(委托链)。

 

  1. 什么是Code-Behind技术?

答案

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

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

 

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

答案

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

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. .net中怎样处理异常的?

答案

//自己写一个异常处理基类(从System.ApplicationException继承而来),三层里出现的所有的异常都用自己的异常处理类来处理  
   
  using   System;  
  using   System.Diagnostics;  
   
  namespace   Wish.Web  
  {  
  public   class   AppException:   System.ApplicationException  
  {  
  public   AppException()  
  {  
  LogEvent("发生意外的错误");  
  }  
   
  public   AppException(string   message)  
  {  
  LogEvent(message);  
  }  
   
  public   AppException(string   message,   Exception   innerException)  
  {  
  LogEvent(message);  
  if   (innerException   !=   null)  
  {  
  LogEvent(innerException.Message);  
  }  
  }  
   
  private   void   LogEvent(string   message)  
  {  
  //   将此信息写入事件日志记录  
  if   (!EventLog.SourceExists("Wish"))  
  {  
  EventLog.CreateEventSource("Wish",   "Application");  
  }  
  EventLog.WriteEntry("Wish",   message,   EventLogEntryType.Error);  
   
  }  
  }  
  }  
 

 

  1. ASP.net和你以前知道的语言有什么优点?

答案

  1. 与浏览器无关
  2. 易于设置断点和调试
  3. 丰富的控件库
  4. 编译语言,执行效率高
  5. 代码后置

 

  1. .net中垃圾回收机制?

答案

.NET运行库采用的方法是垃圾收集器。

这是一个程序,其目的是清理内存,方法是所有动态请求的内存都分配到堆上(这对所有的语言都一样,但在.NET中,CLR维护它自己的托管堆,以供.NET应用程序使用),当.NET检测到给定进程的托管堆已满,需要清理时,就调用垃圾收集器。垃圾收集器处理目前代码中的所有变量,检查对存储在托管堆上的对象的引用,确定哪些对象可以从代码中访问—— 即哪些对象有引用。没有引用的对象就不能再从代码中访问,因而被删除。