.net面试题集

Asp.net面试题及参考答案

(注意:答案不一定正确,不清之处,请自己上网查询)

1. new有几种用法

 第一种:new Class();
 第二种:覆盖方法
public new XXXX(){}
 第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。

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

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

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

dataset,datatable,dataview , IList

4.概述反射和序列化

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

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

5.概述o/r mapping 的原理

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

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

可访问性:public ,protected ,private,internal

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

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

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

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

8.列举ADO.NET中的五个主要对象,并简单描述

connection,command,dataReader,trans,dataset ...

9.执行下面代码后:

String strTemp ="abcdefg 某某某"
Int i System.Text.Encoding.Default.GetBytes(strTemp).Length;
Int j = strTemp.Length;
问:i=(14 ) j=(11 )

i=(14 ) j=(11 ) 中文两个字节

10.C#中,string str = null 与 string str ="",请尽量用文字说明区别。(要点:说明详细的内存空间分配)

string str ="" 分配空间 

11.详述.NETclassstruct的异同!

class:放在 ? struct放在?
struct值传递

类与结构有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。结构的值存储在在堆栈上内联。细心的程序员有时可以通过聪明地使用结构来增强性能。


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

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

13.什么是code-behind技术

aspx and cs 

14.概述三层结构体系
web/business/dataaccess
15.asp.net如何实现MVC模式,举例说明!
web/business/dataaccess

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

C# 支持两种类型:“值类型”和“引用类型”。 
值类型(如 charint 和 float)、枚举类型和结构类型。 
引用类型包括类 (Class) 类型、接口类型、委托类型和数组类型。 

值类型与引用类型的区别在于值类型的变量直接包含其数据,而引用类型的变量则存储对象引用。对于引用类型,两个变量可能引用同一个对象,因此对一个变量的操作可能影响另一个变量所引用的对象。对于值类型,每个变量都有自己的数据副本,对一个变量的操作不可能影响另一个变量

17.了解程序集强签名吗?

用强名称来给程序集签名即谓之程序集强签名! 
通过签发具有强签名的程序集合,可以确保名称的全局唯一性!因为强名称是依赖于唯一的密钥对来确保名称的唯一性,其他人不会生成与你相同的程序集名称(不同的私钥产生的名称不同) 
强名称保护程序集的版本沿袭,因为强名称的唯一性能够确保没有其他人能够生成你的程序集的后续版本 
强名称提供可靠的完整性检查,通过.NET Framework安全检查后,可以确保程序集内容在生成后未被更改过! 
要注意的是,具有强名称的程序集引用其他程序集,如果这个程序集没有强名称,那么具有强名称的程序集所带来的好处,并依旧会产生DLL冲突!因此具有强名称的程序集只能引用其他具有强名称的程序集。 

18. C#中接口和类有什么区别

接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!
类是负责功能的具体实现
在类中也有抽象类的定义,抽象类与接口的区别在于:
抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。
但接口是一个行为的规范,里面的所有东西都是抽象的!
一个类只可以继承一个基类也就是父类,但可以实现多个接口

19.View State 的作用和实现方式

设置是否要保存控件的状态, 
如果设为false且在Page_Load中没有重新绑定数据的话,只要页面一刷新,控件的内容就没了 
如果设为true,则页面会保存控件的内容 
在一些不需要保存状态的页面中最好把它设为false,为什设为true会增加服务器的负担  隐藏域

20.在ASP.net中可以利用哪些对象存储状态?几种维持状态的对象应用场合以及优缺点

主要用Applicationsession,viewstate,cookie,cache 

Application:应用程序级别的共享变量,优点是应用程序一开启该站点都能访问此变量。缺点:所有对此进行写入操作要加锁,由此共享变量锁带来的内存开销只有此应用程序关闭才能结束。 

Session:维护用户个人的状态信息,优点:个人所从事活动,如登录信息,购物车信息等较安全而且又服务器维护较稳定。缺点:维持http连接的sessionID仍然有缺陷,同时为每个用户维护状态信息,服务器内存开销很大。 

Viewsate:如4所说,在一些场合能体现它的特点,但同时带来的缺点:影响整个页面的速度以及隐藏字段未加密。 

Cookie:优点是将状态信息维护在客户端的一个文本文件,不需要耗用服务器的内存,是目前各大网站主要采用的方式。 缺点:由于其将状态信息存贮在客户端,很可能由别人破解此文件而获得此人的个人隐私和机密信息。其受限大小为4K. 

Cache:优点是提供的此功能很强大,如文件缓存依赖、API依赖、数据库依赖以用于存贮数据变化而更换缓存状态数据。提供存储周期从httpcontexthttpruntime。缺点:耗用服务器内存。

Request

21.简单说说 ASP.NET 中基于表单的身份验证方式的用法

配置文件提供对站点那些目录的保护以及登录页面,当访问该目录的文件时,如果用户未认证通过,将转入登录页面, 用户输入用户名和密码,将此参数传入认证模块authentication,该模块负责认证,如果通过将isauthentication设置为true,并返回用户的identity对象,此时页面将转入初始请求页,如果未通过,将不允许访问此目录。

22.是否了解 URL Rewrite?请简要说明其原理和在 ASP.NET 中的实现方式

一般放在httpmoduleapplicatioin_request事情中,当每次http请求,将此URL定位到重写的url函数中并返回重写后的URL地址。主要用于当我们站点板块移动时由于链接仍然指向旧地址,故可以重定向到新的地址,当然查询参数也可以重写。url-mapping配置

23. 在超过10万条记录的页面显示时,你如何处理分页,有多少种替代方案

一般根据页面选择的第几页PageIndex,以及服务端配置文件配置的每页行数PageSize,通过传入参数传入存贮过程,由其返回相应行数pagesize的记录。即每一页数据都由服务端返回。 Cache 

24. DataReaderDataSet的异同

Daatareaderdatatset都是通过从数据源取数据。不同点:datareader提供只进行流的方式读取数据。Dataset提供一种容器里面主要由表以及表关系,由适配器来提供从数据源取得数据填充到此容器的表中。

25. 你会利用那些工具进行数据库的性能分析及其优化?说说你觉得优化数据库需要注意的方面。比如:如何设计优化查询为主、插入更新为主的表。

我主要通过执行计划以及索引优化以及客户统计和服务器跟踪工具来检测从SQL到索引、硬盘IO和时间等信息。 对于查询为主的表,首先对数据量的大小有一定的估计,当达到一定程度应采用水平分区,有的根据主键有的根据时间段来区分。由于此表往往插入更新不是太快,可对适当字段采用索引并且填充因子可以尽量大。SQL优化等。 对于插入更新为主的表,我觉得健壮性更重要,只要根据标准外部采用存贮过程就可以了。

26. 数据库某表主键自增,是很常见的情形。在ASP. NetC#程序中,要求向该表插入一条记录,并马上从该表查出这条记录。不能使用时间戳,请问你如何实现

插入一条记录会返回◎◎identity,通过它就是该记录的主键,再select一下就可以了

27.Xhtml的三种DOCTYPE分别有什么含义?请说明。简单说明各个情况下,那些标签可以使用,那些不可以使用?

XHTML 1.0 提供了三种DTD声明可供选择:W3C规范

过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法)。完整代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如<br>。完整代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD。完整代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

28.请举例说明XHtml代码规范,越多越好。

1.所有的标记都必须要有一个相应的结束标记

以前在HTML中,你可以打开许多标签,例如<p>和<li>而不一定写对应的</p>和</li>来关闭它们。但在XHTML中这是不合法的。XHTML要求有严谨的结构,所有标签必须关闭。如果是单独不成对的标签,在标签最后加一个"/"来关闭它。例如:

<br /><img height="80" alt="网页设计师" src="../images/logo_w3cn_200x80.gif" width="200" /> 

2.所有标签的元素和属性的名字都必须使用小写

与HTML不一样,XHTML对大小写是敏感的,<title>和<TITLE>是不同的标签。XHTML要求所有的标签和属性的名字都必须使用小写。例如:<BODY>必须写成<body> 。大小写夹杂也是不被认可的,通常dreamweaver自动生成的属性名字"onMouseOver"也必须修改成"onmouseover"。

3.所有的XML标记都必须合理嵌套

同样因为XHTML要求有严谨的结构,因此所有的嵌套都必须按顺序,以前我们这样写的代码:

<p><b></p></b> 

必须修改为:

<p><b></b></p> 

就是说,一层一层的嵌套必须是严格对称。

4.所有的属性必须用引号""括起来

在HTML中,你可以不需要给属性值加引号,但是在XHTML中,它们必须被加引号。例如:

<height=80> 

必须修改为:

<height="80"> 

特殊情况,你需要在属性值里使用双引号,你可以用",单引号可以使用',例如:

<alt="say'hello'"> 

5.把所有<和&特殊符号用编码表示

任何小于号(<),不是标签的一部分,都必须被编码为& l t ; 

任何大于号(>),不是标签的一部分,都必须被编码为& g t ; 

任何与号(&),不是实体的一部分的,都必须被编码为& a m p; 

注:以上字符之间无空格。

6.给所有属性赋一个值

XHTML规定所有属性都必须有一个值,没有值的就重复本身。例如:

<td nowrap> <input type="checkbox" name="shirt" value="medium" checked> 

必须修改为:

<td nowrap="nowrap"> <input type="checkbox" name="shirt" value="medium" checked="checked"> 

7.不要在注释内容中使“--”

“--”只能发生在XHTML注释的开头和结束,也就是说,在内容中它们不再有效。例如下面的代码是无效的:

<!--这里是注释-----------这里是注释--> 

用等号或者空格替换内部的虚线。

<!--这里是注释============这里是注释--> 

以上这些规范有的看上去比较奇怪,但这一切都是为了使我们的代码有一个统一、唯一的标准,便于以后的数据再利用。

29. 客户端与浏览器:如果让你做一个TreeView控件,你的思路

我会采用javascript来做,主要采用htc 数据通过XML. 

通过htc操作XML并定义一些方法如:loadaddnodedeletenodeupdatenodeselectednode等方法一些属性如对图标、节点位置、节点前复选框等属性,也会提供一些默认事件如修改节点前后刷新等。

30.谈谈论坛聊天室IM和各种网站程序的交互与刷新思路的差异与共同点。

IM交互式信息通信 ajax刷新思路

31.谈谈对WSE的认识。

Web Services Enhancements 2.0 for Microsoft .NET (WSE)是一个用来建设Web服务的.NET类库,它支持最新的Web服务协议,包括WS-SecurityWS-SecureConversationWS-TrustWS-PolicyWS-SecurityPolicyWS-Addressing和 WS-Attachments。 

WSE可使开发人员跨安全平台建设可升级的、安全的Web服务。它支持用传输的方式发送SOAP消息,而不是HTTP。另一个特点是具有建立SOAP路由器的功能,SOAP消息被发送给SOAP路由器,路由器再将工作交付给托管该服务的Web服务器。

32. 你用过哪些版本控制工具

Net VSS—TfsSOScvs Javasvn

33. 在开发中你利用那些工具进行单元测试和模块测试

NUNITPDM.页面测试 httpunuit

34.如何进行Bug管理

由一个BUG跟踪平台,提供该程序的各个模块的BUG,以及级别,以及解决时间等信息

35. 如何生成和管理开发文档

一般用NDOC来生成文档,大部分文档主要还是Word为主。主要是各个模块以及版本的控制等

36.请用代码简单描述一下Singleton、抽象工厂、BridgeComposite(任选三个)的设计模式的概念

Singleton 单一模式所有类共享一个实例

抽象工厂

Bridge 桥模式 一个接口表示行为 另一个表示属性

Singleton: 

public class a 

{ 

private static a instance; 

private static a()

{instance == ……  } 

Public static a Instance() 

{ Return instance; } }

通过调用类a. Instance()即获得该类的唯一应用程序级别的共享实例也即Singleton Abstract factoty

Public class b {  } 

Public class c { } 

Public class b1:b { } 

………. 

Public abstract class factory { 

Public abstract b create(); 

Public abstract c create(string name); } 

Public class subfactory1:factory { 

Public b create() { Return new b1; } 

Public c create() { Return new c1;} } 

Public class subfactory2:factory { Public b create()  

Return new b2; } 

Public c create() { Return new c2; }} 

通过抽象类定制生产方法和返回产品的规格,由继承的子类来生产符合此子类工厂特色的产品,但是生产的产品一定符合抽象类工厂定制的规格。 Composite 

Public class a { Public void play()} } 

Public class b { Public void sleep() { ….. } } 

Public class c { Private a a1= null; 

Private b b1 = null; 

Public c() {a1  = new  a(); b1 = new b(); } 

Public void Play() { a1. play(); } 

Public void sleep () { b1. sleep (); } } 实际上C包装了A和B类提供的方法,也就是集成了两者的功能。往往我们最终的界面是由各个部件组成起来的。 

37.如果你是一位软件架构师,您将如何去搭建一个符合n-tie的架构?并请描述一下您搭建的每一层的作用。(注意:请您考虑项目中有WebService的情况)

主要根据实际情况来决定搭建的层数以及各层的规格。 一般情况下,可如下搭: 

数据层:主要提供数据服务,该层继承实体的接口并定制自己的数据提取和存储。并根据数据库类型如sqlserver、oracle等来建立此层服务。执行逻辑我个人偏好采用存贮过程。 

业务层:由于定制的实体的属性和操作实体的方法已由数据层获得和执行,故业务逻辑组件对此实体进行组合以满足上层对业务逻辑组件的调用,webservice也是建在此层,以用于提供数据服务和逻辑执行。

表示层:一般定制不同的容器控件,以用于加载从业务层不同类型的数据便于呈现。当然也要此层的风格以及各种显示设置,webservice显示页面建在层,通过加载对指定目录的webservice提供的方法用于呈现。

38.可否简要的介绍asp.net 2.0 Membership,WebPart和C#的匿名函数和泛型等你认为.net 2.0自己感兴趣的内容,希望可以简要地阐述其中的特点

1 Membership:成员管理主要提供了一套对用户信息、用户角色、用户配置信息的用户系统。通过MembershipConfigHandler加载配置文件中公有的基础信息,对配置文件中的信息进行了严格的边界检查和类型检查。通过MembershipProvider提供了实现membership的抽象方法以及配置信息。由SqlMembershipProvider继承MembershipProvider来实现sqlclient的数据提供服务。业务和实现相剥离,以利于扩展。当然里面有很多特点也有很多细节等。 

2 WebPart:主要提供页面布局和自定义以及换皮肤的功能。通过定义主题Theme来决定整体的布局风格,以及版面通过设定不同的区域Zone来决定版面各块的区域设置。通过不同的skin和css来确定风格。让用户能够保存自己的个人设置以及回复默认设置的功能。 

3 匿名函数:使用匿名方法可以减少因实例化委托所需要的开销,1.0中使用委托必须实例化委托并且必须将所调用的类和方法作为参数传入也即命名方法,当然如果所调用的委托具有多变性应该还采用命名方法。 

4 泛型:一般用于集合类。由于以前集合类数据都由framework隐式转化为object类型,这种开销很大。而用泛型,你就可以指定传入对象类型,而用于生成强类型的数据集,这样各种操作就可以使用指定类型的特性和优势了,自然速度也快了很多。当然接口、方法、类等都同样使用这种方式

5 编译模型除了asp.net1.0支持的批编译,也提供新的编译模式。 

6 在httpmodule和httphander的处理速度要比以前1.0要快。 

7 在请求响应输出中,将缓冲区由asp.net宿主进程移到本机内存,可以消除资源瓶颈。 

8 其缓存模型提供了数据库依赖和缓存后替功能。 

9 与IIS6.0集中能提供更好的性能,主要体现在缓存和缓冲操作上。

39.Asp.net中的内建对象

Page对象:Web Form 网页在执行的时候会被编译成Page 对象,Page对象通知来设置与网页有关的属性、方法和事件; 

Response对象:用来决定服务器端在什么时候或如何输出数据到客户端; 

Request对象:用来捕获由客户端返回服务器的数据; 

Server对象:提供服务器端最基本的属性和方法; 

Application对象:用来记录不击客户端共享的变量; 

Session对象:用来记录各客户端的专用变量; 

Cookies对象:为Web应用程序保存访问者相关信息.

40..NET具有跨平台的性质吗?现在是否可以在UNIX平台上广泛的应用?

非常了不起的工具INET,实现.NET跨平台!

执行摘要

微软的.NET是一套连接信息、人、系统、设备的软件技术。此新一代的技术是基于Web服务和小模块创建的应用,可以使任何应用彼此互连并且能连接到Internet上的其他大型应用。.NET的基础核心是集成开发设备(IDE), Visual Studio.NET和一种新的应用执行环境-Microsoft .net开发框架。这些系统使开发人员能够像灵活使用 Visual Basic C#一样开发强大的应用程序和Web服务。 

但是有局限的一点是:用.net开发的应用程序必须运行于.net服务器或者客户端。如果所有的用户都按照.NET运行环境技术标准化这也许可行,但是实际上当然不是这样。成千上百万台电脑运行的是LinuxUnix, OS X 和其他操作系统,而这种环境不是.NET应用程序的标准化运行环境。因此软件开发组织需要考虑: 如何有效利用它们的 Microsoft开发人员和Visual Studio.NET的技术特征和优势但是仍然可以访问非微软服务器, PC机,手提电脑和移动设备?怎样才能使他们用.NET编写的程序运行时不受运行环境的局限? 

Stryon公司开发的iNET解决了这一难题。iNET可以使应用程序和Web服务在Visual Basic C#下开发,但发布于任何支持Java的运行环境,网络主机也从IBM网络服务器扩展到LinuxUnix的服务器。有了iNET技术,开发人员既可以利用Visual Studio .net开发环境的优势,但是又不局限于Microsoft的运行环境。 

什么是.NET? 其工作原理

要想了解iNET是什么,需要首先了解.NET的框架结构和工作原理。

.NET包括很多内容,但从一个开发者的角度来讲,它是一个基于Web应用和Web服务的开发和发布的开放式环境。开发者通常用Microsoft IDEVisual Studio.NET开发.NET应用程序(Borland厂商已宣布他们的IDES已经具备和 Microsoft's IDE竞争的实力,但是此产品目前还没在市场上发布).Net框架已经(或者将)嵌入所有的 Microsoft视窗操作系统,取代MicrosoftWeb应用服务,ISS。 

.NET包含三种基本的开发语言,Visual Basic.NET, C# 和 Visual C++.NET。 当应用程序和Web服务用这些语言编写时,必须经过两步编译成可执行的机器代码。首先,.NET Framework编译器接收源代码,并产生一套用 iNET 内部框架通用语言编写的指令集。这种语言称为微软中间语言(MSIL),它是独立于CPU的。因此在代码可执行之前,它还必须在通用语言运行环境(CLR)下转换为本地、专用CPU代码。 

基于.NET 框架的可执行和管理的代码被称为 "管理代码"。它必须为通用语言运行环境提供必要的信息来支持它的服务,包括内存管理,跨语言集成,代码访问安全性,自动对象生命周期控制。所有的基于微软中间语言的代码可作为管理代码执行。相比较而言,开发人员也能编写"非管理代码",即代码执行直接依赖于操作系统,而脱离Microsoft .NET 框架的通用语言环境。非管理代码必须自己提供内存管理,类型校验,安全支持,不像管理代码从通用语言环境接受这些服务。非管理代码必须脱离.NET Framework执行。 

.NET 框架包括一套较完备软件技术,涵盖了执行常用的必需的函数。其中涉及的组件、.NET的类库对任何用.NET管理代码编写的应用程序都有效。它们按函数类型分组,包括ADO.NET(数据访问和管理), ASP.NET(创建、发布、运行web应用和服务)XML(语言标识)SOAP(数据交换)WebFormsWeb应用),和WinFormsWindows 应用)

理论上,.NET应用程序可运行于多种平台,但是前提是CLR.NET的框架类库必须指定端口连接到目标平台。这是一项意义非凡的研究,因为.NET开发的应用程序必须应用于.NET环境,从实用的角度出发,iNET出现了,它的出现解决了跨平台运行这一难题。 

什么是iNET?

StryoniNET以纯Java.NET开发构架重新实现 。在运行之前,iNET.NET APP转换成本地Java,因此它可以运行于任何Java虚拟机上。用Java的实现框架为Java和其他的服务器端的架构提供跨平台的 .NET执行应用优势和核心技术支持。

iNET包括 三个组件

· IL to Java 转换模块(IL2Java) 

它的功能是将MSIL代码转换成本地Java。因此也意味着iNET可以转换任何.NET 源码,不管是Visual Basic, C#, 还是Visual C++. 

· iNET 运行时类库 

o iNET运行时类库是一套用Java实现的软件组件,它准确地复制了.NET framework 提供的所有功能。比如 ADO.NET, ASP.NET, WinForms, WebForms, XML, SOAP - 所有的都是用Java来实现

· iNET 配置工具 

提供的工具让用户更容易实现在J2EE平台上展开iNET 应用
iNET的工作原理?

在运行之前,.NET编译器会将源代码编译成MSIL代码,那么我们就可以通过iNET里面的IL2Java工具将它们转换成本地Java。因为iNET运行时类库与.NET类库完全兼容,所以本地Java源码是由执行IL2Java这一命令产生的取代了.NET运行类库的iNET运行类库。

一旦应用程序被完全转换成Java源码,它就像任何Java应用一样,被Java虚拟机(JVM)编译成Java字节码后被执行。这个应用程序运行时包会包括iNET运行时类库。

iNET 的IL2Java工具是内嵌在Visual Studio.NET里面,因此开发者只需要简单的点击"建立Java"菜单就可以将代码转换成Java,在Visual Studio.NET里面配置它到本地机器上或者到远程目标机器上。它也可以通过一个简单的命令行"il2java.exe"来调用。
41.写出global.asax文件的主要用途?
作用和asp的global.asa一样,它可以使我们执行asp.net应用程序一层事件的代码,如:application_start等等,使你可以在这些事件中作一些自定义的处理;也可以定义应用程序一层的变量,如:Session等,这在整个asp.net应用程序中起作用。 

42.列出web.config的常用的配置段,并对每个配置段进行简要的说明。

Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过VB.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的 
Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。 
在运行时对Web.config文件的修改不需要重启服务就可以生效(注:<processModel> 节例外)。当然Web.config文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。 
二、web.config配置文件(默认的配置设置)以下所有的代码都应该位于 

configuration> 
system.web> 
和 

/system.web> 
/configuration> 
之间,出于学习的目的下面的示例都省略了这段XML标记 

1、<authentication> 节 

作用:配置 ASP.NET 身份验证支持(为WindowsFormsPassPortNone四种)。该元素只能在计算机、站点或应用程序级别声明。<authentication> 元素必需与<authorization> 节配合使用。 
示例: 
以下示例为基于窗体(Forms)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。 
authentication mode="Forms" > 
forms loginUrl="logon.aspx" name=".FormsAuthCookie"/> 
/authentication> 
其中元素loginUrl表示登陆网页的名称,name表示Cookie名称 
2、<authorization> 节 
作用:控制对 URL 资源的客户端访问(如允许匿名用户访问)。此元素可以在任何级别(计算机、站点、应用程序、子目录或页)上声明。必需与<authentication> 节配合使用。 
示例:以下示例禁止匿名用户的访问 
authorization> 
deny users="?"/> 
/authorization> 
注:你可以使用user.identity.name来获取已经过验证的当前的用户名;可以使用 
web.Security.FormsAuthentication.RedirectFromLoginPage方法将已验证的用户重定向到用户刚才请求的页面.具体的实例请参考
3、<compilation>节 
作用:配置 ASP.NET 使用的所有编译设置。默认的debug属性为“True”.在程序编译完成交付使用之后应将其设为True 
4、<customErrors> 
作用:为 ASP.NET 应用程序提供有关自定义错误信息的信息。它不适用于 XML Web services 中发生的错误。 
示例:当发生错误时,将网页跳转到自定义的错误页面。 

customErrors defaultRedirect="ErrorPage.aspx" mode="RemoteOnly"> 
/customErrors> 
其中元素defaultRedirect表示自定义的错误网页的名称。mode元素表示:对不在本地 Web 服务器上运行的用户显示自定义(友好的)信息。 
5、<httpRuntime>节 
作用:配置 ASP.NET HTTP 运行库设置。该节可以在计算机、站点、应用程序和子目录级别声明。 
示例:控制用户上传文件最大为4M,最长时间为60秒,最多请求数为100 
httpRuntime maxRequestLength="4096" executionTimeout="60" appRequestQueueLimit="100"/> 
6、 <pages> 
作用:标识特定于页的配置设置(如是否启用会话状态、视图状态,是否检测用户的输入等)。<pages>可以在计算机、站点、应用程序和子目录级别声明。 
示例:不检测用户在浏览器输入的内容中是否存在潜在的危险数据(注:该项默认是检测,如果你使用了不检测,一要对用户的输入进行编码或验证),在从客户端回发页时将检查加密的视图状态,以验证视图状态是否已在客户端被篡改。(注:该项默认是不验证) 
pages buffer="true" enableViewStateMac="true" validateRequest="false"/> 
7、<sessionState 
作用:为当前应用程序配置会话状态设置(如设置是否启用会话状态,会话状态保存位置)。 
示例: 
sessionState mode="InProc" cookieless="true" timeout="20"/> 
/sessionState> 
注: mode="InProc"表示:在本地储存会话状态(你也可以选择储存在远程服务器或SAL服务器中或不启用会话状态) 
cookieless="true"表示:如果用户浏览器不支持Cookie时启用会话状态(默认为False) timeout="20"表示:会话可以处于空闲状态的分钟数 
8、<trace> 
作用:配置 ASP.NET 跟踪服务,主要用来程序测试判断哪里出错。 
示例:以下为Web.config中的默认配置: 

trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" /> 
注: 
enabled="false"表示不启用跟踪;requestLimit="10"表示指定在服务器上存储的跟踪请求的数目 pageOutput="false"表示只能通过跟踪实用工具访问跟踪输出; 
traceMode="SortByTime"表示以处理跟踪的顺序来显示跟踪信localOnly="true" 表示跟踪查看器 (trace.axd) 只用于宿主 Web 服务器 
三、自定义Web.config文件配置节 
自定义Web.config文件配置节过程分为两步。 
一是在在配置文件顶部 <configSections> 和 </configSections>标记之间声明配置节的名称和处理该节中配置数据的 .NET Framework 类的名称。 
二是在 <configSections> 区域之后为声明的节做实际的配置设置。 
示例:创建一个节存储数据库连接字符串 
configuration> 
configSections> 
section name="appSettings" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
/configSections> 
appSettings> 
add key="scon" value="server=a;database=northwind;uid=sa;pwd=123"/> 
/appSettings> 
system.web> 
...... 
/system.web> 
/configuration> 
四、访问Web.config文件 
你可以通过使用ConfigurationSettings.AppSettings 静态字符串集合来访问 Web.config 文件示例:获取上面例子中建立的连接字符串。 
Dim sconstr As String = ConfigurationSettings.AppSettings("SconStr") 
Dim scon = New SqlConnection(sconstr)

43.ASP.NET中的组件相对于ASP的组件部署方面有什么优点?

asp.netasp的最大区别在于编程思维的转换,而不仅仅在于功能的增强。asp使用vbs/js这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:     
    1、代码逻辑混乱,难于管理:由于asp是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。     
    2、代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。     
    3、弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。     
    以上是语言本身的弱点,在功能方面asp同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上php/jsp,其次就是缺乏完善的纠错/调试功能,这点上asp/php/jsp差不多。那么,asp.net有哪些改进呢?     
    
  asp.net摆脱了以前asp使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括c++   ,   vb   ,   js等等,当然,最合适的编程语言还是ms.net   frmaework专门推出的c#(csharp),它可以看作是vcjava的混合体吧,尽管ms自己讲c#内核中更多的象vc,但实际上我还是认为它和java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的asp的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到asp.net上就可以使业务逻辑和html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且c#c++java一样提供了完善的调试/纠错体系  

1、 经过解释的语言有两个缺点,一是缺乏强类型,二是缺乏一个编译环境,这将导致性能和伸缩性的问题   
  2asp并没有为应用程序提供一个固有的结构,将代码和页面混合在一起使代码变得很复杂,源文件变的很大,结构和代码复用很难,维护也很难。   
  3ASP中无论工作多简单都必须在ASP中编写代码完成绝大多数工作,如验证表单字段等,其他还包括告诉缓存页面内容,保持表单状态等,甚至添加新HTML控件也需要写原始HTML。   
  4、浏览器兼容性。移动设备访问站点,必须编写代码检测这些设备,同时为其提供合适内容。   
  5、标准兼容性,XHTML被越来越多人接受,XMLXSL/T也得到广泛应用,并且与移动设备进行通信还应该支持WML,这意味着ASP应用不仅要利用现有标准工作,还要易于升级以支持将来的标准   
  ASP.NET四个主要目标   
  使代码更清晰   
  提高可部署性,可伸缩性,安全性以及可靠性   
  为不同浏览器和设备提供更好的支持   
  支持一种全新的web应用程序。

44.简述一下webservice技术,在何种场合下适合使用这项技术?   
 Web Service 是一种新的web应用程序分支,他们是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。
Web Service是一种应用程序,它可以使用标准的互联网协议,像超文本传输协议(HTTP)XML,将功能纲领性地体现在互联网和企业内部网上。可将Web服务视作Web上的组件编程。

P2P 跨平台技术性应用 
Web Services扮演什么角色?
Web services角度所预示的四个趋势:
内容更加动态:一个web service必须能合并从多个不同源来的内容,可以包括股票,天气,新闻等,在传统环境中的内容,如存货水平,购物订单或者目录信息等,都从后端系统而来
带宽更加便宜:web services可以分发各种类型的内容(音频,视频流等)
存储更便宜: web services必须能聪明地处理大量数据,意味着要使用数据库,LDAP目录,缓冲,和负载平衡软件等技术保持可扩展能力
普遍式计算更重要:web services不能要求客户使用某一版本的windows的传统浏览器,必须支持各种设备,平台,浏览器类型,各种内容类型。
两种重要技术
要达到这样的目标,Web services要使用两种技术:
◆XML XML是在web上传送结构化数据的伟大方式,Web services要以一种可靠的自动的方式操作数据,HTML不会满足要求,而XML可以使web services十分方便的处理数据,它的内容与表示的分离十分理想
◆SOAP SOAP使用XML消息调用远程方法,这样web services可以通过HTTP协议的postget方法与远程机器交互,而且,SOAP更加健壮和灵活易用。

45.C#说明一下虚函数和接口的区别?

虚函数是动态联编的基础,它是引入派生概念之后用来表现基类和派生类成员函数之间的一种关系的。虚函数在基类中定义,它也是一种成员函数,而且是非静态成员函数。   
   若一个实例方法的声明中含有   virtual   修饰符,则称该方法为虚拟方法;一个虚拟方法的实现可以由派生类取代。取代所继承的虚拟方法的实现的过程称为重写该方法;在一个虚拟方法调用中,该调用所涉及的那个实例的运行时类型确定了要被调用的究竟是该方法的哪一个实现。   
虚函数的限制:   
1.虚函数仅适用于有继承关系的类对象,   所以只有类的成员函数才能说明为虚函数.     
2.静态成员函数不能是虚函数.     
3.内联函数不能是虚函数.     
4构造函数不能是虚函数.     
5.析构函数可以是虚函数.   
    接口可以有静态成员、嵌套类型、抽象、虚拟成员、属性和事件。实现接口的任何类都必须提供接口中所声明的抽象成员的定义。接口可以要求任何实现类必须实现一个或多个其他接口。   
    对接口有以下限制:     
    接口可以用任何可访问性来声明,但接口成员必须全都具有公共可访问性。     
  不能向成员或接口自身附加安全性权限。     
  接口可以定义类构造函数,但不能定义实例构造函数。     
  每种语言都必须为需要成员的接口映射一个实现提供规则,因为不只一个接口可以用相同的签名声明成员,且这些成员可以有单独的实现。   
    接口可以由类和结构来实现。为了指示类或结构实现了某接口,在该类或结构的基类列表中应该包含该接口的标识符。如果一个类或结构实现某接口,则它还隐式实现该接口的所有基接口。即使在类或结构的基类列表中没有显式列出所有基接口,也是这样。 

存储过程?

存储过程(stored procedure)是一组为了完成特定功能的sql 语句集,经编译后存储在数据库。中用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 

sql server 的系列版本中存储过程分为两类:系统提供的存储过程和用户自定义存储过程。系统过程主要存储在master 数据库中并以sp_为前缀,并且系统存储过程主要是从系统表中获取信息,从而为系统管理员管理sql server 提供支持。通过系统存储过程,ms sql server 中的许多管理性或信息性的活动(如了解数据库对象、数据库信息)都可以被顺利有效地完成。尽管这些系统存储过程被放在master 数据库中,但是仍可以在其它数据库中对其进行调用,在调用时不必在存储过程名前加上数据库名。而且当创建一个新数据库时,一些系统存储过程会在新数据库中被自动创建。用户自定义存储过程是由用户创建并能完成某一特定功能(如查询用户所需数据信息)的存储过程。在本章中所涉及到的存储过程主要是指用户自定义存储过程。 
存储过程的优点 
当利用ms sql server 创建一个应用程序时,transaction-sql 是一种主要的编程语言。若运用transaction-sql 来进行编程,有两种方法。其一是,在本地存储transaction- sql 程序,并创建应用程序向sql server 发送命令来对结果进行处理。其二是,可以把部分用transaction-sql 编写的程序作为存储过程存储在sql server 中,并创建应用程序来调用存储过程,对数据结果进行处理存储过程能够通过接收参数向调用者返回结果集,结果集的格式由调用者确定;返回状态值给调用者,指明调用是成功或是失败;包括针对数据库的操作语句,并且可以在一个存储过程中调用另一存储过程。 
存储过程具有以下优点: 
1) 存储过程允许标准组件式编程 
存储过程在被创建以后可以在程序中被多次调用,而不必重新编写该存储过程的sql 语句。而且数据库专业人员可随时对存储过程进行修改,但对应用程序源代码毫无影响(因为应用程序源代码只包含存储过程的调用语句),从而极大地提高了程序的可移植性。 
2) 存储过程能够实现较快的执行速度 
如果某一操作包含大量的transaction-sql 代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的执行计划。而批处理的transaction- sql 语句在每次运行时都要进行编译和优化,因此速度相对要慢一些。 
3) 存储过程能够减少网络流量 
对于同一个针对数据数据库对象的操作(如查询、修改),如果这一操作所涉及到的 transaction-sql 语句被组织成一存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,否则将是多条sql 语句,从而大大增加了网络流量,降低网络负载。 
4) 存储过程可被作为一种安全机制来充分利用 
系统管理员通过对执行某一存储过程的权限进行限制,从而能够实现对相应的数据访问权限的限制,避免非授权用户对数据的访问,保证数据的安全。(我们将在14 “sqlserver 的用户和安全性管理中对存储过程的这一应用作更为清晰的介绍) 

js脚本

JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言、Java 脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或调入在标准的HTML语言中实现的。它的出现弥补了HTML语言的缺陷,它是JavaHTML折衷的选择,具有以下几个基本特点: 

是一种脚本编写语言
JavaScript是一种脚本语言,它采用小程序段的方式实现编程。像其它脚本语言一样,JavaScript同样已是一种解释性语言,它提供了一个易的开发过程。 
它的基本结构形式与CC++VBDelphi十分类似。但它不像这些语言一样,需要先编译,而是在程序运行过程中被逐行地解释。它与HTML标识结合在一起,从而方便用户的使用操作。 
基于对象的语言。
JavaScript是一种基于对象的语言,同时以可以看作一种面向对象的。这意味着它能运用自己已经创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。 
简单性
JavaScript的简单性主要体现在:首先它是一种基于Java基本语句和控制流之上的简单而紧凑的设计从而对于学习Java是一种非常好的过渡。其次它的变量类型是采用弱类型,并未使用严格的数据类型。 
安全性
JavaScript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。 
动态性的
JavaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的反映响应,是采用以事件驱动的方式进行的。所谓事件驱动,就是指在主页(Home Page)中执行了某种操作所产生的动作,就称为事件”(Event)。比如按下鼠标、移动窗口、选择菜单等都可以视为事件。当事件发生后,可能会引起相应的事件响应。 
跨平台性
    JavaScript是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持JavaScript的浏览器就可正确执行。从而实现了编写一次,走遍天下的梦想。 
   实际上JavaScript最杰出之处在于可以用很小的程序做大量的事。无须有高性能的电脑,软件仅需一个字处理软件及一浏览器,无须WEB服务器通道,通过自己的电脑即可完成所有的事情。
    综合所述JavaScript 是一种新的描述语言,它可以被箝入到 HTML 的文件之中。 JavaScript语言可以做到回应使用者的需求事件 (如: form 的输入,而不用任何的网路来回传输资料,所以当一位使用者输入一项资料时,它不用经过传给伺服端 (server)处理,再传回来的过程,而直接可以被客户端 (client) 的应用程式所处理。

JavaScript 和 Java 很类似,但到底并不一样! Java 是一种比 JavaScript 更复杂许多的程式语言,而 JavaScript 则是相当容易了解的语言。JavaScript 创作者可以不那麽注重程式技巧,所以许多 Java 的特性在 Java Script 中并不支援。

public class DeclareArrays {

public static void main(String[] args) 

{

int[] numbers=new int[5];

//string[,] names=new string[5,4];

byte[][] scores=new byte[5][];

for(int i=0;i<scores.length;i++)

{

if(i%2==0)

{

scores[i]=new byte[i+3];

}

else

{

scores[i]=new byte[i+2];

}

}

for(int i=0;i<scores.length;i++)

{

System.out.print(i+scores[i].length);

}

}

}运行结果:33557

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

47.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTSCLSCLR分别作何解释?
:装箱就是把值类型转成引用类型,MS IL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相反,重载就是指一个方法名同,参数个数不同,返回值可以相同的方法.CLR是通用语言运行时,其它的不清楚.

48.列举一下你所了解的XML技术及其应用
:XML可是好东西,保存配置,站与站之间的交流,WEB SERVICE都要用它.

49.值类型和引用类型的区别?写出C#的样例代码。
:结构是值类型,类是引用类型,所以传结构就是值类型的应用啦,传对象或类就是引用类型的,这个不用多写了吧.

50.ADO.net中常用的对象有哪些?分别描述一下。
:connection command sqladapter dataset datatable dataview等等.写不完了.

51.如何理解委托?
:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.
msdn2005中是这样解释的:

委托具有以下特点:
委托类似于 C++ 函数指针,但它是类型安全的。
委托允许将方法作为参数进行传递。
委托可用于定义回调方法。
委托可以链接在一起;例如,可以对一个事件调用多个方法。
方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。
C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。

52.C#中的接口和类有什么异同。
:这个异同可多了,要说清楚还真不容易.

53.net中读写数据库需要用到哪些类?他们的作用
:这个类自已可以写的啊,你是指基类吗?configuration,sqlconnection,sqlcommand等都要用到.

54.UDP连接和TCP连接的异同。
:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结.

55.ASP.net的身份验证方式有哪些?分别是什么原理?
:form认证,windows集成认证等,原理不清楚.

56.进程和线程分别怎么理解?
:进程是老子,线程是儿子,没有老子就没有儿子,一个老子可以有多个儿子.一个儿子可以成为别人的儿子,一个老子也可以为别的老子生儿子.

57.什么是code-Behind技术。
:代码分离,这是个明智的东西,ASP这样混成一堆很不爽.或者可以理解成HTML代码写在前台,C#代码写在后台.当然前台也有脚本,类的调用等,其实写在一起也是可以的.

58..net中读写XML的类都归属于哪些命名空间?
:System.Xml
我自已写的就不一定了,嘿嘿.

59.什么是SOAP,有哪些应用。
:SOAPSimple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。这种相互通信采用的是XML格式的消息,具体请看:http://playist.blogchina.com/2521621.html

60.Params是什么含义? 

    ParamsC#中的关键字,采用此关键字可以指定参数数目为可变; 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。 

如:

public int fConvert(params int[] iParas)

{

   …

}

61.  C#中有没有运算符重载?能否使用指针?

有,C#中也有运算符重载,如对运算符“+”进行重载;

C#中也可以使用指针,但要声明为unsafe

62.  C#中有很多类被定义为public有什么意义?

C#中很多类被定义为public 表示当前类的外部对于当前类的访问没有任何限制。

63.  Internal修饰符有什么含义?

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

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

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

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

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

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

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

67.  CLRIL分别是什么含义?

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

·   面向对象的编程模型(继承、多态、异常处理和垃圾收集等) 

·   安全模型

·   类型系统

·   所有.NET基类

·   许多.NET Framework

·  开发、调试和评测(profiling)工具

·   执行和代码管理

·   IL到本地代码(IL-to-native)转换器和优化器 

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

67.  对象能否调用静态方法

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

68 .请解释ASPNET中以什么方式进行数据验证

       Aps.net 中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件

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

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

自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到

务端

只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件

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

可以调用

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

</asp:TextBox>

<INPUT id="Button2" value="Button" name="Button2" 

runat="server" οnclick="clientfunction();">

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

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

system.web 系统配置

compilation动态调试编译设置

customErrors自定义错误信息设置

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

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

72.  请解释ASPNET中的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" 表用运行时使用哪一个隐藏类

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

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

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

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

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

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

76.  请解释转发与跳转的区别?

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

跳转就是指客户端的跳转

78(1)面向对象的语言具有__继承性、封装性、多态性。

(2)能用foreach遍历访问的对象需要实现  IEnumerable 接口或声明 GetEnumerator 方法的类型。
79.当整数a赋值给一个object对象时,整数a将会被__装箱___?
80.类成员有__3__种可访问形式?
81.public static const int A=1;这段代码有错误么?是什么? const成员都是static    以应该去掉static
82.float f=-123.567F;
   int i=(int)f;
   i的值现在是_-123____?
83.Asp.net中所有的自定义用户控件都必须继承自_ System.Web.UI.UserControl _______?
84..Net中所有可序列化的类都被标记为__[serializable]___?
85..Net托管代码中我们不用担心内存漏洞,这是因为有了_ gC __?
86.下面的代码中有什么错误吗?_ abstract override 是不可以一起修饰______
using System;
class A
{
public virtual void F(){
Console.WriteLine("A.F");
}
}
abstract class B:A
{
public abstract override void F();
}

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

88..Net中,类System.Web.UI.Page 可以被继承么?可以

89 以下叙述正确的是: B C

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

90 从数据库读取记录,你可能用到的方法有:B C D

  A. ExecuteNonQuery            B. ExecuteScalar      C. Fill                        D. ExecuteReader

91.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选)   (        ABC         )   
  A.Close B.Dispose C.Finalize   
  D.using E.Quit   
92.以下关于refout的描述哪些项是正确的?(多选)   (    ACD   )   
  A.使用ref参数,传递到ref参数的参数必须最先初始化。   
  B.使用out参数,传递到out参数的参数必须最先初始化。   
  C.使用ref参数,必须将参数作为ref参数显式传递到方法。   
  D.使用out参数,必须将参数作为out参数显式传递到方法。 

93.在对SQL Server 数据库操作时应选用(A)。

a)SQL Server .NET Framework 数据提供程序;

b)OLE DB .NET Framework 数据提供程序;

c)ODBC .NET Framework 数据提供程序;

d)Oracle .NET Framework数据提供程序;

94.下列选项中,(C)是引用类型。

a)enum类型   b)struct类型 c)string类型   d)int类型

95.ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(C)。

a)insertupdatedelete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;

b)ExecuteNonQuery()方法返回执行Sql语句所影响的行数。

c)Select操作的Sql语句只能由ExecuteReader()方法来执行;

d)ExecuteReader()方法返回一个DataReder对象;

96.如果将窗体的FormBoderStyle设置为None,则( B)

a)窗体没有边框并不能调整大小;        b)窗体没有边框但能调整大小;

c)窗体有边框但不能调整大小;          d)窗体是透明的;

97.如果要将窗体设置为透明的,则( B)

a)要将FormBoderStyle属性设置为None      b)要将Opacity属性设置为小于100%得值;

c)要将locked 属性设置为True              d)要将 Enabled属性设置为True

98.要对注册表进行操作则必须包含( D)

a)System.ComponentModel命名空间; b)System.Collections命名空间;

c)System.Threading命名空间;      d)Microsoft.Win32命名空间;

99.用户类若想支持Foreach语句需要实现的接口是: (  A  )

A.IEnumerableB.IEnumerator

C.ICollectionD.ICollectData

100..Net Framework通过什么与COM组件进行交互操作?(   C )

A.Side By SideB.Web Service

C.InteropD.PInvoke

101.以下哪个是可以变长的数组?(  D  )

A.Array                      B.string[]

C.string[N]                  D.ArrayList

102.Net依赖以下哪项技术实现跨语言互用性?(  C  )

A.CLR               B.CTS               C.CLS                  D.CTT

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

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

104.“访问范围限定于此程序或那些由它所属的类派生的类型是对以下哪个成员可访问性含义的正确描述?(  B   )

A.public        B.protected            C.internal         D.protected internal

105.class Class1

{

    private static int count = 0;

    static Class1()

    {

        count++;

    }

    public Class1()

    {

        count++;

    }

}

Class1 o1 = new Class1();

Class1 o2 = new Class1();

请问,o1.Count的值是多少?(  C  )

A.1         B.2             C.3             D.4

106.abstract class BaseClass

{

    public virtual void MethodA()

    {

    }

    public virtual void MethodB()

    {

    }

}

class Class1: BaseClass

{

    public void MethodA(string arg)

    {

    }

    public override void MethodB()

    {

    }

}

class Class2: Class1

{

    new public void MethodB()

    {

    }

}

class MainClass

{

    public static void Main(string[] args)

    {

        Class2 o = new Class2();

        Console.WriteLine(o.MethodA());

    }

}

请问,o.MethodA调用的是: (  A  )

A.BaseClass.MethodAB.Class2.MethodA

C.Class1.MethodAD.都不是

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

属性 索引器     
  通过名称标识。 通过签名标识。     
  通过简单名称或成员访问来访问。 通过元素访问来访问。     
  可以为静态成员或实例成员。 必须为实例成员。     
  属性的   get   访问器没有参数。 索引器的   get   访问器具有与索引器相同的形参表。     
  属性的   set   访问器包含隐式   value   参数。 除了   value   参数外,索引器的   set   访问器还具有与索引器相同的形参表。 

108.请叙述constreadonly的区别。

每一个class至多只可以定义一个static构造函数,并且不允许增加访问级别关键字,参数列必须为空。
        为了不违背编码规则,通常把static数据成员声明为private,然后通过statci property提供读写访问。
        const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。
        const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。
        const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。
        readonly在运行期评估赋值,使我们得以在确保只读访问的前提下,把object的初始化动作推迟到运行期进行。
        readonly 关键字与 const 关键字不同: const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而 readonly 字段可用于运行时常数。 
  readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。 

109.您需要创建一个ASP.NET应用程序,公司考虑使用Windows身份认证。
  所有的用户都存在于AllWin这个域中。您想要使用下列认证规则来配置这个应用程序:
    a、 匿名用户不允许访问这个应用程序。
    b、 所有雇员除了TessKing都允许访问这个应用程序。
  请问您应该使用以下哪一个代码段来配置这个应用程序?(  A  )
A. <authorization>
   <deny users=”allwin\tess, allwin\king”>
   <allow users=”*”>
   <deny users=”?”>
 </authorization>

110.您要创建一个显示公司员工列表的应用程序。您使用一个DataGrid控件显示员工的列表。您打算修改这个控件以便在这个GridFooter显示员工合计数。请问您应该怎么做?(  C?  )
  A.重写OnPreRender事件,当GridFooter行被创建时显示合计数。
  B.重写OnItemCreated事件,当GridFooter行被创建时显示合计数。 
  C.重写OnItemDataBound事件,当GridFooter行被创建时显示合计数。
  D. 重写OnLayout事件,当GridFooter行被创建时显示合计数。

111.您要创建ASP.NET应用程序用于运行AllWin公司内部的Web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标,您应该怎么做?(多选)(  CD   )
  A.在这个应用程序的Global.asax文件中创建一个Application_Error过程去处理ASP.NET代码错误。
  B.在这个应用程序的Web.config文件中创建一个applicationError节去处理ASP.NET代码错误。
  C.在这个应用程序的Global.asax文件中创建一个CustomErrors事件去处理HTTP错误。
  D.在这个应用程序的Web.config文件中创建一个CustomErrors节去处理HTTP错误。
  E.在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET 代码错误。
  F. 在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET HTTP错误。

112.您的公司有一个DB Server,名为AllWin,其上装了MS SQLSERVER 2000。现在需要您写一个数据库连接字符串,用以连接AllWinSQL SERVER中的一个名为PubBase实例的Test库。请问,应该选择下面哪一个字符串?(  B  )
  A. “Server=AllWin;Data Source=PubBase;Initial Catalog=Test;Integrated Security=SSPI”
  B. “Server= AllWin;Data Source=PubBase;Database=Test;Integrated Security= SSPI”
  C. “Data Source= AllWin \PubBase;Initial Category=PubBase;Integrated Security= SSPI”
  D. “Data Source= AllWin \ PubBase;Database=Test;Integrated Security= SSPI”

113.您要创建一个ASP.NET应用程序在DataGrid控件中显示一个经过排序的列表。产品数据被存放于一个名为PubBaseMicrosoft SQL Server 数据库。每个产品的主键是ProductIDNumeric型并且每个产品有一个字母描述字段,名为ProductName。您使用一个SqlDataAdapter对象和一个SqlCommand对象通过调用一个存储过程从数据库中获取产品数据。您将SqlCommand对象的CommandType属性设置为CommandType.StoredProcedure,并将它的CommandText属性设置为procProductList。您成功的获取了一个DataTable对象,其中是已经按ProductID降序排列的产品列表。您打算显示以相反的字母顺序排列的ProductName,请问该怎么做? (  B  )
  B. 创建一个基于这个DataTable对象的新的DataView并将这个DataViewSort属性设置为“ProductName DESC”。然后将这个DataView对象绑定到DataGrid控件。

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

private : 私有成员在类的内部才可以访问。protected : 保护成员,该类内部和继承类中可以访问。public : 公共成员,完全公开,没有访问限制。internal: 在同一命名空间内可以访问。

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

select top 10 * from A where id not in (select top 30 id from A) 
2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A) 

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

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

2.使用Session变量 

3.使用Server.Transfer 

118。请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。 
session(viewstate) 简单,但易丢失 
application 全局 
cookie 简单,但可能不支持,可能被伪造 
input ttype="hidden" 简单,可能被伪造 
url参数简单,显示于地址栏,长度有限 
数据库稳定,安全,但性能相对弱

119override与重载的区别

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

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

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

121C#中接口和类的异同

接口和类都是类,不同的事,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。

122DataReaderDataSet的异同

DataReaderDataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,,数据.对数据库进行回传更新操作...

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

Using 引入一个名子空间,或在使用了一个对像后自动调用其IDesposeNew 实例化一个对像,或修饰一个方法,表此方法完全重写此方法

124C#中有一个double型的变量,比如10321.5,比如122235401.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 = 9999999999999999999999999999m;
string str = String.Format(MyCulture,"My amount = {0:c}",y);

125. 62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?
答案:62移动成26次方

126.请简述一下用Socket进行同步通讯编程的详细步骤 
1、在应用程序和远程设备中使用协议和网络地址初始化套接字 
2、在应用程序中通过指定端口和地址建立监听 
3、远程设备发出连接请求 
4、应用程序接受连接产生通信scoket 
5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束) 
6、通讯结束,关闭应用程序和远程设备的Socket回收资源

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

128、请详述在dotnet中类(class)与结构(struct)的异同:(10)   
  Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.       

129SQLSERVER服务器中,给定表   table1   中有两个字段   IDLastUpdateDateID表示更新的事务号,   LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号。(10)   
  select   top   ID   from   table1   order   by   LastUpdateData   desc      

130、简要谈一下您对微软.NET   构架下remotingwebservice两项技术的理解以及实际中的应用。(10)   
  remoting.net   中用来跨越machine,   process,   appdomain   进行方法调用的技术,对于三成结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的DCOM  Web   Service是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。Web   Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型  

131.什么叫做SQL注入,如何防止?请举例说明。
利用sql关键字对网站进行攻击。过滤关键字'等 
所谓SQL注入(SQL Injection),就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想得到的资料。
http://localhost/lawjia/show.asp?ID=444 and user>0,这时,服务器运行Select * from 表名 where 字段=444 and user>0这样的查询,当然,这个语句是运行不下去的,肯定出错,错误信息如下:

·错误类型:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]将 nvarchar 值 'sonybb' 转换为数据类型为 int 的列时发生语法错误。

132一列数的规则如下: 112358132134......  求第30位数是多少, 用递归算法实现。
答:public class MainClass 
    { 
        public static void Main()   
        { 
            Console.WriteLine(Foo(30)); 
        } 
        public static int Foo(int i) 
        { 
            if (i <= 0) 
                return 0; 
            else if(i > 0 && i <= 2) 
                return 1; 
            else return Foo(i -1) + Foo(i - 2); 
        } 
    }      

133.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty
答:
      foreach (System.Windows.Forms.Control control in this.Controls)
      {
if (control is System.Windows.Forms.TextBox)
{
    System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
    tb.Text = String.Empty ;
}
      }

134.请编程实现一个冒泡排序算法?
答:
        int [] array = new int [*] ;
int temp = 0 ;
for (int i = 0 ; i < array.Length - 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
}
}

135.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
答:不是。可以用任意类型。
136.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
答:
    int Num = this.TextBox1.Text.ToString() ;
int Sum = 0 ;
for (int i = 0 ; i < Num + 1 ; i++)
{
if((i%2) == 1)
{
Sum += i ;
}
else
{
Sum = Sum  - I ;
}
}
System.Console.WriteLine(Sum.ToString());
System.Console.ReadLine() ;

137.在下面的例子里
     using System;
     class A
     {
          public A()
           {
                PrintFields();
           }
          public virtual void PrintFields(){}
      }
      class B:A
      {
           int x=1;
           int y;
           public B()
   {
               y=-1;
           }
           public override void PrintFields()
           {
               Console.WriteLine("x={0},y={1}",x,y);
           }
当使用new B()创建B的实例时,产生什么输出?
答:X=1,Y=0;x= 1 y = -1

138.什么叫应用程序域?
答:应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小

139.什么是受管制的代码?
答:unsafe:非托管代码。不经过CLR运行。
140.什么是强类型系统?
答:RTTI:类型识别系统。

141..net中,配件的意思是?
答:程序集。(中间语言,源数据,资源,装配清单)
142.常用的调用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
    2.使用VS.NET中的Add Web Reference菜单选项
143..net Remoting 的工作原理是什么?
答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。

144.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写: 
namespace test 

public delegate void OnDBOperate(); 
public class UserControlBase : System.Windows.Forms.UserControl 

public event OnDBOperate OnNew; 
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)

if(e.Button.Equals(BtnNew)) 

//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。


}
答:if( OnNew != null )  
    OnNew( this, e ); 

145.SQLSERVER服务器中,给定表 table1 中有两个字段 IDLastUpdateDateID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1) 

146.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
public void test(int i) 

   lock(this) 
 { 
   if (i>10) 
   { 
     i--; 
     test(i); 
   } 
 } 
}
答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)
147.简要谈一下您对微软.NET 构架下remotingwebservice两项技术的理解以及实际中的应用。
答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。

148.给定以下XML文件,完成算法流程图。
<FileSystem> 
< DriverC > 
<Dir DirName=”MSDOS622”> 
<File FileName =” Command.com” ></File> 
</Dir> 
<File FileName =”MSDOS.SYS” ></File> 
<File FileName =” IO.SYS” ></File> 
</DriverC> 
</FileSystem> 
请画出遍历所有文件名(FileName)的流程图(请使用递归算法)
答:
void FindFile( Directory d )

   FileOrFolders = d.GetFileOrFolders(); 
   foreach( FileOrFolder fof in FileOrFolders )  
   { 
     if( fof is File )  
     You Found a file; 
     else if ( fof is Directory )  
     FindFile( fof ); 
    } 
}

149.写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。
答:解1:  select top 10 * from A where id not in (select top 30 id from A) 
    2:  select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A) 

150.abstract classinterface有什么区别?
答:
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
151.启动一个线程是用run()还是start()?
答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
152.接口是否可继承接口抽象类是否可实现(implements)接口抽象类是否可继承实体类(concrete class)?
答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
153.构造器Constructor是否可被override?
答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading
154.是否可以继承String?
答:String类是final类故不可以继承。
155.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
答:会执行,在return前执行。
156.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
答:不对,有相同的hash code
157.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String?
答:switchexpr1)中,expr1是一个整数表达式。因此传递给 switch  case 语句的参数应该是 int short char 或者 bytelong,string 都不能作用于swtich
158.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。
159.abstractmethod是否可同时是static,是否可同时是native,是否可同时是synchronized?
答:都不能。
160.List, Set, Map是否继承自Collection接口?
答:ListSetMap不是
161.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢是用==还是equals()? 它们有何区别?
答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
162.数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有length()这个方法,有length的属性。String有有length()这个方法。
163.sleep()  wait() 有什么区别?
答:sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来的线程具有更高的优先级
(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
164.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:short s1 = 1; s1 = s1 + 1;有错,s1short型,s1+1int,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) short s1 = 1; s1 += 1正确。
165.谈谈final, finally, finalize的区别。
答:
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此     一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中     不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为     final的方法也同样只能使用,不能重载
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会     执行,然后控制就会进入 finally 块(如果有的话)。
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理     工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的     ,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize()      方法是在垃圾收集器删除对象之前对这个对象调用的。
166.如何处理几十万条并发数据?
答:用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.
167.Session有什么重大BUG,微软提出了什么方法加以解决?
答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate   serverSQL   Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获SessionEND事件。
168.进程和线程的区别?
答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。
169.堆和栈的区别?
答:
    栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。
    堆:一般由程序员分配释放。用newmalloc等分配内存函数分配得到的就是在堆上。
170.成员变量和成员函数前加static的作用?
答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。
171.ASPNETASP相比,主要有哪些进步?
答:asp解释形,aspx编译型,性能提高,有利于保护源码。
172.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
 int num=rnd.Next(1,101);
 if(!myList.Contains(num))
 myList.Add(num);
}
  for(int i=0;i<100;i++)
   intArr[i]=(int)myList[i]; 
173:什么是 .NET Framework 3.0(先前代号 WinFX)? 
.NET Framewrok 3.0 是微软受管理程式码编写模型,它是 .NET Framework 2.0 的超集,以新的应用程式建构技术结合 .NET Framework 2.0 component,包括了视觉化令人震撼的用户体验(指 WPF,Avalon)、无缝高度整合与安全的通讯(指 WCF,Indigo)、塑造建构一个商业流程范围的能力(指 WFWorkFlow)及 Windows CardSpace 

174WinFX 技术有些什么? 
WinFX 技术现在将会包含在 .NET Framework 3.0 之中释出,对于 WinFX 技术本身或交货日期并没有任何改变,其实是同样的技术,只不过单单命名改变罢了。 

175.NET Framework 3.0  .NET Framework 2.0 之间的关连性为何? 
.NET Framework 3.0 是在 .NET Framework 2.0 之上附加一些技术,.NET Framework 3.0 是在 .NET Framework 2.0 之上附加了四大部分新技术:Windows Presentation Foundation (WPF) Windows Workflow Foundation (WF) Windows Communication Foundation (WCF)  Windows CardSpace。在 .NET Framework 3.0 中所包含的 .NET Framework 2.0 component 本身并没有任何的变动,这意谓着今天数以百万计的 .NET 程式开发人员可使用既有的技术能力去建构 .NET Framework 3.0 应用程式,同时也意谓着今天在 .NET Framework 2.0 执行的应用程式也可以继续在 .NET Framework 3.0 上执行。 

175:当我安装 .NET Framework 3.0 时会发生什么事?如果我已安装了 .NET Framework 2.0 要如何升级? 
:当你安装 .NET Framework 3.0 时,installer 会检查你是否已经安装 .NET Framework 2.0,如果没有,.NET Framework 3.0 installer 会替您安装 .NET Framework 2.0,然后再安装 .NET Framework 3.0 component;如果你已安装 .NET Framework 2.0.NET Framework 3.0 installer 只会安装 .NET Framework 3.0 新的 Component 

176:我的组织刚通过能够将产品应用在 .NET Framework 2.0 上的认证核准程序,我们需要在 .NET Framework 3.0 之上重新全面进行相同的认证核准程序吗?我需要为 .NET Framework 2.0 应用程式做任何的相容性测试吗(指在 .NET Framework 3.0 上执行)? 
:因为 .NET Framework 3.0 只有加入新的 component  .NET Framework 2.0 之上,而没有变动任何的 .NET Framework 2.0  component,所以建构在 .NET Framework 2.0 之上的应用程式将不会受到任何影响;故当您安装完 .NET Framework 3.0 之后,并不需要为您的 .NET Framework 2.0 应用程式做任何的测试。 

 177:名称的改变是否会反映在任何 .NET Framework 2.0 既存的 APIs, assemblies  namespace 
:在 .NET Framework 2.0 既存的 APIs, assemblies  namespace 不会有任何的改变,你建构在 .NET Framework 2.0 之上的应用程式将会继续照旧在 .NET Framework 3.0 上执行。 

178.NET Framework 3.0 将会使用哪个版本的 Common Language Runtime (CLR) 
.NET Framework 3.0 将会使用 .NET Framework 2.0  CLRV2.0.50727),透过 CLR 核心引擎的共用,将能够减少对整个开发平台的冲击,我们也期望较为底层的 .NET Framework component(例如 CLR Engine)能够较高阶层的 APIs 更少变动,如此降低冲击的作法才能保障客户在 .NET 技术上的投资。 

179:如果 .NET Framework 使用 .NET Framework 2.0  runtime  compiler,为何它是以 3.0 作为版本号码? 
:伴随 .NET Framework 3.0 所释出的新技术包括了 WCF, WF, WPF  CardSpace,它提供了很多很棒的功能与创新,因此我们认为它应该以 3.0 作为版本号码。 

180.NET Framework 3.0 的并行 (Side by Side) 该如何完成呢? 
:因为 .NET Framework 3.0 只有在 .NET Framework 2.0 之上加入新的 components,所以 .NET Framework 3.0  .NET Framework 2.0 两者之间的 assemblies 并没有重迭的部分,因此并没有实际的并行作业场景的问题存在,你可以在相同一台电脑上,同时执行 .NET Framework 2.0  .NET Framework 3.0 的应用程式。 

181:我现在已执行建构在 WinFX 之上的应用程式,是否我需要做任何的改变以便能够在 .NET Framework 3.0 上执行? 
:不需要,WinFX 的应用程式不需要做任何的改变就可以在 .NET Framework 3.0 之上执行。当然由于 .NET Framework 3.0 仍然在发展中,所以未来 Framework 也许有些变动也说不定。 

182:我是否可以移除特定的 .NET Framework 3.0 components 

:答案是不行的,因为 .NET Framework 3.0 componentsWPF, WCF, WF, and CardSpace)是单一 Package 的一部分,并且是安装在一起的。 

183C# 3.0VB 9Atlas  Linq 是否会包含在 .NET Framework 3.0 之中? 
:答案是不会的,因为这些功能将会包含在更未来的版本,.NET Framework 3.0 只会包含先前所描述的 WinFX 技术。 

184:在 .NET Framework 3.0 发行时,是否会包含 .NET Compact Framework 3.0 版本? 
:答案是不会,我们目前正开发可支援 .NET Framework 3.0 功能的的 Compact Framework 版本,但发行日期和所包含的功能目前尚未宣布。 

185:代号 Orcas  Visual Studio 会是使用哪个版本号码的 .NET Framework 
:目前我们对于 Orcas 产品仍在规划中,所以 .NET Framework 的版本号码尚未定义。 

186.NET Framework 3.0 中的新功能(WPF, WCF, WF, and CardSpace)将会被安装在什么地方?是否和目前 .NET Framework 2.0 所安装的路径会有所差异? 
:和 .NET Framework 2.0 共用的 components 将会安装在 %windir%\Microsoft.NET\Framework\V2.0.50727 路径;而 .NET Framework 3.0 新功能将会安装在 %windir%\Microsoft.NET\Framework\V3.0 路径。安装与部署的更多详细资讯请参考 .NET 3.0 Deployment whitepaper 

187.NET Framework 3.0 会有多大?这样的改变,是否会比目前释出的版本变得更大? 
:从 WinFX 命名变更成 .NET Framework 3.0 之后的大小并没有变更,它大约是 49MB,其中包含了 .NET Framework 2.0  22MB 

188:对于 .NET Framework 3.0 的服务运作将会是如何?如果我安装 .NET Framework 3.0 之后,我还可以获得 .NET Framework 2.0 的更新服务吗? 
:更新服务对于 .NET Framework 2.0 及其作业系统将仍会被继续,任何的 .NET Framework 2.0 更新服务也将会在安装 .NET Framework 3.0 时所一并安装的 .NET Framework 2.0 components 上正常作用。 

189.NET Framework 3.0 将会支援何种作业系统? 
.NET Framework 3.0 将会支援 Windows Vista™, Windows Server 2003 (SP1), and Windows XP (SP2) 作业系统。 

190:何时会发布释出 .NET Framework 3.0 
.NET Framework 3.0 会是包含在 Windows Vista 作业系统的一部分,Windows Vista 的客户将会得到 .NET Framework 3.0。给商业客户的第一个 Windows Vista 版本,目前计划是在 2006  11 月,然而最后日期会视客户回馈反应而决定。 
在此同时,我们会广泛地提供给 Windows XP and Windows Server 2003 客户获得 .NET Framework 3.0 下载。 

191.NET Framework 3.0  Windows Vista 作业系统之间的相关性为何? 
.NET Framework 3.0  Windows Vista 作业系统的核心元件,并且预设是会安装在 Windows Vista 作业系统,而它也会让 Windows XP and Windows Server 2003 客户取得。 

192:是否 .NET Framework 3.0 有任何的功能只能在 Windows Vista 作业系统上才能执行? 
:虽然有些 .NET Framework 3.0 的最佳化将会因 Windows Vista 新功而享有利益,但我们努力提供一致性的经验在 Windows Vista, Windows Server 2003, and Windows XP 这三种作业系统之上。

193,给我一个你最常见到的runtime exception。 
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, 

ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFORMatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException 

194,error和exception有什么区别? 
  error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 
  exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。 

195,编程题: 写一个Singleton出来。 

  Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 

  一般Singleton模式通常有几种种形式: 

  第一种形式:定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。 
public class Singleton { 
  private Singleton(){} 
  //在自己内部定义自己一个实例,是不是很奇怪? 
  //注意这是private 只供内部调用 
  private static Singleton instance = new Singleton(); 
  //这里提供了一个供外部访问本class的静态方法,可以直接访问   
  public static Singleton getInstance() { 
    return instance;    
   } 

  第二种形式: 
public class Singleton { 
  private static Singleton instance = null; 
  public static synchronized Singleton getInstance() { 
  //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次      
  //使用时生成实例,提高了效率! 
  if (instance==null) 
    instance=new Singleton(); 
return instance;   } 


其他形式: 
  定义一个类,它的构造函数为private的,所有方法为static的。 
  一般认为第一种形式要更加安全些 

196在面试过程中多次碰到两道SQL查询的题目,一是查询A(ID,Name)表中第3140条记录,ID作为主键可能是不是连续增长的列,完整的查询语句如下:
select  top 10 * from A where ID >(select max(ID) from (select  top 30 ID from A order by A ) T) order by A
另外一道题目的要求是查询表A中存在ID重复三次以上的记录,完整的查询语句如下:
select * from(select count(ID) as count from table group by ID)T where T.count>3
197比较truncate和delete 命令 

解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment .而Delete是DML操作, 需要rollback segment 且花费较长时间. 

198:Can you use a batch SQL or store procedure to calculating the Number of Days in a Month

  Answer 1找出当月的天数
select datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(cast(year(getdate()) as varchar)+'-'+cast(month(getdate()) as varchar)+'-01' as datetime))))

补充: 由于Content, Title中可能包含单引号,直接使用sql的insert命令会报错,对此有两种处理方法,一种将单引号替换成两个单引号,第2种方法是使用存储过程。 

表myBBS的格式定义如下: 
CREATE TABLE [dbo].[myBBS] ( 
[ID] [bigint] IDENTITY (1, 1) NOT NULL , 
[Title] [char] (160) COLLATE Chinese_PRC_CI_AS NULL , 
[Author] [char] (20) COLLATE Chinese_PRC_CI_AS NULL , 
[Date_of_Created] [datetime] NULL , 
[Abstract] [char] (480) COLLATE Chinese_PRC_CI_AS NULL , 
[Content] [ntext] COLLATE Chinese_PRC_CI_AS NOT NULL 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 

199、将单引号用两个单引号替换: 
SqlConnection coreDB=new SqlConnection(); 
coreDB.ConnectionString= "workstation id=\"GQA-ERIC-LV\";packet size=4096;integrated security=SSPI;" + 
"data source=\"gqa-eric-lv\";persist security info=False;initial catalog=CoreDB"; 

//单引号用"''"替换,以插入'到SQL Server中; 
string Title=TextBox1.Text.Replace("'","''"); 
string Content=TextBox2.Text.Replace("'","''"); 
if(Title.Trim()==""||Content.Trim()=="")return; 
string insertCMD =@"insert into myBBS (Title,Content) Values('"+ Title + "','" +Content+"')"; 

SqlCommand myCommand = new SqlCommand(insertCMD,coreDB); 
coreDB.Open(); 
SqlDataReader myReader = myCommand.ExecuteReader(); 
myReader.Close(); 
coreDB.Close(); 

200、使用存储过程来插入 
1) 创建存储过程: 
Create proc InsertMyBBSProc(@Title char(160), @Author char(20), @Content ntext) 
AS 
Insert into myBBS(Title,Author,Content) Values(@Title, @Author, @Content) 

2) 查询分析器中测试存储过程: 
declare @title char(160) 
declare @author char(20) 
declare @content char(600) 
set @title='test title 3' 
set @author='david euler 3' 
set @content='it is the content 3' 
exec InsertMyBBSProc @title, @author, @content 

3) C#中通过SqlCommand执行存储过程: 
SqlConnection coreDB=new SqlConnection(); 
coreDB.ConnectionString= "workstation id=\"GQA-ERIC-LV\";packet size=4096;integrated security=SSPI;" + 
"data source=\"gqa-eric-lv\";persist security info=False;initial catalog=CoreDB"; 

string Title=TextBox1.Text; 
string Content=TextBox2.Text; 

if(Title.Trim()==""||Content.Trim()=="")return; 

//InsertMyBBSProc是向MyBBS中插入数据的Procedure: 
SqlCommand insertCMD = new SqlCommand("InsertMyBBSProc",coreDB); 

insertCMD.CommandType=CommandType.StoredProcedure;//命令类型为存储过程;下面定义参数对象: 
SqlParameter prm1=new SqlParameter("@Title", SqlDbType.Char,160); 
SqlParameter prm2=new SqlParameter("@Author", SqlDbType.Char,20); 
SqlParameter prm3=new SqlParameter("@Content",SqlDbType.NText,1073741823); 
prm1.Direction=ParameterDirection.Input; 
prm2.Direction=ParameterDirection.Input; 
prm3.Direction=ParameterDirection.Input; 
//为insertCMD添加SQL参数: 
insertCMD.Parameters.Add(prm1); 
insertCMD.Parameters.Add(prm2); 
insertCMD.Parameters.Add(prm3); 
//为SQL参数赋值: 
prm1.Value=Title; 
prm2.Value="David Euler"; 
prm3.Value=Content; 

coreDB.Open(); 
int recordsAffected=insertCMD.ExecuteNonQuery(); 
if(recordsAffected==1)Response.Write("<script>alert('"+ "插入成功" +"');</script>"); 
coreDB.Close(); 


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值