多语言展示
当前在线:1872今日阅读:84今日分享:32

C#部分-面试题(有答案)

以下哪些可以作为接口成员?(多选) ( 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  );  }  3.简述 private、protected、public、internal 修饰符的访问权限。  private : 私有成员, 在类的内部才可以访问。protected : 保护成员,该类内部和继承类中可以访问。public : 公共成员,完全公开,没有访问限制。internal: 在同一命名空间内可以访问。  4. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。)  select top 10 * from A where id not in (select top 30 id from A)  解2: select top 10 * from A where id 〉 (select max(id) from (select top 30 id from A )as A)  5 .列举ASP.NET 页面之间传递值的几种方式。  1.使用QueryString, 如....?id=1; response. Redirect()....  2.使用Session变量  3.使用Server.Transfer  2。请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。  session(viewstate) 简单,但易丢失  application 全局  cookie 简单,但可能不支持,可能被伪造  input ttype=“hidden“ 简单,可能被伪造  url参数简单,显示于地址栏,长度有限  数据库稳定,安全,但性能相对弱  2.override与重载的区别  Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数  3、.net的错误处理机制是什么  .net错误处理机制采用try-〉catch-〉finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。  4、C#中接口和类的异同  接口和类都是类,不同的事,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。  4、DataReader和DataSet的异同  DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..  DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作...  1.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?  Using 引入一个名子空间,或在使用了一个对像后自动调用其IDespose,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的实例时,产生什么输出?X=1,Y=0  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);  }  }  产生的输出结果是什么?x=1,y=2  4.谈谈类和结构的区别?  最大区别一个是引用类型,一个是值类型 默认成员访问为public是另外一个区别  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  6. 在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);  7. 某一密码仅使用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次方  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 的原理  利用反射,配置 将类于数据库表映射  7.用sealed修饰的类有什么特点  sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其它类的基类,则会发生编译时错误。  密封类不能同时为抽象类。  sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。  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
推荐信息