C#面试知识点

来源:互联网 发布:java线程死锁 编辑:程序博客网 时间:2024/06/06 00:54
  • 委托

委托本质上是一种“方法接口”,它相当于C/C++中的函数指针,当然它比函数指针安全,在C#中通常用于事件处理。事件不是委托,不过由于事件的性质决定了处理它的程序逻辑能访问的参数,因此,在C#中处理事件的逻辑都包装为委托。

  • 重载

重载就是指一个方法名相同,参数个数不相同,返回值可以相同的方法。

  • 面向对象的思想

继承、封装、多态

  • 服务(WCF)

服务可以描述为可以在web上部署并可以被任何应用程序或其他服务调用的功能。所谓服务就是系统提供一组接口,并通过接口使用系统提供的功能

  • 反射

反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。

  • 接口

接口是可以多继承,类只有单继承.接口强调了你必须实现,而没有具本实现的方法和虚类有点相似。

  • 序列化与反序列化

序列化:序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

  • 装箱与拆箱

装箱和拆箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。这使得值类型可以存储于垃圾回收堆中。拆箱将从对象中提取值类型。值类型主要由两类组成:结构、枚举; 结构分为以下几类:Numeric(数值)类型、整型、浮点型、decimal、bool、用户定义的结构。

  • 递归算法

<FileSystem>

  < DriverC >

    <Dir DirName=”MSDOS622”>

      <File FileName =” Command.com”></File>

    </Dir>

    <File FileName =”MSDOS.SYS” ></File>

    <File FileName =” IO.SYS”></File>

  </DriverC>

</FileSystem>

请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。

答:voidFindFile( 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 );

    }

  }

  • 冒泡排序

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 ;

      }

    }

  }



0 0