C#面试题附答案.docx

上传人:b****7 文档编号:9494970 上传时间:2023-02-04 格式:DOCX 页数:25 大小:28.37KB
下载 相关 举报
C#面试题附答案.docx_第1页
第1页 / 共25页
C#面试题附答案.docx_第2页
第2页 / 共25页
C#面试题附答案.docx_第3页
第3页 / 共25页
C#面试题附答案.docx_第4页
第4页 / 共25页
C#面试题附答案.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

C#面试题附答案.docx

《C#面试题附答案.docx》由会员分享,可在线阅读,更多相关《C#面试题附答案.docx(25页珍藏版)》请在冰豆网上搜索。

C#面试题附答案.docx

C#面试题附答案

1.abstractclass和interface的区别?

abstractclass是抽象类。

它声明了方法,而且可以有属性,但它的方法不实现,主要创建一个体现基本行为的类。

不能创建类的实例。

它的子类来实现它的方法,若子类也没有实现,那么这个子类也是抽象类。

interface是接口,在接口中,所有的方法都是抽象的,一个类可以继承多个接口,接口中不能有属性。

2。

<%#   %>和<%   %>有什么区别?

  <%#  %>表示绑定的数据源。

  <%    %>是服务器端代码块。

3.&和&&的区别?

  &是位运算符,而&&是逻辑运算符(and)。

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

  不能,C#有垃圾回收功能,不能直接操作内存,但是可以调用基类的Finalize()方法。

5.62-63=1等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?

 把62变成2的6次方。

6.在.net(C#or)中,Appplication.Exit还是Form.Close有什么不同?

  Appplication.Exit是退出整个程序,而Form.Close是关闭Form。

7.在.Net托管代码中我们不用担心内存漏洞,这是因为有了______。

  GC(垃圾回收器)。

8.在.Net中所有可序列化的类都被标记为_____。

  [serializable]。

9.用sealed修饰的类有什么特点?

  密封的,不能继承。

10.委托声明的关键字是______?

   delegate。

11.floatf=-123.567F;inti=(int)f;i的值现在是_____?

   -123。

12.publicstaticconstintA=1;这段代码有错误么?

是什么?

   const不能有static修饰。

13.当整数a赋值给一个object对象时,整数a将会被?

   装箱。

14.c#中的三元运算符是?

   ?

15.ADO.net中常用的对象有哪些?

分别描述一下。

   Connection数据库连接对象

   Command数据库命令

   DataReader数据读取器

   DataSet数据集

16.什么是虚函数?

什么是抽象函数?

   虚函数:

没有实现的,可有子类继承或重写。

抽象函数:

其非虚子类必须重写函数。

17.下面这段代码输出什么?

为什么?

   inti=5;

   intj=5;

   if(Object.ReferenceEquals(i,j))

   Console.WriteLine("Equal");

   else

   Console.WriteLine("NotEqual")

   不相等,因为比较的是对象。

18.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?

   new创建实例,new隐藏基类中方法,using引入命名空间或者使用非托管资源。

19.软件开发过程一般有几个阶段?

   需求分析,架构设计,代码编写。

20.DataReader与Dataset有什么区别?

   DataReader只能向前读,而Dataset是建立一个内存中的表。

21.向服务器发送请求有几种方式?

   get,post。

22.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。

   session(viewstate):

简单,但易丢失

   application:

全局

cookie:

简单,但可能不支持,可能被伪造

使用QueryString,如....?

id=1;response.Redirect()....

使用Server.Transfer

23.ASP.NET与ASP相比,主要有哪些进步?

    asp解释形,aspx编译型,有更多的类。

24.Strings=newString("xyz");创建了几个StringObject?

    两个对象.一个是是xyz,一个是指向xyz引用的s。

25.GC是什么?

为什么要有GC?

    GC是垃圾回收器。

因为有了GC就省去了程序员手工编码释放内存。

26.能用foreach遍历访问的对象需要实现________________接口或声明________________方法的类型。

  IEnumerable、GetEnumerator。

27.面向对象的语言具有________性、_________性、________性

    封装、继承、多态。

28.在C#中,stringstr=null与stringstr=“”请尽量使用文字或图象说明其中的区别

  stringstr=null是不给他分配内存空间,而stringstr=""给它分配长度为空字符串的内存空间。

中读写数据库需要用到那些类?

他们的作用?

   DataSet:

数据存储器。

   DataCommand:

执行语句命令。

   DataAdapter:

数据的集合,用语填充。

30.什么是装箱和拆箱?

   从值类型转换到引用类型装箱(可隐式转换),从引用类型转换到值类型拆箱。

31.CTS、CLS、CLR分别作何解释?

   CTS:

通用语言系统。

CLS:

通用语言规范。

CLR:

公共语言运行库。

32.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?

  一般为3层

  数据访问层,业务层,表示层。

  数据访问层:

对数据库进行增删查改。

  业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。

  表示层:

为了与用户交互例如用户添加表单。

  优点:

分工明确,条理清晰,易于调试,而且具有可扩展性。

  缺点:

增加成本。

33.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?

    定义一个索引器必须使用this关键字,如this[index]。

可以是任意类型索引。

34.override与重载的区别

    重载是方法的名称相同,参数或参数类型不同。

Override是进行基类中函数的重写。

35.C#中的委托是什么?

事件是不是一种委托?

  委托可以把一个方法作为参数代入另一个方法.委托可以理解为指向一个函数的引用。

  事件是一种特殊的委托。

36.简述private、protected、public、internal修饰符的访问权限

    private:

私有成员,在类的内部才可以访问。

    protected:

保护成员,该类内部和继承类中可以访问。

    public:

公共成员,完全公开,没有访问限制。

    internal:

在同一命名空间内可以访问。

37.一列数的规则如下:

1、1、2、3、5、8、13、21、34......求第30位数是多少,用递归算法实现

 publicclassMainClass

 {

  publicstaticvoidMain()

  {

   Console.WriteLine(Foo(30));

  }

  publicstaticintFoo(inti)

  {

   if(i<=0)

   return0;

   elseif(i>0&&i<=2)

   return1;

   else

   returnFoo(i-1)+Foo(i-2);

  }

 }

38.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?

   foreach(System.Windows.Forms.Controlcontrolinthis.Controls)

   {

      if(controlisSystem.Windows.Forms.TextBox)

      {

        System.Windows.Forms.TextBoxtb=(System.Windows.Forms.TextBox)control;

        tb.Text=String.Empty;

      }

   }

40.在下面的例子里

  usingSystem;

  classA

  {

  publicA()

  {

   PrintFields();

  }

  

  publicvirtualvoidPrintFields()

  {

  

  }

  }

  classB:

A

  {

   intx=1;

   inty;

   publicB()

   {

   y=-1;

   }

   

   publicoverridevoidPrintFields()

   {

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

   }

 }

当使用newB()创建B的实例时,产生什么输出?

答:

x=1,y=0。

41.SQLSERVER服务器中,给定表table1中有两个字段ID、LastUpdateDate,ID表示更新的事务号,LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号

  selectIDfromtable1orderbyLastUpdateDatadesc

42.写出一条Sql语句:

取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:

ID可能不是连续的。

   selecttop10*fromAwhereidnotin(selecttop30idfromA)

43.接口是否可继承接口?

抽象类是否可实现(implements)接口?

抽象类是否可继承实体类(concreteclass)?

   接口可以继承接口。

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

44.构造器Constructor是否可被override?

   构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

45.是否可以继承String类?

   String类是final类故不可以继承。

46.List,Set,Map是否继承自Collection接口?

   List,Set是。

Map不是。

47.数组有没有length()这个方法?

String有没有length()这个方法?

   没有,有这个属性。

String有这个方法。

48.sleep()和wait()有什么区别?

   sleep()方法是使线程停止一段时间的方法。

在sleep时间间隔期满后,线程不一定立即恢复执行。

这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级

(b)正在运行的线程因为其它原因而阻塞。

wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

49.shorts1=1;s1=s1+1;有什么错?

shorts1=1;s1+=1;有什么错?

   shorts1=1;s1=s1+1;有错,s1是short型,s1+1是int型,不能显式转化为short型。

可修改为s1=(short)(s1+1)。

shorts1=1;s1+=1正确。

50.Session有什么重大BUG,微软提出了什么方法加以解决?

   iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sateserver或SQLServer数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。

51.进程和线程的区别?

    进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。

52.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。

   int[]intArr=newint[100];

   ArrayListmyList=newArrayList();

   Randomrnd=newRandom();

   while(myList.Count<100)

   {

      intnum=rnd.Next(1,101);

         if(!

myList.Contains(num))

   myList.Add(num);

   }

   for(inti=0;i<100;i++)

   intArr[i]=(int)myList[i];

53.下面的代码中有什么错误吗?

_______

   usingSystem;

   classA

   {

       publicvirtualvoidF()

       {

           Console.WriteLine("A.F");

       }

   }

   abstractclassB:

A

   {

       publicabstractoverridevoidF();

   }

 abstractoverride是不可以一起修饰。

54.下面这段代码有错误么?

   switch(i)

   {

     case():

答:

//case()条件不能为空

     CaseZero();

     break;

     case1:

     CaseOne();

     break;

     case2:

     dufault;        //格式不正确,应写成default:

     CaseTwo();

     break;

   }

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

   可以。

56.在.net(C#or)中如何取消一个窗体的关闭

   e.Cancel=true。

57.在A中所有的自定义用户控件都必须继承自________.

   Control。

58.什么是code-Behind技术?

 代码分离。

HTML代码写在前台,C#代码写在后台。

59.装箱与拆箱操作是否是互逆的操作?

 不是互逆的操作。

60.哪个是可以变长的数组?

 ArrayList。

61.用户自定义异常类需要从以下哪个类继承?

 Exception。

62.Net依赖以下哪项技术实现跨语言互用性?

 CLS。

63.以下哪个类是int的基类?

(B)

   A.Int32             B.Object         C.ValueType           D.Int16

64.下列描述错误的是(d)

 a)类不可以多重继承而接口可以;

 b)抽象类自身可以定义成员而接口不可以;

 c)抽象类和接口都不能被实例化;

 d)一个类可以有多个基类和多个基接口;

65.下列关于构造函数的描述正确的是(c)

 a)构造函数可以声明返回类型。

 b)构造函数不可以用private修饰

 c)构造函数必须与类名相同

 d)构造函数不能带参数

66.以下是一些C#中的枚举型的定义,其中错误的用法有(d)

 a)publicenumvar1{Mike=100,Nike=102,Jike}

 b)publicenumvar1{Mike=100,Nike,Jike}

 c)publicenumvar1{Mike=-1,Nike,Jike}

 d)publicenumvar1{Mike,Nike,Jike}

67.接口是一种引用类型,在接口中可以声明(a),但不可以声明公有的域或私有的成员变量。

   a)方法、属性、索引器和事件;b)方法、属性信息、属性;c)索引器和字段;   d)事件和字段

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

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

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

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

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

69.下列ASP.NET语句(b)正确地创建了一个与SQLServer2000数据库的连接。

a)SqlConnectioncon1=newConnection(“DataSource=localhost;IntegratedSecurity=SSPI;InitialCatalog=myDB”);

b)SqlConnectioncon1=newSqlConnection(“DataSource=localhost;IntegratedSecurity=SSPI;InitialCatalog=myDB”);

c)SqlConnectioncon1=newSqlConnection(DataSource=localhost;IntegratedSecurity=SSPI;InitialCatalog=myDB);

d)SqlConnectioncon1=newOleDbConnection(“DataSource=localhost;IntegratedSecurity=SSPI;InitialCatalog=myDB”);

70.在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和(b),必要时还要设置参数尺寸。

   a)大小;            b)上限;             c)初始值;           d)类型;

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

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

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

72.下列关于C#中索引器理解正确的是(c)

 a)索引器的参数必须是两个或两个以上 b)索引器的参数类型必须是整数型

 c)索引器没有名字                   d)以上皆非

73.下面描述错误的是(c/d)

a)窗体也是控件;b)窗体也是类;c)控件是从窗体继承来的;d)窗体的父类是控件类

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

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

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

75.要创建多文档应用程序,需要将窗体的(d)属性设为true。

  a)DrawGrid;        b)ShowInTaskbar;         c)Enabled;           d)IsMdiContainer;

76.下面关于XML的描述错误的是(d)。

 a)XML提供一种描述结构化数据的方法;

 b)XML是一种简单、与平台无关并被广泛采用的标准;

 c)XML文档可承载各种信息;

 d)XML只是为了生成结构化文档;

77.UDP连接和TCP连接的异同。

前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结。

78.某一密码仅使用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个

  答案:

ALL

问题三:

下列哪一个是单词密码?

     A)KLLN  B)LOML  C)MLLO  D)NMKO

     答案:

C

79.关于ASP.NET中的代码隐藏文件的描述正确的是(a)

   a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。

编程逻辑唯一与用户界面不同的文件中。

该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。

   b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。

 c)Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。

   d)以上都不正确。

80.以下描述错误的是(a)

 a)在C++中支持抽象类而在C#中不支持抽象类。

 b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。

 c)在C#中可使用new修饰符显式隐藏从基类继承的成员。

 d)在C#中要在派生类中重新定义基类的虚函数必须在前面加override

 

81.在DOM中,装载一个XML文档的方法(b)   

  a)save方法   b)load方法   c)loadXML方法   d)send方法

82.ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为(b)

  a)<%@Register  TagPrefix  =  “Mike”  TagName  =  “Space2”  Src  =  “myX.ascx”%>

  b)<%@Reg

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1