Net面试问答大汇总.docx

上传人:b****7 文档编号:11432791 上传时间:2023-03-01 格式:DOCX 页数:55 大小:48.66KB
下载 相关 举报
Net面试问答大汇总.docx_第1页
第1页 / 共55页
Net面试问答大汇总.docx_第2页
第2页 / 共55页
Net面试问答大汇总.docx_第3页
第3页 / 共55页
Net面试问答大汇总.docx_第4页
第4页 / 共55页
Net面试问答大汇总.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

Net面试问答大汇总.docx

《Net面试问答大汇总.docx》由会员分享,可在线阅读,更多相关《Net面试问答大汇总.docx(55页珍藏版)》请在冰豆网上搜索。

Net面试问答大汇总.docx

Net面试问答大汇总

用.net做B/S构造系统,您是用几层构造来开发,每一层之间关系以及为什么要这样分层?

 

答:

从下至上分别为:

数据访问层、业务逻辑层(又或成为领域层)、表达层 

数据访问层:

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

业务逻辑层:

是整个系统核心,它与这个系统业务(领域)关于 

表达层:

是系统UI某些,负责使用者与整个系统交互。

  

长处:

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

 

缺陷:

 增长成本。

分层式构造究竟其优势何在?

 

1、开发人员可以只关注整个构造中其中某一层; 

2、可以很容易用新实现来替代原有层次实现; 

3、可以减少层与层之间依赖; 

4、有助于原则化; 

5、利于各层逻辑复用。

 

概括来说,分层式设计可以达至如下目:

分散关注、松散耦合、逻辑复用、原则定义。

分层式构造也不可避免具备某些缺陷:

 

 1、减少了系统性能。

这是不言而喻。

如果不采用分层式构造,诸多业务可以直接拜访数据库,以此获取相应数据,如今却必要通过中间层来完毕。

 

2、有时会导致级联修改。

这种修改特别体当前自上而下方向。

如果在表达层中需要增长一种功能,为保证其设计符合分层式构造,也许需要在相应业务逻辑层和数据访问层中都增长相应代码。

MVC模式

MVC(Model-View-Controller)把交互系统构成分解成模型、视图、控制器三种部件

mvc长处:

1.通过把项目提成modelview和controller,使得复杂项目更加容易维护。

2.没有使用viewstate和服务器表单控件,可以更以便控制应用程序行为

3.应用程序通过controller来控制程序祈求,可以提供丰富url重写。

4.对单元测试支持更加出众

5.在团队开发模式下体现更出众

MVC局限性:

 

(1)增长了系统构造和实现复杂性。

对于简朴界面,严格遵循MVC,使模型、视图与控制器分离,会增长构造复杂性,并也许产生过多更新操作,减少运营效率。

    

(2)视图与控制器间过于紧密连接。

视图与控制器是互相分离,但的确联系紧密部件,视图没有控制器存在,其应用是很有限,反之亦然,这样就妨碍了她们独立重用。

    

(3)视图对模型数据低效率访问。

根据模型操作接口不同,视图也许需要多次调用才干获得足够显示数据。

对未变化数据不必要频繁访问,也将损害操作性能。

如何实现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来使用 

inputttype="hidden"简朴,也许被伪造 

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

Server.Transfer 把流程从当前页面引导到另一种页面中,新页面使用前一种页面应答流 

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

  

什么是Viewstate?

它有什么作用?

ViewState用来保存页面状态,就是说提交之后咱们还可以看到文本框里面内容就是ViewState保存功劳。

 

ViewState只维护当前页面状态,不同页面之间不能共享,Session可以。

 

ViewState你可以理解为一种隐藏控件。

ASP.Net页面生命周期 

每个页面生命周期为顾客每一次访问,也就是说每一次客户端与服务器之间一种来回过程.全局变量生命周期在此之间.

1.Page_Init(); 

2.LoadViewStateandPostbackdata; 

3.Page_Load(); 

4.Handlecontrolevents; 

5.Page_PreRender(); 

6.Page_Render(); 

7.Unloadevent; 

8.Disposemethodcalled; 

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(MicrosoftDataAccessComponents),MicrosoftSQLServerOLEDBProvider,

MicrosoftJetOLEDBProvider,DesktopDatabaseDriversODBCDriver,VisualFoxProODBCDriver 

什么是面向对象 

万物都是对象,其重要特性:

封装、继承、多态 

如何实现多态 

1.通过对象直接调用成员函数时,始终默认使用该对象类成员函数(除非用:

:

显示指定类名)。

2.通过指向对象指针或引用调用成员函数时:

如果该函数是实函数,则调用该指针或引用类成员函数;如果该函

数是虚函数,则调用该指针或引用指向对象类成员函数。

 

面向对象思想重要涉及什么?

 

答:

任何事物都可以理解为对象,其重要特性:

继承。

封装。

多态。

特点:

代码好维护,安全,隐藏信息 

什么是装箱和拆箱?

 

答:

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

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

装箱(boxing)是将值类型数据转化成引用类型,inti=3;objecto=i;便是装箱过程,而拆箱(unboxing)是将饮用类型数据转换值类型,例如intj=(int)o;属于拆箱

 

什么是Interface?

它与AbstractClass有什么区别?

接口(Interface)是用来定义行为规范,不会有详细实现,而抽象类除定义行为规范外,可以有某些实现,但一

个类能实现各种接口,但只能继承一种父类   

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

接口用于规范,抽象类用于共性。

接口中只能声明办法,属性,事件,索引器。

而抽象类中可以有办法实

现,也可以定义非静态类变量。

抽象类是类,因此只能被单继承,但是接口却可以一次实现各种。

抽象类可以

提供某些办法某些实现,接口不可以.抽象类实例是它子类给出。

接口实例是实现接口类给出。

再抽象类中加入一种办法,那么它子类就同步有了这个办法。

而在接口中加入新办法,那么实现它类就要

重新编写(这就是为什么说接口是一种类规范了)。

接口成员被定义为公共,但抽象类成员也可以是私有

、受保护、内部或受保护内部成员(其中受保护内部成员只能在应用程序代码或派生类中访问)。

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

 

什么是抽象类(abstractclass)?

 

一种不可以被实例化类。

抽象类中普通具有抽象办法,固然也可有详细实现。

继承类只有实现过所有抽

象类抽象办法后才干被实例化。

何时必要声明一种类为抽象类?

 

当这个类中包括抽象办法时,或是该类并没有完全实现父类抽象办法时。

接口(interface)是什么?

 

只具有共有抽象办法(publicabstractmethod)类。

这些办法必要在子类中被实现。

为什么不能指定接口中办法修饰符?

 

接口中办法用来定义对象之间通信契约,指定接口中办法为私有或保护没故意义。

她们默以为公有办法。

可以继承各种接口么?

 

固然。

那么如果这些接口中有重复办法名称呢?

 

这种状况中你可以决定如何实现。

固然需要特别得小心。

但是在编译环节是没有问题。

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

 

接口中所有办法必要是抽象,并且不能指定办法访问修饰符。

抽象类中可以有办法实现,也可以指

定办法访问修饰符。

 

 

详述.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核心字来调用

 

 

//如果子类办法办法名和基类办法名相似时,系统将隐藏基类同名办法,自动调用子类同名办法

 

//派生类会继承基类所有成员,但是不能显示调用基类是有成员

//在派生类中不可以调用基类是有成员,如num1,num2,但是可以实现调用基类办法

 

 

virtual用在基类中指定一种虚办法属性表达这个办法属性可以重写

 

override用在派生类中表达对基类虚办法属性重写

 

不能重写非虚办法或静态办法重写基办法必要是virtualabstract或override为什么override也可以重写呢由于基类中override事实上是对基类基类进行重写由于继承可传递因此也可以对基类中override办法进行重写

 

override声明不能更改virtual办法可访问性override办法和virtual办法必要具备相似访问级别修饰符

不能使用修饰符newstaticvirtual或abstract来修改override办法

 

重写属性声明必要指定与继承属性完全相似访问修饰符类型和名称并且被重写属性必要是virtualabstract或override

 

标记容许被重写修饰静态办法中不容许使用virtual核心字成员变量容许使用virtual核心字

属性可以被声明为虚属性(使用virtual核心字)

 

重写基类办法(重写同名办法中有virtual核心字办法)

 

重写和隐藏区别隐藏(new核心字)是给子类同名办法分派新内存空间重写(override核心字)是子类同名办法放在基类同名办法本来所在位置基类同名办法位置向后移

 

属性也可以重写

 

virtual核心字和override核心字是成对浮现否则是语法错误

 

派生类可以通过将重写声明为sealed来停止虚拟继承这需要在类成员声明中override核心字前面放置sealed核心字

 

在子类中重写基类中虚办法时可以使用base核心字调用基类中虚办法

 

//使用base核心可以在子类中访问基类同名办法

 

//父类引用指向子类实例

 

Testts=newTest2();

 

父类引用指向子类实例(调用是子类办法)

 

父类引用只结识父类办法不结识子类新办法可以用来调用被子类覆盖父类办法

 

父类引用依然到父类办法位置去调用如果基类办法被声明为virtual并且在子类中被override成果访问到是被子类override办法

 

 

C#中委托是什么?

事件是不是一种委托?

      

委托可以把一种办法作为参数代入另一种办法。

委托可以理解为指向一种函数引用。

是,是一种特殊委托  

C#中堆和栈

栈(Stack)由系统管理生存期,存储代码执行和调用途径,执行或调用完毕即从栈中清除; 

堆(Heap)中保存值和对象,调用完毕之后依然存在,由垃圾回收器查找栈中有无指向该值或对象引用,无则从堆中删除

  

C#ref与out区别:

 

1、使用ref型参数时,传入参数必要先被初始化。

对out而言,必要在办法中对其完毕初始化。

2、使用ref和out时,在办法参数和执行办法时,都要加Ref或Out核心字。

以满足匹配。

3、out适合用在需要retrun各种返回值地方,而ref则用在需要被调用办法修改调用者引用时候。

 

 

你对泛型理解吗?

简朴阐明一下泛型有什么好处?

泛型:

通过参数化类型来实当前同一份代码上操作各种数据类型。

运用“参数化类型”将类型抽象化,从而实现灵活复用 

好处是——类型安全和减少装箱、拆箱。

提高性能、类型安全和质量,减少重复性编程任务 

C#中所有对象共同基类是什么?

 

System.Object. 

如何在C#中实现继承?

 

在类名后加上一种冒号,再加上基类名称。

 

C#支持多重继承吗?

 

不支持。

可以用接口来实现。

 

被protected修饰属性/办法在何处可以访问?

 

在继承或间接继承与这个类子类中可以访问。

 

私有成员会被继承么?

 

会,但是不能被访问。

因此看上去她们似乎是不能被继承,但事实上的确被继承了。

 

C#提供一种默认无参构造函数,当我实现了此外一种有一种参数构造函数时,还想保存这个无参数构

造函数。

这样我应当写几种构造函数?

 

答:

两个,一旦你实现了一种构造函数,C#就不会再提供默认构造函数了,因此需要手动实现那个无参构造

函数。

 

  

 

简述private、protected、public、internal修饰符访问权限。

 

private:

私有成员,在类内部才可以访问。

 

protected:

保护成员,该类内部和继承类中可以访问。

 

public:

公共成员,完全公开,没有访问限制。

 

internal:

在同一命名空间内可以访问。

 

new两种用法 

答:

实例话对象,隐藏基类办法。

.new有几种用法 

第一种:

newClass();

第二种:

覆盖办法

publicnewXXXX(){}

第三种:

new约束指定泛型类声明中任何类型参数都必要有公共无参数构造函数。

 

3.datagrid.datasouse可以连接什么数据源[dataset,datatable,dataview]

dataset,datatable,dataview,IList 

类成员有()种可访问形式

可访问性:

public,protected,private,internal 

委托与事件用法 

答:

publicdelegatevoidhandels();//返回值是void,没有参数 

publiceventhandelseventHandels; 

his.eventHandels=newhandels(fun); 

publicvoidfun() 

   {}

 

传入某个属性SET办法隐含参数名称是什么?

 

答:

value,它类型和属性所声明类型相似。

 

string是值类型还是引用类型?

引用类型 

String类与StringBuilder类有什么区别?

为什么在.Net类库中要同步存在这2个类?

(简答)

stringBuilder比string更节约内存,因此stringBuilder更快

String对象是不可变化。

每次使用System.String类中办法之一或进行运算时(如赋值、拼接等)时,都要

在内存中创立一种新字符串对象,这就需要为该新对象分派新空间。

而StringBuilder则不会。

在需要对字

符串执行重复修改状况下,与创立新String对象有关系统开销也许会非常昂贵。

如果要修改字符串而不

创立新对象,则可以使用System.Text.StringBuilder类。

例如,当在一种循环中将许多字符串连接在一起时

,使用StringBuilder类可以提高性能。

 

 

在C#中,stringstr=null与stringstr=“”请尽量使用文字或图象阐明其中区别。

 

答:

stringstr=null是不给她分派内存空间,而stringstr=""给它分派长度为空字符串内存空间。

 

 

ASP.net身份验证方式有哪些?

分别是什么原理?

 

答:

Windwos(默认)     用IIS...From(窗体)     用帐户....Passport(密钥)

Session有什么重大BUG,微软提出了什么办法加以解决?

 

答:

是iis中由于有进程回收机制,系统繁忙话Session会丢失,可以用Sateserver或SQLServer数据库方式存储Session但是这种方式比较慢,并且无法捕获SessionEND事件 

c#中三元运算符是 ?

 

.能用foreach遍历访问对象需要实现() 接口或声明( GetEnumerator)办法类型。

 

.<%#%>和<%%>有什么区别?

<%#%>表达绑定数据源 <%%>是服务器端代码块常量 

在.net(C#or)中如何获得当前窗体或控件句柄,特别是控件自身句柄(请列举)

this(C#)Me(). 

.C#可否对内存进行直接操作?

在.net下,.net引用了垃圾回收(GC)功能,它代替了程序员但是在C#中,不能直接实现Finalize办法,而是在析构函数中调用基类Finalize()办法 

DateTime与否可觉得null?

 不能,由于其为Struct类型,而构造属于值类型,值类型不能为null,只有引用类型才干被赋值null 

DateTime.Parse(myString);这行代码有什么问题?

有问题,当myString不能满足时间格式规定期候,会引

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1