本文介绍: .net面试题大全1. 类成员有 2 种可访问形式?注:t his.; new Class().Method2. public static const int A=1;这段代码错误么?是什么const成员都是static所以应该去掉static.3. float f=-123.567F; int i=(int)f;i的值现在是 -1

     1.    成员 2 种可访问形式?注:this.       new Class().Method

2.    public static const int A=1;这段代码错误么?是什么 const成员都是static所以应该去掉static.

3.    float f=-123.567F;  int i=(int)f;
i
的值现在是  -123

4.    利用operator声明且仅声明==,有什么错误要同时修改EqualeGetHash() ?  重载“==” 就必须重载 “!=”     注:operator运算符重载

5.    面向对象语言具有 继承性封装多态性

 

6.    能用foreach遍历访问的对象需要实现 IEnumerable 接口声明  GetEnumerator 方法类型

 

7.    sealed修饰的类有什么特点? 不可继承

 

8.    .Net中所有可序列化的类都被标记 [serializable]

 

9.    .Net托管代码我们不用担心内存漏洞,这是因为有了 GC  

 

10.  下面的代码中有什么错误吗?

using System;
class A
{
    public virtual void F(){
         Console.WriteLine(“A.F”);
    }
}
abstract class B:A
{
    public abstract override void F();
}

abstract override 是不可以一起修饰

11.  当类T声明私有实例构造函数时,则在T程序文本外部 可以 可以 or 可以)从T派生出新的类, 可以 (可以 or 不可以)直接创建T的任何实例

 

12.  try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行什么时候执行,在return还是?
    答:执行,在return前执行。

 

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

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

protected: 保护成员,该类内部继承类中可以访问,可以跨程序集。 

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

internal: 在同一命名空间内可以访问,可以跨类。 

protected internal(同internal protected):当前程序集里的当前类、当前类的派生类都可以访问,但其他程序集派生当前类的不能访问。

private < protected internal(internal protected) < protected / internal < public

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

1. 使用QueryString, 如….?id=1; response. Redirect()….
2.使用Session变量
3.使用Server.Transfer

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

1.session(viewstate) 简单,但易丢失
2.application 全局
3.cookie 简单,但可能支持可能被伪造
4.input type=”hidden简单,可能被伪造
5.url参数简单显示地址栏长度有限
6.数据库稳定安全,但性能相对

16.  重写(override)重载(overload)区别

重写(override)用来重写父类相同名称参数的方法;重载(overload)使用相同名的方法但有不同参数个数不同参数类型

17.  .net错误处理机制是什么

.net错误处理机制采用try-&gt;catch-&gt;finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。

18.  C#中接口和类的异同

接口和类都是类。不同

接口包含方法和属性声明,不包含具体实现方法的代码,接口可以实现多继承接口主要定义一种规范统一调用方法。

类只能是单继承继承接口的类必须实现接口中声明的方法或属性

 

19.  DataReaderDataSet异同

DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection在线操作数据库,任何对SqlConnection操作都会引发DataReader的异常,因为DataReader每次只在内存加载一条数据,所以占用内存是很小的,因为DataReader的特殊性和高性能,所以DataReader是只进的,你读了第一条后就不能再去读取一条了。

DataSet则是将数据一次加载内存中,抛弃数据库连接,读取完毕即放弃数据库连接,因为DataSet将数据全部加载在内存中.所以比较消耗内存,但是确比DataReader要灵活,可以动态添加行、列、数据,对数据库进行回传更新操作

20.  c#usingnew两个关键字有什么意义,请写出你所知道的意义?

Using 引入一个命名空间,或在使用一个对像后自动调用其IDespose

New 实例一个对像;或修饰一个方法,表此完全重写此方法

 

21.  using System;
class A
{
     public A(){
           PrintFields();
     }
     public virtual void PrintFields(){

      Console.WriteLine(“This is class B method!”);//(加不加都一样)

}
}
class B:A
{
     int x=1;
     int y;
     public B()
[:base()]{
          y=-1;
     }
     public override void PrintFields(){
          Console.WriteLine(“x={0},y={1}”,x,y);
     }

}
使用new B()创建B实例时,产生什么输出X=1,Y=0

分析:1.在new B时会先调父类即A构造函数,这时会执行PrintFields()方法,因为PrintFields虚拟方法,在子类中重写了该方法,所以实际执行是子类B中的PrintFields()方法;

        2.为什么y=0? 这是因为调用的是父类构造函数子类B中的y没有初始化系统赋值为0.

 

22.  谈谈类和结构的区别?

结构(struct): 值类型,不能被继承(可以继承接口),没有默认构造函数(可以添加构造函数)和析构函数,不能有abstract、sealed(因为不能被继承)、protected.

类(class): 引用类型,完全可扩展,有默认构造函数(还可以添加构造函数)和析构函数.

23.  .netC# or vb.net)中,Appplication.Exit 还是 Form.Close有什么不同
答案:一个退出整个应用程序一个关闭其中一个form

 

24.  C#中有一个double型的变量,比如10321.5122235401.21644,作为货币的值如何各个不同国家的习惯来输出(比如美国用$10,321.50$122235401.22而在英国则为£10 321.50和£122 235 401.22)

System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo(“en-US”);

//System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo(“en-GB”);//为英国货币类型

decimal y = 10321.5m;

string str = String.Format(MyCulture,”My amount = {0:c}”,y);

输出:$10,321.5(美国); £10,321.5(英国)

 

25.  概述反射序列化
反射: 程序包含模块,而模块包含类型类型包含成员。反射则提供了封装程序集、模块类型对象。您可以使用反射动态创建类型实例,将类型绑定现有对象,或从现有对象获取类型。然后,可以调用类型的方法或访问其字段属性
序列化: 序列化是将对象转换为容易传输格式过程例如,可以序列化一个对象然后使用 HTTP 通过 Internet 在客户端服务器之间传输对象。在另一端,反序列化将从该流重新构造对象

 

26.  概述O/R Mapping 原理
利用反射,配置将类于数据库映射

 

27.  密封sealed修饰的类有什么特点
sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其它类的基类,则会发生编译错误
密封类不能同时为抽象类
sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用处理

 

28.  概述.NET里对 remoting webservice 两项技术理解和实际中的应用
webservice: 平台独立性, 跨语言穿透企业防火墙基于http的是无状态的, 速度比较慢。

Remoting: 既可以使用TCP信道进行二进制方式通信,也可以使用HTTP信道进行SOAP格式通信,可以用于有状态的情况,效率相对WebService要高不少,

只能应用于.net framework之下。

 

29.  什么是code-behind技术

代码分离技术,也就是.net中的HTML代码(.aspx)和程序代码(.cs)分别位于不同文件

 

30.  什么叫应用程序域?

应用程序域为安全性可靠性版本控制以及卸载程序集提供了隔离边界。应用程序域通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库

 

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

在CLR虚拟机中运行的代码(在.net环境中运行的代码都称之为受管制的代码)。

在.net环境之外,在Windows上运行的代码称之为不受管制的代码

 

32.  什么是强类型系统

C# 是强类型语言;因为每个变量和对象都必须具有声明类型。

 

33.  什么是装箱和拆箱?

装箱就是隐式的将一个值型转换引用对象

     拆箱就是将一个引用型对象转换成任意值类型

 

34.  CTSCLSCLR分别作何解释

CTS: 通用类型系统(Common Type System)

CLS: 公共语言定义(Common Language Specification)

CLR: 公共语言运行时(common language runtime)

 

35.  值类型和引用类型的区别?

值类型分配堆栈上(作用域结束时,所占空间自行释放,效率高,无需进行地址转换);引用类型分配在堆上(由GC来控制回收需要进行地址转换,效率降低)

 

36.  如何理解委托

相当于函数指针委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同行为

 

37.  UDP连接TCP连接异同

UDP: 只管传,不管数据到不到,无须建立连接

TCP: 保证传输的数据准确,需要连接

 

38.  ASP.net身份验证方式有哪些
windows身份验证: IIS根据应用程序的设置执行身份验证.要使用这种验证方式,在IIS中必须禁用匿名访问.
Forms验证:用Cookie保存用户凭证,并将未经身份验证用户重定向自定义登录页.
Passport验证:通过Microsoft的集中身份验证服务执行的,他为成员站点提供单独登录和核心配置文件服务.

 

39.  解释进程线程的区别?进程与程序的区别?

一个程序至少有一个进程,一个进程至少有一个线程

进程表示资源分配的基本单位,又是调度运行的基本单位

线程进程中执行运算最小单位,亦即执行处理调度的基本单位。

 

40.  解释web.config文件中的重要节点

appSettings包含自定义应用程序设置

system.web 系统配置

compilation动态调试编译设置

customErrors自定义错误信息设置

authentication身份验证,此节设置应用程序的身份验证策略

authorization授权, 此节设置应用程序的授权策略.

 

41.  什么是viewstate,能否禁用?是否所用控件都可以禁用?

Viewstate保存状态的一种机制,EnableViewState属性设置false即可禁用

     

42.  解释什么是上下文对象,在什么情况下要使用上下文对象

上下文对象是指HttpContext类的Current 属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象

     

43.  解释转发跳转的区别?

转发就是服务端跳转A页面提交数据到B页面,B页面进行处理然后服务端跳转到其它页面

跳转就是指客户端跳转

 

44.  C#中,string str = null string str = “” 请尽量使用文字或图象说明其中的区别。  
string str = null 是不给他分配内存空间,而string str = “” 给它分配长度为空字符窜的内存空间.

 

45.  String strTmp = “abcdefg某某某“;

int i = System.Text.Encoding.Default.GetBytes(strTmp).Length;  
int j = strTmp.Length;  

以上代码执行完后,i = 13          j =  10

46.  .C# property attribute的区别,他们各有什么用处,这种机制的好处在哪里?

 一个是属性,用于存取类的字段,一个是特性用来标识类,方法等的附加 性质

47.  需要实现对一个字符串处理,首先将该字符串首尾空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格不可超过一个.
   答:string inputStr=” xx  xx “;
    inputStr=Regex.Replace(inputStr.Trim(),” *”,” “);

48.  String类与StringBuilder类有什么区别?为什么在.Net类库中要同时存在这2个类?(简答)

如果要操作一个不断增长字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。

     

49.  final, finally, finalize的区别

final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

finally异常处理语句结构的一部分表示总是执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收例如关闭文件

50.  叙述constreadonly的区别

const 关键字用于修改字段或局部变量声明。它指定字段或局部变量的值不能被修改常数声明引入给定类型的一个或多个常数

const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。

const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖

readonly在运行期评估赋值,使我们得以在确保“只读访问”的前提下,把object初始化动作推迟到运行期进行。

readonly 关键字与 const 关键字不同: const 字段只能在该字段的声明中初始化

readonly 字段可以在声明或构造数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译常数,而 readonly 字段可用于运行时常数。

readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面

原文地址:https://blog.csdn.net/mrluo735/article/details/5340462

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_35362.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注