当前位置:360文档网>专题范文 > 公文范文 > Net面试问答大汇总(完整)

Net面试问答大汇总(完整)

发布时间: 2025-05-14 15:37:35 来源:网友投稿

下面是小编为大家整理的Net面试问答大汇总(完整),供大家参考。

Net面试问答大汇总(完整)

 

 Net 面试问答大汇总

 从下至上分别为:数据访问层、业务逻辑层〔又或成为领域层〕、表示层

 数据访问层:有时候也称为是持久层,其功能要紧是负责数据库的访问

 业务逻辑层:是整个系统的核心,它与那个系统的业务〔领域〕有关

 表示层:是系统的 UI 部分,负责使用者与整个系统的交互。

  优点:

 分工明确,条理清晰,易于调试,而且具有可扩展性。

 缺点:

 增加成本。

 分层式结构怎么说其优势何在?

 1、开发人员能够只关注整个结构中的其中某一层;

 2、能够专门容易的用新的实现来替换原有层次的实现;

 3、能够降低层与层之间的依靠;

 4、有利于标准化;

 5、利于各层逻辑的复用。

 概括来说,分层式设计能够达至如下目的:分散关注、松散耦合、逻辑复用、标准定义。

 分层式结构也不可幸免具有一些缺陷:

  1、降低了系统的性能。这是不言而喻的。假如不采纳分层式结构,专门多业务能够直截了当造访数据库,以此猎取相应的数据,现在却必须通过中间层来完成。

 2、有时会导致级联的修改。这种修改专门表达在自上而下的方向。假如在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

 MVC 模式 MVC(Model-View-Controller)把交互系统的组成分解成模型、视图、操纵器三种部件 mvc 的优点:

 1.通过把项目分成 model view 和 controller,使得复杂项目更加容易爱护。

 2.没有使用 view state 和服务器表单控件,能够更方便的操纵应用程序的行为 3.应用程序通过 controller 来操纵程序要求,能够提供丰富的 url 重写。

 4.对单元测试的支持更加杰出 5.在团队开发模式下表现更出众 MVC 的不足:

 〔1〕增加了系统结构和实现的复杂性。关于简单的界面,严格遵循 MVC,使模型、视图与操纵器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

  〔2〕视图与操纵器间的过于紧密的连接。视图与操纵器是相互分离,但确实联系紧密的部件,视图没有操纵器的存在,其应用是专门有限的,反之亦然,如此就阻碍了他们的独立重用。

  〔3〕视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

 asp.net 如何实现 MVC 模式,举例说明!

 web/business/dataaccess

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

 1.使用 QueryString, 如....?id=1; response. Redirect()....

 2.使用 Session 变量

 3.使用 Server.Transfer

 请说明在.net 中常用的几种页面间传递参数的方法,并说出他们的优缺点。

 QueryString

 传递一个或多个安全性要求不高或是结构简单的数值。然而关于传递数组或对象的话,就不能用那个方法了

 session(viewstate) 简单,但易丢失 作用于用户个人,过量的储备会导致服务器内存资源的耗尽。

  application 对象的作用范畴是整个全局,也确实是说对所有用户都有效。其常用的方法用 Lock和 UnLock

 cookie 简单,但可能不支持,可能被伪造 Cookie 是存放在客户端的,而 session 是存放在服务器端的。而且 Cookie 的使用要配合 ASP.NET 内置对象 Request 来使用

 input ttype="hidden" 简单,可能被伪造

 url 参数简单,显示于地址栏,长度有限

 Server.Transfer

 把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流

 数据库稳固,安全,但性能相对弱

 是 什么是 Viewstate ?它有什么作用? ViewState 用来储存页面状态,确实是说提交之后我们还能够看到文本框里面的内容确实是ViewState 储存的功劳。

 ViewState 只爱护当前页面的状态,不同页面之间不能共享,Session 能够。

 ViewState 你能够明白得为一个隐藏控件。

 ASP.Net 页面生命周期

  每个页面的生命周期为用户的每一次访问,也确实是说每一次客户端与服务器之间的一个往返过程.全局变量的生命周期在此之间. 1. Page_Init();

 2. Load ViewState and Postback data;

 3. Page_Load();

 4. Handle control events;

 5. Page_PreRender();

 6. Page_Render();

 7. Unload event;

 8. Dispose method called;

 ADO.net 中常用的对象有哪些?分别描述一下。

 答:

 Connection

 打开数据库连接

 Command

 执行数据库命令

 DataAdapter

 连接数据,执行数据库命令,填充 DataSet

 DataSet

 数据在内存中的缓存,数据结构

 DataReader

 只读向前的读取数据库 DataReader 和 和 DataSet 的异同

 DataReader 使用时始终占用 SqlConnection,在线操作数据库..任何对 SqlConnection 的操作都会引发DataReader的专门..因为DataReader每次只在内存中加载一条数据,因此占用的内存是专门小的..因为 DataReader 的专门性和高性能.因此 DataReader 是只进的..你读了第一条后就不能再去读取第一条了..

 DataSet 那么是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即舍弃数据库连接..因为

 DataSet将数据全部加载在内存中.因此比较消耗内存...然而确比DataReader要灵活..能够动态的添加行,列,数据.对数据库进行回传更新操作...

  和 储备过程和 sql 语句的优缺点 优点:

 1.提高性能,减少网络传输,节约时刻 。

 2.减少网络流量

 储备过程位于服务器上,调用的时候只须传递储备过程的名称以及参数,不用每次访问都传递专门长的 sql 语句。

 4.安全性

  减少 sql 注入式攻击。

 5.可爱护性高

 更新储备过程通常比更换、测试以及重新部署程序集需要较少的时刻和精力。

 缺点:

 1.交互性差 。

 2.可移植性差

  说出你所了解的数据库访问组件( 例如 ADO ,至少 4 种)

 答:ADO,ADO.Net,MDAC(Microsoft Data Access Components),Microsoft SQL Server OLE DB Provider, Microsoft Jet OLE DB Provider,Desktop Database Drivers ODBC Driver,Visual FoxPro ODBC Driver

 什么是面向对象

 万物差不多上对象,其要紧特点:封装、继承、多态

 如何样实现多态

 1.通过对象直截了当调用成员函数时,始终默认使用该对象的类的成员函数〔除非用::显示指定类名〕。

 2.通过指向对象的指针或引用调用成员函数时:假如该函数是实函数,那么调用该指针或引用的类的成员函数;假如该函 数是虚函数,那么调用该指针或引用指向的对象的类的成员函数。

 面向对象的思想要紧包括什么?

 答:任何事物都能够明白得为对象,其要紧特点:

 继承。封装。多态。特点:代码好爱护,安全,隐藏信息

 什么是装箱和拆箱?

 答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。装箱〔boxing〕是将值类型的数据转化成引用类型,int i=3; object o = i ;便是装箱过程,而拆箱(unboxing)是将饮用类型数据转换值类型,比如 int j = (int)o;属于拆箱

  是 什么是 Interface ?它与 Abstract Class 有什么区别? 接口(Interface)是用来定义行为规范的,可不能有具体实现,而抽象类除定义行为规范外,能够有部分实现,但一 个类能实现多个接口,但只能继承一个父类

 什么时候使用抽象类,什么时候用接口

  接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中能够有方法的实

 现,也能够定义非静态的类变量。抽象类是类,因此只能被单继承,然而接口却能够一次实现多个。抽象类能够 提供某些方法的部分实现,接口不能够.抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。

 再抽象类中加入一个方法,那么它的子类就同时有了那个方法。而在接口中加入新的方法,那么实现它的类就要 重新编写〔这确实是什么缘故说接口是一个类的规范了〕。接口成员被定义为公共的,但抽象类的成员也能够是私有 的、受爱护的、内部的或受爱护的内部成员〔其中受爱护的内部成员只能在应用程序的代码或派生类中访问〕。

 此外接口不能包含字段、构造函数、析构函数、静态成员或常量。

 什么是抽象类〔abstract class 〕?

 一种不能够被实例化的类。抽象类中一样含有抽象方法,因此也可有具体实现。继承类只有实现过所有抽 象类的抽象方法后才能被实例化。

 何时必须声明一个类为抽象类?

 当那个类中包含抽象方法时,或是该类并没有完全实现父类的抽象方法时。

 接 口〔interface 〕是什么?

 只含有共有抽象方法〔public abstract method〕的类。这些方法必须在子类中被实现。

 什么缘故不能指定接口中方法的修饰符?

 接口中的方法用来定义对象之间通信的契约,指定接口中的方法为私有或爱护没有意义。他们默认为公有方法。

 能够继承多个接口么?

 因此。

 那么假如这些接口中有 重复的方法名称呢?

 这种情形中你能够决定如何实现。因此需要专门得小心。然而在编译环节是没有问题的。

 接口和抽象类的区别是什么?

 接口中所有方法必须是抽象的,同时不能指定方法的访问修饰符。抽象类中能够有方法的实现,也能够指 定方法的访问修饰符。

  详述.NET 里 里 class 和 和 struct 的异同!

 类是引用类型,能够继承类、接口和被继承,有默认的构造函数,有析构函数,能够使用 abstract和 sealed,有 protected 修饰符,必须使用 new 初始化。

 结构是值类型,只能继承接口,不能被继承,没有默认的构造函数,能够创建,没有析构函数,不能够用 abstract 和 sealed,没有 protected 修饰符,能够不用 new 初始化。

 如何选择结构依旧类

 1. 堆栈的空间有限,关于大量的逻辑的对象,创建类要比创建结构好一些

 2. 结构表示如点、矩形和颜色如此的轻量对象

 例如,假如声明一个含有 1000 个点对象的数组,那么将为引用每个对象分配附加的内存。

 在此情形下,结构的成本较低。

 3. 在表现抽象和多级别的对象层次时,类是最好的选择

 4. 大多数情形下该类型只是一些数据时,结构时最正确的选择

 C# 中的接口和类有什么异同。

  异:

 不能直截了当实例化接口。

 接口不包含方法的实现。

 接口、类和结构可从多个接口继承。然而 C# 只支持单继承:类只能从一个基类继承实现。

 类定义可在不同的源文件之间进行拆分。

 同:

 接口、类和结构可从多个接口继承。

 接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。

 接口能够包含事件、索引器、方法和属性。

 一个类能够实现多个接口。

  const 和 和 readonly 有什么区别?

 const 关键字用来声明编译经常量,readonly 用来声明运行经常量。

 用 用 sealed 修饰的类有什么特点

 sealed 修饰符用于防止从所修饰的类派生出其它类。假如一个密封类被指定为其他类的基类,那么会发生编译时错误。

 密封类不能同时为抽象类。

 sealed 修饰符要紧用于防止非有意的派生,然而它还能促使某些运行时优化。具体说来,由于密封类永 远可不能有任何派生类,因此对密封类的实例的虚拟函数成员的调用能够转换为非虚拟调用来处理。

 虚函数的用法

 答:

 1)virtual 指明一成员函数为虚函数,而 virtual 仅用于类的定义里,在类外可不加此关键字.

 2)一个类的成员函数被定义为虚函数时,子类该函数仍保持虚函数特点.

 3)子类覆盖此函数时,定义里可不加 virtual 关键字,但函数声明要和基类的完全一致!且此声明是必须的.

 4)不是纯虚函数时,父类的虚函数必须要实现; 而假设将父类的虚函数设定为纯虚函数时,子类必需要覆盖之而且必须要实现之!

 明 说明 virtual 、sealed 、override 和 和 abstract 的区别

 virtual 申明虚方法的关键字,说明该方法能够被重写

 sealed 说明该类不可被继承

 override 重写基类的方法

 abstract 申明抽象类和抽象方法的关键字,抽象方法不提供实现,由子类实现,抽象类不可实例化。

 重载和覆写有什么区别?

 答:重载是方法的名称相同,不同的参数类型,不同的参数个数,不同的参数顺序。覆写提供了子类中改变父类方法行为的实现(是进行基类中函数的重写)。

 在方法定义中,virtual 有什么含义?

 答:被 virtual 修饰的方法能够被子类覆写

 能够将非静态的方法覆写成静态方法吗?

 答:不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将 virtual 改为 override。

 能够覆 写私有的虚方法吗?

 答:不能够,甚至子类中无法访问父类中的私有方法

 能够阻止某一个类被其他类继承吗?

 答:能够,使用关键字 sealed

 能够实现承诺某个类别继承,但不承诺其中的某个方法被覆写吗?

 答:能够,标记那个类为 public,并标记那个方法为 sealed。

 如何区别重载方法?

 不同的参数类型,不同的参数个数,不同的参数顺序

 c# 继承:

  base 表示当前对象基类的实例(使用 base 关键字能够调用基类的成员)this 表示当前类的实例

  在静态方法中不能够使用 base 和 this 关键字

  派生类会继承基类所有的成员然而构造函数和析构函数可不能被继承

 注意假如派生类的方法和基类的方法同名那么基类中的方法将会被隐藏假如需要隐藏那么能够使用关键字 new 来隐藏假如不写 new 关键字默认处理为隐藏尽管基类中同名的方法被隐藏了然而依旧能够通过 base 关键字来调用

 //假如子类方法的方法名和基类的方法名相同时,系统将隐藏基类同名方法,自动调用子类的同名方法

  //派生类会...

推荐访问:面试 问答 大汇总 Net面试问答大汇总 net面试问题

版权所有:360文档网 2013-2025 未经授权禁止复制或建立镜像[360文档网]所有资源完全免费共享

Powered by 360文档网 © All Rights Reserved.。备案号:京ICP备13037083号-1