您的位置:首页 > 职场人生

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

2010-09-07 17:41 162 查看
(整理).net面试之葵花宝典

1. CLR



CTS



CLS

分别是什么意思?


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

2.

什么是基元类型?


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

3

、简要谈一下您对微软

.NET


构架下

remoting



webservice

两项技术的理解以及实际中的应用。


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
中数据处理时没有进行
Page

IsPostBack
属性判断

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
简单,但可能不支持,可能被伪造

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

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

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

16



override

与重载的区别


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

17



.net

的错误处理机制是什么


try{
可能要出错的代码
}

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

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

18



C

#中接口和类的异同


接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!

而类是负责功能的具体实现!

在类中也有抽象类的定义,抽象类与接口的区别在于:

抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。

但接口是一个行为的规范,里面的所有东西都是抽象的!

一个类只可以继承一个基类也就是父类,但可以实现多个接口

19



DataReader



DataSet

的异同


DataReader

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

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

,
数据
.
对数据库进行回传更新操作
;

20.



c#



using



new

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


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,

有哪些应用。



:SOAP

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

23.

常用的调用

webservice

方法有哪些?


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

POST
SOAP
使用
WEB
服务代理

24




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


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

25




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

?


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

26




CLR



IL

分别是什么含义?


CLR:
公共语言运行时,类似于
Java
中的
JVM

Java
虚拟机;在
.Net
环境下,各种编程语言使用一种共同的基础资源环境,这就是
CLR

CLR
将直接与
*
作系统进行通信,而编程语言如
C#.NET
将尽量避免直接与
*
作系统直接通信,加强了程序代码的执行安全性,可以这样看:
CLR
就是具体的编程语言如:
C#.NET

*
作系统之间的翻译,同时它为具体的编程语言提供了许多资源:

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

JIT
)编译器处理成为机器码,被解释及执行。

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 readonly
string Empty
,编译时会转化成“”
,但是string.Empty
是一个常数,“”
是一个字符串对象,对字符串对象进行运算总是很慢的。使用new
StringBuilder()
表示空的StringBuilder


d)

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

e)

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

f)

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

g)

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

h)

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

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

31.

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


属性

索引器

通过名称标识

通过签名标识。

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

通过元素访问来访问。

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

必须为实例成员。

属性的
get
访问器没有参数。

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

属性的
set
访问器包含隐式
valu
参数。

除了
value
参数外,索引器的
set
访问器还具有与索引器相同的形参表。

32.

请叙述

const



readonly

的区别。


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-Time

JIT
)编译器处理成为机器码,被解释及执行。

37




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


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

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

38




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

?


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

39




CLR



IL

分别是什么含义?


CLR:
公共语言运行时,类似于
Java
中的
JVM

Java
虚拟机;在
.Net
环境下,各种编程语言使用一种共同的基础资源环境,这就是
CLR

CLR
将直接与
*
作系统进行通信,而编程语言如
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,RESX

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

51.

如何理解

.net

中的垃圾回收机制。



.NET

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

52.

概述反射和序列化


反射

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

序列化

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

53.

概述

o/r mapping

的原理


利用反射,配置

将类于数据库表映射

54.



sealed

修饰的类有什么特点


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

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

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

55.

概述

.NET

里对

remoting



webservice

两项技术的理解和实际中的应用。


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


56. EXE



DLL

之间的区别

?


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

57.

什么是强类型

,

什么是弱类型

,

那种更好些为什么

?


强类型
Java,C#,

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

58.

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


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

面向对象
:
继承
,
封装
,
多态

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

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

59.property



attribute

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


Property
:是一个方法是
GET

SET
的组合,一个是读,一个是写。

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

60.

你对

web service

的体会?


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

原理:

利用
SOAP(
简单对象访问协议
)

http
上执行远程方法的调用,也可以使用
WSDL

Web
服务描述语言)来完成完整的描述
Web
服务,然后用
UDDI
注册各个服务提供商提供的服务,以便共享他们

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


com+

componment object
model
)它解决了两个工作中的问题:

1


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

2


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

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

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

它的缺点:

版本号问题,详细地计划必须有;

62.

讲一讲你理解的

web service,



.net framework

中,怎么很好的结合

xml?


Web Service
就是一个应用程序,它向外界暴露出一个能够通过
Web
进行调用的
API.
是自包含、自描述、模块化的应用

可扩展的标记语言
XML
,是
Web Service
平台中表示数据的基本格式
.
通过
SOAP!

63.

什么是弱引用、强引用?


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

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

64.

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


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

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

65.ASP.NET



ASP

相比,主要有哪些进步?


asp
解释形、它是依赖于浏览器

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

66.

什么是

WEB

控件?使用

WEB

控件有那些优势?



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

67.

大概描述一下

ASP



NET

服务器控件的生命周期


答:初始化

加载视图状态

处理回发数据

加载

发送回发更改通知

处理回发事件

预呈现

保存状态

呈现

处置

卸载

68.

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

?


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

69.

如果出现

ASP



NET

中的事件不能触发可能由于什么原因造成?


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

70.

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


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

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

71.

如果在一个

B/S

结构的系统中需要传递变量值,但是又不能使用

Session



Cookie



Application

,您有几种方法进行处理?


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

72.

你对微软

.net

企业库了解?都包括那些模块?


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

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

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

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

异常处理
(Exception
Handing)
:允许开发人员和规范制定者建立一套用于

处理异常的统一策略。

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

安全性
(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.const



readonly

有什么区别?


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 server

SQL Server
数据库的方式存储
Session
不过这种方式比较慢,而且无法捕获
Session

END
事件。

91.

堆和栈的区别?


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

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

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

92.&



&&

的区别。


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

.

93.Collection



Collections

的区别。


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

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

94.Static Nested Class



Inner Class

的不同,说得越多越好


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

95.HashMap



Hashtable

的区别。


HashMap

Hashtable
的轻量级实现(非线程安全的实现),他们都完成了
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

的工作原理是什么?


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

它是一个远程调用。可以用
HTTP

TCP
。等协议进行传输数据,而
Web service
只能用
HTTP

100.

简要谈一下您对微软

.NET

构架下

remoting



webservice

两项技术的理解以及实际中的应用。


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.<%=...%>



<%#... %>

的区别


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

107.



WebService

的体会?


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

好处:跨平台,无处不到

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

108.

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


客户端向
SERVER
请求有:
(1)Post
以表单形式提交
(2)Get

QueryString
形式提交

get
一般为链接方式,post
一般为按钮方式

109

.怎样理解静态变量?


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

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

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

110.

你知道

Remoting

中的

Singleton



Singlecall

的区别吗?


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

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

111.out



ref

的区别


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

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

区别:

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

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

112.

简述

private



protected



public



internal

修饰符的访问权限。


private :

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

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

public :

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

internal:

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

113.Application



Session



Cookie



ViewState



Cache

等变量的区别是什么?


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 server

SQL Server
数据库的方式存储
Session
不过这种方式比较慢,而且无法捕获
Session

END
事件。

119.

成员变量和成员函数前加

static

的作用?


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

120.

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


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

121.

需要实现对一个字符串的处理

,

首先将该字符串首尾的空格去掉

,

如果字符串中间还有连续空格的话

,

仅保留一个空格

,

即允许字符串中间有多个空格

,

但连续的空格数不可超过一个

.


string inputStr=" xx
xx ";

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

122.

什么是

XML




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

XSL

XPath
等。

123.

列举一下你所了解的

XML

技术及其应用


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

config

124.



.net



B/S

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


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

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

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

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

优点:

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

缺点:

增加成本。

125




什么情况用

HTML

控件,什么情况用

WEB

控件,并比较两者差别


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

126.ADO



ADO.NET

的区别

:


ADO
使用
OLE DB
接口并基于微软的
COM
技术而
ADO.NET
拥有自己的
ADO.NET
接口并且基于微软的
.NET
体系架构。
ADO

Recordset
存储,而
ADO.NET
则以
DataSet
表示。
Recordset
看起来更像单表,如果让
Recordset
以多表的方式表示就必须在
SQL
中进行多表连接。反之,
DataSet
可以是多个表的集合。
ADO
的运作是一种在线方式,这意味着不论是浏览或更新数据都必须是实时的。

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

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

127.new

关键字用法


(1)new

运算符

用于创建对象和调用构造函数。

(2)new

修饰符

用于向基类成员隐藏继承成员。

(3)new

约束

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

128.

堆和栈的区别

:


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

堆:一般由程序员分配释放。用
new

malloc
等分配内存函数分配得到的就是在堆上。

129

成员变量和成员函数前加

static

的作用:


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

130.

如果做到编码规范?


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

131.

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


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

132.

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


是,是一种特殊的委托

133.

能用

foreach

遍历访问的对象需要实现


IEnumerable
接口或声明

_

GetEnumerator_

方法的类型。


134

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


可以控制连接池的连接数量条件好的话

可以用负载平衡

135



DateTime

是否可以为

null?


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

136




什么叫

JIT

?什么是

NGEN

?它们分别有什么限制和好处?


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

137



Finalize()



Dispose()

之间的区别

?


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

138.

说出你所了解的数据库访问组件

(

例如

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

139..

活动目录的作用。


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

140.ASP.NET

里命名空间的定义

;


命名空间是类的逻辑分组,它组织成一个层次结构——逻辑树。这个树的根是
System



ASP.NET
页面中,可以默认的使用某些命名空间中包含的类,称做标准的
ASP.NET
命名空间。对于其他命名空间,则必须显式地导入

141.
.net

中类与对象的关系

;


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

142. IspostBack

的作用

,

当其值为

TRUE



FALSE

时的作用

;


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

143.

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


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

144.

谈谈

final, finally,
finalize

的区别。


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

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

finalize

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

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 Server
Pages
组件化版本
'

150

、请描述

ViewState



Session

有什么区别


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

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

151.


您要创建

asp.net

应用程序用于运行某公司内部的

web

站点,这个应用程序包含了

50

个页面。您想要配置这个应用程序以便当发生一个

http

代码错误时它可以显示一个自定义的错误页面给用户。您想要花最少的代价完成这些目标,您应该怎么做?


答:在配置文件里配置

<customErrors
mode="RemoteOnly"
defaultRedirect="GenericErrorPage.htm">

<error
statusCode="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
控制程序流程
,
禁用
VB

Jscript
动态数据类型
,
使用存储过程完成数据访问
,
只读数据访问不要使用
DataSet,
关闭
ASP.NET

Debug
模式
,
使用
ASP.Net Output
Cache
缓冲数据:页面缓冲
,
片断缓冲
,
数据缓冲

159.


分布式支持系统的实现


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

160.


什么是串行化


串行化也称序列化,持久化。比如

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

161.



ADO.net

的几大对象


Connection

Command

DataAdapter

DataSet

DataReader

configuration

162、


SQLSEVER

有哪些函数?


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

163

、不对数据库进行操作不用

session



Appliction

传值,你怎样把值传到其他页面?


response

query
),
cookie

input type

hidden

164

、传值与传址的区别?


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

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

165

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


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

166. .NET

框架概述


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

Active Server
Pages
组件化版本

167

.什么是中间语言(

IL

)?它的作用?


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

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

168.

死锁的必要条件

?

怎么克服

?


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

169




接口是否可以继承接口

?

抽象类是否可以实现接口

?

抽象类是否可以继承实体类

?


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

170.

构造器

Constructor

是否可以被继承

?

是否可以被

Override?


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

171.



.net



webService

实现步骤:




创建一个
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.

存储过程的优缺点:


优点:

由于应用程序随着时间推移会不断更改,增删功能,
T

SQL
过程代码会变得更复杂,

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

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

3.

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

4.

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

5.

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

缺点可移植性差

179.

对单表进行模糊查询,并对其中两列分别进行升序和降序排列

(

在一个

Select

语句中

)


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

group by
au_id,au_lname

order by au_lname
asc,au_id desc

180.

写出一条

Sql

语句:


取出表

A

中第

31

到第

40

记录(

SQLServer,

以自动增长的

ID

作为主键

,


注意:

ID

可能不是连续的。)


答:
select top 10 from a where
id
not in

select top 30 from
a


或:
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#

方法的参数可以有哪几种传递方式


一共有三个可选关键字可以修饰方法的参数:
ref

out

params

Ref

out
都实现了参数的引用,区别在于
ref
要求参数在传入前被初始化,而
out
要求参数在方法返回前被初始化。
Params
实现了参数数目可变的方法

187.

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


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

188.

如何在

String



Byte[]

对象之间进行转换


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

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

189.

什么是字符串池机制


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

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

189.

什么是流、

.net

中有哪些流?


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

NetworkStream
,MemoryStream


190.GridView

是否能嵌套使用


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

191.

什么是关系型数据库


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

192

、对数据库

SQL2005



ORACLE

熟悉吗?


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

ORACLE

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

193

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


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

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

194

、什么是数据库的映射


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

195

、写分页有哪些方法,你一般用什么方法?用

SQL

语句写一个分页?


如何用存储过程写分页?


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

使用
TOP


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

使用分析函数:

select * from

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

where num>=10 and num
<=20;

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

196



ORACLE

中左连接与右连接


左连接:
LEFT JOIN

右连接:
RIGHT JOIN

select n.column,m.column from
tablename1 n left join tablename2 m

on n.columnname=m.columnname


WHERE
实现:

select n.column,m.column from
tablename1 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
工具的使用,一般满足第三范式就可以了。
EXP

IMP
数据库的逻辑导入与导出

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)

将该enum
的Type
对象传入到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
中的典型应用有Obsolete

WebMethod 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-OF
和AFTER
两种触发器。INSTEAD-OF
触发器是替代数据操控语言(Data Manipulation Language
,DML)
语句对表格执行语句的存储过程。例如,如果我有一个用于TableA
的INSTEAD-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) select
d,e,f from b;

221.

外连接查询

(

表名

1



a

表名

2



b)


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: select
a.title,a.username,b.adddate from table a,(select max(adddate) adddate from
table where table.title=a.title) b

224

.


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


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

225

。什么是内存泄漏?


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

226

.

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


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

227.

什么是事务?什么是锁?


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

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

228.

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


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

229.

你能向我简要叙述一下

SQL
Server 2000

中使用的一些数据库对象吗

?


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

230.NULL

是什么意思

?


NULL(

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

231

.什么是索引

?SQL
Server 2000

里有什么类型的索引

?


任何有经验的数据库开发人员都应该能够很轻易地回答这个问题。一些经验不太多的开发人员能够回答这个问题,但是有些地方会说不清楚。
简单地说,索引是一个数据结构,用来快速访问数据库表格或者视图里的数据。在SQL
Server
里,它们有两种形式:
聚集索引和非聚集索引。聚集索引在索引的叶级保存数据。这意味着不论聚集索引里有表格的哪个(
或哪些)
字段,这些字段都会按顺序被保存在表格。由于存在这种排序,所以每个表格只会有一个聚集索引。非聚集索引在索引的叶级有一个行标识符。这个行标识符是一个指向磁盘上数据的指针。它允许每个表格有多个非聚集索引。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: