(整理).net面试之葵花宝典

来源:互联网 发布:淘宝网数据字典 编辑:程序博客网 时间:2024/06/16 08:59

(整理).net面试之葵花宝典

 

1. CLRCTSCLS 分别是什么意思?

共公语言运行库,通用类型系统,公共语言规范

 

2. 什么是基元类型?

      由编译器直接支持的数据类型称为基元类型.

 

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

       remoting.net中用来跨越machine,  process, appdomain  进行方法调用的技术,对于三成结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的DCOM Web Service是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。Web   Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型

 

4 .如何把一个array复制到arrayList

foreach(object o in array )arrayList.Add(o);

 

5.  WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。

      web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件

 

6  WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?

可以调用

例如:<asp:TextBox id="TextBox1"onclick="clientfunction();" runat="server">

     </asp:TextBox>

<INPUT id="Button2" value="Button"name="Button2" runat="server"onclick="clientfunction();">

 

7  请解释ASP.NET中的web页面与其隐藏类之间的关系?

      一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下

<%@ Page language="c#" Codebehind="Tst1.aspx.cs"AutoEventWireup="false" Inherits="T1.Tst1" %>

Codebehind="Tst1.aspx.cs" 表明经编译此页面时使用哪一个代码文件

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

 

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

     Viewstate是保存状态的一种机制,用来存储页面范围内的数据,以保证用户在离开页面之前数据的持续性,实现上来说,ViewState被保存在页面内的一个隐藏控件内,并且提交到服务器后被提取后使用,EnableViewState属性设置为false即可禁用:

 

9  当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决

     很有可能是在Page_Load中数据处理时没有进行PageIsPostBack属性判断

 

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

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

 

11  请解释转发与跳转的区别?

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

跳转就是指客户端的跳转;

*       超链接跳转:通过地址栏传递字符串,丢失前面的请求,无法动态改变请求的地址;地址栏改变。

        HyperLink1.NavigateUrl=“a.aspx?name="+TextBox1.Text;

*       浏览器重定向:通过地址栏传递字符串;丢失前面的请求;服务器得到的将是新的请求;地址栏改变;两次往返;只能传string,255个字符,Response.Redirect (a.aspx?name=+a);

*       服务器转发:将新页面的输出覆盖到原页面上;不会丢失原始请求;地址栏没有变。

     Server.Transfer("a.aspx");

*       服务器执行:将新页面的输出附加到原页面上;不会丢失原始请求;地址栏没有变。

     Server.Execute("a.aspx");

 

12.请简述一下用Socket进行同步通讯编程的详细步骤

   1、在应用程序和远程设备中使用协议和网络地址初始化套接字

   2、在应用程序中通过指定端口和地址建立监听

   3、远程设备发出连接请求

   4、应用程序接受连接产生通信scoket

   5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)

   6、通讯结束,关闭应用程序和远程设备的Socket回收资源

 

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

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

      system.web 系统配置

      compilation动态调试编译设置

      customErrors自定义错误信息设置

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

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

 

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

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

2.使用Session变量

3.使用Server.Transfer

 

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

session(viewstate)会话状态,简单,但易丢失

application  应用程序状态 全局

cookie 简单,但可能不支持,可能被伪造

inputttype="hidden" 简单,可能被伪造 :

url参数简单,显示于地址栏,长度有限 :      数据库稳定,安全,但性能相对弱:

16override与重载的区别

Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数

 

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

try{可能要出错的代码}

catch{扑捉到错误后的处理}

finally{不论代码是否出错都要执行}

 

18C#中接口和类的异同

    接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念! 而类是负责功能的具体实现! 在类中也有抽象类的定义,抽象类与接口的区别在于:

抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。 但接口是一个行为的规范,里面的所有东西都是抽象的! 一个类只可以继承一个基类也就是父类,但可以实现多个接口

 

19DataReaderDataSet的异同

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

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

 

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

Using 引入一个名子空间,他实现了IDisposable的类型对象调用Dipose方法,using语句能够保证使用的对象的Dispose方法在using语句块结束时调用,无论是否有异常被抛出,C#编译器在编译时自动为using语句加上try/finally块,所有using的本质和异常捕捉语句一样,但语法更为简洁,所有using使用的对象都应该在using语句开始后再初始化,以保证所有的对象能够被Dispose

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

 

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

1.结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型

类是引用类型:引用类型在堆上分配地址 堆栈的执行效率要比堆的执行效率高可是堆栈的资源有限,不适合处理大的逻辑复杂的对象所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑

2.继承性

结构:不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed .

类:完全可扩展的,除非显示的声明sealed 否则类可以继承其他类和接口,自身也能被继承

注:虽然结构不能被继承 可是结构能够继承接口,方法和类继承接口一样

3.内部结构:

结构:

没有默认的构造函数,但是可以添加构造函数

没有析构函数

没有 abstract sealed(因为不能继承)

不能有protected 修饰符

可以不使用new 初始化

在结构中初始化实例字段是错误的

类:

有默认的构造函数

有析构函数

可以使用 abstract sealed

protected 修饰符

必须使用new 初始化

 

22.什么是SOAP,有哪些应用。

:SOAPSimple ObjectAccess Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。这种相互通信采用的是XML格式的消息

 

23.常用的调用webservice方法有哪些?

可以从浏览器、ASP页或其他WEB服务调用可以使用HTTP-GET   HTTP-POST访问WEB服务也可以从ASP页或其他WEB服务向其他WEB服务发出SOAP请求GETPOST  SOAP 使用WEB服务代理

 

24  私有程序集与共享程序集有什么区别?

一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集通常存储在全局程序集缓存(Global AssemblyCache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如.NET Framework类。

 

25  请解释进程与线程的区别?进程与程序的区别?

      一般,一个应用程序对应于一个或多个进程,可以把进程看作是该应用程序在*作系统中的标识;而一个进程通常由多个线程组成,而线程是*作系统为该应用程序分配处理时间的最小单元。

 

26  CLRIL分别是什么含义?

      CLR:公共语言运行时,类似于Java中的JVMJava虚拟机;在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是CLRCLR将直接与*作系统进行通信,而编程语言如C#.NET将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性,可以这样看:CLR就是具体的编程语言如:C#.NET*作系统之间的翻译,同时它为具体的编程语言提供了许多资源:

IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;所有.NET源代码(不管用哪种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时(Just-In-TimeJIT)编译器处理成为机器码,被解释及执行。

 

27.什么叫做SQL注入,如何防止?请举例说明。

     利用sql关键字对网站进行攻击。过滤关键字'

 

 

28.请叙述类与结构的区别。

  1)、结构是值类型;

  2)、结构不支持继承;

  3)、结构不能定义默认的构造函数;

  4)、结构不能定义析构函数;

  5)、结构不能使用初始值设置域值。

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

术语

定义

Windows  

提供有关如何将 Windows 身份验证与 Microsoft Internet 信息服务 (IIS) 身份验证结合使用来确保 ASP.NET 应用程序安全的信息。

Forms  

提供有关如何使用您自己的代码创建应用程序特定的登录窗体并执行身份验证的信息。使用 Forms 身份验证的一种简便方法是使用 ASP.NET 成员资格和 ASP.NET 登录控件,它们一起提供了一种只需少量或无需代码就可以收集、验证和管理用户凭据的方法。有关更多信息,请参见使用成员资格管理用户 ASP.NET 登录控件概述

Passport  

提供有关由 Microsoft 提供的集中身份验证服务的信息,该服务为成员站点提供单一登录和核心配置文0件服务。

 

30..请问: String类与StringBuilder类有什么区别?(简答)

a)    string是个独特的基本数据类型,它是基本数据类型中唯一的引用类型。StringBuilder也是引用类型;

b)    string虽然是引用类型,但其分配一般不使用new表达式,而StringBuilder需要使用new表达式;

c)    string.Empty表示空字符串,不要用“”,由于string.Empty的定义为public static readonlystring Empty,编译时会转化成“”,但是string.Empty是一个常数,“”是一个字符串对象,对字符串对象进行运算总是很慢的。使用newStringBuilder()表示空的StringBuilder

d)    使用string或者StringBuilder前要检查字符串是否为nullnull意味着字符串没有赋值,没有分配内存;

e)    使用Length来检查检查String或者StringBuilder的长度,如果为0表示空字符;

f)    string的值存放在常量池中,引用置于栈上; StringBuilder的值存放在堆中,引用存放在栈上;

g)    任何对string的修改都会创建一个新string对象;而StringBuilderAppend方法只是修改最初分配的空间上的数据,并能动态改变容量;

h)    需要按引用传递两个参数才能交换两个string或者StringBuilder对象;

频繁进行字符串连接操作时,使用StringBuilder来改善性能,连接操作越频繁,差别越明显。

31.请叙述属性与索引器的区别。

     属性                                  索引器    

通过名称标识                           通过签名标识。    

通过简单名称或成员访问来访问。         通过元素访问来访问。    

可以为静态成员或实例成员。             必须为实例成员。    

属性的 get 访问器没有参数。             索引器的get访问器具有与索引器相同的形参表。    

属性的 set访问器包含隐式valu参数。      除了value参数外,索引器的 set 访问器还具有与索引器相同的形参表。

 

32.请叙述constreadonly的区别。

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

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

 

33.重载与覆盖的区别

1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。

2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。

3、覆盖要求参数列表相同;重载要求参数列表不同。

4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。

 

34、在C#中,string str = null string str = ”。

string str = null 是不给他分配内存空间,string str ="" 给它分配长度为空字符串的内存空间.

 

35  Internal修饰符有什么含义?

internal数据访问修饰符,表示对所修饰的成员在当前程序集内可以进行没有任何限制的访问;但在当前程序集外部则不能进行访问,其可访问性级别低于public ,高于protected

 

36  JAVA的代码是半编译半解释的,C#的代码是否也是这样

C#中对于程序代码的处理很类似于Java中的程序代码处理机制;也可以称作半编译半解释,具体为:所有.NET源代码(不管用哪种语言编写)在进行编译时都被编译成IL。在应用程序运行时被即时(Just-In-TimeJIT)编译器处理成为机器码,被解释及执行。

 

37  什么是程序集和应用程序域?

程序集(Assembly)是一个由类型定义,数据文件和资源文件组成的逻辑集合。每个程序集都包含一个程序集清单,该清单通常被附加在某个文件头上,也可以设置单独建立一个文件来包含该清单。

应用程序域是CLR中提供代码运行范围,错误隔离和安全设置隔离的逻辑单元,功能类似于操作系统的进程。一个或多个应用程序域在一个操作系统的进程中运行,应用程序域的创建和销毁所需的开销,相对于操作系统进程较小。但和系统进程一样,应用程序域之间的数据共享相当困难。

 

38  请解释进程与线程的区别?进程与程序的区别?

一般,一个应用程序对应于一个或多个进程,可以把进程看作是该应用程序在*作系统中的标识;而一个进程通常由多个线程组成,而线程是*作系统为该应用程序分配处理时间的最小单元。

 

39  CLRIL分别是什么含义?

CLR:公共语言运行时,类似于Java中的JVMJava虚拟机;在.Net环境下,各种编程语言使用一种共同的基础资源环境,这就是CLRCLR将直接与*作系统进行通信,而编程语言如C#.NET将尽量避免直接与*作系统直接通信,加强了程序代码的执行安全性;

40  对象能否调用静态方法

不能。对于类内部定义的静态变量及静态方法,该类的对象均不能调用。

 

41 .请解释ASP.NET中以什么方式进行数据验证

   非空验证(RequiredFieldValidator)       比较验证(CompareValidator)

范围验证(RangeValidator)             正则表达式验证(RegularExpressionValidator)

自定义验证控件(CustomValidator)      集中验证信息处理控件(ValidationSummary)

 

42  WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。

web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件

自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到服务端只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件

 

43  Session的存储方式和设置方法

Session数据一共有四种存储方式,分别为存储在IIS进程中,状态服务器中,SqlServer数据库中和自定义程序中,除了准备必要的服务外(如SQL SERVER数据库服务器),还需要配置站点的Web.config

 

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

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

 

44.什么是ASP.net中的用户控件,他和自定义控件的区别?

用户控件就是.ascx扩展名的东西,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.

1、用户控件只能在当前项目中使用,而自定义控件可以在多个项目中重复使用

2、自定义控件最终编译成动态连接库形式,使用自定义控件时,可以在项目中直接添加对该动态库的引用,然后通过代码创建该自定义控件

3、如果自定义控件从已有的控件继承而来,则可以在已有的控件的OnPaint事件中重绘该控件的外观

 

45.列举一下你所了解的XML技术及其应用

xml可以用来做网页(xslt)

xml可以当作数据库

xml可以用来保存对象的系列化(web服务好象是基于这个的)

 

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

对象

说明

Connection

建立与特定数据源的连接。 所有 Connection 对象的基类均为 DbConnection 类。

Command

对数据源执行命令。 公开 Parameters,并可在 Transaction 范围内从 Connection 执行。 所有 Command 对象的基类均为 DbCommand 类。

DataReader

从数据源中读取只进且只读的数据流。 所有 DataReader 对象的基类均为 DbDataReader 类。

DataAdapter

使用数据源填充 DataSet 并解决更新。 所有 DataAdapter 对象的基类均为 DbDataAdapter 类。

Transaction 将命令登记在数据源处的事务中

CommandBuilder一个帮助器对象,它自动生成 DataAdapter 的命令属性或从存储过程中派生参数信息,并填充 Command 对象的 Parameters 集合

ConnectionStringBuilder  一个帮助器对象,它提供一种用于创建和管理由 Connection 对象使用的连接字符串的内容的简单方法

 

47.如何理解委托?

委托类似于 C++ 函数指针,但它是类型安全的。

委托允许将方法作为参数进行传递。

委托可用于定义回调方法。

委托可以链接在一起;例如,可以对一个事件调用多个方法。

 

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

Configuration,Sqlconnection,Sqlcommand

 

49.UDP连接和TCP连接的异同。

UDP 传输速度快但不安全

TCP 传输速度相比UDP而言慢一些 但是安全

 

50.什么是code-Behind技术。

ASPX,RESXCS三个后缀的文件,这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理

 

51.如何理解.net中的垃圾回收机制。

.NETJ2EE中的垃圾回收不同,在J2EE中,垃圾回收要写一大堆代码来处理,但是。NET中将会自动处理。垃圾回收就是将占用在内存中用不到的东西回收从而释放内存。

 

52.概述反射和序列化

   反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性

  序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

 

53.概述o/r mapping 的原理

     利用反射,配置 将类于数据库表映射

 

54.sealed修饰的类有什么特点

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

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

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

 

55.概述.NET里对 remoting webservice 两项技术的理解和实际中的应用。

远程逻辑调用,remoing接口只能用在.net

 

56. EXEDLL之间的区别?

EXE可以直接执行,DLL是动态链接库,不能被直接执行,附加到某个进程中才能执行.

 

57. 什么是强类型,什么是弱类型,那种更好些为什么?

强类型Java,C#,  强类型在一块内存上定义了某种类型之后无法改变起类型的,例如string str;那么str不能当作int类型来使用,可以使用强制类型转化,弱类型:javascript,弱类型把一块内存上定义为多种类型

 

58.阐述面向接口、面向对象、面向方面编程的区别

面向接口:通过接口规范对象的行为,它属于面向对象的一部分

面向对象:继承,封装,多态  特点:代码好维护,安全,隐藏信息

面向方面编程:将不同模块中的相似之处分离出来,在集合成一个“方面”

 

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

Property:是一个方法是GETSET的组合,一个是读,一个是写。

Attribute :是一个对象,作用在于两个方面。一个是影响编译器的形为,另一个是把描述信息写入Assembly中。

 

60.你对web service的体会?

答:如果自己写的一些程序也希望别人可以通过Web服务来使用,也可以把自己编写的方法贴上标签[WebMethed]来实现Web 服务。[是当编写程序时,希望实现一些别的网站已经实现过的,也用Web服务可视成XML语言的编码。可以使用别人的编码生成的XML找到自己需要的信息,来实现自己编写的程序的一些功能。

  原理:

利用SOAP(简单对象访问协议)http上执行远程方法的调用,也可以使用WSDLWeb服务描述语言)来完成完整的描述Web服务,然后用UDDI注册各个服务提供商提供的服务,以便共享他们

61. What  is the  Com+?  How does it work?

com+componment objectmodel)它解决了两个工作中的问题:

1 在以前,如果多个应用程序要使用一个函数,那么这个函数需要放在多个可执行文件中,既占用了大量的空间,

2 当函数发生问题时,需要修改每一个可执行文件中的函数,这样就浪费了大量的时间

    当你使用了com+以后,这些问题应刃而解,它的好处就是可以提高的代码的重用,有利于分布式开发,而且互相不会影响

    而且它可以进行事务处理,可以保证数据可一至性,准确性,它一般会用在多个数据源的事务中,它可以保证数据的正确,一直;

    它的缺点: 版本号问题,详细地计划必须有;

 

62.讲一讲你理解的web service,.net framework中,怎么很好的结合xml?

Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API. 是自包含、自描述、模块化的应用 可扩展的标记语言XML,是Web Service平台中表示数据的基本格式.通过SOAP!

 

63.什么是弱引用、强引用?

弱引用:即在引用对象的同时仍然允许对该对象进行垃圾回收。

强引用:垃圾回收堆可管理所有对象类型。此堆可监视对象的整个生存期,并且仅当程序的任何部分都不引用这些对象时才将其释放

 

 

64.参数传值和参数传引用的区别

把值作为参数传递时,不会影响到原函数中变量的值,实际上是将该变量值的副本传递给调用的函数,

而用ref关键字进行参数传引用时,传递是变量的地址,类似指针的概念.

 

65.ASP.NETASP相比,主要有哪些进步?

asp解释形、它是依赖于浏览器   asp.net编译型、可以和后台代码是分开的、不依赖与浏览器;

        

66.什么是WEB控件?使用WEB控件有那些优势?

   System.Web.UI.Control继承下来的都是Web控件。优势是减少页面复杂度,控件具有重用性。

 

67.大概描述一下ASPNET服务器控件的生命周期

答:初始化  加载视图状态  处理回发数据  加载  发送回发更改通知  处理回发事件  预呈现  保存状态  呈现  处置  卸载

 

68.什么是内存泄漏,怎样最简单的方法判断被存泄漏 ?

内存被分配,但没有被释放,就是内存泄露。在任务管理器里面看到程序占用内存越来越多,却没有减少的迹象,很可能就发生了内存泄露。

 

69.如果出现ASPNET中的事件不能触发可能由于什么原因造成?

可能是表单嵌套,或是事件的委托掉了。

 

70.请解释接口的显式实现有什么意义?

1.由于显式接口成员实现不能通过类或结构实例来访问,因此它们就不属于类或结构的自身的公共接口。当需在一个公用的类或结构中实现一些仅供内部使用(不允许外界访问)的接口时,这就特别有用。

2.显式接口成员实现可以消除因同时含有多个相同签名的接口成员所引起的多义性。如果没有显式接口成员实现,一个类或结构就不可能为具有相同签名和返回类型的接口成员分别提供相应的实现,也不可能为具有相同签名和不同返回类型的所有接口成员中的任何一个提供实现。

 

71.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用SessionCookieApplication,您有几种方法进行处理?

答:JavaScript / Cache / QueryString/数据库/全局变量/cache缓存技术

 

72.你对微软.net企业库了解?都包括那些模块?

缓存(Caching):允许开发人员在程序中合并一个本地缓存器。

配置(Configuration): 允许程序读入和编写配置信息。

加密(Cryptography):允许开发人员在程序中使用加密技术和信号功能。

数据访问(Data Access):允许开发人员在程序中使用标准的数据库功能。

异常处理(ExceptionHanding):允许开发人员和规范制定者建立一套用于 处理异常的统一策略。

日志和规范应用程序(Logging andInstrumentation ):允许开发人员在程序中加入日志和规范应用程序。

安全性(Security):允许开发人员在程序中包括安全性功能。程序可以在不同的情况下使用到安 全性,比如鉴别和批准用户访问数据库,获得任务信息,以及缓存用户信息。

 

 

 

73.传入某个属性的set方法的隐含参数的名称是什么?

Value,它的类型和属性所声名的类型相同。

 

74.如何在C#中实现继承?

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

 

75.C#支持多重继承么?

类之间不支持,接口之间支持。类对接口叫做实现,不叫继承。

 

76.protected修饰的属性/方法在何处可以访问?

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

 

77.私有成员会被继承么?

会,但是不能被访问。所以看上去他们似乎是不能被继承的,但实际上确实被继承了。

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

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

 

78.可以覆写私有的虚方法么?

不可以,甚至子类中无法访问父类中的私有方法。

 

79.能够阻止某一个类被其他类继承么?

可以,使用关键字sealed

 

80.能够实现允许某个类被继承,但不允许其中的某个方法被覆写么?

可以,标记类为public,并标记方法为sealed

 

81.什么是抽象类(abstract class)?

一种不可以被实例化的类。抽象类中一般含有抽象方法,当然也可有具体实现。继承类只有实现过所有抽象类的抽象方法后才能被实例化

 

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

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

 

83.接口(interface)是什么?

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

 

84.为什么不能指定接口中方法的修饰符?

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

 

85.constreadonly有什么区别?

const可以用于局部常量,而readonly,实际是类的initonly字段,显然不能是局部的。

86. 通过超链接怎样传递中文参数?

URL编码,通过QueryString传递,用EnCode编码 DeCode解码

 

87.ADO.NET相对于ADO等主要有什么改进

1:ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序,

2:不使用com

3:不在支持动态游标和服务器端游

4:,可以断开connection而保留当前数据集可用

5:强类型转换

6:xml支持

 

88.C#中的委托是什么?事件是不是一种委托?

委托是一个可以对方法进行引用的类,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用。这样,委托就等效于一个类型安全函数指针或一个回调。事件是一种委托

 

89.XML HTML 的主要区别

1. XML是区分大小写字母的,HTML不区分。

    2. HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>之类的结束       标记。在XML中,绝对不能省略掉结束标记。

    3. XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用       查找结束标记了。

    4. XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。

    5. HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。

    XML:存储数据,相当一个简易的数据库。区分大小写字母的,

HTML:显示数据,不区分大小写。

 

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

iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate serverSQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获SessionEND事件。

 

91.堆和栈的区别?

堆:由系统管理,随系统产生而存在。有关键字NEW   

栈:依赖于线程,随时线程产生而产生,消完而消完。

共同点:都是一块存储区域。

 

92.&&&的区别。

&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and.

 

93.Collection Collections的区别。

Collection:该成员支持 .NET Framework 结构,因此不适用于直接从代码中使用

Collections命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。

 

94.Static Nested Class Inner Class的不同,说得越多越好

Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。

 

95.HashMapHashtable的区别。

HashMapHashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key,由于非线程安全,效率上可能高于Hashtable.

 

96.什么叫应用程序域?

应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。

 

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

unsafe:非托管代码。不经过CLR运行。

托管代码:运行的。NET平台上。

非托管代码:不是运行在。NET平台上的。

 

98.调用WebService的方法有哪些?

1.使用WSDL.exe命令行工具。

    2.使用VS.NET中的Add Web Reference菜单选项

 

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

服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。

它是一个远程调用。可以用HTTPTCP。等协议进行传输数据,而Web service只能用HTTP

 

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

WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。

Web 服务是通过XML传输数据,是基于XML的,所以它是跨平台的,通过HTTP协议通信。

Remoting是基于。.net平台的,传输二进制数据,所以速度快,可以走多种协议。

Web Service通过网络提供服务,信息的传送是XML数据包,是用SOAP封装的,是通过HTTP传输的。

 

101.GC是什么? 为什么要有GC?

GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:

  System.gc()          Runtime.getRuntime().gc()

 

102..net中,配件的意思是?

答:Assembly程序集。(dll.exe)(中间语言,源数据,资源,装配清单)

 

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

         DataSet:数据存储器。

    DataCommand:执行语句命令。

DataAdapter:数据的集合,用语填充。

 

104.什么是虚函数?什么是抽象函数?

虚函数:没有实现的,可由子类继承并重写的函数。抽象函数:规定其非虚子类必须实现的函数,必须被重写。

虚函数:在子类可以重新定义。抽象函数:不能实现.

 

105.什么是强命名?

RTTI:类型识别系统。

Dll+版本号+文化背景+public key Token组合起来就可以生成强命名程序集

 

106.<%=...%><%#... %>的区别

<%  %>是服务器端脚本块;<%# &nbsp; %>是控件的属性被绑定到包含单个记录的表达式

 

107. WebService的体会?

         特殊的web应用程序,http协议,80端口,按照soap协议xml协议进行封装,传递的是xml的信息

好处:跨平台,无处不到

缺点:速度慢,服务器压力大

 

108.向服务器发送请求有几种方式?

客户端向SERVER请求有: (1)Post以表单形式提交 (2)Get QueryString形式提交 get一般为链接方式,post一般为按钮方式

 

109.怎样理解静态变量?

静态变量随类的诞生而诞生,随类的销毁而销毁。

static 定义了静态变量,静态变量在类的实例中共享,不管有多少个实例,该类的静态变量始终只有一个。

静态变量很适合做为全局变量使用。静态变量在一定程度上破坏了OO的完整性。

 

110.你知道Remoting中的SingletonSinglecall的区别吗?

  SingleCall 每个传入的消息由新的对象实例提供服务。 

  Singleton 每个传入的消息由同一个对象实例提供服务。

 

111.outref的区别

out关键字[输出型参数],指定给定的参数是一个输出参数,它也可以在函数结束时将值返回给调用的变量,out在方法调用时可以不用初始化,在返回时必须初始化。

ref关键字[引用型参数],声明为ref的参数变量传递的是指针[指向实际内存地址]的地址

   区别:

     1.把未赋值的变量用ref参数时非法的,而out可以.

     2.在使用out时,该参数必须是看作还未赋值的,如果对一个已经赋值的变量使用out参数,则该值在函数调用的过程中,存储在该变量中的值会在执行时丢失.

 

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

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

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

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

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

 

113.ApplicationSessionCookieViewStateCache等变量的区别是什么?

Application是公共的,所有人都能看到,所以可以用来做聊天室,

session是私有的,每个客户端都存在一个不同的session 生存期正常是20分钟,也可以自己设定为1分钟或2个小时,它存在于服务器端

cookie是保存在本机的文件,记录短小的信息,除非你让cookie过期,否则会一直存在。

viewstate类似于asp中的hidden控件,用来记录页面中的控件的状态的,主要在页面间信息传递时用,

cache是缓存,用来记录已经执行过的一些数据,比如读取数据库,目的是加速显示,减少服务器的负担,过期时间也是可以自己设定的。

 

114..什么是装箱和拆箱?

从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。他本质上是值类型在转换到Object时引发的堆寨和堆的一系列移动操作。

 

115.接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)?

接口可以继承接口。抽像类可以实现(implements)接口,抽像类是否可继承实体类,但前提是实体类必须有明确的构造函数。

 

116.是否可以继承String?

String类是final类故不可以继承。

 

117.数组有没有length()这个方法? String有没有length()这个方法?

数组没有length()这个方法,有length的属性。String有有length()这个方法

 

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

iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate serverSQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获SessionEND事件。

 

119.成员变量和成员函数前加static的作用?

它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。

 

120.软件开发过程一般有几个阶段?每个阶段的作用?

需求分析,架构设计,代码编写,QA,部署

 

121.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.

         string inputStr=" xxxx ";

inputStr=Regex.Replace(inputStr.Trim(),"*"," ");

 

122.什么是XML

XML即可扩展标记语言。eXtensible MarkupLanguage.标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,即可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XMLXSLXPath等。

 

 

123.列举一下你所了解的XML技术及其应用

xml用于配置,用于保存静态数据类型.接触XML最多的是web Services..config

 

124..netB/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?

        一般为3层数据访问层,业务层,表示层。

        数据访问层对数据库进行增删查改。

        业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。

        表示层为了与用户交互例如用户添加表单。

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

缺点:  增加成本。

 

125 什么情况用HTML控件,什么情况用WEB控件,并比较两者差别

  客户端表现用html控件,如果想和server端交互,那么加上runat=server,它就成了服务器端控件,但它没有web控件的很多方法和属性,如果你需要用到,那么还是用web   controls

 

126.ADOADO.NET的区别:

ADO使用OLE DB接口并基于微软的COM技术而ADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系架构。ADORecordset存储,而ADO.NET则以DataSet表示。Recordset看起来更像单表,如果让Recordset以多表的方式表示就必须在SQL中进行多表连接。反之,DataSet可以是多个表的集合。ADO 的运作是一种在线方式,这意味着不论是浏览或更新数据都必须是实时的。

ADO.NET则使用离线方式,在访问数据的时候ADO.NET会利用XML制作数据的一份幅本

ADO.NET的数据库连接也只有在这段时间需要在线。

 

127.new 关键字用法

(1)new  运算符  用于创建对象和调用构造函数。

(2)new  修饰符  用于向基类成员隐藏继承成员。

(3)new  约束  用于在泛型声明中约束可能用作类型参数的参数的类型。

 

128.堆和栈的区别:

栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。

         堆:一般由程序员分配释放。用newmalloc等分配内存函数分配得到的就是在堆上。

 

129成员变量和成员函数前加static的作用:

它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。

 

130.如果做到编码规范?

方法,类,变量尽量写有意义的单词。注释有写清楚,但不要罗唆

 

131.什么是特性,如何自定义特性?

特性是一种特殊的用以申明式编程的机制,特性类型是一族继承自System. Attribute的类型。在编译时特性的使用会被写入元数据中

 

132.委托可以理解为指向一个函数的引用。

是,是一种特殊的委托

 

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

 

134、对数据的并发采用什么办法进行处理较好。

可以控制连接池的连接数量条件好的话 可以用负载平衡

 

135DateTime是否可以为null?

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

 

136 什么叫JIT?什么是NGEN?它们分别有什么限制和好处?

Just In Time 及时编译,它是在程序第一次运行的时候才进行编译,而NGEN是所谓的pre-jit,就是说在运行前事先就将生成程序集的本机镜像,并保存到全局缓存中,适用NGEN可以提高程序集的加载和执行速度,因为它可以从本机映像中还原数代码和数据结构,而不必像jit那样动态生成它们。感觉和缓存的道理大同小异,也就是传说中的预编译。

 

137Finalize()Dispose()之间的区别?

Finalize()用于释放非托管资源,Dispose()用于释放托管资源

 

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

ADOADO.NetMDAC(MicrosoftData Access Components)Microsoft SQL Server OLE DB ProviderMicrosoft Jet OLE DB ProviderDesktop DatabaseDrivers ODBC DriverVisual FoxPro ODBC Driver

 

139..活动目录的作用。

Active Directory存储了有关网络对象的信息,并且让管理员和用户能够轻松地查找和使用这些信息。Active Directory使用了一种结构化的数据存储方式,并以此作为基础对目录信息进行合乎逻辑的分层组织。

 

140.ASP.NET里命名空间的定义;

命名空间是类的逻辑分组,它组织成一个层次结构——逻辑树。这个树的根是System ASP.NET页面中,可以默认的使用某些命名空间中包含的类,称做标准的ASP.NET命名空间。对于其他命名空间,则必须显式地导入

 

141.  .net中类与对象的关系;

万物都是对象,而类是对象的一个编程语言概念上的描述

 

142. IspostBack的作用,当其值为TRUEFALSE时的作用;

IspostBack可以防止每次加载页面时都绑定一些数据,第一次加载页面时IspostBack的值是false,以后每次加载页面时都是true

 

143.:接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?

接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。抽象类可以提供某些方法的部分实现,接口不可以.抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。再抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。此外接口不能包含字段、构造函数、析构函数、静态成员或常量。

 

 

144.谈谈final, finally,finalize的区别。

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

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

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

 

145.三层架构的分析

MVC(模型-视图-控制器)

视图(View)代表用户交互界面.

模型(Model):就是业务流程/状态的处理以及业务规则的制定,业务模型还有一个很重要的模型那就是数据模型.

控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求.

 

 

146.get  post的区别

Get:是以实体的方式得到由请求URI所指定资源的信息,如果请求URI只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。

Post:用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它当作请求队列中请求URI所指定资源的附加新子项,Post被设计成用统一的方法实现下列功能:

1:对现有资源的解释

2:向电子公告栏、新闻组、邮件列表或类似讨论组发信息。

3:提交数据块

4:通过附加操作来扩展数据库

get是把参数数据队列加到提交表单ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

 

147.  如何实现一个自定义类的序列化

     答:二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您可以将对象序列化到流、磁盘、内存和网络等等。远程处理使用序列化“通过值”在计算机或应用程序域之间传递对象。

XML 序列化仅序列化公共属性和字段,且不保持类型保真度。当您要提供或使用数据而不限制使用该数据的应用程序时,这一点是很有用的。由于 XML 是一个开放式标准,因此,对于通过 Web 共享数据而言,这是一个很好的选择。SOAP 同样是一个开放式标准,这使它也成为一个颇具吸引力的选择

 

148.  ASP.NET中内置对象是什么?

Web 应用程序运行时,ASP.NET 将维护有关当前应用程序、每个用户会话、当前 HTTP 请求、请求的页等方面的信息。ASP.NET 包含一系列类,用于封装这些上下文信息。

Response 提供对当前页的输出流的访问。您可以使用此类将文本插入页中、编写 Cookie,等等。有关详细信息,请参见System.Web.UI.Page.Response 属性。

HttpResponse

Request     提供对当前页请求的访问,其中包括请求标题、Cookie、客户端证书、查询字符串等。您可以使用此类读取浏览器已经发送的内容。有关详细信息,请参见System.Web.UI.Page.Request 属性。        HttpRequest

Context    提供对整个当前上下文(包括请求对象)的访问。您可以使用此类共享页之间的信息。有关详细信息,请参见System.Web.UI.Page.Context 属性。    HttpContext

Server      公开可以用于在页之间传输控件的实用工具方法,获取有关最新错误的信息,对 HTML 文本进行编码和解码,等等。有关详细信息,请参见System.Web.UI.Page.Server 属性。  HttpServerUtility

Application       提供对所有会话的应用程序范围的方法和事件的访问。还提供对可用于存储信息的应用程序范围的缓存的访问。有关详细信息,请参见 ASP.NET 应用程序状态。

HttpApplicationState

Session      为当前用户会话提供信息。还提供对可用于存储信息的会话范围的缓存的访问,以及控制如何管理会话的方法。有关详细信息,请参见 ASP.NET 会话状态。

HttpSessionState

Trace         提供在 HTTP 页输出中显示系统和自定义跟踪诊断消息的方法。有关详细信息,请参见 ASP.NET 跟踪。

TraceContext

 

149、请描述一下.Net架构

Microsoft .NET 框架是生成、部署和运行 Web 服务及应用程序的平台。它提供了一个生产率高且基于标准的多语言环境,用于将现有投资与下一代应用程序和服务集成,同时提供了解决 Internet 规模应用程序的部署和操作难题的灵活性。.NET 框架由三个主要部分组成:公共语言运行库、统一类库的分层集合和称为 ASP.NET Active ServerPages 组件化版本'

 

150、请描述ViewState Session有什么区别

         ViewState获取状态信息的字典,这些信息使您可以在同一页的多个请求间保存和还原服务器控件的视图状态。

Session 允许通过将对象存储在 Web 服务器的内存中在整个用户会话过程中保持任何对象。

 

151.  您要创建asp.net应用程序用于运行某公司内部的web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个http代码错误时它可以显示一个自定义的错误页面给用户。您想要花最少的代价完成这些目标,您应该怎么做?

答:在配置文件里配置

    <customErrorsmode="RemoteOnly"defaultRedirect="GenericErrorPage.htm">

            <errorstatusCode="403" redirect="NoAccess.htm" />

            <error statusCode="404"redirect="FileNotFound.htm" />

</customErrors>

 

152   什么时候可以用foreach语句代替while循环?

         要循环的实现了IEnumerable接口或实现了GetEnumerable方法的类。不知道循环条件。

 

153.什么是友元函数?

         friendly声明,可以访问protect级别方法

 

 

 

 

154.ASP.NET页面生命周期页面事件的名称

答:

a)      初始化对象

b)      导入Viewstate数据

c)      LoadPostData处理Postback数据

d)      导入对象

e)      RaisePostBackChanged事件

f)       处理客户端PostBack事件

g)      预先呈递对象

h)      保存ViewState

i)       呈递给Html

j)       销毁对象

 

155.ASP.NET页面缓存数据的几种形式

整页缓存和部分页缓存

 

156.  请写出。NET分页的程序思路,或者有什么控件可以直接分页(写出该控件的名称和如何使用该控件)?

a)      确定数据源

b)      查询的字段

c)      查询条件

d)      排序

e)      查询的记录总数

f)       每页显示多少条记录

g)      页面号

 

157.  白盒测试和黑盒测试

答:黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。

白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有                   内部成分是否以经过检查。

 

158.  ASP.NET的缓冲机制

         减轻服务器压力,及其优化,不要使用不必要的session,不使用不必要的Server Control,不使用不必要的ViewState,不要用Exception控制程序流程,禁用VBJscript动态数据类型,使用存储过程完成数据访问,只读数据访问不要使用DataSet,关闭ASP.NETDebug模式,使用ASP.Net OutputCache缓冲数据:页面缓冲,片断缓冲,数据缓冲

 

159.  分布式支持系统的实现

         分布式软件系统(DistributedSoftware Systems)是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等

 

 

 

160.  什么是串行化

串行化也称序列化,持久化。比如 ,你通过new()方法产生一个对象,这个对象是存在内存里的,存在内存里的东西迟早是要被销毁的。为了使一些对象持续下来,就需要把这些对象保存在本地硬盘、网络等。这一个把内存中的对象保存到硬盘中的过程,就是对象持久化的过程,也就是你说的串行化。

 

161.ADO.net的几大对象

ConnectionCommandDataAdapterDataSetDataReaderconfiguration

 

162、SQLSEVER有哪些函数?

内置函数,用户自定义函数(标量函数,内嵌表值函数,多语句表值函数)。

 

163、不对数据库进行操作不用sessionAppliction传值,你怎样把值传到其他页面?

responsequery),cookieinput typehidden

 

164、传值与传址的区别?

传值:可以在方法内改变其值,但不会改变此参数变量的引用对象

传址:可以改变其值,同时也可以改变其对象引用

 

165、你对软件工程与软件管理的看法?

使软件象流水线一样做,好维护,软件好服用,团队好协作

 

166. .NET框架概述

Microsoft .NET 框架是生成、部署和运行 Web 服务及应用程序的平台。它提供了一个生产率高且基于标准的多语言环境,用于将现有投资与下一代应用程序和服务集成,同时提供了解决 Internet 规模应用程序的部署和操作难题的灵活性。.NET 框架由三个主要部分组成:公共语言运行库、统一类库的分层集合和称为 ASP.NET Active ServerPages 组件化版本

 

167.什么是中间语言(IL)?它的作用?

代码在执行前都要被编译为托管代码,与CPU无关的指令集。

    其作用:支持平台无关性,还支持语言的互操作性。

168. 死锁的必要条件?怎么克服?

  答:系统的资源不足,进程的推进的顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已获得资源不放,进程获得资源时,未使用完前,不能强行剥夺。

169 接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?

  接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类,但是有个条件,条件是,实体类必须要有明确的构造函数。

 

170. 构造器Constructor是否可以被继承?是否可以被Override?

   Constructor不可以被继承,因此不能被重写(Overriding),但可以被重载(Overloading).

171..netwebService实现步骤:

     创建一个webService,生成相应的.asmx文件。

     添加一个通过 Internet 公开和调用的方法。此类方法又称为 [WebMethod]

     部署创建好的webService

     在将要调用webService的项目中添加web引用,生成相应的代理类。

     实例化代理类对象

     通过代理类对象调用相应的WebMethod

172.  ASP.NET中共有几种类型的控件?各有什么区别?

     WEB控件分为:内部控件, 列表控件, 复杂控件, 验证控件

     内部控件--内部控件的使用方法与 HTML 控件相同,它们映射到 HTML 元素并通过使用 runat ="server" 属性在服务器上执行

     列表控件--用于在 Web 页中创建数据列表

     复杂控件-- •当希望控件拥有复杂的功能或使用 HTML 元素无法创建的功能丰富的用户界面时,可以使用复杂控件

     验证控件--输入控件的数据需要进行准确性和取值范围方面的检查

 

173.WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?

可以,其调用过程大致如下:用户使用WEB控件或者html服务端控件,控件的调用方法事件被激发,于是服务器开始自动寻找所匹配的方法代码,当在客户端找到后解释执行客户端的方法代码,完毕后继续返回服务器执行剩余代码.

174.如何处理几十万条并发数据?

答:用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.

175.几十上百万行,如何快速查询出表数据

答:用分页存储过程

 

176.SQL语句左联接与内连接的区别

Inner Join 逻辑运算符返回满足第一个(顶端)输入与第二个(底端)输入联接的每一行。

Left Outer Join 逻辑运算符返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行。它还返回任何在第二个输入中没有匹配行的第一个输入中的行。第二个输入中的非匹配行作为空值返回。

 

177.什么是事务?

答:数据库事务是指作为单个逻辑工作单元执行的一系列操作。

 

178.存储过程的优缺点:

优点:

由于应用程序随着时间推移会不断更改,增删功能,TSQL过程代码会变得更复杂,

1.      StoredProcedure为封装此代码提供了一个替换位置。】

2.      .存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量T-sql语句的代码流量。

3.      可维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。

4.      代码精简一致,一个存储过程可以用于应用程序代码的不同位置。

5.      更好的版本控制,增强安全性:防止 SQL注入

缺点可移植性差

 

179.对单表进行模糊查询,并对其中两列分别进行升序和降序排列(在一个Select语句中)

 select au_id,au_lname  from dbo.authors where state like '%CA%'

group byau_id,au_lname

order by au_lnameasc,au_id desc

 

180. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键注意:ID可能不是连续的。)

答:select top 10 from a where  idnot inselect top 30 froma

或:select top 10 from a where  id> (select max(id) from (select top 30 from a) as b)

181.什么是母版页

   母版页本质上是一个用户控件,继承自System.Web.UI.UserControl,他主要起到界面封装及重用的作用。

182. 简述程序集的的加载机制

ClR通过System.Reflection.Assembly.LoadFrom和System.Reflection.Assemblty.Load来主动地加载程序集。前者通过位置而后者通过唯一标识强命名程序集的4个元素来标识程序集。CLR的加载机制和Load方法一致,其内在策略是依次通过版本策略、CODEBASE位置、应用程序域位置来查找程序集

 

183.延迟签名及其作用

                   延迟签名就是指把对强签名程序集的私钥加密和数字签名延迟到实际发布时进行,延迟签名提供了开发测试阶段的效益,也方便了机构和项目管理自己的私钥

 

184. 值类型和引用类型的区别

         所有继承自System.valueType的类型都是值类型,而其他类型都是引用类型。值类型的赋值会产生一个新的数据副本,所有值类型都拥有一个数据副本,而引用类型的赋值则是赋值引用,值类型的对象分配在堆载上,而引用类型的对象是分配在堆上。当比较两个值类型时进行的是内容的比较,而比较引用类型时,进行的是引用比较

 

185.C#中是否由全局变量

   C#中没有传统意义上的全局变量,任何对象都必须属于某个类型。通过公共静态变量,可以实现全局变量的所有功能。

 

186.C#方法的参数可以有哪几种传递方式

         一共有三个可选关键字可以修饰方法的参数:refoutparamsRefout都实现了参数的引用,区别在于ref要求参数在传入前被初始化,而out要求参数在方法返回前被初始化。Params实现了参数数目可变的方法

 

187.简述属性的特点及属性和方法的异同

   属性是指一种有返回值但无参数的一种特殊方法、容许程序员方便地为成员变量提供一对get/set方法,属性的使用和公共成员变量完全一致,却拥有更好的扩展性!

188.如何在StringByte[]对象之间进行转换

   字符串和字节数组的转换依赖于编码方式的使用,不同的编码标准将使用不同的算法进行。

System.Text.Encoding类型提供了大部分常见的编码算法支持。用以进行字符串和字节数组之间的转换。

 

189.什么是字符串池机制

  字符串池机制致力于改善程序的性能,CLR会保留程序中出现过的字符串对象的集合,并且在需要新的字符串时,先检查已有集合,在查找成功时返回已有对象的引用。

  字符串机制可以通过程序集元数据特性进行控制,C#默认的机制是打开字符串池机制。

 

189.什么是流、.net中有哪些流?

   流是对于字节集合对象的一种操作。常见的有FileStreamNetworkStream,MemoryStream

 

190.GridView是否能嵌套使用

GridView和其前身DataGrid一样,都支持模板列。程序员可以自定义模板列的控件和排版样式,只要在一个模板列内再放入一个GridView控件,就可以实现GridView的嵌套使用

 

191.什么是关系型数据库

         关系型数据库是支持采用了关系模型的数据库,简单的说,关系模型就是指二维表模型。相对于其他模型来说,关系型数据库具有理解更容易,使用更简单的特点,维护更简单等优点

 

192、对数据库SQL2005ORACLE熟悉吗?

   SQL2005是微软公司的数据库产品。是一个RDBMS数据库,一般应用在一些中型数据库的应用,不能跨平台。

   ORACLEORACLE公司的数据产品,支持海量数据存储,支持分布式布暑,支持多用户,跨平台,数据安全完整性控制性能优越,是一个ORDBMS,一般用在大型公司。

 

193、如何只显示重复数据,或不显示重复数据

   显示重复:select * from tablename groupby id having count(*)>1

   不显示重复:select * from tablename groupby id having count(*)=1

 

194、什么是数据库的映射

   就是将数据库的表与字段对应到模型层类名与属性的过程

 

195、写分页有哪些方法,你一般用什么方法?用SQL语句写一个分页?

   如何用存储过程写分页?

   SQLSERVER中使用TOP分页,在ORACLE中用ROWNUM,或分析函数ROW_NUMBER

   使用TOP

   select top 20,n.* from tablenamen minus select top 10,m.* from tablename m

   使用分析函数:

    select * from

   (select n.*,row_number()over(order by columnname) num  fromtablename n)

    where num>=10 and num<=20;

   使用过程时,只要将分页的范围用两个参数就可以实现。在ORACLE中,要将过程封装在包里,还要用动态游标变量才能实现数据集的返回。

 

196ORACLE中左连接与右连接

   左连接:LEFT JOIN  右连接:RIGHT JOIN

   select n.column,m.column fromtablename1 n left join tablename2 m

   on n.columnname=m.columnname

   WHERE实现:

   select n.column,m.column fromtablename1 n tablename2 m

   where n.columnname(+)=m.columnname

 

197、什么是反射、序列化、反序列化?事务有几种级别?

    反射是在程序运行时动态访问DDL的一种方式。序列化是将对象对二进制、XML等方式直接向文件的存储。反序列化是将存储到文件的对象取出的过程。事务的级别的三种:页面级、应用程序级、数据库级。

198、数据测试如何测试?

   PLSQL里对过程或函数可能通过专用的测试工具,通过对

 

199、用事务的时候,如果在业务逻辑层中,调用数据库访问层中的方法,访问层中有很多类,类又有很多方法,每个方法都要实现,那么如何处理?

通用数据访问层的实现

 

200、什么时候会用到触发器

   A安全管理、B日志管理、C复杂业务逻辑实现

 

201、如何在数据库中显示树控制?

   用父ID与子ID来实现

 

202、如何实现数据库的优化?

    A、调整数据结构的设计。这一部分在开发信息系统之前完成,程序员需要考虑是否使用ORACLE数据库的分区功能,对于经常访问的数据库表是否需要建立索引等。

    B、调整应用程序结构设计。这一部分也是在开发信息系统之前完成,程序员在这一步需要考虑应用程序使用什么样的体系结构,是使用传统的Client/Server两层体系结构,还是使用Browser/Web/Database的三层体系结构。不同的应用程序体系结构要求的数据库资源是不同的。

    C、调整数据库SQL语句。应用程序的执行最终将归结为数据库中的SQL语句执行,因此SQL语句的执行效率最终决定了ORACLE数据库的性能。ORACLE公司推荐使用ORACLE语句优化器(Oracle Optimizer)和行锁管理器(row-level manager)来调整优化SQL语句。

    D、调整服务器内存分配。内存分配是在信息系统运行过程中优化配置的,数据库管理员可以根据数据库运行状况调整数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小;还可以调整程序全局区(PGA区)的大小。需要注意的是,SGA区不是越大越好,SGA区过大会占用操作系统使用的内存而引起虚拟内存的页面交换,这样反而会降低系统。

    E、调整硬盘I/O,这一步是在信息系统开发之前完成的。数据库管理员可以将组成同一个表空间的数据文件放在不同的硬盘上,做到硬盘之间I/O负载均衡。

    F、调整操作系统参数,例如:运行在UNIX操作系统上的ORACLE数据库,可以调整UNIX数据缓冲池的大小,每个进程所能使用的内存大小等参数。

 

203、能不能设计数据库?如何实现数据库导入与导出的更新

   使用POWERDISINE工具的使用,一般满足第三范式就可以了。EXPIMP数据库的逻辑导入与导出

 

204:维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么

     尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策

205.描述弱类型集合、强类型集合、泛型集合的演变过程?

i)    Array可以约束集合内的元素类型,但调整大小困难,增加元素困难;

j)    ArrayList是一个可动态维护长度的集合;但ArrayList的对象存储不易控制,类型转换容易出错;

k)    CollectionBase集合可以约束集合内的元素类型,访问时不需类型转换;但CollectionBase对于每个实体类都需要编写大量的集合代码;

l)    List<T>可以约束集合内的元素类型,访问时不需类型转换;但List<T>搜索数据时必须遍历整个集合;

m)    Dictionary<K,V>可以象索引器那样通过关键字获取该对象,可以约束集合内的元素类型,访问时不需类型转换。

名称

定义方式

可以动态增删

可以检查类型

无需装箱拆箱

无需额外编码

对象数组

Student[]

N

Y

Y

Y

动态数组

ArrayList

Y

N

N

Y

强类型集合

CollectionBase

Y

Y

Y

N

泛型集合

List<T>

Y

Y

Y

Y

泛型字典

Dictionary<K,V>

Y

Y

Y

Y

 

206.如何取出序列化文件中的所有对象?

n)    序列化的作用:配置文件,视图状态,Web服务,等等。

o)    序列化的原理:序列化是将对象的状态存储到特定存储介质中的过程,可以将对象从一个应用程序发送到另一个应用程序中;反序列化则是从特定存储介质中的数据重新构建对象的过程。

p)    序列化对象:将要存储的对象标记为可序列化[Serializable],使用二进制方式BinaryFormatter存储对象,使用Serialize函数将对象以二进制方式格式化为流。

q)    反序列化单个对象:使用二进制方式BinaryFormatter获取对象,使用Deserialize函数从指定流中获取被格式化的对象。

r)    取出序列化文件中的所有对象:循环使用Deserialize函数从指定流中获取被格式化的对象,直至文件流的当前位置是否到达流末尾。

 

207.选择for循环还是foreach循环?

s)    选择for循环?

        i.     foreach语句生成恰当的代码来迭代数组里所有维数的数据,输入的代码较少;

       ii.     任何循环变量不是数据的长度时,边界检测就会在每一次迭代中发生;如果在for循环外部取出了数组长度值,则把一个边界检测分成了两个;

       iii.      foreach语句中定义的对象强制转化为恰当的类型,这是迭代集合最有效的方法;

       iv.     如果发现数组不具备集合的一些功能、而你又正好要这些功能,你可能把一个数组修改为ArrayList,由于ArrayList长度用Count而非Length,所以代码被破坏;

        v.     Hashtable不能使用索引来访问,只能使用foreach遍历其Keys集合或者Values集合。

b). 选择foreach循环:

                   i.     foreach不能够表示某个范围内的循环,只能使用for循环遍历类似于小写字母这样的结构;

                  ii.     foreach不应用于更改集合内容以避免产生不可预知的副作用。

 

208.穷举与枚举的异同

t)    穷举switch不能贯穿,因为那样将导致不必要的判断;

u)    穷举switch语句可以使用枚举enum来优化,用一些有实际意义的名字代替简单的数字;

v)    enum中数字的定义必须是除 char 以外的任何整型;

w)    enum值强制转换成相应的整型即可得到对应数字;

x)    调用enum值的ToString方法即可得到对应的字符串;

y)    将两个enum值直接相减即可得到差值;

z)    将某个enum+1即可得到下一个;

aa)  将该enumType对象传入到Enum.GetNames方法中即可得到该enum的所有名称;

182.运算符重载和方法重载有什么关系?

a)    方法重载的作用:对不同的对象做同一件事就可以使用同一种方法

b)    使用自定义类的方法对数值进行数学运算时很不直观,而运算符重载在调用时如同直接调用数学运算符;

c)    public static operator +(类 对象名1,类 对象名2)可以使得同一个类的2个对象相加;

d)    public static explicit operator int(类 对象名)可以使得类对象显式转换为int

e)    public static im plicit operator int(类 对象名)可以使得类对象隐式转换为int

f)    一元运算符++--可以被重载;

g)    重载运算符时不会改变它的优先级;

h)    比较运算符如果重载,必须成对重载;

i)    只有在运算对类型具有很直观的意义时才应使用运算符重载。

 

209.委托和事件的关系?

j)    委托提供了一个类型安全的回调定义,你想在两个类之间进行通信,而你又期望比使用接口有更少的耦合性,那么委托是你正确的选择;

k)    多播委托包含了添加在这个委托上的所有单个函数调用,返回值总是委托上最后一个函数调用后返回的值;

l)    可以用事件给你的类型定义一些外部接口,你的类型与其它多个客户进行通信时,为了完成它们的行为,你必须引发事件;

m)    事件内部可以定义add/remove来控制注册过程么;

n)    当需要控制注册过程、定义为控件的事件时必须使用事件而不是委托。

 

210.选择申明式编程还是命令式编程?

o)    与命令式编程相比,申明式编程可以用更简单,更清楚的方法来描述软件的行为。申明式编程就是说用申明来定义程序的行为,而不是写一些指令。在C#中使用特性就是申明式编程;

p)    可以对程序中的类、字段、方法、属性应用特性;

q)    使用Attribute.GetCustomAttribute可以判断一个类是否申明了某个特性;

r)   特性在.NET中的典型应用有ObsoleteWebMethod Serializable

 

211设计类成员时使用属性还是成员变量?

s)    只有属性能够进行数据绑定;

t)    只有属性能够进行数据安全性检测;

u)    只有属性能够进行线程同步;

v)    只有属性能够被定义为抽象的;

w)    只有属性能够在接口中定义;

x)    只有属性能够支持索引器。

212.静态构造函数何时初始化类的静态成员?

y)    静态构造函数一般用于对静态数据的初始化;

z)    静态构造函数只能对静态成员进行初始化;

aa)  静态构造函数只能是私有的,不能添加访问修饰符;

bb)  静态构造函数不能有参数;

cc)  静态构造函数不能被显式调用;

dd)  当类被第一次使用的时候(调用类的实例构造函数;访问类的静态成员),类的静态构造函数自动被调用。

 

213.数据库的设计原理。

1)     原始单据与实体之间的关系

2)     主键与外键

3)     范式标准

       完整性约束

 

214.存储过程和函数的区别

存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。

 

 

215、什么是主键?什么是外键?

主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段与另外一个表格(尽管可能是同一个表格)里的一系列相连的字段。那么这些相连的字段就是外键。

 

216、什么是触发器?SQL Server 2000有什么不同类型的触发器?

 

让未来的数据库开发人员知道可用的触发器类型以及如何实现它们是非常有益的。

触发器是一种专用类型的存储过程,它被捆绑到SQL Server 2000的表格或者视图上。在SQL Server 2000里,有INSTEAD-OFAFTER两种触发器。INSTEAD-OF触发器是替代数据操控语言(Data Manipulation LanguageDML)语句对表格执行语句的存储过程。例如,如果我有一个用于TableAINSTEAD-OF-UPDATE触发器,同时对这个表格执行一个更新语句,那么INSTEAD-OF-UPDATE触发器里的代码会执行,而不是我执行的更新语句则不会执行操作。AFTER触发器要在DML语句在数据库里使用之后才执行。这些类型的触发器对于监视发生在数据库表格里的数据变化十分好用。

 

217、什么是相关子查询?如何使用这些查询?

经验更加丰富的开发人员将能够准确地描述这种类型的查询。相关子查询是一种包含子查询的特殊类型的查询。查询里包含的子查询会真正请求外部查询的值,从而形成一个类似于循环的状况。

 

218、对一个投入使用的在线事务处理表格有过多索引需要有什么样的性能考虑?

你正在寻找进行与数据操控有关的应聘人员。对一个表格的索引越多,数据库引擎用来更新、插入或者删除数据所需要的时间就越多,因为在数据操控发生的时候索引也必须要维护。

 

219.复制表(只复制结构,源表名:a 新表名:b)
SQL: select * into b from a where 1<>1


220
拷贝表(拷贝数据,源表名:a 目标表名:b)
.SQL: insert into b(a, b, c) selectd,e,f from b;


221.
外连接查询(表名1a 表名2b)
SQL: select a.a, a.b, a.c, b.c, b.d,b.f from a LEFT OUT JOIN b ON a.a = b.c

222
日程安排提前五分钟提醒
SQL: select * from
日程安排 where datediff('minute',f开始时间,getdate())>5

223显示文章、提交人和最后回复时间
SQL: selecta.title,a.username,b.adddate from table a,(select max(adddate) adddate fromtable where table.title=a.title) b

 

224.索引的作用?和它的优点缺点是什么?

索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。

 

225。什么是内存泄漏?

一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new等创建对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。

 

226.维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么?

我是这样做的,尽可能使用约束,如check,主键,外键,非空字段等来约束,这样做效率最高,也最方便。其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致性。最后考虑的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。

 

 

227.什么是事务?什么是锁?

事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。

  锁:在所以的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。

 

228.什么叫视图?游标是什么?

答:视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。

229.你能向我简要叙述一下SQLServer 2000中使用的一些数据库对象吗?

你希望听到的答案包括这样一些对象:表格、视图、用户定义的函数,以及存储过程;如果他们还能够提到像触发器这样的对象就更好了。如果应聘者不能回答这个基本的问题,那么这不是一个好兆头。

230.NULL是什么意思?

NULL()这个值是数据库世界里一个非常难缠的东西,所以有不少应聘者会在这个问题上跌跟头您也不要觉得意外。NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。假设您的SQLServer数据库里有ANSI_NULLS,当然在默认情况下会有,对NULL这个值的任何比较都会生产一个NULL值。您不能把任何值与一个 UNKNOWN值进行比较,并在逻辑上希望获得一个答案。您必须使用ISNULL操作符。

231.什么是索引?SQLServer 2000里有什么类型的索引?

任何有经验的数据库开发人员都应该能够很轻易地回答这个问题。一些经验不太多的开发人员能够回答这个问题,但是有些地方会说不清楚。简单地说,索引是一个数据结构,用来快速访问数据库表格或者视图里的数据。在SQLServer里,它们有两种形式:聚集索引和非聚集索引。聚集索引在索引的叶级保存数据。这意味着不论聚集索引里有表格的哪个(或哪些)字段,这些字段都会按顺序被保存在表格。由于存在这种排序,所以每个表格只会有一个聚集索引。非聚集索引在索引的叶级有一个行标识符。这个行标识符是一个指向磁盘上数据的指针。它允许每个表格有多个非聚集索引。

 

原创粉丝点击