当前位置: 首页 >> 面试题 >> 技术 >> 后端开发 >> ASP >>

ASP面试题集

property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
Property:是一个方法是GET和SET的组合,一个是读,一个是写。
Attribute :是一个对象,作用在于两个方面。一个是影响编译器的形为,另一个是把描述信息写入Assembly中。

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

您在什么情况下会用到虚方法?它与接口有什么不同?
答案:子类重新定义父类的某一个方法时,必须把父类的方法定义为virtual
在定义接口中不能有方法体,虚方法可以。
实现时,子类可以不重新定义虚方法,但如果一个类继承接口,那必须实现这个接口。

What  is  the  Com+?  How  does it work?
com+(componment object model)它解决了两个工作中的问题:
1, 在以前,如果多个应用程序要使用一个函数,那么这个函数需要放在多个可执行文件中,既占用了大量的空间,
2, 当函数发生问题时,需要修改每一个可执行文件中的函数,这样就浪费了大量的时间
当你使用了com+以后,这些问题应刃而解,它的好处就是可以提高的代码的重用,有利于分布式开发,而且互相不会影响
而且它可以进行事务处理,可以保证数据可一至性,准确性,它一般会用在多个数据源的事务中,它可以保证数据的正确,一直;
它的缺点: 版本号问题,详细地计划必须有;
它的工作步骤:
1,assembily 要创建密钥  sn  /k  mykey.snk
然后把密钥的路径放在assembilyfile(@”路径”);
2,加入引用EnterpriseServices;using EnterpriseServices;
3,在以下的属性进行设置:
ApplicationName(“”);
ApplicationID(” “);
ApplicationAction(“Activation.Library”);
ApplicationAccessControl(value=false);
4,在类中编写代码:
for example:
using EnterpriseServices:
public class :ServiceComponent
{}
5,注册:
使用的命令: regsvcs /fc 注册
regsvcs /u  反注册
6,编译;
编译后它的位置与windows 的注册不同它的位置在管理工具组件服务COM+程序下面
以上是在服务器端的设置及编码
如果要应用这个类中的方法你必须添加这个类名的引用在客户端然后创建服务器端类的对象调用这个类里面方法即可

C#中接口和类的异同?
类是负责功能的实现
接口则是负责功能的定义
项目中可以通过实现接口来规范类.

DataReader和DataSet的异同?
DataReader使用时始终占用SqlConnection,在线操作数据库
每次只在内存中加载一条数据,所以占用的内存是很小的
是只进的、 只读的
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接(非连接模式)
DataSet将数据全部加载在内存中.所以比较消耗内存…但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行 回传更新操作(动态操作读入到内存的数据)

用sesled修饰的类有什么特点?
是密封类。不能被继承了。String类就是密封类。

public static const; int  A = 1;这段代码有错误么?是 什么?
错误:const不能被修饰为static ;因为定义为常量 (const )后就是静态的(static )。

在C#中,string   str = null 与&n bsp;string  str=” ”  请尽量使用文字或图象说明其中 的区别?
string   str = null 时,str定义了 但是没有分配内存空间; string  str=” ” 时,分配了内存 ,内存里面存了空值;

.net的错误处理机制是什么?
答:try,catch,finally; 发生异常时,系统找到匹配的 catch 子句后,系统将把控制转移到该 catch 子句的第一条语句,catch处理完成后,执行finally语句块,finally是可选的,如果有,则必须是否出现异常都会执行。

讲一讲你理解的web service,在dot net framework中,怎么很好的结合xml?(讲概念就行了)
Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API. 是自包含、自描述、模块化的应用 可扩展的标记语言XML,是Web Service平台中表示数据的基本格式.通过SOAP!

什么是弱引用?
弱引用:即在引用对象的同时仍然允许对该对象进行垃圾回收。
强引用:垃圾回收堆可管理所有对象类型。此堆可监视对象的整个生存期,并且仅当程序的任何部分都不引用这些对象时才将其释放

参数传值和参数传引用的区别
把值作为参数传递时,不会影响到原函数中变量的值,实际上是将该变量值的副本传递给调用的函数,
而用ref关键字进行参数传引用时,传递是变量的地址,类似指针的概念.

ASP。NET与ASP相比,主要有哪些进步?
asp解释形                |asp.net编译型,性能提高,有利于保护源码
ASP:不是独立,它是依赖于浏览器              |ASP.Net:可以和后台代码是分开的,可以独立,不依赖与浏览器;

什么是WEB控件?使用WEB控件有那些优势?
从System.Web.UI.Control继承下来的都是Web控件。优势是减少页面复杂度,控件具有重用性。

大概描述一下ASP。NET服务器控件的生命周期
答:初始化  加载视图状态  处理回发数据  加载  发送回发更改通知  处理回发事件  预呈现  保存状态  呈现  处置  卸载

什么是内存泄漏,怎样最简单的方法判断被存泄漏 ?
内存被分配,但没有被释放,就是内存泄露。在任务管理器里面看到程序占用内存越来越多,却没有减少的迹象,很可能就发生了内存泄露。

当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决
在Page_Load事件处理方法中初始化页面控件的值时没有使用IsPostback检测,覆盖了用户输入的数据。添加IsPostback检测。

请解释转发与跳转的区别?
Redirect需要在客户端一个来回,Transfer不需要,直接在服务器端转发请求。

如果出现ASP。NET中的事件不能触发可能由于什么原因造成?
可能是表单嵌套,或是事件的委托掉了。

请解释接口的显式实现有什么意义?
1.由于显式接口成员实现不能通过类或结构实例来访问,因此它们就不属于类或结构的自身的公共接口。当需在一个公用的类或结构中实现一些仅供内部使用(不允许外界访问)的接口时,这就特别有用。
2.显式接口成员实现可以消除因同时含有多个相同签名的接口成员所引起的多义性。如果没有显式接口成员实现,一个类或结构就不可能为具有相同签名和返回类型的接口成员分别提供相应的实现,也不可能为具有相同签名和不同返回类型的所有接口成员中的任何一个提供实现。

UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。

如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
答:JavaScript / Cache / QueryString
数据库;全局变量;cache缓存技术

你对微软.net企业库了解?都包括那些模块?
缓存(Caching):允许开发人员在程序中合并一个本地缓存器。
配置(Configuration): 允许程序读入和编写配置信息。
加密(Cryptography):允许开发人员在程序中使用加密技术和信号功能。
数据访问(Data Access):允许开发人员在程序中使用标准的数据库功能。
异常处理(Exception Handing):允许开发人员和规范制定者建立一套用于 处理异常的统一策略。
日志和规范应用程序(Logging and Instrumentation ):允许开发人员在程序中加入日志和规范应用程序。
安全性(Security):允许开发人员在程序中包括安全性功能。程序可以在不同的情况下使用到安 全性,比如鉴别和批准用户访问数据库,获得任务信息,以及缓存用户信息。

传入某个属性的set方法的隐含参数的名称是什么?
Value,它的类型和属性所声名的类型相同。

如何在C#中实现继承?
在类名后加上一个冒号,再加上基类的名称。

C#支持多重继承么?
类之间不支持,接口之间支持。类对接口叫做实现,不叫继承。

被protected修饰的属性/方法在何处可以访问?
在继承或间接继承与这个类的子类中可以访问。

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

请描述一下修饰符protected internal。
在同一个Assembly中,他的访问级别和public一样,而跨Assembly访问时,他的访问级别同protected 一样。即protected的范围 + internal的范围。

C# 提供一个默认的无参数构造函数,当我实现了另外一个有一个参数的构造函数时候,还想保留这个无参数的构造函数。这样我应该写几个 构造函数?
两个,一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要手动实现那个无参数构造函数。

C#中所有对象共同的基类是什么?
System.Object

重载和覆写有什么区别?
重载提供了对一个方法签名的不同参数调用的实现
覆写提供了子类中改变父类方法行为的实现。

在方法定义中,virtual有什么含意?
被virtual修饰的方法可以被子类覆写

能够将非静态的方法覆写成静态方法么?
不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改为override。

可以覆写私有的虚方法么?
不可以,甚至子类中无法访问父类中的私有方法。

能够阻止某一个类被其他类继承么?
可以,使用关键字sealed。

能够实现允许某个类被继承,但不允许其中的某个方法被覆写么?
可以,标记类为public,并标记方法为sealed。

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

何时必须声明一个类为抽象类?
当这个类中包含抽象方法时,或是该类并没有完全实现父类的抽象方法时。

接口(interface)是什么?
只含有共有抽象方法(public abstract method)的类。这些方法必须在子类中被实现。

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

可以继承多个接口么?
当然。

那么如果这些接口中有重复的方法名称呢?
这种情况中你可以决定如何实现。当然需要特别得小心。但是在编译环节是没有问题的。

接口和抽象类的区别是什么?
接口中所有方法必须是抽象的,并且不能指定方法的访问修饰符。
抽象类中可以有方法的实现,也可以指定方法的访问修饰符。

如何区别重载方法?
不同的参数类型,不同的参数个数,不同的参数顺序。

const和readonly有什么区别?
const可以用于局部常量,而readonly,实际是类的initonly字段,显然不能是局部的。

System.String 和System.StringBuilder有什么区别?
System.String是不可变的字符串。System.StringBuilder存放了一个可变的字符串,并提供一些对这个字符串修改的方法。

对于这样一个枚举类型:enum Color:byte{ Red  ,Green  , Blue  ,Orange}试写一段程序显示出枚举类型中定义的所有符号名称以及他们对应的数值。
string[] ss=emum.GetNames(typeof(Color));
byte[] bb=emum.Getvalues(typeof(Color));

微软推出了一系列的Application Block,请举出您所知道的Application Block并说明其作用?
应用模块:passport,wse,treeview

通过超链接怎样传递中文参数?
答:用URL编码,通过QueryString传递,用EnCode编码 用DeCode解码

What is Polymorphism? How to use it(example)?(什么是多态?怎样使用它?)
相同的语意不同的行为,(开始进攻,不同兵种做不同的事)
工厂模式就是一个典型的例子,(微软打印机)

What is Operator overload? Give an example.(什么是操作符重载?)
在C#中给一个操作符从新定义,让它的作用域变大,但是不改变系统本身的内值含义
例:+ he+llo=hello
public static 返回类型 operater 操作符(参数列表)

Main feature of oo.?
(OO主要的特点)
OO是一个思想,是一个建模方法,
主要有三点(封装,继承,多态)
OO主要描述类与类之间的关系有3种(关联关系和聚集关系和组合关系)
例子:
class A
{}
class B
{A a;
public void B(A a)
{this.a=a; }
}
class C
{A a=new A();}
a,c的关系a 在c中生成的,c销毁a就没了
a,b的关系a 在b外面生成的

What is OOA/OOD?
oop:面向对象编程
ooa:面向对象分析
ood:面向对象设计

in asp.net, what is form/windows/passport authentication? How to set up form/windows authentication?
(在ASP。NET中,什么是from,windows,passport验证)
none: 不验证
form: form本身是客户自定义的验证方式,弹出表单,输入用户名,密码,如果通过,
那么就可以通过form认证 (匿名访问)
windows:windows自身的安全机制保护页面.要输入这个页面的那台电脑的
windows帐户的用户名,密码
(基本验证,明文发送在Internet上
集成WINDOWS验证, 生成hashcode码传送,HASHCODE不可逆

what is modal & modeless?(什么是模式和非模式?)
modal:模式打开(不允许窗口间切换的)标题栏灰色
modeless:非模式打开(允许窗口间切换的)标题栏蓝色

what is TCP/IP & UDP ? Difference between Tcp & Udp?
(什么是TCP/IP/UDP)(TCP/UDP之间的区别是什么?)
TCP是基于连接的协议一次请求一次回应(打电话)TRANSFER CONTROL PROTOCOL/INTERNET PROTOCOL,
UDP USER DATA是非连接的只管发送(发邮件)
TcP是传输控制协议,IP是网际协议,UDP是用户数据包协议
应用层 app
表示层app
会话层app
传输层tcp udp
网络层internet
数据连接层link
物理层phycal

Linked list? Binary search tree? Build them.
链表:是一个动态的数组,是一种线形存储结构
二叉查找树:首先是的一个二叉树,非线形的储存结构,可以动态的存储数据;

What are Xml, XPath, XmlDom? What is the relation among them?
XML:它是一个可扩展的标记语言,它相当于一个简单的数据库,它可以用来表示数据和内容。
XML 扩展标记语言 是一个并不安全的数据库,能表示更复杂的结构关系
XPath相当于数据库的select,查找XML的数据
XmlDom是一个存在内存当中的模型,这个模型用来加载XML文档.

What’s the advantage of using System.Text.StringBuilder over System.String?
1速度快
2stringBuilder 是可增长的,速度更快

What’s the difference between the System.Array.CopyTo() and System.Array.Clone()?
CLONE一个指针,COPYTO一个是副本
clone浅拷贝

How can you sort the elements of the array in descending order?
先SORT 再反转

What’s the .NET data type that allows the retrieval of data by a unique key?
HashTable

Will finally block get executed if the exception had not occurred?
执行

What’s the C# equivalent of C++ catch (…), which was a catch-all statement for any possible exception?
catch{}

Can multiple catch blocks be executed?
不能,只执行一个catch

Why is it a bad idea to throw your own exceptions?
既然有异常,直接写代码处理就行,不用再抛出,给调用者了
不建议自己做异常,有异常为什么不处理还要抛出,给自己制造麻烦

What’s a delegate?
委托是一种数据结构,它引用静态方法或引用类实例及该类的实例方法。
是一个引用类型,用来封装带有特定标签和返回类型的方法,可以在代表中封装任何匹配的方法
可以用来指定各种方法,处理事件的方法,实现回调的方法,
如:delegate string TwoLong(string a,string b)
它告诉编译器这种类型代表了那种方法,他的定义就像定义类一样
然后可以创建该代表的实例

What is the  DLL HELL?  How’s the DLL Hell problem solved in .NET?
强命名,版本兼容问题,用的注册表,.net用的自身assembly文件内所以,不牵扯注册表
主要分为四部分:
1    Assembly 的名字;
2    语言文化;
3    public Key
4    版本号

What are the ways to deploy an assembly?
13直接拷贝,XCOPY(能够拷贝目录,带路径)
1。直接用鼠标拖进去
2。普通copy(xcopy);
copy:只copy文件
xcopy:加上路径

What’s a satellite assembly?
使应用程序全球化,本地化

What namespaces are necessary to create a localized application?
using Globalization;支持把应用程序做本地化
本地化支持应用程序做本地化

What’s the difference between // comments, /* */ comments and /// comments?
单行注释,多行注释,生成XML(帮助文档)
///用来生成帮助文档
//注释单行
/**/注释多行或一个段落

What does the This window show in the debugger?
this表示当前的对象,this window显示当前对象所有成员在当前那一刻的状态。
this 表示的是当前对象的所有成员在当前的那一刻的状态

How do you debug an ASP.NET Web application?
将web.config配置文件中Debug设置为true

What are three test cases you should go through in unit testing?
主动测试(输入正确的数据看结果是否正确)被动测试(输入错误的数据),引入错误的(输入非法的数据)
1。正常的数据输入
2。输入错误的数据
3。压力测试:容纳最大并发访问量,同时允许多少人访问(50–100)
数据库资源25–75

Can you change the value of a variable while debugging a C# application?
可以
可以在command 命令中

What are advantages and disadvantages of Microsoft-provided data provider classes in ADO.NET?
22数据提供者. 若连接的SQL库,用SQLPROVIDER 速度最快。缺点是只能和SQL打交道 OLEDB可以和所有的打交道,但速度慢
数据提供者:
优点:
速度是最快的(sql数据库)
缺点:
只能和sql database

What is the wildcard character in SQL?
% [] _

Explain ACID rule of thumb for transactions.
原子性,一致性,隔离性,持久性

What does Dispose method do with the connection object?
释放资源,在连接对象在内存要被清除掉之前,检查那些资源要被释放
在 dispose 中释放资源

请解释什么是上下文对象,在什么情况下要使用上下文对象
HttpContext。它是asp.net页面处理周期中,用来保存相关数据的一个对象。需要访问Session、Cookie、Cache等数据,都需要用到HttpContext对象。

ADO。NET相对于ADO等主要有什么改进
1:ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序,2:不使用com3:不在支持动态游标和服务器端游 4:,可以断开connection而保留当前数据集可用 5:强类型转换 6:xml支持
C#中的委托是什么?事件是不是一种委托?
委托是一个可以对方法进行引用的类,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用。这样,委托就等效于一个类型安全函数指针或一个回调。事件是一种委托

xmlhttp可以主动获取远端web代码,类似HttpWebRequest

接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?
接口用于规范,抽象类用于共性.
声明方法的存在而不去实现它的类被叫做抽象类
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。

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

构造器Constructor是否可被override?
答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

是否可以继承String类?
答:String类是sealed类故不可以继承。

XML 与 HTML 的主要区别
答:1. XML是区分大小写字母的,HTML不区分。
2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>之类的结束       标记。在XML中,绝对不能省略掉结束标记。
3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用       查找结束标记了。
4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。
5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。
XML:存储数据,相当一个简易的数据库。区分大小写字母的,
HTML:显示数据,不区分大小写。

public static const int A=1;这段代码有错误么?是什么?
答:const不能用static修饰。
Const默认的是static.

下面的代码中有什么错误吗?_______
using System;
class A
{
public virtual void F(){
Console.WriteLine(“A.F”);
}
}
abstract class B:A
{
public abstract override void F(); //abstract override 是可以一起
修饰.                                           Abstract virtual 不能一起使用。
}

下面这段代码有错误么?
switch (i){
case():        //://case()条件不能为空
CaseZero();
break;
case 1:
CaseOne();
break;
case 2:
dufault  //wrong,格式不正确
CaseTwo();
break;
}

.net的异常处理机制是什么?
答:.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止

在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息。
答:在form中重载DefWndProc函数来处理消息:
protected override void DefWndProc ( ref System.WinForms.Message m )
{
switch(m.msg)
{
case WM_Lbutton :
///string与MFC中的CString的Format函数的使用方法有所不同
string message = string.Format(“收到消息!参数为:{0},{1}”,m.wParam,m.lParam);
MessageBox.Show(message);///显示一个消息框
break;
case USER:
处理的代码
default:
base.DefWndProc(ref m);///调用基类函数处理非自定义消息。
break;
}
}

在.net(C# or vb.net)中如何取消一个窗体的关闭。
答:private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{e.Cancel=true; }

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

在C#中有一个double型的变量,比如10321.5,比如122235401.21644,作为货币的值如何按各个不同国家的习惯来输出。比如美国用$10,321.50和$122,235,401.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);

某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则:
(1)       密码单词的最小长度是两个字母,可以相同,也可以不同
(2)       K不可能是单词的第一个字母
(3)       如果L出现,则出现次数不止一次
(4)       M不能使最后一个也不能是倒数第二个字母
(5)       K出现,则N就一定出现
(6)       O如果是最后一个字母,则L一定出现
问题一:下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词?
A) K   B)L   C) M    D) N
答案:B
问题二:如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少?
A)1个  B)3个  C)6个  D)9个
答案:A
问题三:下列哪一个是单词密码?
A) KLLN   B) LOML   C) MLLO   D)NMKO
答案:C

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

.对于这样的一个枚举类型:
enum Color:byte
{
Red,
Green,
Blue,
Orange
}
答:string[] ss=Enum.GetNames(typeof(Color));
byte[] bb=Enum.GetValues(typeof(Color));

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

两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
答:对。因为equals()和GetHashCode()可以重载。

swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
答:可以,一个对象的一个synchronized方法只能由一个线程访问

List, Set, Map是否继承自Collection接口? (java)
答:List,Set是Map不是

Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

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

short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。

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

Session有什么重大BUG,微软提出了什么方法加以解决?
答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate   server或SQL   Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。
. Session的存放方式:1。存放在数据库里。2。 存放在另一台服务器中,3。存放在进程空间中,

进程和线程的区别?
答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。
进程是资源管理单元,进程本身管理内存一块资源,本身不会做任何事,
线程是执行单元,是一个执行序列。最终是一个一个的方法调用。做事的是线程,一个进程最少有一个主线程。可以有多少子线程,这些线程共享这个进程的资源。

堆和栈的区别?
堆:由系统管理,随系统产生而存在。有关键字NEW
栈:依赖于线程,随时线程产生而产生,消完而消完。
共同点:都是一块存储区域。

什么是SOAP,有哪些应用。
答:simple object access protocal,简单对象存取协议.以xml为基本编码结构,建立在已有通信协议上(如http,不过据说ms在搞最底层的架构在tcp/ip上的soap)的一种规范Web Service使用的协议.

谈谈final, finally, finalize的区别。
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。
finally在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize是方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。

&和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).

Collection 和 Collections的区别。
Collection:该成员支持 .NET Framework 结构,因此不适用于直接从代码中使用
Collections命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。

Static Nested Class 和 Inner Class的不同,说得越多越好
答:Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。

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

你觉得ASP.NET 2.0(VS2005)和你以前使用的开发工具(.Net 1.0或其他)有什么最大的区别?你在以前的平台上使用的哪些开发思想(pattern / architecture)可以移植到ASP.NET 2.0上 (或者已经内嵌在ASP.NET 2.0中)
答:1  ASP.NET 2.0 把一些代码进行了封装打包,所以相比1.0相同功能减少了很多代码.
2  同时支持代码分离和页面嵌入服务器端代码两种模式,以前1.0版本,.NET提示帮助只有在分离的代码文件,无       法 在页面嵌入服务器端代码获得帮助提示,
3 代码和设计界面切换的时候,2.0支持光标定位.这个我比较喜欢
4 在绑定数据,做表的分页.UPDATE,DELETE,等操作都可以可视化操作,方便了初学者
5 在ASP.NET中增加了40多个新的控件,减少了工作量

sleep() 和 wait() 有什么区别?
sleep()将当前线程阻塞指定的毫秒数
wait()释放对象上的锁并阻塞当前线程,直到它重新获取该锁

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

GAC的含义:全局程序集缓存
如果一个Assembly要被多个应用程序访问,那么他就必须放在一个CLR已确知的目录下,并且CLR在探测到有对该Assembly的引用时,它必须能自动到该目录下寻找这个程序集。这个已确知的目录称作GAC(Global Assembly Cache),就是全局程序集缓存。它一般位于下面的目录下:<System Drive>:WindowsAssemblyGAC。
GAC的作用就是提供给CLR一个已知的确定的目录去寻找引用的 程序集。
在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
using 引入名称空间或者使用非托管资源
new 新建实例或者隐藏父类方法

什么叫做SQL注入,如何防止?请举例说明。
答:利用sql关键字对网站进行攻击。过滤关键字’等

C/S 与 B/S 区别:
Client/Server是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的.
1.硬件环境不同:
C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.
B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行
2.对安全要求不同
C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.(安全的控制能力)
B/S 建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群.
3.对程序架构不同
C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑.
B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟.
4.软件重用不同
C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.
B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子
5.系统维护不同
系统维护是软件生存周期中,开销大, ——-重要
C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统
B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.
6.处理问题不同
C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统
B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小.
7.用户接口不同
C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高
B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本.
8.信息流不同
C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低
B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更象交易中心

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

CTS、CLS、CLR分别作何解释?
答:CTS:通用类型系统。CLS:通用语言规范。CLR:公共语言运行时。

什么是受管制的代码?
unsafe:非托管代码。不经过CLR运行。
托管代码:运行的。NET平台上。
非托管代码:不是运行在。NET平台上的。

调用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜单选项

.net Remoting 的工作原理是什么?
答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。
它是一个远程调用。可以用HTTP,TCP。等协议进行传输数据,而Web service只能用HTTP

简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。
答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。
Web 服务是通过XML传输数据,是基于XML的,所以它是跨平台的,通过HTTP协议通信。
而Remoting是基于。.net平台的,传输二进制数据,所以速度快,可以走多种协议。
Web Service通过网络提供服务,信息的传送是XML数据包,是用SOAP封装的,是通过HTTP传输的。

GC是什么? 为什么要有GC?
答:GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()

String s = new String(“xyz”);创建了几个String Object?//java题
答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。

在.net中,配件的意思是?
答:Assembly程序集。(dll.exe)(中间语言,源数据,资源,装配清单)

.net中读写数据库需要用到那些类?他们的作用?
答:DataSet:数据存储器。
DataCommand:执行语句命令。
DataAdapter:数据的集合,用语填充。

什么是虚函数?什么是抽象函数?
答:虚函数:没有实现的,可由子类继承并重写的函数。抽象函数:规定其非虚子类必须实现的函数,必须被重写。
虚函数:在子类可以重新定义。抽象函数:不能实现.

什么是强命名?
答:RTTI:类型识别系统。
Dll+版本号+文化背景+public key Token组合起来就可以生成强命名程序集

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

控件接收哪些类型数据?
接收Bind的控件,一般有DropDownList,DataList,DataGrid,ListBox这些集合性质的控件,
而被捆绑的主要是ArrayList(数组),Hashtable(哈稀表),DataView(数据视图),DataReader这四个

DataBind,获得的数据,系统会将其默认为String,怎样转化为其它的类型?
DataBinder.Eval(Container.DataItem,”转换的类型”,”格式”)
最后一个”格式”是可选的,一般不用去管他,Container.DataItem是捆绑的数据项,
“转换类型”指的是  Integer,String,Boolean这一类东西

打开和关闭数据库两种方法:
SqlConnection conn = new SqlConnection();
conn.Open();
SqlCommand comm = new SqlCommand();
Comm.Connection.Open();

描述数据适配器中的多表查询?
数据适配器用于在数据源和数据集之间交换数据!
SqlDataAdapter adapter = new SqlDataAdapter(“select * from table1 join table2 on table1.id=table2.id where 查询条件”,数据库连接字符串);

ASP.NET中,用手工的形式对字段进行数据绑定及分页方法?
答案:
在这里使用repeater控件
<asp:repeater id=”Repeater1″ runat=”server”>
<ItemTemplate>
<asp:Literal runat = “server” Text = ‘<%#DataBinder.Eval(Container.DataItem,”Title”) %>’
ID=”Title1″/>
</ItemTemplate>
</asp:repeater>
手工来编写分页方法,我们在这里使用System.UI.WebContols命名空间下中的PageDataSource类中的属性来写我们的分页方法.DataGrid 和DataList的分页都是利用PageDataSource类来实现的。

通过超链接怎样传递中文参数?
答:用URL编码,通过QueryString传递,用enCode编码 用deCode解码

对WebService的体会?
答:特殊的web应用程序,http协议,80端口,按照soap协议xml协议进行封装,传递的是xml的信息报包
好处:跨平台,无处不到
缺点:速度慢,服务器压力大

向服务器发送请求有几种方式?
答:客户端向SERVER请求有: (1)Post以表单形式提交 (2)Get 以QueryString形式提交

怎样理解静态变量?
答:静态变量随类的诞生而诞生,随类的销毁而销毁。
static 定义了静态变量,静态变量在类的实例中共享,不管有多少个实例,该类的静态变量始终只有一个。
静态变量很适合做为全局变量使用。静态变量在一定程度上破坏了OO的完整性。

override与重载有什么区别?
override是子类重写父类中同名的虚方法。
Overload是同名不同参的方法。

你知道Remoting中的Singleton和Singlecall的区别吗?
答:  SingleCall 每个传入的消息由新的对象实例提供服务。
Singleton 每个传入的消息由同一个对象实例提供服务。

类(class)与结构(struct)的异同&&值类型与引用类型有什么区别?
相同点:class和struct都可以定义变量、方法;
不同点:calss可以被实例化,属于引用类型,是分配在内存的堆上, 可以继承多态;
struct属于值类型, 不能继承,不能多态.是分配在内存的栈上的. 编译器在默认构造函数中将所有变量初始化,所以程序员不能定义默认构造函数等;

.什么是WSE?目前最新的版本是多少?
答:WSE (Web Service Extension) 包来提供最新的WEB服务安全保证,目前最新版本3.0。

string strTmp = “abcdefg某某某”;
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i=        13         j=      10
Unicode 编码字符和汉字都占2个字节

面向对象的语言具有继承性、封装性、多态性。

利用operator声明且仅声明了==,有什么错误么? 要同时修改Equale和GetHash() ?
重载了”==” 就必须重载 “!=”

在Asp.net中所有的自定义用户控件都必须继承自_ System.Web.UI.UserControl

在.Net中所有可序列化的类都被标记为__[serializable]_

能用foreach遍历访问的对象需要实现 IEnumerable 接口实现 GetEnumerator 方法。

列举ADO.net中的五个主要对象Command、Connection、DataSet、DataAdapter、DataReader。

以下叙述正确的是: bc
A. 接口中可以有虚方法。     B. 一个类可以实现多个接口。
C. 接口不能被实例化。       D. 接口中可以包含已实现的方法。

从数据库读取记录,你可能用到的方法有:bcd
A. ExecuteNonQuery            B. ExecuteScalar
C. Fill                        D. ExecuteReader

对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选)   (        ABC         )
A.Close B.Dispose C.Finalize
D.using E.Quit

以下关于ref和out的描述哪些项是正确的?(多选)   (    ACD   )
A.使用ref参数,传递到ref参数的参数必须最先初始化。
B.使用out参数,传递到out参数的参数必须最先初始化。
C.使用ref参数,必须将参数作为ref参数显式传递到方法。
D.使用out参数,必须将参数作为out参数显式传递到方法。

out和ref的区别

out关键字[输出型参数],指定给定的参数是一个输出参数,它也可以在函数结束时将值返回给调用的变量,out在方法调用时可以不用初始化,在返回时必须初始化。
ref关键字[引用型参数],声明为ref的参数变量传递的是指针[指向实际内存地址]的地址
区别:
1.把未赋值的变量用ref参数时非法的,而out可以.
2.在使用out时,该参数必须是看作还未赋值的,如果对一个已经赋值的变量使用out参数,则该值在函数调用的过程中,存储在该变量中的值会在执行时丢失.

关于ASP.NET中的代码隐藏文件的描述正确的是(C)
a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。
b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。
c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。
d)以上都不正确。

以下描述错误的是(A)
a)在C++中支持抽象类而在C#中不支持抽象类。
b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。
c)在C#中可使用 new 修饰符显式隐藏从基类继承的成员。
d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。

在DOM中,装载一个XML文档的方法(D)
a)save方法   b)load方法 c)loadXML方法 d)send方法

接口是一种引用类型,在接口中可以声明(A),但不可以声明公有的域或私有的成员变量。
a)方法、属性、索引器和事件; b)方法、属性信息、属性; c)索引器和字段;    d)事件和字段;

在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(C)。
a)insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;
b)ExecuteNonQuery()方法返回执行Sql语句所影响的行数。
c)Select操作的Sql语句只能由ExecuteReader()方法来执行;
d)ExecuteReader()方法返回一个DataReder对象;

用户类若想支持Foreach语句需要实现的接口是:ab
A.IEnumerableB.IEnumerator
C.ICollectionD.IcollectData

.Net Framework通过什么与COM组件进行交互操作?(   C )
A.Side By SideB.Web Service
C.Interop D.Pinvoke

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

简述 private、 protected、 public、 internal 修饰符的访问权限。
private :   私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public :    公共成员,完全公开,没有访问限制。
internal:   在同一命名空间内可以访问。
Protected internal: 包括了Protected和Internal修饰符,成员只能由包含了基类的应用程序中的从该基类派生的子类所访问。当你希望一个类中的成员只能由其子类访问,并且拒绝其他应用程序访问该类的这个成员的时候,你就要将其声明未受保护内部成员。

Application、Session、Cookie、ViewState和Cache等变量的区别是什么?

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

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

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

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

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

what is TCP/IP & UDP ? Difference between Tcp & Udp?

答案:tcp:用于网络的协议.
udp:用户数据包协议UDPClient 类使用 UDP 与网络服务通信。UdpClient 类的属性和方法提取某个 Socket 的创建细节,
该实例用于通过 UDP 请求和接收数据。
UDP 的优点是简单易用,并且能够同时向多个地址广播消息。但由于 UDP 协议是一个无连接协议,
因此发送到远程终结点的 UDP 数据文报不一定能够到达,也不一定能够以发送的相同顺序到达。
使用 UDP 的应用程序必须准备处理丢失的和顺序有误的数据文报。
若要使用 UDP 发送数据文报,必须知道承载所需服务的网络设备的网络地址以及该服务用于通信的 UDP 端口号。
Internet 分配号码机构 (IANA) 定义公共服务的端口号(请访问 www.iana.org/assignments/port-numbers)。
IANA 列表中所没有的服务可使用 1,024 到 65,535 这一范围中的端口号。

列举ASP.NET 页面之间传递值的几种方式。
使用QueryString,  如….?id=1;
response.Redirect()….
使用Session变量
使用Server.Transfer

写出程序的输出结果
class Class1  {
private string str = “Class1.str”;
private int i = 0;
static void StringConvert(string str)  {
str = “string being converted.”;
}
static void StringConvert(Class1 c)  {
c.str = “string being converted.”;
}
static void Add(int i)  {
i++;
}
static void AddWithRef(ref int i)  {
i++;
}
static void Main()  {
int i1 = 10;
int i2 = 20;
string str = “str”;
Class1 c = new Class1();
Add(i1);
AddWithRef(ref i2);
Add(c.i);
StringConvert(str);
StringConvert(c);
Console.WriteLine(i1);
Console.WriteLine(i2);
Console.WriteLine(c.i);
Console.WriteLine(str);
Console.WriteLine(c.str);
}
}
10,21,0,str, string being converted.

写出程序的输出结果
public abstract class A
{
public A()
{
Console.WriteLine(‘A’);
}
public virtual void Fun()
{
Console.WriteLine(“A.Fun()”);
}
}
public class B: A
{
public B()
{
Console.WriteLine(‘B’);
}
public new void Fun()
{
Console.WriteLine(“B.Fun()”);
}
public static void Main()
{
A a = new B();
a.Fun();
}
}
A
B
A.Fun()

在下面的例子里
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
写出程序的输出结果:
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}
public class B : A
{
public override void Fun1(int i)
{
base.Fun1 (i + 1);
}

public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);
b.Fun2(a);
}
}
2,5,1,6
在下面的例子里
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
129.下面的例子中
using System;
class A
{
public static int X;
static A(){
X=B.Y+1;
}
}
class B
{
public static int Y=A.X+1;
static B(){}
static void Main(){
Console.WriteLine(“X={0},Y={1}”,A.X,B.Y);
}
}
产生的输出结果是什么?
答:x=1,y=2

在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。
回答要点:说明详细的空间分配。(10分)
string str = null 是不给他分配内存空间
string str = “” 给它分配长度为空字符串的内存空间

根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:(10)
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 );
}
}
}

根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。(10分)
public void test(int i)
{
lock(this)
{
if (i>10)
{
i–;
test(i);
}
}
}
不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)

分析以下代码。(10)
public static void test(string ConnectString)
{ System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
conn.ConnectionString = ConnectString;
try
{ conn.Open(); ……. }
catch(Exception Ex)
{ MessageBox.Show(Ex.ToString()); }
finally
{ if (!conn.State.Equals(ConnectionState.Closed))
conn.Close(); }
}
请问 1)以上代码可以正确使用连接池吗?
答:如果传入的connectionString是一模一样的话,可以正确使用连接池。不过一模一样的意思是,连字符的空格数,顺序完全一致。
2)以上代码所使用的异常处理方法,是否所有在test方法内的异常都可以被捕捉并显示出来?
答:只可以捕捉数据库连接中的异常吧. (finally中,catch中,如果有别的可能引发异常的操作,也应该用try,catch。所以理论上并非所有异常都会被捕捉。)

简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。(10)
WS主要是可利用HTTP,穿透防火墙
Remoting可以利用TCP/IP,二进制传送提高效率。

公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路:(10)
答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中

给定以下XML文件,完成算法流程图。(10)
<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 );
}
}
简单的说就是从根节点开始遍历找子节点,在从找到的子节点找它的子节点,一层层下去

请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
Window Form :  foreach   (Control   b   in   this.Controls)
{
if   (b   is   TextBox)
{   b.Text=””;   }
}
Web Form : for(int   i=0;i<Page.Controls.Count;i++)
{
if(Page.Controls[i].toString()==”System.Web.UI.TextBox”)
{
(TextBox)Page.Controls[i].Text   =   String.Empty;
}
}

用递归来遍历所有的页面控件,然后判断类型
private   void   r(Control   c)
{
for   (int   i=0;i<c.Controls.Count;i++)
{
if   (c.Controls[i].GetType()   ==   typeof(TextBox))
((TextBox)c.Controls[i]).Text   =   “hello”;
if   (c.Controls[i].Controls.Count   >   0)
this.r(c.Controls[i]);
}
}

刷新aspx页面的六种方法(downmoon)
第一:
private void Button1_Click(object sender, System.EventArgs e)
{
Response.Redirect(Request.Url.ToString());
}
第二:
private void Button2_Click(object sender, System.EventArgs e)
{
Response.Write(“<script language=javascript>window.location.href=document.URL;</script>”);
}
第三:
private void Button3_Click(object sender, System.EventArgs e)
{
Response.AddHeader(“Refresh”,”0″);
}
第四:
private void Button6_Click(object sender, System.EventArgs e)
{//好像有些不对?
//Response.Write(“<script language=javascript>window.location.reload();</script>”);
}
第五:
<script>
<!–
var limit=”3:00″
if (document.images){
var parselimit=limit.split(“:”)
parselimit=parselimit[0]*60+parselimit[1]*1
}
function beginrefresh(){
if (!document.images)
return
if (parselimit==1)
window.location.reload()
else{
parselimit-=1
curmin=Math.floor(parselimit/60)
cursec=parselimit%60
if (curmin!=0)
curtime=curmin+”分”+cursec+”秒后重刷本页!”
else
curtime=cursec+”秒后重刷本页!”
window.status=curtime
setTimeout(“beginrefresh()”,1000)
}
}
window.onload=beginrefresh
//–>
</script>
<DIV style=”Z-INDEX: 102; LEFT: 408px; POSITION: absolute; TOP: 232px” ms_positioning=”text2D”>
<P><FONT size=”3″>自动刷新页面</FONT></P>
/DIV>
第六:
<meta http-equiv=”refresh” content=”300; url=target.html”>

页面导航方式之比较与选择
一、超级链接
从一个表单进入另一个表单最简单的方式是使用HTML超级链接控件。在Web表单中,使用超级链接的HTML代码类如:
<a href=”WebForm2.aspx”>进入表单2</a>
当用户点击该超级链接,WebForm2.aspx执行并将结果发送到浏览器。超级链接导航方式几乎可用于任何地方,包括HTML页面和普通的ASP页面。ASP.NET还提供了另一种可替换使用的方法,即HyperLink服务器控件:
<form id=”Form1″ method=”post” runat=”server”>
<asp:HyperLink id=”HyperLink1″ runat=”server”
NavigateUrl=”WebForm2.aspx”>进入表单2</asp:HyperLink>
</form>
上述HTML代码的运行结果和第一个例子相同,因为ASP.NET把HyperLink Web服务器控件视为一个HTML超级链接控件。但两者有一点重要的区别,HyperLink Web服务器控件可以在服务器端编程。具体地说,可以在程序代码中改变它的NavigateUrl属性,从而允许构造出具体目标可根据应用的当前状态动态变化的超级链接,例如:
Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click
HyperLink1.NavigateUrl = “WebForm3.aspx”
End Sub
这段代码执行后,如果用户点击链接,他看到的将是WebForm3.aspx,而不是WebForm2.aspx。
二、用程序控制重定向
虽然超级链接能够从一个页面导航到另一个页面,但这种导航方式是完全由用户控制的。有些时候,我们可能要用代码来控制整个导航过程,包括何时转到另一个页面。在这些场合,ASP.NET有三种不同的方式可以达到相似的目的:调用Response对象的Redirect方法,调用Server对象的Transfer或Execute方法。这三种导航方式的行为基本相似,但也有区别。
2.1 Response.Redirect
Response.Redirect方法导致浏览器链接到一个指定的URL。当Response.Redirect()方法被调用时,它会创建一个应答,应答头中指出了状态代码302(表示目标已经改变)以及新的目标URL。浏览器从服务器收到该应答,利用应答头中的信息发出一个对新URL的请求。
这就是说,使用Response.Redirect方法时重定向操作发生在客户端,总共涉及到两次与服务器的通信(两个来回):第一次是对原始页面的请求,得到一个302应答,第二次是请求302应答中声明的新页面,得到重定向之后的页面。
2.2 Server.Transfer
Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX页面。调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流。
如果用Server.Transfer方法实现页面之间的导航,浏览器中的URL不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换。

默认情况下,Server.Transfer方法不会把表单数据或查询字符串从一个页面传递到另一个页面,但只要把该方法的第二个参数设置成True,就可以保留第一个页面的表单数据和查询字符串。
同时,使用Server.Transfer时应注意一点:目标页面将使用原始页面创建的应答流,这导致ASP.NET的机器验证检查(Machine Authentication Check,MAC)认为新页面的ViewState已被篡改。因此,如果要保留原始页面的表单数据和查询字符串集合,必须把目标页面Page指令的EnableViewStateMac属性设置成False。
2.3 Server.Execute
Server.Execute方法允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面,当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。
这种页面导航方式类似于针对ASPX页面的一次函数调用,被调用的页面能够访问发出调用页面的表单数据和查询字符串集合,所以要把被调用页面Page指令的EnableViewStateMac属性设置成False。
默认情况下,被调用页面的输出追加到当前应答流。但是,Server.Execute方法有一个重载的方法,允许通过一个TextWriter对象(或者它的子对象,例如StringWriter对象)获取被调用页面的输出,而不是直接追加到输出流,这样,在原始页面中可以方便地调整被调用页面输出结果的位置。
为说明其工作过程,下面我们创建一个Web表单,放入一个按钮控件(Button1)和一个文本控件(Literal1),在设计界面中转入代码视图,加入一个System.IO名称空间的Imports语句,然后加入用户点击按钮时执行的代码:
Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click
Dim sw As StringWriter = New StringWriter()
Server.Execute(“WebForm2.aspx”, sw)
Literal1.Text = sw.ToString()
End Sub
然后为同一个Web应用创建第二个页面WebForm2.aspx。转入该页面的HTML视图,修改其Page指令禁止ViewState检查:
<%@ Page Language=”vb” AutoEventWireup=”false” Codebehind=”WebForm2.aspx.vb”
Inherits=”Navigate.WebForm2″ EnableViewStateMac=”false”%>
再转到设计视图,为第二个页面增加一些控件。接下来,把第一个页面设置成默认页面,启动应用。点击按钮,WebForm2的控件将显示在WebForm1中放置Literal按钮的地方,如图一,注意页面标题和URL仍旧显示原始页面WebForm1。

用Server.Transfer或Server.Execute方法实现导航时,还要注意一点:最后得到的页面可能不是合法的HTML页面,因为最终返回给客户端的页面可能包含多个<HTML>和<BODY>等标记。IE浏览器看来能够容忍并正确处理这类情形,但如果用户要用到其他的浏览器,最好仔细测试一下。
三、比较与选择
既然从一个页面导航到另一个页面的办法有这么多,应该如何选择最佳的导航方式呢?下面是一些需要考虑的因素:
•如果要让用户来决定何时转换页面以及转到哪一个页面,超级链接最适合。
•如果要用程序来控制转换的目标,但转换的时机由用户决定,使用Web服务器的HyperLink控件,动态设置其NavigateUrl属性。
•如果要把用户连接到另一台服务器上的资源,使用Response.Redirect。
•用Response.Redirect把用户连接到非ASPX的资源,例如HTML页面。
•如果要将查询字符串作为URL的一部分保留,使用Response.Redirect。
•如果要将执行流程转入同一Web服务器的另一个ASPX页面,应当使用Server.Transfer而不是Response.Redirect,因为Server.Transfer能够避免不必要的网络通信,从而获得更好的性能和浏览效果。
•如果要捕获一个ASPX页面的输出结果,然后将结果插入另一个ASPX页面的特定位置,则使用Server.Execute。
•如果要确保HTML输出合法,请使用Response.Redirect,不要使用Server.Transfer或Server.Execute方法。

Loading