zoukankan      html  css  js  c++  java
  • C# 面试题 (二)

    1. 什么是C#?

    C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。
    C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。

    2. C#的有哪些注释类型?

    C#中有三种注释类型。
    单行(//)
    多行(/* */)
    Page/XML 注释(///)。

    3. C#.NET中使用的命名空间有哪些?

    命名空间是类型的逻辑分组。
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;

    4. C#有哪些特点?

    C#有以下特点:

    简单
    类型安全
    灵活
    面向对象
    兼容
    持久化
    互操作性
    有别于传统

    5. 继承有哪些不同的类别?

    在面向对象编程中继承的四种类型:

    单继承:包括一个基类和一个派生类。

    多层继承(Hierarchical inheritance) :包括一个基类和继承自同一个基类的派生类。

    多级继承(Multilevel inheritance):包括从一个派生类派生出来的类。

    多重继承(Multiple inheritance):包括多个基类和一个派生类。

    6. 面向对象编程的基本概念是什么?

    有必要理解一些在面向对象编程中广泛使用的概念。它们包括:

    对象

    数据抽象和封装
    继承
    多态性
    动态绑定
    信息传递。

    7. 你可以继承多个接口吗?

    可以的。在C#中可能继承多个接口。

    8. 什么是继承?

    继承是从一个已经存在的类中派生出来的新类。

    9. Define scope?定义作用域?

    作用域指的是代码中一个变量可以被访问的区域。

    10. public、static和void之间的区别是什么?

    public:关键字public是访问修饰符,用来告诉C#编译器主(Main)方法可以被任何人调用。

    static:关键字static表明主(Main)方法是一个全局方法,不需要穿件类实例即可访问。编译器储存该方法的地址作为切入点,并利用这个信息在任何对象创建之前开始执行它。

    void:关键字void是一个类型修饰符表明主(Main)方法不返回任何值。

    11. C#中的修饰符有哪些?

    Abstract
    Sealed
    Virtual
    Const
    Event
    Extern
    Override
    Readonly
    Static
    New

    12. C#中访问修饰符的种类有哪些?

    C#中的访问修饰符是:

    public
    protect
    private
    internal
    internal protect

    13. 什么是装箱和拆箱?

    变量值类型隐式转换为引用类型成为装箱,例如integer到object的类型转换。

    引用类型变量转换回值类型成为拆箱。

    14. 对象是什么?

    对象是类的实例。对象的创建使用new操作。一个类在内存中创建一个对象,将包含特定对象的值和行为(或者方法)的信息。

    15. C#中有哪些类型的数组?

    一维数组(Single-Dimensional)
    多维数组(Multidimensional)
    交错数组(Jagged arrays)。

    16. 对象和实例之间的区别是什么?

    用户定义的类型的实例称为一个对象。我们可以从一个类实例化很多对象。

    对象是类的实例。

    17. Define destructors?定义析构函数?

    当类对象超出作用域或者被明确删除的时候,析构函数被调用。析构函数,顾名思义是用来销毁由构造函数创建的对象的。正如构造函数,析构函数是一个类成员方法,方法名和类名相同,只是由波浪号开头。

    18. 枚举数据类型怎么用?

    枚举类型是另一种用户定义类型,它提供了一种连接名字为数字的方式,从而提高了代码的可理解性。enum关键字自动地枚举一组词,赋予它们的值为0,1,2并以此类推。

    19. 定义构造函数?

    构造函数是和它的类同名的成员方法。每当创建其关联的类的对象时构造函数都会被调用。它之所以被称为构造函数是因为它构造了类的数据成员的值。

    20. 什么是封装?

    包装数据和功能成为一个单元(称为类)就被称为封装。封装包含并且隐藏对象信息,例如内部数据结构和代码。

    21. C#支持多重继承吗?

    不支持,它不可能。支持多级继承。

    22. 什么是ENUM?

    Enum用于定义常量。

    23. 数据集是什么?

    数据集(DataSet)是从任何数据源载入数据的内存表示。

    24. private和public关键字的区别是什么?

    Private:关键字private是默认访问级别,并且在所有其他访问级别中是最严格的。它给予一个类型或者类型成员最小的权限。私有成员仅仅在声明其的类体中可以被访问。

    Public:关键字public是所有访问级别中最自由地,没有任何访问限制。公共成员的访问不仅可以来自外部,也可以来自内部,并且可以自由访问定义在类体内或者体外的任何成员。

    25. 定义多态性?

    多态性意味着一个名字,多种形式。它使我们在一个程序中可以定义一个以上相同名字的方法。它让我们重载操作以便这样的操作可以对不同的实例表现不同的行为。

    26. 什么是交错数组?

    交错数组是元素为数组的数组。

    交错数组元素的维度和大小可以不同。

    交错数组有时称为“数组的数组”。

    27. 什么是抽象基类?

    抽象类是被设计为专门用于作为基类的类。抽象类至少还有一个纯虚方法。

    28. 方法重写和方法重载有什么区别?

    当重写一个方法时,你改变了派生类中方法的行为。重载方法只涉及在类中另一个同名的方法。

    29. ref和out参数之间的区别是什么?

    传递给ref参数的参数必须先初始化。与此相比,对out参数来说,在参数传递给out参数之前不需要显示初始化。

    30. C#中using语句怎么用?

    using语句通常是获取资源,执行语句,然后释放该资源。

    31. 什么是序列化?

    序列化(Serialization)是将对象转换为字节流的过程。

    反序列化(De-serialization)是从字节流创建对象这样相反的过程。

    序列化/反序列化常用于传递对象。

    32. 结构和类之间有什么区别?

    结构是值类型,类是引用类型。

    结构不能有构造函数和析构函数。

    类可以同时有构造函数和析构函数。

    结构不支持继承,而类支持继承。

    33. 类和接口之间有什么区别?

    类(Class)是对象的逻辑表示。它是数据集合和相关子过程的定义。

    接口(Interface)也是一个类,包含没有任何方法体定义的方法。类不支持多重继承,但是接口支持。

    34. 什么是委托?

    委托是类型安全,面向对象的函数指针的实现,并且在许多一个组件需要回调到使用它的组件这样的情况下使用。

    35. 什么是认证与授权?

    认证是识别用户的过程。认证是以证书(用户名和密码)来识别/验证用户。

    授权在认证之后执行。授权是一个基于这些用户身份授予访问权限的过程。

    授权允许用户对特定资源的访问。

    36. 什么是基类?

    类声明可以通过类名加一个冒号和基类名来指定基类。省略基类说明等同于从object类派生。

    37. “this”可以在静态方法中用吗?

    不,‘This’不能在静态方法中使用。仅仅只有静态变量/方法可以在静态方法中使用。

    38. constants、readonly和static之间的区别是什么?

    Constants: 值不能变。

    Read-only: 值在类的构造函数中仅仅初始化一次。

    Static: 值可以被初始化一次。

    39. C#中支持哪些语句类型?

    C#支持的几种不同的语句类型是

    块语句
    声明语句
    表达式语句
    选择语句
    迭代语句
    跳转语句
    异常处理语句
    检查和未检查
    Lock语句

    40. 什么是接口类?

    它是一个抽象类,所有公共抽象方法必须要在其继承类中实现。

    41. 什么是值类型和引用类型?

    值类型存储在堆栈中。
    例如: bool, byte, chat, decimal, double, enum, float, int, long, sbyte, short, strut, uint, ulong, ushort。

    引用类型存储在托管堆中。
    例如: class, delegate, interface, object, string。

    42. 关键字string和System.String类之间有什么区别?

    关键字string是System.String类的别名。所以,System.String和关键字string是一样的,你可以使用任何你喜欢的命名约定。String类提供了许多方法用于安全创建,操作和比较字符串。

    43. C#中提供的两种数据类型是什么?

    值类型
    引用类型

    44. 有哪些缓存的种类?

    有三种类型的缓存:

    输出缓存(Output Caching):存储asp.net页面的应答信息。

    片段缓存(Fragment Caching):仅缓存/存储部分页面内容(用户控制)。

    数据缓存(Data Caching):为了性能通过编程的方式来缓存对象。

    45. 自定义控件和用户控件之间的区别是什么?

    自定义控件是编译后的代码(Dlls),容易使用,创建困难,可以放在工具箱。拖拉使用的控件。

    属性可以直观地在设计时指定。可以被多个应用程序使用(如果共享Dlls),即使是私有的也能拷贝到web应用程序的bin目录,添加引用和使用。通常是用来为独立的消费应用程序提供公用功能。

    用户控件和ASP的include文件,轻松创建,不能放置在箱中来拖拉放置它。用户控件在单个应用程序文件之间共享。

    46. 什么是方法?

    方法是由对象或者类执行来实现计算或者操作的成员。静态方法通过类访问。实例方法通过类的实例来访问。

    47. 什么是域?

    域是类或者类的实例相关的变量。

    48. 什么是事件?

    事件是使一个类或对象能够提供通知的成员。事件声明像域声明一样,除了声明包含event关键字并且类型必须为委托类型。

    49.什么是文本和它们的类型?

    文本是程序分配给变量的值常量。C#支持的几种文本类型是

    整数(Integer literals)
    实数(Real literals)
    布尔值(Boolean literals)
    单字符(Single character literals)
    字符串(String literals)
    反斜线(Backslash character literals)

    50. 值类型和引用类型的区别是什么?

    值类型存储在堆栈上,是一个变量的值赋值给另一个变量。

    引用类型存储在托管堆上,是两个引用变量之间的发生赋值。

    51. C#有什么特性?

    C#是一个简单而强大的编程语言,用于编写企业版的应用程序。
    它是C++和VB的混合体。它保留了许多C++特性,如语句,表达式和运算符并结合了VB的生产力。

    C#帮助开发者轻易地构建网络服务,能够通过任何语言,任何平台来访问Internet。

    C#帮助开发者用更少的代码完成开发,从而在代码中错误更少。

    C#引入了相当大的改进和创新,如类型安全,版本控制,事件和垃圾收集这些领域。

    52. 错误的类型是什么?

    语法错误(Syntax error)
    逻辑错误(Logic error)
    运行时错误(Runtime error)

    53. break和continue语句之间有什么区别?

    break语句是用来终止当前封闭循环或者它所在的条件语句的。我们已经使用break语句跳出switch语句。

    continue语句是用来改变执行顺序的。和break语句那样跳出循环相反,continue语句停止当前迭代并且只将控制返回到循环顶部。

    54. 定义命名空间?

    命名空间被称为容器,用来组织分层的.NET类。

    55. 什么是代码组?

    代码组是一组共享安全上下文的套件。

    56. C#中什么是密封类?

    sealed修饰符用来阻止从一个类派生。如果一个密封类被指定为另一个类的基类时会发生编译时错误。

    57. 静态方法和实例方法的区别是什么?

    以static修饰符声明的方法是静态方法。静态方法不操作具体的实例,并且只能被静态成员访问。

    没有以static修饰符声明的方法是实例方法。实例方法操作一个具体的实例并且可以被静态和实例成员访问。在其上调用实例方法的实例可以像这样显示访问。在静态方法中这么调用是错误的。

    58. C#中有哪些变量的类型?

    C#中不同的变量类型是:

    静态变量(static variables)
    实例变量(instance variable)
    值参数(value parameters)
    引用参数(reference parameters)
    数组元素(array elements)
    输出参数(output parameters)
    局部变量(local variables)

    59. 方法重载是什么意思?

    方法重载允许在同一个类中的多个方法有相同的名字,只要它们具有独特的签名。当编译一个重载方法的调用时,编译器使用重载决策决定具体调用的方法。

    60. 什么是参数?

    参数是用来传递值或者变量引用给方法的。方法的参数从被调用方法时指定的参数得到它们实际的值。有四种参数:值参数,引用参数,输出参数和参数数组。

    61. C#是面向对象的语言吗?

    是的,C#和传统的Java及C++一样是面向对象的语言。

    62. Array和Arraylist之间的区别是什么?

    数组是相同类型的集合。数组大小在它声明的时候就固定了。链表和数组相似,但它没有固定的大小。

    63. C#中有什么特殊的运算符?

    C#支持一下特殊运算符。

    is (关系运算符)
    as (关系运算符)
    typeof (类型运算符)
    sizeof (大小运算符,用于获取非托管类的大小)
    new (对象运算符)
    .dot (成员访问运算符)
    checked (溢出检查)
    unchecked?(防止溢出检查)

    64. C#中运算符的含义是什么?

    运算符是界定了对类实例应用特定的运算表达式内涵的成员。可以定义三种类型的运算符:一元运算符,二元运算符和转换运算符。所有的运算符必须声明为public和static的。

    65. 什么是类型参数化?

    类型参数化是一个类型在另一个值或者类型之上参数化。

  • 相关阅读:
    linux下的第一个C程序及其编译方法
    使用open_read_write等底层函数来赋值一个文件
    C++中预定义的宏
    altibase MDB的创建sequence的举例
    C中的时间函数的用法
    联系表单 1
    《jQuery基础教程》读书笔记
    《jQuery基础教程》读书笔记
    《jQuery基础教程》读书笔记
    『原创·翻译』如何阅读论文
  • 原文地址:https://www.cnblogs.com/yuan-jun/p/6729759.html
Copyright © 2011-2022 走看看