.NET面试题(1)

来源:互联网 发布:苹果怎么备份数据 编辑:程序博客网 时间:2024/05/16 05:01


1.  string str = null;  与 string str = "";  说明其中的区别

     null是没有,不存在,string str = null;  不存在string对象,不给他分配内存空间;

     "" 是空字符串, string str = "";  存在string对象,给他分配一个长度为空字符串的内存空间。


2.写出一条Sql语句:取出表A中第31条到40条数据(SqlServer , 以自动增长的 Id 作为主键 ,注意 Id 可能不是连续的)

  解法一:select  top  10  *  from  A  where  Id  not  in  (select  top  30  Id  from  A)

  演变步骤:

                  取前30条数据的Id    select  top  30  Id  from  A 

                  取Id不等于前30条的,也就是把前30条数据排除在外      select  *  from  A  where  Id  not  in  (select  top  30  Id  from  A)

                  取把前30条数据排除在外的前10条数据,也就是我们要的第31-40条数据     

                  select  top  10  *  from  A  where  Id  not  in  (select  top  30  Id  from  A)

  解法二:  select  top  10  *  from  A  where  Id  >  (select  max(Id)  from  (select  top  30  Id  from  A  order  by  Id) as  A)

  解法三: select  top  10  *  from  (select  * ,  Row_Number()  over( order  by  Id)  as  index  from  A )  as  A  where  index  >  30


3.  在.Net中所有可被序列化的类都被标记为______?

     [Serializable]


4.  什么是  code-Behind    技术?

    code-Behind 是代码隐藏,代码后置。在ASP.NET中用aspx页面指向cs文件的方法实现显示逻辑代码和处理逻辑代码的分离,这样有助于web应用程序的创建。比如分工,美工和编程可以各干各的,不用再像以前ASP那样代码和HTML混在一起,难以维护。code-Behind是基于部分类技术实现的。


5.接口是以一种引用类型,在接口中可以引用(),但不可以声明公有的域和私有的成员变量。

  A,方法,属性,索引器,事件

  B,索引器和字段

  C,事件和字段

  答案:A    接口中不能声明字段,只能声明方法,属性,索引器,事件最终都编译生成方法。因为字段属于实现层面的东西,只有存取值得时候才会用到字段,所以接口中不能 定义字段。


6.StringBuilder 和 String 的区别:

  String 在进行运算时(如赋值,拼接等)会产生一个新的实例,而StringBuilder不会,所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用StringBuilder ,而不要使用String 。

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


7.请解释一下ASP.NET中的web页面和其对应的隐藏类之间的关系?

  一个ASP.NET页面一般对应着一个隐藏类,一般都在ASP.NET的页面中声明了该隐藏类。

  例如一个页面  Test.aspx  页面声明如下:<%@ Page Language="C#" CodeBehind="Test.aspx.cs"  AutoEventWireup="false"  Inherits="T1.Test" %>

  CodeBehind="Test.aspx.cs"  表明页面在编译时使用哪一个代码文件

  Inherits="T1.test"  表明运行时使用哪一个隐藏类

  aspx页面会编译生成一个类,这个类从隐藏类继承。


8.您在什么情况下用到虚方法,它与接口有什么不同?

  子类重新定义父类中的某一个方法时,必须把父类中的方法定义为 virtual 。

  在定义接口中不能有方法体,虚方法可以。

  实现时,子类可以不用重新定义虚方法,但如果一个类继承接口,那么这个类必须实现该接口。


9.以下叙述正确的是()?

  A. 接口中可以有虚方法     B.  一个类可以实现多个接口     C.    接口不能被实例化      D.         接口中可以包含已实现的方法

  答案: B、C


10.对于一个实现了 IDisposable 接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务()?

  A.   Close    B.   Dispose   C.   Finalize     D.   using    E.   Quit

  答案: A、B、C、D

 






0 0
原创粉丝点击