面试题之五

来源:互联网 发布:淘宝网货到付款怎么弄 编辑:程序博客网 时间:2024/06/10 03:02

  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

  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在搞最底层的架构在tcp/ip上的soap)的一种规范Web Service 

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

  答:一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加性质

  83.XML 与 HTML 的主要区别

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

  2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略

  或者之类的结束 标记。在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 B:A

  {

  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() ? 重载了"==" 就必须重载 "!="

  


  105.对于这样的一个枚举类型:

  enum Color:byte

  {

  Red,

  Green,

  Blue,

  orange

  }

  答:string[] ss=Enum.GetNames(typeof(Color));

  byte[] bb=Enum.GetValues(typeof(Color));



  107.C#可否对内存进行直接的操作?

  答:在.net下,.net引用了垃圾回收(GC)功能,它替代了程序员 不过在C#中,不能直接实现Finalize方法,而是在析构函数中调用基类的

Finalize()方法

  108.ADO。NET相对于ADO等主要有什么改进?

  答:1:ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序,2:不使用com3:不在支持动态游标和服务器端游 4:,可以断开

connection而保留当前数据集可用 5:强类型转换 6:xml支持

  109.写一个HTML页面,实现以下功能,左键点击页面时显示“您好”,右键点击时显示“禁止右键”。并在2分钟后自动关闭页面。

  答:

  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#中索引器的实现过程,是否只能根据数字进行索引?
  答:不是。可以用任意类型。
 
 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 B:A

  {

  int x=1;

  int y;

  public B(){

  y=-1;

  }

  public override void PrintFields(){

  Console.WriteLine("x={0},y={1}",x,y);

  }

  google_ad_client="pub-

4475724770859924";google_alternate_color="081218";google_ad_width=336;google_ad_height=280;google_ad_format="336x280_as";goog

le_ad_type="text_image";google_ad_channel="9379930647+0040325205+3668223438+4150302033+9111026978";google_color_border="08121

8";google_color_bg="081218";google_color_link="80B7D5";google_color_text="A6A9B9";google_color_url="A3A4B9";当使用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 运算符可以用

来决定某对象的类是否实现了接口。

1 (1)面向对象的语言具有__继承性_性、_封装性_性、_多态性 性。
(2)能用foreach遍历访问的对象需要实现 _ IEnumerable_ 接口或声明_ GetEnumerator_ 方法的类型。
(3).c#中的三元运算符是__?:__
2.当整数a赋值给一个object对象时,整数a将会被__装箱___?
3.类成员有__3__种可访问形式?
4.public static const int A=1;这段代码有错误么?是什么? const成员都是static所以应该去掉static
5.float f=-123.567F;
int i=(int)f;
i的值现在是_-123____?
6.利用operator声明且仅声明了==,有什么错误么? 要同时修改Equale和GetHash() ? 重载了"==" 就必须重载 "!="
7.委托声明的关键字是___ delegate ___?
8.用sealed修饰的类有什么特点?不可被继承
9.在Asp.net中所有的自定义用户控件都必须继承自_ System.Web.UI.UserControl _______?
10.在.Net中所有可序列化的类都被标记为__[serializable]___?
11.在.Net托管代码中我们不用担心内存漏洞,这是因为有了_ gC __?
12.下面的代码中有什么错误吗?_ abstract override 是不可以一起修饰______
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.下面这段代码有错误么?case():不行 default;
switch (i){
case():
CaseZero();
break;
case 1:
CaseOne();
break;
case 2:
dufault;
CaseTwo();
break;
}
15.在.Net中,类System.Web.UI.Page 可以被继承么?可以
2. 不定项选择:
(1) 以下叙述正确的是: B C
A. 接口中可以有虚方法。B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。
   (2) 从数据库读取记录,你可能用到的方法有:B C D
      A. ExecuteNonQuery            B. ExecuteScalar      C. Fill                        D. ExecuteReader
2.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选)   (        ABC 

       )  
  A.Close B.Dispose C.Finalize  
  D.using E.Quit  
  3.以下关于ref和out的描述哪些项是正确的?(多选)   (    ACD   )  
  A.使用ref参数,传递到ref参数的参数必须最先初始化。  
  B.使用out参数,传递到out参数的参数必须最先初始化。  
  C.使用ref参数,必须将参数作为ref参数显式传递到方法。  
  D.使用out参数,必须将参数作为out参数显式传递到方法。
1.在对SQL Server 数据库操作时应选用(A)。
a)SQL Server .NET Framework 数据提供程序;
b)OLE DB .NET Framework 数据提供程序;
c)ODBC .NET Framework 数据提供程序;
d)Oracle .NET Framework数据提供程序;
2.a)enum类型   b)struct类型 c)string类型   d)int类型
3.关于ASP.NET中的代码隐藏文件的描述正确的是(C)
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#的数据类型有(A)
a)值类型和调用类型; b)值类型和引用类型;c)引用类型和关系类型;d)关系类型和调用类型;
6.下列描述错误的是(D)
a)类不可以多重继承而接口可以;
b)抽象类自身可以定义成员而接口不可以;
c)抽象类和接口都不能被实例化;
d)一个类可以有多个基类和多个基接口;
7.在DOM中,装载一个XML文档的方法(D)
a)save方法   b)load方法 c)loadXML方法 d)send方法
8.下列关于构造函数的描述正确的是(C)
a)构造函数可以声明返回类型。
b)构造函数不可以用private修饰
c)构造函数必须与类名相同
d)构造函数不能带参数
9.以下是一些C#中的枚举型的定义,其中错误的用法有()
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”,正确的注册指令为( D)
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中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和(B ),必要时还要设置参数尺寸。
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#中索引器理解正确的是(B/C )
a)索引器的参数必须是两个或两个以上   b)索引器的参数类型必须是整数型
c)索引器没有名字                     d)以上皆非
21.下面描述错误的是( C/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)TreeNode;
b)int;
c)string;
d)TreeView;
25.下面关于XML的描述错误的是(D)。
a)XML提供一种描述结构化数据的方法;
b)XML 是一种简单、与平台无关并被广泛采用的标准;
c)XML文档可承载各种信息;
d)XML只是为了生成结构化文档;
1.装箱、拆箱操作发生在: (  C  )
A.类与对象之间   B.对象与对象之间
C.引用类型与值类型之间   D.引用类型与引用类型之间
2.用户类若想支持Foreach语句需要实现的接口是: (  A  )
A.IEnumerableB.IEnumerator
C.ICollectionD.ICollectData
3..Net Framework通过什么与COM组件进行交互操作?(   C )
A.Side By SideB.Web Service
C.InteropD.PInvoke
4..Net依靠以下哪一项技术解决COM存在的Dll Hell问题的?( A   )
A.Side By SideB.Interop
C.PInvokeD.COM+
5.装箱与拆箱操作是否是互逆的操作?(  B  )
A.是B.否
6.以下哪个是可以变长的数组?(  D  )
A.Array                      B.string[]
C.string[N]                  D.ArrayList
7.用户自定义异常类需要从以下哪个类继承:(  A  )
A.Exception                             B.CustomException
C.ApplicationException                  D.BaseException
8.以下代码段中能否编译通过?请给出理由。
try
{
}
catch(FileNotFoundException e1)
{
}
catch(Exception e2)
{
}
catch(IOException e3)
{
}
catch
{
}
9.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选) (   ABC     )
A.Close                 B.DisposeC.Finalize
D.using                 E.Quit
10.Net依赖以下哪项技术实现跨语言互用性?(  C  )
A.CLR               B.CTS               C.CLS                  D.CTT
11.请问: String类与StringBuilder类有什么区别?为什么在.Net类库中要同时存在这2个类?(简答)
 如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的

方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符

串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使

用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直

接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和

String类简直不是一个数量级的。
12.以下哪个类是int的基类?(    )
A.Int32              B.Object          C.ValueType            D.Int16


1) 描述线程与进程的区别? 线程(Thread)与进程(Process)二者都定义了某种边界,不同的是进程定义的是应用程序与应用程序之间的边界

,不同的进程之间不能共享代码和数据空间,而线程定义的是代码执行堆栈和执行上下文的边界。一个进程可以包括若干个线程,同时创建多

个线程来完成某项任务,便是多线程。而同一进程中的不同线程共享代码和数据空间。用一个比喻来说,如果一个家庭代表一个进程,在家庭

内部,各个成员就是线程,家庭中的每个成员都有义务对家庭的财富进行积累,同时也有权利对家庭财富进行消费,当面对一个任务的时候,

家庭也可以派出几个成员来协同完成,而家庭之外的人则没有办法直接消费不属于自己家庭的财产。
2) 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同
Windows服务是运行在windows后台指定用户下(默认System)的应用程序,它没有标准的UI界面,想比标准的EXE程序,Windows服务是在服务

开始的时候创建,而在服务结束的时候销毁,而且可以设置服务是否与操作系统一起启动,一起关闭。它支持三种方式:1)自动方式 2)手

动方式 3)禁用 。自动方式的时候,windows服务将在OS启动后自动启动运行,而手动方式则必须手工启动服务,禁用的情况下服务将不能

被启动。另外标准的EXE默认使用的当前登录的用户,而windows服务则默认使用System用户,这在对系统资源访问的时候特别需要注意。
3)  Windows单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗?这对于系统设计有什么影响?
这个需要针对硬件平台,公式为单个进程能访问的最大内存量=2的处理器位数次方/2,比如通常情况下,32位处理器下,单个进程所能访问的

最大内存量为:232 /2 = 2G 。单个进程能访问的最大内存量是最大虚拟内存的1/2,因为要分配给操作系统一半虚拟内存。
4)  什么是强类型,什么是弱类型?哪种更好些?为什么?
强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会确定类型。没有好不好,二者各有好处,强类

型安全,因为它事先已经确定好了,而且效率高。一般用于编译型编程语言,如c++,java,c#,pascal等,弱类型相比而言不安全,在运行的时候

容易出现错误,但它灵活,多用于解释型编程语言,如javascript,vb等
5)  PID是什么?在做系统的故障排除时如何使用它?
PID是进程编号,在系统发现故障的时候,可以根据它寻找故障所发生的具体进程,并且可通过visual studio.net等ide将故障进程附加到进程

中进行调试(debug)
6)  单个TCP/IP端口上能够被多少个进程侦听?
可以为多个,多个为端口复用 (多谢蛙蛙池塘的提醒)
看下面代码

端口复用
Socket socket1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            Socket socket2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            socket1.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),8235));
            socket1.Listen(10);
            socket2.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            socket2.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8235));
            socket2.Listen(10);
            Console.Read();
7)  什么是GAC?它解决了什么问题?
Gloal Assembly Cache,全局应用程序集缓存。它解决了几个程序共享某一个程序集的问题。不必再将那个被共享的程序集拷贝到应用程序目

录了,其实这道理很简单,.net应用程序在加载的时候,会首先查看全局应用程序集缓存,如果有就可以直接使用,没有再到应用程序目录进

行查找。



中级.NET开发人员
1)  阐述面向接口、面向对象、面向方面编程的区别
面向接口更关注的是概念,它的原则是先定义好行为规范,再根据行为规范创建实现,严格的来说,面向接口应该是面向对象中的一部分吧,

因为面向对象也强调的是依赖倒置原则,也就是实现依赖于抽象,而抽象不依赖于具体实现,更具比较的应该是面向接口与面向抽象对象,我

的体会是面向接口更加灵活,但实现时候,稍微有些代码冗余,而面向抽象可以结合面向接口,先定义接口,再定义抽象类,在抽象类中处理

一些公共逻辑,再实现具体实现类。面向对象是对复杂问题的分解。面向方面的编程是一种新概念,它解决了很多面向对象无法解决的问题,

比如面向对象技术只能对业务相关的代码模块化,而无法对和业务无关的代码模块化。而面向方面正是解决这一问题的方案,它的关键思想是"

将应用程序中的商业逻辑与对其提供支持的通用服务进行分离"。
2)  什么是Interface?它与Abstract Class有什么区别?
接口(Interface)是用来定义行为规范的,不会有具体实现,而抽象类除定义行为规范外,可以有部分实现,但一个类能实现多个接口,但只能

继承一个父类
3)  什么是反射?
程序集包含模块,而模块又包括类型,类型下有成员,反射就是管理程序集,模块,类型的对象,它能够动态的创建类型的实例,设置现有对

象的类型或者获取现有对象的类型,能调用类型的方法和访问类型的字段属性。它是在运行时创建和使用类型实例
4)  使用ASMX的XML Web服务与使用SOAP的.NET Remoting的区别?
Web服务使用的消息机制,而Remoting采用的RPC. Web Service能用于不同平台,不同语言,Remoting只适用于.Net。效率上Remoting高于Xml

Web Service
5)  类型系统是由XMLSchema表示的吗?CLS是XMLSchema表示的吗?
不清楚
6)  从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别?
这个就像是强弱类型的比较相似,前期绑定是在编译的时候就确定了要绑定的数据,而后期绑定是在运行的时候才填充数据。所以前期绑定如

果失败,会在编译时报编译错误,而后期绑定失败只有在运行时的时候才发生
7)  调用Assembly.Load算静态引用还是动态引用?
动态
8)  何时使用Assembly.LoadFrom?何时使用Assembly.LoadFile?
呵呵,这个比较有意思,相比LoadFile,LoadFrom则显得不地道,因为它娶媳妇的时候,是让人家穿上嫁妆,坐上马车,还得带着人家的妹妹来

,:)用它加载的是程序集,这就要求同时将此程序集所依赖的程序集加载进来。而LoadFile就地道的多,它是加载程序集文件的内容,只将

传入参数的文件加载,不考虑程序集依赖,但如果有相同实现,但位置不同的文件用LoadFrom是不能同时加载进来的,而LoadFile却可以。由

于LoadFile加载的是文件,所以调用它之后,可能因为缺少必要的依赖造成无法被执行。
9)  什么叫Assembly Qualified Name?它是一个文件名吗?它有什么不同?
它不是一个文件名,相比文件名,Assembly Qualified Name(程序集限定名称),更能确定一个程序集,它包含文件名,但同时包含版本,公

钥,和区域。因为同样一个名称的文件可能有不同的版本和区域,此时单独靠文件名称,可能会造成不能确定程序集的正确性。
10) Assembly.Load("foo.dll"); 这句话是否正确?
错误,正确的应该是Assembly.Load("foo"); 或者Assembly.LoadFrom("foo.dll"); (多谢 Tristan(Guozhijian)的提示更正)
11) 做强签名的assembly与不做强签名的assembly有什么不同?
强签名的程序集可以做成com,而不做强签名的就不行,同样强签名程序集可以安装到GAC中,而不做强签名的确不能。
12)  DateTime是否可以为null?
不能,因为其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才能被赋值null
13)  什么叫JIT?什么是NGEN?它们分别有什么限制和好处?
Just In Time 及时编译,它是在程序第一次运行的时候才进行编译,而NGEN是所谓的pre-jit,就是说在运行前事先就将生成程序集的本机镜

像,并保存到全局缓存中,适用NGEN可以提高程序集的加载和执行速度,因为它可以从本机映像中还原数代码和数据结构,而不必像jit那样动

态生成它们。感觉和缓存的道理大同小异。
14)  Finalize()和Dispose()之间的区别?
Finalize()用于隐式释放资源,Dispose()用于显示释放资源 (Finalize()的确相当于C++中的析构函数(多谢Jeffrey Zhao提示更正)
15)  using() 语法有用吗?什么是IDisposable?它是如何实现确定性终结的。
有用,实现了IDisposiable的类在using中创建,using结束后会自定调用该对象的Dispose方法,释放资源。不明白什么是确定性终结
16)  tasklist /m "mscor*" 这句命令是干嘛的?
列出所有使用了以" mscor"作为开头的dll或者exe的进程和模块信息
17)  in-proc和out-of-proc的区别
in-proc是进程内,进程内能共享代码和数据块,out-of-proc是进程外,进程外的互操作需要用进程间通讯来实现。
18)  .NET里的哪一项技术能够实现out-of-proc通讯?
.Net Remoting技术或者WCF技术
19) ASP.NET在Windows XP, Windows 2000, Windows 2003上分别跑在哪个进程里面?
Xp : aspnet_Wp.exe
Windows 2000 : aspnet_Wp.exe (多谢 Tristan提示更正)
Windows 2003 : w3wp.exe

二、C# 部分*
 
13.以下哪些可以作为接口成员?(多选) ( ABDE )
A.方法B.属性C.字段D.事件E.索引器
F.构造函数G.析构函数
14.以下关于ref和out的描述哪些项是正确的?(多选) (   ACD     )
A.使用ref参数,传递到ref参数的参数必须最先初始化。
B.使用out参数,传递到out参数的参数必须最先初始化。
C.使用ref参数,必须将参数作为ref参数显式传递到方法。
D.使用out参数,必须将参数作为out参数显式传递到方法。
15.“访问范围限定于此程序或那些由它所属的类派生的类型”是对以下哪个成员可访问性含义的正确描述?(  B   )
A.public        B.protected            C.internal         D.protected internal
16.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
17.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.都不是
18.请叙述属性与索引器的区别。
属性 索引器    
  通过名称标识。 通过签名标识。    
  通过简单名称或成员访问来访问。 通过元素访问来访问。    
  可以为静态成员或实例成员。 必须为实例成员。    
  属性的   get   访问器没有参数。 索引器的   get   访问器具有与索引器相同的形参表。    
  属性的   set   访问器包含隐式   value   参数。 除了   value   参数外,索引器的   set   访问器还具有与索引器相同的形参表。
19.请叙述const与readonly的区别。
每一个class至多只可以定义一个static构造函数,并且不允许增加访问级别关键字,参数列必须为空。
        为了不违背编码规则,通常把static数据成员声明为private,然后通过statci property提供读写访问。
        const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。
        const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。
        const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。
        readonly在运行期评估赋值,使我们得以在确保“只读访问”的前提下,把object的初始化动作推迟到运行期进行。
        readonly 关键字与 const 关键字不同: const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化

。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而 readonly 字段可用于运行时常数。
  readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。
21.您需要创建一个ASP.NET应用程序,公司考虑使用Windows身份认证。
  所有的用户都存在于AllWin这个域中。您想要使用下列认证规则来配置这个应用程序:
    a、 匿名用户不允许访问这个应用程序。
    b、 所有雇员除了Tess和King都允许访问这个应用程序。
  请问您应该使用以下哪一个代码段来配置这个应用程序?(  A  )
A. <authorization>
   <deny users=”allwin/tess, allwin/king”>
   <allow users=”*”>
   <deny users=”?”>
 </authorization>
B. <authorization>
   <allow users=”*”>
   <deny users=”allwin/tess, allwin/king”>
   <deny users=”?”>
 </authorization>
C. <authorization>
   <deny users=”allwin/tess, allwin/king”>
   <deny users=”?”>
   <allow users=”*”>
 </authorization>
D. <authorization>
   <allow users=”allwin/tess, allwin/king”>
   <allow users=”*”>
 </authorization>
E.<authorization>
   <allow users=”*”>
   <deny users=”allwin/tess, allwin/king”>
 </authorization>

22.您要创建一个显示公司员工列表的应用程序。您使用一个DataGrid控件显示员工的列表。您打算修改这个控件以便在这个Grid的Footer显示

员工合计数。请问您应该怎么做?(  C?  )
  A.重写OnPreRender事件,当Grid的Footer行被创建时显示合计数。
  B.重写OnItemCreated事件,当Grid的Footer行被创建时显示合计数。
  C.重写OnItemDataBound事件,当Grid的Footer行被创建时显示合计数。
  D. 重写OnLayout事件,当Grid的Footer行被创建时显示合计数。
23.您要创建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错误。
24.您的公司有一个DB Server,名为AllWin,其上装了MS SQLSERVER 2000。现在需要您写一个数据库连接字符串,用以连接AllWin上SQL

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”
25.您为AllWin公司创建了一个ASP.NET应用程序。这个应用程序调用一个 Xml Web Service。这个 Xml Web Service 将返回一个包含了公司雇

员列表的DataSet对象。请问您该如何在这个程序中使用这个 Xml Web Service?(  ?  )
  A.在“引用”对话框的.Net标签中选择 System.Web.Services.dll。
  B.在“Web引用”对话框中输入这个 XML Web service 的地址。
  C.在您的 Global.asax.cs 中添加一条 using 语句并指定这个 XML Web service 的地址。
  D.在您的 Global.asax.cs 中写一个事件处理器导入这个 Xml Web Service 相应的 .wsdl 和 .disco 文件。
26.您要创建一个ASP.NET应用程序在DataGrid控件中显示一个经过排序的列表。产品数据被存放于一个名为PubBase的Microsoft SQL Server

数据库。每个产品的主键是ProductID,Numeric型并且每个产品有一个字母描述字段,名为ProductName。您使用一个SqlDataAdapter对象和一

个SqlCommand对象通过调用一个存储过程从数据库中获取产品数据。您将SqlCommand对象的CommandType属性设置为

CommandType.StoredProcedure,并将它的CommandText属性设置为procProductList。您成功的获取了一个DataTable对象,其中是已经按

ProductID降序排列的产品列表。您打算显示以相反的字母顺序排列的ProductName,请问该怎么做? (  B  )
  A. 将SqlCommand对象的CommandType属性修改为CommandType.Text,将CommandText属性修改为”SELECT * FROM procProductList ORDER

BY ProductName DESC”。然后将这个DataTable对象绑定到DataGrid控件。
  B. 创建一个基于这个DataTable对象的新的DataView并将这个DataView的Sort属性设置为“ProductName DESC”。然后将这个DataView对象

绑定到DataGrid控件。
  C. 将DataGrid控件的AllowSorting属性设置为True,并将DataGridColumn的SortExpression属性设置为 “ProductName DESC”.以显示

ProductName。然后将这个DataTable对象绑定到DataGrid控件。
  D. 将DataTable对象的DisplayExpression属性设置为 “ORDER BY ProductName DESC”.。然后将这个DataTable对象绑定到DataGrid控件。
76.C#代码实现,确保windows程序只有一个实例(instance)
        ///<summary>
        ///应用程序的主入口点。
        ///</summary>
        [STAThread]
        staticvoid Main()
        {
            //防止程序多次运行
            if(!OneInstance.IsFirst("GetPayInfo"))
            {
                MessageBox.Show ("警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!","程序错误提

示:",MessageBoxButtons.OK,MessageBoxIcon.Stop);
                return;
            }
            Application.Run(new Form1());
        }
        // ******************* 防止程序多次执行 **************************
        publicabstractclass OneInstance
        {
            ///<summary>
            ///判断程序是否正在运行
            ///</summary>
            ///<param name="appId">程序名称</param>
            ///<returns>如果程序是第一次运行返回True,否则返回False</returns>
            publicstaticbool IsFirst(string appId)
            {
                bool ret=false;
                if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero)
                {
                    CreateMutex(IntPtr.Zero,0,appId);
                    ret=true;
                }
                return ret;
            } 
            [DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
            privatestaticextern IntPtr OpenMutex(
                uint dwDesiredAccess, // access
                int bInheritHandle,    // inheritance option
                string lpName          // object name
                );
 
            [DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
            privatestaticextern IntPtr CreateMutex(
                IntPtr lpMutexAttributes, // SD
                int bInitialOwner,                       // initial owner
                string lpName                            // object name
                );
        } 

原创粉丝点击