.NET面试题目

来源:互联网 发布:电气行业设计软件 编辑:程序博客网 时间:2024/05/22 15:20
 
http://user.qzone.qq.com/449048948/blog/1207013272
C#和ASP.Net面试题目集锦
1.有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析.
2.A类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函数的执
 
行过程.请附code
3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?
4..Net中读写数据库需要用到哪些类?他们的作用
5.ASP.net的身份验证方式有哪些?分别是什么原理?
6.解释一下UDDI、WSDL的意义及其作用。
7.常用的调用webservice方法有哪些?
8.讲一讲你理解的web service,在dot net framework中,怎么很好的结合xml?(讲概念就行了)
9.C#可否对内存进行直接的操作?(这可是个难点哦?要注意!),如果能,如何操作;如果不能,为什么?
10.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
 
 
1.面向对象的思想主要包括什么?
面向对象三大特征:继承,封套,多态.面相对象的思想也不是一句两句就能说清楚..主要思想就是减少代码重
复,增大代码复用率..
 
2.什么是ASP.net中的用户控件
问这样的问题,一般是迷惑你.因为新手还是分不清楚用户控件和服务器控件(也称自定义控件)..用户控件一
 
般用在内容多为静态,或者少许会改变的情况下..用的比较大..类似ASP中的include..但是功能要强大的多..
 
如果现有的 ASP.NET 服务器控件都不符合应用程序的特定要求,则可以创建封装所需功能的 Web 用户控件
 
或 Web 自定义控件。这两种控件之间的主要区别在于设计时的易创建性与易用性。
 
Web 用户控件易于创建,但它们在高级方案中使用起来可能不太方便。开发 Web 用户控件的方式与开发 Web
 
窗体页的方式几乎完全相同。与 Web 窗体相似,用户控件可以在可视化设计器中创建,可以使用与 HTML 隔
 
离的代码来编写,并且可以处理执行事件。但是,由于 Web 用户控件在运行时动态地进行编译,所以不能将
 
它们添加到工具箱中,而且它们在添加到页面上时由简单的占位符标志符号来表示。如果您习惯于完全的
 
Visual Studio .NET 设计时支持(包括“属性”窗口和“设计”视图预览),这将会使 Web 用户控件使用
 
起来更不方便。 此外,在应用程序之间共享用户控件的唯一方式是将一个单独的副本放入每个应用程序,因
 
此如果对该控件作出了更改,将需要进行比较多的维护。
 
Web 自定义控件是编译的代码,这使得 Web 自定义控件更易于使用但更难于创建;Web 自定义控件必须使用
 
代码来创建。一旦创建该控件,那么,您就可以将其添加到工具箱中,并在具有完全“属性”窗口支持和
 
ASP.NET 服务器控件的其他所有设计时功能的可视化设计器中显示该控件。此外,还可以在全局程序集缓存
 
中安装 Web 自定义控件的单个副本,并在应用程序之间共享该副本,这将使维护变得更容易。有关更多信息
 
,请参阅全局程序集缓存。
如果您的控件包含大量静态布局,用户控件则可能是较佳的选择。如果您的控件主要是动态生成的(例如数
 
据绑定表的行、树视图的节点或选项卡 (TabControl) 控件的选项卡),自定义控件则可能是较佳的选择。
 
下表概述了这两种类型之间的主要区别:
Web 用户控件
1.难于创建
2.为使用可视化设计工具的使用者提供有限的支持
3. 每个应用程序中需要控件的一个单独副本
4. 不能添加到 Visual Studio 中的工具箱
5. 适用于静态布局
Web 自定义控件
1.易于创建
2. 为使用者提供完全的可视化设计工具支持
3. 仅在全局程序集缓存中需要控件的单个副本
4. 可以添加到 Visual Studio 中的工具箱
5. 适用于动态布局
 
 
3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、
 
CLS和CLR分别作何解释?
这个需要当前描述了..东西太多..打字要打死了..找个比较简单的说说吧!
CTS:公共类型系统.主要是为了语言之间的进行标准化处理.
CLS:公共语言规范.主要是确保代码可以在任何语言中访问的最小标准集体
CLR:公共语言运行时.主要是管理代码..处理,加载代码,以及所有服务的代码
 
4.列举一下你所了解的XML技术及其应用
xml用于配置,用于保存静态数据类型.接触XML最多的是web Services..和config
 
5.值类型和引用类型的区别?写出C#的样例代码。
值类型是在内存中保存,引用类型是在内存中保存一副本.你在内存中可以有多个某种引用对象..但是值类型
 
始终只有一个.
最常见的值类型就是static,struct;
例如:
static int aa = 1;//值类型
如果多个用户改变aa的值则,aa的值会以最后一个修改的记录为准.其他人的修改则会被冲掉.
引用类型,最能说明问题的就是实例化..你new出来的对象单独分配一个独立的内存..所以值不会互相冲突/
 
数据成员可以分静态变量、非静态变量两种.
 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成
 
员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因
 
为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员.
 
 非成静态员:所有没有加Static的成员都是非静态成员,当类被实例化之后,可以通过实例化的类名进行访问
 
..非静态成员的生存期决定于该类的生存期..而静态成员则不存在生存期的概念,因为静态成员始终驻留在内
 
容中..
 
 一个类中也可以包含静态成员和非静态成员,类中也包括静态构造函数和非静态构造函数..
 
 对于winApp来说,静态成员对于程序员本身省了很多事,而且因为静态成员驻留内存,在方法与方法之间传递
 
共享数据的时候,所以静态成员成了我的首选..但是不要因为方便,大量使用,尤其是在内存紧张或者
 用静态方法操作一些共享值的时候.或者要写多用户系统的时候,要慎之又慎.比如:
 static int id = 0;
 sql = "select * from table where id=" + id;l
 
6.ADO.net中常用的对象有哪些?分别描述一下。
Connection 数据库连接对象
Command 数据库命令
DataReader 数据读取器
DataSet 数据集
 
7.如何理解委托?
委托的概念,最好的说明就是事件.因为事件使用的就是委托.例如:this.Load += new System.EventHandler
 
(this.Page_Load);这个就是使用了一个委托.
具体的用法请参考.我以前的帖子,设计猫鼠联动..
 
8.C#中的接口和类有什么异同。
类是方法功能的实现和集合,接口是规范类.约束类.
参考我的文章:http://lixianhuei.cnblogs.com/archive/2005/08/04/207123.html
 
9.。net中读写数据库需要用到哪些类?他们的作用
看第六题..答案差不多
 
10.UDP连接和TCP连接的异同。
这个说不清楚.
 
11.ASP.net的身份验证方式有哪些?分别是什么原理?
window验证:为每个用户开启window帐号,验证其身份.安全性较高.
forms验证:为每个登陆用户写入一个身份验证票据..在web使用最广的验证方式..灵活方便.
 
12.进程和线程分别怎么理解?
这个是新人最容易迷惑的东西..
进程:Process
 
13.什么是code-Behind技术。
新建一个VS.NET下的项目..看到ASPX,RESX和CS三个后缀的文件了吗??这个就是代码分离.实现了HTML代码和
 
服务器代码分离.方便代码编写和整理.
 
14.活动目录的作用。
活动目录是window2000的最重要的功能.可以将用户信息全部集成起来,登陆以后可以访问多个不同的网络服
 
务..没深入研究过.
查看一下帖子:http://www.ies.impu.edu.cn/resource/os/windowsx/WindowsGeneral/WinGeneral0008.htm
 
15..net中读写XML的类都归属于哪些命名空间?
System.XML类
 
16.解释一下UDDI、WSDL的意义及其作用。
解释不清楚了..又是一大块..
 
17.什么是SOAP,有哪些应用。
simple object access protocal,简单对象接受协议.以xml为基本编码结构,建立在已有通信协议上(如http,
 
不过据说ms在搞最底层的架构在tcp/ip上的soap)的一种规范
是微软大力推广的Web Service使用的协议..
 
18.如何部署一个ASP.net页面。
不清楚问的什么意思...如果非要回答的话,就写一个带.aspx的后缀文件..然后安装IIS和FrameWork环境..浏
 
览就好了.
 
19.如何理解.net中的垃圾回收机制。
垃圾回收体制如下:
如果发现内存不够,则垃圾回收器,将全部对象作为无效对象(被回收对象),然后先将全局变量,static,处于活
 
动中的局部变量,以及当前CG指针指向的对象放入一个表中.然后
会搜索新列表中的对象所引用的对象.加入列表中,其他没有被加入列表的对象都会被回收.
 
20.常用的调用webservice方法有哪些?
我一般用的是WSDL..或者web引用..
 
 
 
 
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.详述.NET里class和struct的异同!
 
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
 
----------------------------------------------------------------------------------------------
 
------------
 
1.面向对象的思想主要包括什么?
 
答:这个题范围太广,不知道说什么.
 
2.什么是ASP.net中的用户控件
 
答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上
 
有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会
 
变得不准确,需要自已写方法调整.
 
3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、
 
CLS和CLR分别作何解释?
 
答:装箱就是把值类型转成引用类型,从MS IL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相
 
反,重载就是指一个方法名同,参数个数不同,返回值可以相同的方法.CLR是通用语言运行时,其它的不清楚.
 
4.列举一下你所了解的XML技术及其应用
 
答:XML可是好东西,保存配置,站与站之间的交流,WEB SERVICE都要用它.
 
5.值类型和引用类型的区别?写出C#的样例代码。答:结构是值类型,类是引用类型,所以传结构就是值类型的
 
应用啦,传对象或类就是引用类型的,这个不用多写了吧.
 
 
 
6.ADO.net中常用的对象有哪些?分别描述一下。
 
答:connection command sqladapter dataset datatable dataview等等.写不完了.
 
7.如何理解委托?
 
答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.
 
msdn2005中是这样解释的:
 
委托具有以下特点:
 
委托类似于 C++ 函数指针,但它是类型安全的。
 
委托允许将方法作为参数进行传递。
 
委托可用于定义回调方法。
 
委托可以链接在一起;例如,可以对一个事件调用多个方法。
 
方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。
 
C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。
 
8.C#中的接口和类有什么异同。
 
答:这个异同可多了,要说清楚还真不容易.
 
9.。net中读写数据库需要用到哪些类?他们的作用
 
答:这个类自已可以写的啊,你是指基类吗?那configuration,sqlconnection,sqlcommand等都要用到.
 
10.UDP连接和TCP连接的异同。
 
答:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结.
 
11.ASP.net的身份验证方式有哪些?分别是什么原理?答:form认证,windows集成认证等,原理不清楚.
 
 
 
12.进程和线程分别怎么理解?
 
答:进程是老子,线程是儿子,没有老子就没有儿子,一个老子可以有多个儿子.一个儿子可以成为别人的儿子,
 
一个老子也可以为别的老子生儿子.
 
13.什么是code-Behind技术。
 
答:代码分离,这是个明智的东西,像ASP这样混成一堆很不爽.或者可以理解成HTML代码写在前台,C#代码写在后台
ASP.NET面试的题目
1。请简要写出你对C#及ASP的认识。
 
 
2。怎么获得文件的当前路径(代码)
 
3。 请使用ADO。NET 写出数据库连接开始事务处理,即数据库连接(代码)
 
     
传入某个属性的set方法的隐含参数的名称是什么?
value,它的类型和属性所声名的类型相同。
如何在C#中实现继承?
在类名后加上一个冒号,再加上基类的名称。
C#支持多重继承么?
不支持。可以用接口来实现。
被protected修饰的属性/方法在何处可以访问?
在继承或间接继承与这个类的子类中可以访问。
私有成员会被继承么?
会,但是不能被访问。所以看上去他们似乎是不能被继承的,但实际上确实被继承了。
请描述一下修饰符protected internal。
被protected internal修饰的属性/方法只能在它的在同一个程序集(Assembly)中的子类被访问。
C#提供一个默认的无参数构造函数,当我实现了另外一个有一个参数的构造函数时候,还想保留这个无参数的构造函数。这样我应该写几个构造函数?
两个,一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要手动实现那个无参数构造函数。
C#中所有对象共同的基类是什么?
System.Object.
重载和覆写有什么区别?
重载提供了对一个方法签名的不同参数调用的实现。覆写提供了子类中改变父类方法行为的实现。
在方法定义中,virtual有什么含意?
被virtual修饰的方法可以被子类覆写。
能够将非静态的方法覆写成静态方法么?
不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改为override。
可以覆写私有的虚方法么?
不可以,甚至子类中无法访问父类中的私有方法。
能够阻止某一个类被其他类继承么?
可以,使用关键字sealed。
能够实现允许某个类被继承,但不允许其中的某个方法被覆写么?
可以,标记这个类为public,并标记这个方法为sealed。
什么是抽象类(abstract class)?
一种不可以被实例化的类。抽象类中一般含有抽象方法,当然也可有具体实现。继承类只有实现过所有抽象类的抽象方法后才能被实例化。
何时必须声明一个类为抽象类?
当这个类中包含抽象方法时,或是该类并没有完全实现父类的抽象方法时。
接口(interface)是什么?
只含有共有抽象方法(public abstract method)的类。这些方法必须在子类中被实现。
为什么不能指定接口中方法的修饰符?
接口中的方法用来定义对象之间通信的契约,指定接口中的方法为私有或保护没有意义。他们默认为公有方法。
可以继承多个接口么?
当然。
那么如果这些接口中有重复的方法名称呢?
这种情况中你可以决定如何实现。当然需要特别得小心。但是在编译环节是没有问题的。
接口和抽象类的区别是什么?
接口中所有方法必须是抽象的,并且不能指定方法的访问修饰符。抽象类中可以有方法的实现,也可以指定方法的访问修饰符。
如何区别重载方法?
不同的参数类型,不同的参数个数,不同的参数顺序。
const和readonly有什么区别?
const关键字用来声明编译时常量,readonly用来声明运行时常量。
System.String 和System.StringBuilder有什么区别?
System.String是不可变的字符串。System.StringBuilder存放了一个可变的字符串,并提供一些对这个字符串修改的方法
 
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 ) 中文两个字节
11.详述.NET里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
 
 1.面向对象的思想主要包括什么?
 
答:这个题范围太广,不知道说什么.
 
2.什么是ASP.net中的用户控件
 
答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上
 
有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会
 
变得不准确,需要自已写方法调整.
 
3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、
 
CLS和CLR分别作何解释?
 
答:装箱就是把值类型转成引用类型,从MS IL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相反,重载就是指一个方法名同,参数个数不同,返回值可以相同的方法.CLR是通用语言运行时,其它的不清楚.
 
4.列举一下你所了解的XML技术及其应用
答:XML可是好东西,保存配置,站与站之间的交流,WEB SERVICE都要用它.
 
5.值类型和引用类型的区别?写出C#的样例代码。
 
答:结构是值类型,类是引用类型,所以传结构就是值类型的应用啦,传对象或类就是引用类型的,这个不用多写
 
了吧.
 
6.ADO.net中常用的对象有哪些?分别描述一下。
 
答:connection command sqladapter dataset datatable dataview等等.写不完了.
 
7.如何理解委托?
 
答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.
 
msdn2005中是这样解释的:
 
委托具有以下特点:
 
委托类似于 C++ 函数指针,但它是类型安全的。
 
委托允许将方法作为参数进行传递。
 
委托可用于定义回调方法。
 
委托可以链接在一起;例如,可以对一个事件调用多个方法。
 
方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。
 
C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。
 
8.C#中的接口和类有什么异同。
 
答:这个异同可多了,要说清楚还真不容易.
 
9.。net中读写数据库需要用到哪些类?他们的作用
 
答:这个类自已可以写的啊,你是指基类吗?那configuration,sqlconnection,sqlcommand等都要用到.
 
10.UDP连接和TCP连接的异同。
 
答:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结.
 
11.ASP.net的身份验证方式有哪些?分别是什么原理?
 
答:form认证,windows集成认证等,原理不清楚.
 
12.进程和线程分别怎么理解?
 
答:进程是老子,线程是儿子,没有老子就没有儿子,一个老子可以有多个儿子.一个儿子可以成为别人的儿子,
 
一个老子也可以为别的老子生儿子.
 
13.什么是code-Behind技术。
 
答:代码分离,这是个明智的东西,像ASP这样混成一堆很不爽.或者可以理解成HTML代码写在前台,C#代码写在后台.当然前台也有脚本,类的调用等,其实写在一起也是可以的.
 
14.活动目录的作用。
 
答:这个不明白.请明白的补充一下.
 
15..net中读写XML的类都归属于哪些命名空间?
 
答:System.Xml
 
我自已写的就不一定了,嘿嘿.
 
16.解释一下UDDI、WSDL的意义及其作用。
 
答:什么东西?
 
17.什么是SOAP,有哪些应用。
 
答:SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。这种相互通信采用的是XML格式的消息,具体请看:http://playist.blogchina.com/2521621.html
 
18.如何部署一个ASP.net页面。
 
答:随便啦,想直接上传就直接上传,想打包成EXE就打包,看个人喜好.
 
19.如何理解.net中的垃圾回收机制。
 
答:GC?对象创建了总要清除啊,不然内存哪够用?
 
20.常用的调用webservice方法有哪些?
.net笔试题
 
 
姓名:                      日期:
 
1.      填空: (1)面向对象的语言具有________性、_________性、________性。
 
        (2)能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类
 
型。
 
        (3)列举ADO.net中的五个主要对象_______________、_____________、_______________、
 
_______________、_________________。
 
2. 不定项选择:
 
(1) 以下叙述正确的是:
 
      A. 接口中可以有虚方法。     B. 一个类可以实现多个接口。
      C. 接口不能被实例化。       D. 接口中可以包含已实现的方法。
 
   (2) 从数据库读取记录,你可能用到的方法有:
 
      A. ExecuteNonQuery            B. ExecuteScalar
 
      C. Fill                        D. ExecuteReader
 
3. 简述 private、 protected、 public、 internal 修饰符的访问权限。
 
 
4. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能
 
不是连续的。)
 
 
5 .列举ASP.NET 页面之间传递值的几种方式。
 
 
6. 写出程序的输出结果
 
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);
       } 
    }
 
 
7.写出程序的输出结果
 
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();
        }
}
 
 
8.      写出程序的输出结果:
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);         
        }
}
 
 
 
9. 一列数的规则如下: 1、1、2、3、5、8、13、21、34......
 
   求第30位数是多少, 用递归算法实现。(C#语言)
 
 
10. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)
 
要求: 1.要有联动性,老鼠和主人的行为是被动的。
 
2.考虑可扩展性,猫的叫声可能引起其他联动效应。
 
 
参考答案:
1. (1) 继承性、封装性、多态性。(考基本概念)
   (2) IEnumerable 、 GetEnumerator (对foreach机制的理解,本来不想出这题的,凑分)
   (3) ... (送分题, 对ADO.net的了解)
评分标准:一空1分,满分10分。
2. (1) B、C (考对接口的理解) (2) B、C、D (考查对ADO.net的熟练程度)
 评分标准: 一题5分,不选或者错选均不得分。漏选得2分。满分10分。
3. . private :   私有成员, 在类的内部才可以访问。
     protected : 保护成员,该类内部和继承类中可以访问。
     public :    公共成员,完全公开,没有访问限制。
     internal:   在同一命名空间内可以访问。
评分标准:答对1题2分,2题5分,3题7分。全对10分。 (送分题)
 
4. 解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)
    评分标准: 写对即10分。(答案不唯一,datagrid 分页可能需要用到)
 
5. 1.使用QueryString, 如....?id=1; response. Redirect()....
    2.使用Session变量
    3.使用Server.Transfer
    ....等等
   评分标准: 答对1点得3分, 两点7分, 3点10分。
 
 
6. (考查值引用和对象引用)
10
21
0
str
string being converted.
评分标准:答对一点得2分,满分10分。
 
 
7. A
    B
A.Fun()
评分标准: 写出A.B 得5分,写出A.Fun()得5分,满分10分。
(考查在继承类中构造函数, 以及new 方法, )
 
 
 
 
8. 2
    5
    1
    6
 
 
 
(一些人做这题,头都晕了.... ^_^ )
9.
    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);
        }
    }
评分标准: 写出return Foo(i -1) + Foo(i - 2); 得5分。
 
 写出if(i > 0 && i <= 2) return 1; 得5分。
 
           方法参数过多需要扣分(扣除分数 = 参数个数 - 1)
 
           不用递归算法扣5分
 
           (递归算法在树结构建立等方面比较常用)
 
 
 
10          
 
 要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象
评分标准: <1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分)
            <2>从Mouse和Master中提取抽象(5分)
            <3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分)
 
 
    public interface Observer
    {
        void Response();    //观察者的响应,如是老鼠见到猫的反映
    }
    public interface Subject
    {
        void AimAt(Observer obs); //针对哪些观察者,这里指猫的要扑捉的对象---老鼠
    }
    public class Mouse : Observer
    {
        private string name;
        public Mouse(string name, Subject subj)
        {          
            this.name = name;
            subj.AimAt(this);
        }
       
        public void Response()
        {
            Console.WriteLine(name + " attempt to escape!");
        }
    }
    public class Master : Observer
    {  
        public Master(Subject subj)
        {          
            subj.AimAt(this);
        }
       
        public void Response()
        {
            Console.WriteLine("Host waken!");
        } 
    }
 
    public class Cat : Subject
    {
        private ArrayList observers;
        public Cat()
        {  
            this.observers = new ArrayList();
        }
        public void AimAt(Observer obs)
        {
            this.observers.Add(obs);
        }
        public void Cry()
        {
            Console.WriteLine("Cat cryed!");
            foreach (Observer obs in this.observers)
            {
                obs.Response();
            }
        }
    }
    class MainClass
    {      
        static void Main(string[] args)
        {
            Cat cat = new Cat();
            Mouse mouse1 = new Mouse("mouse1", cat);
            Mouse mouse2 = new Mouse("mouse2", cat);
            Master master = new Master(cat);
            cat.Cry();
        }
    }
 
 
//---------------------------------------------------------------------------------------------
 
设计方法二: 使用event -- delegate设计..
    public delegate void SubEventHandler();
    public abstract class Subject
    {
        public event SubEventHandler SubEvent;
        protected void FireAway()
        {
            if (this.SubEvent != null)
                this.SubEvent();
        }   
    }
    public class Cat : Subject
    { 
        public void Cry()
        {
            Console.WriteLine("cat cryed.");
            this.FireAway();
        }
    }
    public abstract class Observer
    {
        public Observer(Subject sub)
        {
            sub.SubEvent += new SubEventHandler(Response);
        }
        public abstract void Response();   
    }
    public class Mouse : Observer
    {
        private string name;
        public Mouse(string name, Subject sub) : base(sub)
       {  
            this.name = name;
        }
        public override void Response()
        {
            Console.WriteLine(name + " attempt to escape!");
        }
    }
    public class Master : Observer
    {
        public Master(Subject sub) : base(sub){}
        public override void Response()
        {
            Console.WriteLine("host waken");
        }
    }
    class Class1
    {
        static void Main(string[] args)
        {
            Cat cat = new Cat();
            Mouse mouse1 = new Mouse("mouse1", cat);
            Mouse mouse2 = new Mouse("mouse2", cat);
            Master master = new Master(cat);
            cat.Cry();
        }
 
    }
 
 
1. C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
 
2. 讲一讲你理解的web service,在dot net framework中,怎么很好的结合xml?(讲概念就行了)
 
3. C#, Java 和 c++的特点,有什么相同的地方,不同的地方,C#分别从c++和java中吸取了他们那些优点?
 
4. C#可否对内存进行直接的操作?(这可是个难点哦?要注意!)
 
5. 用Visual C++ 6.0编写的代码(unmanaged code),如何在CLR下和其他dot net component结合?
 
6. 以前作过的一些项目?介绍一下自己的编程经验。(这是蒙混不过去的,基本一问就知道是真是假)
 
7. 你对公司有什么期望?你的薪水期望值?为什么学计算机?以前的工作经验(这非常重要)?
 
 
 
Q3: 维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么
 
Q4:ADO。NET相对于ADO等主要有什么改进?
 
Q5:ASP。NET与ASP相比,主要有哪些进步?
 
Q6:C#中的委托是什么?事件是不是一种委托?
 
Q7:描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
 
Q8:C#中要使一个类支持FOREACH遍历,实现过程怎样?
 
Q10:写一个HTML页面,实现以下功能,左键点击页面时显示“您好”,右键点击时显示“禁止右键”。并在
 
2分钟后自动关闭页面。
 
Q11:你对XMLHTTP、WEBSERVICE 了解吗?简单描述其特点、作用
 
Q12:接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?
 
Q13:自定义控件和一般用户控件的异同?如果要用这两者之一,你会选择哪种?为什么
 
Q14:大概描述一下ASP。NET服务器控件的生命周期
 
Q15:UML
 
Q16:面向对象的概念,主要特点
 
Q17:类划分的依据。类粒度问题
 
Q18:事物管理问题
14OverloadOverride的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载OverloadingJava多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)Overloaded的方法是可以改变返回值的类型。
15errorexception有什么区别?
error
表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception
表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
16、同步和异步有何异同,在什么情况下分别使用他们?举例说明。
如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。
17abstract classinterface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
12final, finally, finalize的区别。
final
用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally
是异常处理语句结构的一部分,表示总是执行。
finalize
Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。  
10&&&的区别。
&
是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。  
1、面向对象的特征有哪些方面
---
1.抽象:      抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
---
2.继承:      继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
---
3.封装:      封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
---
4. 多态性:  多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
 数据库方面:
1.存储过程和函数的区别
 
2.事务是什么?
 
3.游标的作用?如何知道游标已经到了最后?
 
4.触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。
 
1。用C#实现以下功能
 
   a 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
 
   b 对上面生成的数组排序,需要支持升序、降序两种顺序
 
2。请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
 
3。请说明.net中的错误处理机制,并举例
 
4。请说出强名的含义
 
5。请列出c#中几种循环的方法,并指出他们的不同
 
6。请指出.net中所有类型的基类
 
7。请指出GAC的含义
 
8。SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值
 
 
 
您在什么情况下会用到虚方法?它与接口有什么不同?
 
Q:Override与重载有什么区别?
 
Q:值类型与引用类型有什么区别?
 
Q:怎样理解静态变量?
 
Q:向服务器发送请求有几种方式?
 
Q:DataReader与Dataset有什么区别?
 
Q:如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
 
Q:用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
 
Q:软件开发过程一般有几个阶段?每个阶段的作用?
 
Q:微软推出了一系列的Application Block,请举出您所知道的Application Block并说明其作用?
 
Q:请列举一些您用到过的设计模式以及在什么情况下使用该模式?
 
Q:您对WebService的体会?
 
Q:您对编程的兴趣如何?工作中遇到不懂的问题是怎样去解决的?您一般怎样去提高自己的编程水平?
 
Q:您离职的原因是什么?
 
Q:通过超链接怎样传递中文参数?
 
Q:请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
 
Q:请编程实现一个冒泡排序算法?
 
 
 
1、override与重载的区别
 
2、.net的错误处理机制是什么
 
3、C#中接口和类的异同
 
4、DataReader和DataSet的异同
 
 
 
1.有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析.
 
2.如果需记录类的实例个数,该如何实现,请写一个简单的类于以证明.
 
3.A类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函数的执
 
行过程.
 
4.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留
 
一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.
 
 
 
一.填空题
 
1.c#中的三元运算符是__?:___?
 
2.当整数a赋值给一个object对象时,整数a将会被__装箱(封装)___?
 
3.类成员有___4__种可访问形式?
4.public static const int A=1;这段代码有错误么?是什么? const不能用static修饰
 
5.float f=-123.567F;
 
 int i=(int)f;
 
i的值现在是_____?   123 
 
6.利用operator声明且仅声明了“==”,有什么错误么? 
 
7.委托声明的关键字是______? delagete
 
8.用sealed修饰的类有什么特点?密封,不能继承
 
9.在Asp.net中所有的自定义用户控件都必须继承自________?Control
 
10.在.Net中所有可序列化的类都被标记为_____? 
 
11.在.Net托管代码中我们不用担心内存漏洞,这是因为有了______?gc
 
12.下面的代码中有什么错误吗?_______
 
     using System;
 
     class A
 
     {
 
          public virtual void F(){
 
              Console.WriteLine("A.F");
 
           }
 
      }
 
      abstract class B:A
 
       {
 
           public abstract override void F(); // new public abstract void F(); 
 
       }
 
 
 
13.当类T只声明了私有实例构造函数时,则在T的程序文本外部,___可以___(可以 or 不可以)从T派生出
 
新的类,不可以____(可以 or 不可以)直接创建T的任何实例。
 
14.下面这段代码有错误么?
 
    switch (i){
 
    case():
 
        CaseZero();
 
        break;
 
    case 1:
 
        CaseOne();
 
        break;
 
    case 2:
 
        dufault; //wrong
 
        CaseTwo();
 
        break;
 
   }
 
15.在.Net中,类System.Web.UI.Page 可以被继承么?可以
 
 
 
二.简答题
 
1.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?using 指令 和语句 new 创建实例
 
new 隐藏基类中方法
 
4.谈谈类和结构的区别?类是引用类型、结构是值类型
 
5.一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成。请用c#语言编写主要程序来实现。
 
6.对于这样的一个枚举类型:
 
      enum Color:byte{
 
          Red,
 
          Green,
 
          Blue,
 
          Orange
 
       }
 
     string[] ss=Enum.GetNames(typeof(Color));
 
     byte[]   bb=Enum.GetValues(typeof(Color));
 
试写一段程序显示出枚举类型中定义的所有符号名称以及它们对应的数值。
 
7.您了解设计模式么?请列出您所知道的设计模式的名称。 //
 
8.请在SQL Server中设计表来保存一个树状结构的组织结构图(假设结构图中只有名称这一项内容需要保存
 
),如果我想查询某一职位下的所有职位,用一个存储过程来实现,你有什么思路?
 
9.什么叫做SQL注入,如何防止?请举例说明。
 
10.下面这段代码输出什么?为什么?
 
     int i=5;
 
     int j=5;
 
     if (Object.ReferenceEquals(i,j))
 
          Console.WriteLine("Equal");
 
     else
 
          Console.WriteLine("Not Equal");
 
//不相等,因为比较的是对象
 
 
 
1.写一个实现对一段字符串翻转的方法,附加一些条件,如其中包括“,”、“.”,对其设计测试用 例 。
 
2.对一支纸杯设计测试用例(可以是广义的杯,不一定是某一支特定功能的杯)
 
开发语言概念题
 
3.什么是反射?
 
4.用Singleton如何写设计模式
 
5.C#中的垃圾回收机制是怎样的?
 
6.什么是Application Pool?
 
7.链表和数组的区别,各有什么优缺点.
 
8.Remoting在客户端服务器怎么实现 ?
 
9.什么是友元函数?
 
10.用标准C如何实现多态?
 
11.什么是虚函数?
 
12.什么是抽象函数?
 
13.什么是内存泄漏,怎样最简单的方法判断被存泄漏 ?
 
14.用英文介绍一下使用C#/C++做的项目,主要功能
 
15.如果要与美国开电话会议,会如何与美国的工程师沟通
 
16.如果老板认为你的技术落后,你会怎么回答 
 
数据库知识题
 
17.使用什么工具来调用存储过程
 
18.SQL Server的两种索引是何形式?索引的作用?索引的优缺点?
 
19.触发器的作用 
 
其它知识题及问题
 
20.什么是Web Service?
 
21.什么是XML?
 
22.Socket怎么实现
 
 
 
 
 
Q:您在什么情况下会用到虚方法?它与接口有什么不同?
 
Q:Override与重载有什么区别?
 
Q:值类型与引用类型有什么区别?
 
Q:怎样理解静态变量?
 
Q:向服务器发送请求有几种方式?
 
Q:DataReader与Dataset有什么区别?
 
Q:如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几
 
种方法进行处理?
 
Q:用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
 
Q:软件开发过程一般有几个阶段?每个阶段的作用?
 
Q:微软推出了一系列的Application Block,请举出您所知道的Application Block并说明其作用?
 
Q:请列举一些您用到过的设计模式以及在什么情况下使用该模式?
 
Q:您对WebService的体会?
 
Q:您对编程的兴趣如何?工作中遇到不懂的问题是怎样去解决的?您一般怎样去提高自己的编程水平?
 
Q:您离职的原因是什么?
 
以下几道题目如果您不会,请较为详细的描述您的解决思路和方法
 
Q:通过超链接怎样传递中文参数?
 
Q:请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
 
Q:请编程实现一个冒泡排序算法?
 
 
 
1.在对SQL Server 数据库操作时应选用(a)。
a)SQL Server .NET Framework 数据提供程序;
b)OLE DB .NET Framework 数据提供程序;
c)ODBC .NET Framework 数据提供程序;
d)Oracle .NET Framework数据提供程序;
2.下列选项中,(c)是引用类型。
a)enum类型
b)struct类型
c)string类型
d)int类型
3.关于ASP.NET中的代码隐藏文件的描述正确的是(a)
a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文
 
件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。
b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。
c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。
d)以上都不正确。
4.以下描述错误的是(a)
a)在C++中支持抽象类而在C#中不支持抽象类。
b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定
 
义类的成员。
c)在C#中可使用 new 修饰符显式隐藏从基类继承的成员。
d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
5.C#的数据类型有(b)
a)值类型和调用类型;
b)值类型和引用类型;
c)引用类型和关系类型;
d)关系类型和调用类型;
6.下列描述错误的是(d)
a)类不可以多重继承而接口可以;
b)抽象类自身可以定义成员而接口不可以;
c)抽象类和接口都不能被实例化;
d)一个类可以有多个基类和多个基接口;
7.在DOM中,装载一个XML文档的方法(b)
a)save方法
b)load方法
c)loadXML方法
d)send方法
8.下列关于构造函数的描述正确的是(c)
a)构造函数可以声明返回类型。
b)构造函数不可以用private修饰
c)构造函数必须与类名相同
d)构造函数不能带参数
9.以下是一些C#中的枚举型的定义,其中错误的用法有(a)
a)public enum var1{ Mike = 100, Nike = 102, Jike }
b)public enum var1{ Mike = 100, Nike, Jike }
c)public enum var1{ Mike=-1 , Nike, Jike }
d)public enum var1{ Mike , Nike , Jike }
10.int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}};
 
myArray3[2][2]的值是(d)。
a)9
b)2
c)6
d)越界
11.接口是一种引用类型,在接口中可以声明(a),但不可以声明公有的域或私有的成员变量。
a)方法、属性、索引器和事件;
b)方法、属性信息、属性;
c)索引器和字段;
d)事件和字段;
12.ASP.NET框架中,服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型,它们是(a)
a)HTML控件和Web控件
b)HTML控件和XML控件
c)XML控件和Web控件
d)HTML控件和IIS控件
13.ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为(b)
a)<%@Register TagPrefix = “Mike” TagName = “Space2” Src = “myX.ascx”%>
b)<%@Register TagPrefix = “Space2” TagName = “Mike” Src = “myX.ascx”%>
c)<%@Register TagPrefix = “SpaceX” TagName = “Space2” Src = “Mike”%>
d)以上皆非
14.在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(
 
c)。
a)insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;
b)ExecuteNonQuery()方法返回执行Sql语句所影响的行数。
c)Select操作的Sql语句只能由ExecuteReader()方法来执行;
d)ExecuteReader()方法返回一个DataReder对象;
15.下列ASP.NET语句(b)正确地创建了一个与SQL Server 2000数据库的连接。
a)SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSPI;
 
Initial Catalog = myDB”);
b)SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI;
 
Initial Catalog = myDB”);
c)SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI;
 
Initial Catalog = myDB);
d)SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security =
 
SSPI; Initial Catalog = myDB”);
16.Winform中,关于ToolBar控件的属性和事件的描述不正确的是(d)。
a)Buttons属性表示ToolBar控件的所有工具栏按钮
b)ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度
c)DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭头键
d)ButtonClick事件在用户单击工具栏任何地方时都会触发
17.在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和(d ),必要时还
 
要设置参数尺寸。
a)大小;
b)上限;
c)初始值;
d)类型;
 
 
18.如果将窗体的FormBoderStyle设置为None,则(B)。
a)窗体没有边框并不能调整大小;
b)窗体没有边框但能调整大小;
c)窗体有边框但不能调整大小;
d)窗体是透明的;
19.如果要将窗体设置为透明的,则( b)
a)要将FormBoderStyle属性设置为None;
b)要将Opacity属性设置为小于100%得值;
c)要将locked 属性设置为True;
d)要将 Enabled属性设置为True;
20.下列关于C#中索引器理解正确的是(c )
a)索引器的参数必须是两个或两个以上
b)索引器的参数类型必须是整数型
c)索引器没有名字
d)以上皆非
21.下面描述错误的是(D )。
a)窗体也是控件;
b)窗体也是类;
c)控件是从窗体继承来的;
d)窗体的父类是控件类;
22.要对注册表进行操作则必须包含(D )。
a)System.ComponentModel命名空间;
b)System.Collections命名空间;
c)System.Threading命名空间;
d)Microsoft.Win32命名空间;
23.要创建多文档应用程序,需要将窗体的(d )属性设为true。
a)DrawGrid;
b)ShowInTaskbar;
c)Enabled;
d)IsMdiContainer;
24.如果设treeView1=new TreeView(),则treeView1.Nodes.Add("根节点")返回的是一个 (a)类型的值。
a)TreeNode;
b)int;
c)string;
d)TreeView;
 
 25.下面关于XML的描述错误的是( d)。
a)XML提供一种描述结构化数据的方法;
b)XML 是一种简单、与平台无关并被广泛采用的标准;
c)XML文档可承载各种信息;
d)XML只是为了生成结构化文档;
26. 以下的C#代码,试图用来定义一个接口:
public interface IFile
{
int A;
int delFile()
{
A = 3;
}
void disFile();
}
关于以上的代码,以下描述错误的是(A,B )。
a)以上的代码中存在的错误包括:不能在接口中定义变量,所以int A代码行将出现错误;
b)以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以不能编写具体的实现函数;
c)代码void disFile();声明无错误,接口可以没有返回值;
d)代码void disFile();应该编写为void disFile(){};
29.在C#中利用Socket进行网络通信编程的一般步骤是:建立Socket侦听、( a)30.声明一个委托public
 
delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是(b )。
a)void myCallBack(int x) ;
b)int receive(int num) ;
c)string receive(int x) ;
d)不确定的;
二、判断题,对的打√错的打×(每小题2分,共20分)
1.( T)在C#中,装箱操作是将值类型转化成引用类型。
2.( F)接口中的成员不可以有访问域修饰符,但可以有其它修饰符。
3.( F)在C#中,索引器是专门用来访问对象中的数组信息的。
4.( T)在C#中,接口可以被多重继承而类不能。
5.( F)在C#中,int[][]是定义一个int型的二维数组。
6.( T)异常类对象均为System.Exception类的对象。
7.(T ) 当窗体最小化后,再次还原成为活动窗体时将自动触发Paint事件。
8.( T) ASP.NET中,使用验证控件来验证用户输入,要求用户不可跳过该项输入,并且用户输入值在0和1000
 
之间,则适用RequiredFieldValidator和RangeValidator控件。
9.( F) 声明委托实际上是声明了一个方法。
10.(T ) 任何事物都是对象。
1.请简述一下用Socket进行同步通讯编程的详细步骤
1、在应用程序和远程设备中使用协议和网络地址初始化套接字
2、在应用程序中通过指定端口和地址建立监听
3、远程设备发出连接请求
4、应用程序接受连接产生通信scoket
5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)
6、通讯结束,关闭应用程序和远程设备的Socket回收资源
2.比较ADO 与ADO.NET 的不同。
 
.net填空题
一.填空题  
 1.c#中的三元运算符是_____?  
 2.当整数a赋值给一个object对象时,整数a将会被_____?  
 3.类成员有_____种可访问形式?  
 4.public   static   const   int   A=1;这段代码有错误么?是什么?  
 5.float   f=-123.567F;  
      int   i=(int)f;  
 i的值现在是_____?  
 6.利用operator声明且仅声明了==,有什么错误么?  
 7.委托声明的关键字是______?  
 8.用sealed修饰的类有什么特点?  
 9.在Asp.net中所有的自定义用户控件都必须继承自________?  
 10.在.Net中所有可序列化的类都被标记为_____?  
 11.在.Net托管代码中我们不用担心内存漏洞,这是因为有了______?  
 12.下面的代码中有什么错误吗?_______  
            using   System;  
            class   A  
            {  
                      public   virtual   void   F(){  
                              Console.WriteLine("A.F");  
                        }  
              }  
              abstract   class   B:A  
                {  
                        public   abstract   override   void   F();  
                }  
   
 13.当类T只声明了私有实例构造函数时,则在T的程序文本外部,______(可以   or   不可以)从T 派生出新的类,____(可以   or   不可以)直接创建T的任何实例。  
 14.下面这段代码有错误么?  
          switch   (i){  
          case():  
                  CaseZero();  
                  break;  
          case   1:  
                  CaseOne();  
                  break;  
          case   2:  
                  dufault;  
                  CaseTwo();  
                  break;  
        }  
 15.在.Net中,类System.Web.UI.Page   可以被继承么?  
   
 二.简答题  
 1.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?  
 2.在下面的例子里  
            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的实例时,产生什么输出?  
 3.下面的例子中  
   
            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);  
                        }  
                }  
 产生的输出结果是什么?  
 4.谈谈类和结构的区别?  
 5.一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成。请用c#语言编写主要程  
   
  序来实现。  
 6.对于这样的一个枚举类型:  
              enum   Color:byte{  
                      Red,  
                      Green,  
                      Blue,  
                      Orange  
                }  
 试写一段程序显示出枚举类型中定义的所有符号名称以及它们对应的数值。  
 7.您了解设计模式么?请列出您所知道的设计模式的名称。  
 8.请在SQL   Server中设计表来保存一个树状结构的组织结构图(假设结构图中只有名称这一项内容  
   
 需要保存),如果我想查询某一职位下的所有职位,用一个存储过程来实现,你有什么思路?  
 9.什么叫做SQL注入,如何防止?请举例说明。  
 10.下面这段代码输出什么?为什么?  
            int   i=5;  
            int   j=5;  
            if   (Object.ReferenceEquals(i,j))  
                      Console.WriteLine("Equal");  
            else  
                      Console.WriteLine("Not   Equal");  
   
   
 1   ?:  
 2   装箱  
 3   3  
 4   const成员都是static所以应该去掉static  
 5  -123  
 6   要同时修改Equale和GetHash()   ?   重载了"=="   就必须重载   "!="  
 7   delegate    
 8   不可被继承  
 9   System.Web.UI.UserControl  
 10   [serializable]  
 11   gC  
 12   abstract   override   是不可以一起修饰  
 13   不可以,不可以  
 14   case():不行   default;  
 15   可以  
   
 1   Using   引入一个名子空间,或在使用了一个对像后自动调用其IDespose,New   实例化一个对像,或修饰一个方法,表此方法完全重写此方法,  
 2   X=1,Y=0  
 3   x=1,y=2  
 4   最大区别一个是引用类型,一个是值类型       默认成员访问为public是另外一个区别  
   
   
   
   
   
 .NET   &   C#   基础知识试题   (20%)  
 1.   在.net(C#   or   vb.net)中如何获得当前窗体或控件的句柄,特别是控件本身的句柄(请列举)。  
 答案:this(C#)   Me(vb.net).  
   
 2.   在.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;    
 }    
 }  
   
 3.   在.net(C#   or   vb.net)如何启动另一个程序。  
 答案:process  
   
 4.   在.net(C#   or   vb.net)中如何取消一个窗体的关闭。  
 答案:  
 private   void   Form1_Closing(object   sender,   System.ComponentModel.CancelEventArgs   e)  
    {  
          e.Cancel=true;  
    }  
   
 5.   在.net(C#   or   vb.net)中,Appplication.Exit   还是   Form.Close有什么不同?  
 答案:一个是退出整个应用程序,一个是关闭其中一个form  
   
 
实战.net
1.<%#   %>      <%     %>   有什么区别?  
 <%#   %>表示绑定的数据源  
 <%   %>是服务器端代码块  
 3.通过Web   Site   Administration   Tool   (in   VS2005)   可以实现哪些功能?Web   Site   Administration   Tool   会自动对哪些文件进行修改或添加?  
 7.ASP.NET   2.0   哪个(些)特性是你觉得最激动人心的?为什么?(也可以谈C#2.0)  
        ASP.NET   2.0相对于1.1突出了3大理念,  
            1,提高生产力  
            2   管理能力的提高(例如WEB.CONFIG)  
            3   提升效能,满足更多人的访问  
 8.你觉得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多个新的控件,减少了工作量  
   
 1、override与重载的区别  
 2、.net的错误处理机制是什么  
 3、C#中接口和类的异同  
 4、DataReader和DataSet的异同  
   
 Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数  
   
 .net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。  
   
 接口和类都是类,不同的事,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。  
   
 DataReader用于读取数据,DataSet用于在内存中保存数据。  
   
 重载与覆盖的区别  
 1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。  
 2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。  
 3、覆盖要求参数列表相同;重载要求参数列表不同。  
 4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。  
   
 4、DataReader和DataSet的异同  
 DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..  
 DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作...  
日志 > C#
 转载到我空间 复制本文网址 隐藏签名档 大字体 选用该信纸 上一篇|下一篇|返回日志列表
设置置顶 | 编辑 | 删除130道ASP.NET面试题
发表于:2008年4月1日 9时32分25秒阅读(3)评论(0)本文链接:http://user.qzone.qq.com/449048948/blog/1207013545
 
130道ASP.NET面试题
130道ASP.NET面试题
1. 简述 private、 protected、 public、 internal 修饰符的访问权限。
答 . private 私有成员, 在类的内部才可以访问。
protected 保护成员,该类内部和继承类中可以访问。
public 公共成员,完全公开,没有访问限制。
internal 在同一命名空间内可以访问。
2 .列举ASP.NET 页面之间传递值的几种方式。
答. 1.使用QueryString, 如....id=1; response. Redirect()....
2.使用Session变量
3.使用Server.Transfer
3. 一列数的规则如下 1、1、2、3、5、8、13、21、34...... 求第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);
}
}
4.C#中的委托是什么?事件是不是一种委托?
答 :
委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的引用。
是,是一种特殊的委托
5.override与重载的区别
答 :
override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要Override 是进行基类中函数的重写。为了适应需要。
6.如果在一个BS结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
答 :
this.Server.Transfer
7.请编程遍历页面上所有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 ;
}
}
8.请编程实现一个冒泡排序算法?
答:
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 ;
}
}
}
9.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
答:不是。可以用任意类型。
10.求以下表达式的值,写出您想到的一种或几种实现方法: 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() ;
11.用.net做BS结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
答:一般为3层
数据访问层,业务层,表示层。
数据访问层对数据库进行增删查改。
业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。
表示层为了与用户交互例如用户添加表单。
优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。
缺点: 增加成本。
12.在下面的例子里
using System;
class A
{
public A()
{
PrintFields();
}
public virtual void PrintFields(){}
}
class BA
{
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
13.什么叫应用程序域?
答:应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。
14.CTS、CLS、CLR分别作何解释?
答:CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。
15.什么是装箱和拆箱?
答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。
16.什么是受管制的代码?
答:unsafe:非托管代码。不经过CLR运行。
17.什么是强类型系统?
答:RTTI:类型识别系统。
18.net中读写数据库需要用到那些类?他们的作用?
答:DataSet数据存储器。
DataCommand执行语句命令。
DataAdapter数据的集合,用语填充。
19.ASP.net的身份验证方式有哪些?分别是什么原理?
答:10。Windwos(默认)用IIS...From(窗体)用帐户....Passport(密钥)
20.什么是Code-Behind技术?
答:代码后植。
21.在.net中,配件的意思是?
答:程序集。(中间语言,源数据,资源,装配清单)
22.常用的调用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜单选项
23..net Remoting 的工作原理是什么?
答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。
24.在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。
答:string str = null 是不给他分配内存空间,而string str = 给它分配长度为空字符串的内存空间。
25.请详述在dotnet中类(class)与结构(struct)的异同?
答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.
26.根据委托(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 );
27.分析以下代码,完成填空
string strTmp = abcdefg某某某;
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i= j=
答:i=13,j=10
28.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)
29.根据线程安全的相关知识,分析以下代码,当调用test方法时i10时是否会引起死锁并简要说明理由。
public void test(int i)
{
lock(this)
{
if (i10)
{
i--;
test(i);
}
}
}
答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)
30.简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。
答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCPIP,二进制传送提高效率。
31.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路
答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。
32.给定以下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 );
}
}
33.写出一条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)
34.面向对象的语言具有________性、_________性、________性
答:封装、继承、多态。
35.能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。
答:IEnumerable 、 GetEnumerator。
36.GC是什么 为什么要有GC
答:GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
37.String s = new String(xyz);创建了几个String Object
答:两个对象,一个是“xyz”,一个是指向“xyz”的引用对象s。
38.abstract class和interface有什么区别
答:
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
39.启动一个线程是用run()还是start()
答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
40.接口是否可继承接口 抽象类是否可实现(implements)接口 抽象类是否可继承实体类(concrete class)
答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
41.构造器Constructor是否可被override
答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
42.是否可以继承String类
答:String类是final类故不可以继承。
43.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后
答:会执行,在return前执行。
44.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对
答:不对,有相同的hash code。
45.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。
47.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法
不能,一个对象的一个synchronized方法只能由一个线程访问。
48.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized
答:都不能。
49.List, Set, Map是否继承自Collection接口
答:List,Set是Map不是
50.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢 是用==还是equals() 它们有何区别
答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
51.数组有没有length()这个方法 String有没有length()这个方法?
答:数组没有length()这个方法,有length的属性。String有有length()这个方法。
52.sleep() 和 wait() 有什么区别
答:sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级
(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
53.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正确。
54.谈谈final, finally, finalize的区别。
答:
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此 一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中 不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为 final的方法也同样只能使用,不能重载
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会 执行,然后控制就会进入 finally 块(如果有的话)。
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理 工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的 ,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
55.如何处理几十万条并发数据?
答:用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.
56.Session有什么重大BUG,微软提出了什么方法加以解决?
答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。
57.进程和线程的区别?
答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。
58.堆和栈的区别?
答:
栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。
堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。
59.成员变量和成员函数前加static的作用?
答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。
60.ASP。NET与ASP相比,主要有哪些进步?
答:asp解释形,aspx编译型,性能提高,有利于保护源码。
61.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count100)
{
int num=rnd.Next(1,101);
if(!myList.Contains(num))
myList.Add(num);
}
for(int i=0;i100;i++)
intArr[i]=(int)myList[i];
62.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
答:session(viewstate) 简单,但易丢失
application 全局
cookie 简单,但可能不支持,可能被伪造
input ttype=hidden 简单,可能被伪造
url参数 简单,显示于地址栏,长度有限
数据库 稳定,安全,但性能相对弱
63.请指出GAC的含义?
答:全局程序集缓存。
64.向服务器发送请求有几种方式?
答:get,post。get一般为链接方式,post一般为按钮方式。
65.DataReader与Dataset有什么区别?
答:一个是只能向前的只读游标,一个是内存中的表。
66.软件开发过程一般有几个阶段?每个阶段的作用?
答:需求分析,架构设计,代码编写,QA,部署
67.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?using 指令 和语句 new 创建实例 new 隐藏基类中方法。
答:using 引入名称空间或者使用非托管资源
new 新建实例或者隐藏父类方法
68.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.
答:string inputStr= xx xx ;
inputStr=Regex.Replace(inputStr.Trim(), , );
69.下面这段代码输出什么?为什么?
int i=5;
int j=5;
if (Object.ReferenceEquals(i,j))
Console.WriteLine(Equal);
else
Console.WriteLine(Not Equal);
答:不相等,因为比较的是对象
70.什么叫做SQL注入,如何防止?请举例说明。
答:利用sql关键字对网站进行攻击。过滤关键字'等
71.什么是反射?
答:动态获取程序集信息
72.用Singleton如何写设计模式
答:static属性里面new ,构造函数private
73.什么是Application Pool?
答:Web应用,类似Thread Pool,提高并发性能。
74.什么是虚函数?什么是抽象函数?
答:虚函数:没有实现的,可由子类继承并重写的函数。抽象函数:规定其非虚子类必须实现的函数,必须被重写。
75.什么是XML?
答:XML即可扩展标记语言。eXtensible Markup Language.标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,即可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL和XPath等。
76.什么是Web Service?UDDI?
答:Web Service便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。
  UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
77.什么是ASP.net中的用户控件?
答:用户控件一般用在内容多为静态,或者少许会改变的情况下..用的比较大..类似ASP中的include..但是功能要强大的多。
78.列举一下你所了解的XML技术及其应用
答:xml用于配置,用于保存静态数据类型.接触XML最多的是web Services..和config
79.ADO.net中常用的对象有哪些?分别描述一下。
答:Connection 数据库连接对象
Command 数据库命令
DataReader 数据读取器
DataSet 数据集
80.什么是code-Behind技术。
答:ASPX,RESX和CS三个后缀的文件,这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理.
 
81.什么是SOAP,有哪些应用。
答:simple object access protocal,简单对象接受协议.以xml为基本编码结构,建立在已有通信协议上(如http,不过据说ms在搞最底层的架构在tcpip上的soap)的一种规范Web Service使用的协议..
82.C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
答:一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加性质
83.XML 与 HTML 的主要区别
答:1. XML是区分大小写字母的,HTML不区分。
2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略p或者li之类的结束 标记。在XML中,绝对不能省略掉结束标记。
3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 字符作为结尾。这样分析器就知道不用 查找结束标记了。
4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。
5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。
84.c#中的三元运算符是?
答:?:。
85.当整数a赋值给一个object对象时,整数a将会被?
答:装箱。
86.类成员有_____种可访问形式?
答:this.;new Class().Method;
87.public static const int A=1;这段代码有错误么?是什么?
答:const不能用static修饰。
88.float f=-123.567F; int i=(int)f;i的值现在是_____
答:-123。
89.委托声明的关键字是______
答:delegate.
90.用sealed修饰的类有什么特点?
答:密封,不能继承。
91.在Asp.net中所有的自定义用户控件都必须继承自________
答:Control。
92.在.Net中所有可序列化的类都被标记为_____
答:[serializable]
93.在.Net托管代码中我们不用担心内存漏洞,这是因为有了______
答:GC。
94.下面的代码中有什么错误吗?_______
using System;
class A
{
public virtual void F(){
Console.WriteLine(A.F);
}
}
abstract class BA
{
public abstract override void F(); 答:abstract override 是不可以一起修饰.
} new public abstract void F();
95.当类T只声明了私有实例构造函数时,则在T的程序文本外部,___可以___(可以 or 不可以)从T派生出新的类,不可以____(可以 or 不可以)直接创建T的任何实例。
答:不可以,不可以。
96.下面这段代码有错误么?
switch (i){
case() 答:case()条件不能为空
CaseZero();
break;
case 1
CaseOne();
break;
case 2
dufault; 答:wrong,格式不正确
CaseTwo();
break;
}
97.在.Net中,类System.Web.UI.Page 可以被继承么?
答:可以。
98..net的错误处理机制是什么?
答:.net错误处理机制采用try-catch-finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。
99.利用operator声明且仅声明了==,有什么错误么
答:要同时修改Equale和GetHash() 重载了== 就必须重载 !=
100.在.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;
}
}
101.在.net(C# or vb.net)中如何取消一个窗体的关闭。
答:private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel=true;
}
102.在.net(C# or vb.net)中,Appplication.Exit 还是 Form.Close有什么不同?
答:一个是退出整个应用程序,一个是关闭其中一个form。
103.在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 = {0c},y);
104.某一密码仅使用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
8. 62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?
答案62移动成2的6次方
105.对于这样的一个枚举类型:
enum Colorbyte
{
Red,
Green,
Blue,
orange
}
答:string[] ss=Enum.GetNames(typeof(Color));
byte[] bb=Enum.GetValues(typeof(Color));
106. C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
答:attribute自定义属性的基类;property 类中的属性
107.C#可否对内存进行直接的操作?
答:在.net下,.net引用了垃圾回收(GC)功能,它替代了程序员 不过在C#中,不能直接实现Finalize方法,而是在析构函数中调用基类的Finalize()方法
108.ADO。NET相对于ADO等主要有什么改进?
答:1ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序,2不使用com3不在支持动态游标和服务器端游 4,可以断开connection而保留当前数据集可用 5强类型转换 6xml支持
109.写一个HTML页面,实现以下功能,左键点击页面时显示“您好”,右键点击时显示“禁止右键”。并在2分钟后自动关闭页面。
答:script language=javascript
setTimeout('window.close();',3000);
function show()
{
if (window.event.button == 1)
{
alert(左);
}
else if (window.event.button == 2)
{
alert(右);
}
}
script
110.大概描述一下ASP。NET服务器控件的生命周期
答:初始化 加载视图状态 处理回发数据 加载 发送回发更改通知 处理回发事件 预呈现 保存状态 呈现 处置 卸载
111.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)
答:不能,可以实现接口
112.Static Nested Class 和 Inner Class的不同,说得越多越好
答:Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
113.,&和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).
114.HashMap和Hashtable的区别。
答:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable.
115.short s1 = 1; s1 = s1 + 1;有什么错 short s1 = 1; s1 += 1;有什么错
答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
short s1 = 1; s1 += 1;(可以正确编译)
116.Overloaded的方法是否可以改变返回值的类型
答:Overloaded的方法是可以改变返回值的类型。
117.error和exception有什么区别
答:error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
118.%# % 和 % % 有什么区别?
答:%# %表示绑定的数据源
% %是服务器端代码块
119.你觉得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多个新的控件,减少了工作量
120.重载与覆盖的区别?
答:1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系
2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
3、覆盖要求参数列表相同;重载要求参数列表不同。
4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调 用时的实参表与形参表来选择方法体的。
121.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
答:不是。可以用任意类型。
122.在C#中,string str = null 与 string str = 请尽量使用文字或图象说明其中的区别。
答:null是没有空间引用的;
 是空间为0的字符串;
123.分析以下代码,完成填空
string strTmp = abcdefg某某某;
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i= j=
答:i=13.j=10
124.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)
125.分析以下代码。
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。所以理论上并非所有异常都会被捕捉。)
126.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路:
答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中
127.什么是WSE?目前最新的版本是多少?
答:WSE (Web Service Extension) 包来提供最新的WEB服务安全保证,目前最新版本2.0。
128.在下面的例子里
using System;
class A
{
public A(){
PrintFields();
}
public virtual void PrintFields(){}
}
class BA
{
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
130.abstract class和interface有什么区别
答:声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
 
原创粉丝点击