精华内容
下载资源
问答
  • C#题库

    千次阅读 2008-06-30 17:09:00
    C#常用面试题库,面试基础掌握,以后就得靠上机了。呵呵2008年05月07日 星期三 22:371. 简述 private、 protected、 public、 internal 修饰符的访问权限。答 . private : 私有成员, 在类的内部才可以访问。 ...
    C#常用面试题库,面试基础掌握,以后就得靠上机了。呵呵
    2008年05月07日 星期三 22:37

    1. 简述 private、 protected、 public、 internal 修饰符的访问权限。
    答 . private : 私有成员, 在类的内部才可以访问。
    protected : 保护成员,该类内部和继承类中可以访问。
    public : 公共成员,完全公开,没有访问限制。
    internal: 在同一命名空间内可以访问。

    2 .列举ASP.NET 页面之间传递值的几种方式。
    答. 1.使用QueryString, 如....?id=1; response. Redirect()....
          2.使用Session变量
          3.使用Server.Transfer

    3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。
    答:public class MainClass
    {
    public static void Main()
    {
    Console.WriteLine(Foo(30));
    }
    public static int Foo(int i)
    {
    if (i <= 0)
    return 0;
    else if(i > 0 && i <= 2)
    return 1;
    else return Foo(i -1) + Foo(i - 2);
    }
    }

    4.C#中的委托是什么?事件是不是一种委托?
    答 :
    委托可以把一个方法作为参数代入另一个方法。
    委托可以理解为指向一个函数的引用。
    是,是一种特殊的委托

    5.override与重载的区别
    答 :
    override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要
    Override 是进行基类中函数的重写。为了适应需要。

    6.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
    答 :
    this.Server.Transfer

    7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
    答:
    foreach (System.Windows.Forms.Control control in this.Controls)
    {
    if (control is System.Windows.Forms.TextBox)
    {
    System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
    tb.Text = String.Empty ;
    }
    }

    8.请编程实现一个冒泡排序算法?
    答:
    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 ;
    }
    }
    }

    9.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
    答:不是。可以用任意类型。

    10.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
    答:
    int Num = this.TextBox1.Text.ToString() ;
    int Sum = 0 ;
    for (int i = 0 ; i < Num + 1 ; i++)
    {
    if((i%2) == 1)
    {
    Sum += i ;
    }
    else
    {
    Sum = Sum - I ;
    }
    }
    System.Console.WriteLine(Sum.ToString());
    System.Console.ReadLine() ;

    11.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
    答:一般为3层
    数据访问层,业务层,表示层。
    数据访问层对数据库进行增删查改。
    业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。
    表示层为了与用户交互例如用户添加表单。
    优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。
    缺点: 增加成本。

    12.在下面的例子里
    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;x= 1 y = -1

    13.什么叫应用程序域?
    答:应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。

    14.CTS、CLS、CLR分别作何解释?
    答:CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。

    15.什么是装箱和拆箱?
    答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。

    16.什么是受管制的代码?
    答:unsafe:非托管代码。不经过CLR运行。

    17.什么是强类型系统?
    答:RTTI:类型识别系统。

    18.net中读写数据库需要用到那些类?他们的作用?
    答:DataSet:数据存储器。
    DataCommand:执行语句命令。
    DataAdapter:数据的集合,用语填充。

    19.ASP.net的身份验证方式有哪些?分别是什么原理?
    答:10。Windwos(默认)用IIS...From(窗体)用帐户....Passport(密钥)

    20.什么是Code-Behind技术?
    答:代码后植。

    21.在.net中,配件的意思是?
    答:程序集。(中间语言,源数据,资源,装配清单)

    22.常用的调用WebService的方法有哪些?
    答:1.使用WSDL.exe命令行工具。
    2.使用VS.NET中的Add Web Reference菜单选项

    23..net Remoting 的工作原理是什么?
    答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。

    24.在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。
    答:string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间。

    25.请详述在dotnet中类(class)与结构(struct)的异同?
    答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.

    26.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:
    namespace test
    {
    public delegate void OnDBOperate();
    public class UserControlBase : System.Windows.Forms.UserControl
    {
    public event OnDBOperate OnNew;
    privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
    {
    if(e.Button.Equals(BtnNew))
    {
    //请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。
    }
    }
    }
    答:if( OnNew != null )
    OnNew( this, e );

    27.分析以下代码,完成填空
    string strTmp = "abcdefg某某某";
    int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
    int j= strTmp.Length;
    以上代码执行完后,i= j=
    答:i=13,j=10

    28.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号
    答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)

    29.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
    public void test(int i)
    {
    lock(this)
    {
    if (i>10)
    {
    i--;
    test(i);
    }
    }
    }
    答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)

    30.简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。
    答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。

    31.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路
    答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。

    32.给定以下XML文件,完成算法流程图。

    < DriverC >

    请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。
    答:
    void FindFile( 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 );
    }
    }

    33.写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。
    答:解1: 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)

    34.面向对象的语言具有________性、_________性、________性
    答:封装、继承、多态。

    35.能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。
    答:IEnumerable 、 GetEnumerator。

    36.GC是什么? 为什么要有GC?
    答:GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
    System.gc()
    Runtime.getRuntime().gc()

    37.String s = new String("xyz");创建了几个String Object?
    答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。

    38.abstract class和interface有什么区别?
    答:
    声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
    接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

    39.启动一个线程是用run()还是start()?
    答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

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

    41.构造器Constructor是否可被override?
    答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

    42.是否可以继承String类?
    答:String类是final类故不可以继承。

    43.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
    答:会执行,在return前执行。

    44.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
    答:不对,有相同的hash code。

    45.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
    答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

    47.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
    不能,一个对象的一个synchronized方法只能由一个线程访问。

    48.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
    答:都不能。

    49.List, Set, Map是否继承自Collection接口?
    答:List,Set是Map不是

    50.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
    答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
    equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

    51.数组有没有length()这个方法? String有没有length()这个方法?
    答:数组没有length()这个方法,有length的属性。String有有length()这个方法。

    52.sleep() 和 wait() 有什么区别?
    答:sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级
    (b)正在运行的线程因为其它原因而阻塞。
    wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

    53.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
    答:short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。

    54.谈谈final, finally, finalize的区别。
    答:
    final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此 一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中 不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为 final的方法也同样只能使用,不能重载
    finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会 执行,然后控制就会进入 finally 块(如果有的话)。
    finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理 工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的 ,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

    55.如何处理几十万条并发数据?
    答:用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.

    56.Session有什么重大BUG,微软提出了什么方法加以解决?
    答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。

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

    58.堆和栈的区别?
    答:
    栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。
    堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。

    59.成员变量和成员函数前加static的作用?
    答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。

    60.ASP。NET与ASP相比,主要有哪些进步?
    答:asp解释形,aspx编译型,性能提高,有利于保护源码。
    61.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
    int[] intArr=new int[100];
    ArrayList myList=new ArrayList();
    Random rnd=new Random();
    while(myList.Count<100)
    {
    int num=rnd.Next(1,101);
    if(!myList.Contains(num))
    myList.Add(num);
    }
    for(int i=0;i<100;i++)
    intArr[i]=(int)myList[i];

    62.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
    答:session(viewstate) 简单,但易丢失
    application 全局
    cookie 简单,但可能不支持,可能被伪造
    input ttype="hidden" 简单,可能被伪造
    url参数 简单,显示于地址栏,长度有限
    数据库 稳定,安全,但性能相对弱

    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

    73.什么是Application Pool?
    答:Web应用,类似Thread Pool,提高并发性能。

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

    100.在.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;
    }
    }

    101.在.net(C# or vb.net)中如何取消一个窗体的关闭。
    答:private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
    e.Cancel=true;
    }

    102.在.net(C# or vb.net)中,Appplication.Exit 还是 Form.Close有什么不同?
    答:一个是退出整个应用程序,一个是关闭其中一个form。

    103.在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);

    104.某一密码仅使用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次方

    105.对于这样的一个枚举类型:
    enum Color:byte
    {
    Red,
    Green,
    Blue,
    orange
    }
    答:string[] ss=Enum.GetNames(typeof(Color));
    byte[] bb=Enum.GetValues(typeof(Color));

    106. C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
    答:attribute:自定义属性的基类;property :类中的属性

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

    122.在C#中,string str = null 与 string str = " " 请尽量使用文字或图象说明其中的区别。
    答:null是没有空间引用的;
    " " 是空间为0的字符串;

    123.分析以下代码,完成填空
    string strTmp = "abcdefg某某某";
    int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
    int j= strTmp.Length;
    以上代码执行完后,i= j=
    答:i=13.j=10

    124.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号
    答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)

    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);
    }
    当使用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 运算符可以用来决定某对象的类是否实现了接口。
    展开全文
  • C#题库.docx

    2013-01-03 11:20:09
    C#题库
  • 这是比较齐全的c#题库,可以方便同学们使用,c#题库可以分为,选择题,判断题,程序编程题!也可以作为考试前的复习之用!
  • C#题库生成系统,XML

    2007-08-27 13:28:44
    C#题库生成系统,XML
  • 这里有你喜欢的c#题库,可以帮助同学们应用于考试前的复习之用!也可帮助同学们在相关专业的了解作为参考资料!
  • 微软C#题库(MAC认证) 非常的实用,建议大家看看
  • C#题库3

    2020-06-16 16:17:44
    3. 无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 ...
    3. 无重复字符的最长子串
    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
    
    示例 1:
    
    输入: "abcabcbb"
    输出: 3 
    解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
    示例 2:
    
    输入: "bbbbb"
    输出: 1
    解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
    示例 3:
    
    输入: "pwwkew"
    输出: 3
    解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
         请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
     static void Main(string[] args)
            {
    
                string s = "tmmzuxt";
                char[] temp = s.ToCharArray();
                int length = 0;
                int start = 0;
                int result = 0;
                for (int i = 0; i < temp.Length; i++)
                {
                    bool isRepeat = false;
                    Console.WriteLine("start=" + start+",i="+i);
                    for (; start < i; start++)
                    {
                        if (temp[i] == temp[start])
                        {
                            isRepeat = true;
                            break;
                        }
                    }
                    if (isRepeat == false)
                    {
                        if ((i - result + 1) > length)
                        {
                            length = i - result + 1;
                        }
                      
                        start = result;
                    }
                    else
                    {
                        start = start + 1;
                        result = start;
                    }
                }
    
              
           
    
                Console.WriteLine("Length" + length);
            }

     

    展开全文
  • c#题库.doc

    2013-09-24 19:01:47
    1. C#语言中,值类型包括:基本值类型、结构类型和( )。 A. 小数类型 B. 整数类型 C. 类类型 D. 枚举类型 2.类的字段和方法的默认访问修饰符是( )。 A. public B. private C. protected D. internal...
  • public class Solution { public int[] TwoSum(int[] nums, int target) { var dic = new Dictionary<int,int>(); for(int i=0;i<nums.Length;... if(dic.Keys.Contains(target-nums[i])) ...
  • 微软认证 c# 题库

    2011-01-23 12:02:56
    微软认证在国外IT认证中知名度是最高的,参加考试和通过认证的人数也是最多的,因为在计算机操作系统中微软所占的市场份额是最大的,所以,通过微软认证相对而言更具有普遍意义。
  • 这是湖南大学史上最牛叉的题库,希望对你们有帮助
  • 这是比较齐全的c#判断题,可以为同学们作为考试前的复习之用,也可帮助相关专业的同学使用!
  • using System; using System.Collections.Generic; namespace ConsoleApp4 { class Program { static void Main(string[] args) { int T = Convert.ToInt32(Cons...
    
    

    
    
    using System;
    using System.Collections.Generic;
    namespace ConsoleApp4
    {
        class Program
        {
            static void Main(string[] args)
            {
               
                int T = Convert.ToInt32(Console.ReadLine());//测试数据的组数
                List<int> days = new List<int>();//存储数据的组数的最大连续天数结果
                for (int j = 0; j < T; j++)
                {
                    string NM = Console.ReadLine();//存储未签到天数总数以及补提交卡数
                    string[] data = (Console.ReadLine()).Split(' ');//存储未存储天数的具体数据
                    int n = Convert.ToInt32(NM.Split(' ')[0]);//n未签到天数总数
                    int m = Convert.ToInt32(NM.Split(' ')[1]);//m补提交卡数
                    int[] notSignDays = new int[n + 2];
                    notSignDays[n + 1] = 100;
                    notSignDays[0] = 0;
                    //0  34 77 82 83 84  100
                    //0   1  2  3  4  5   6
                    for (int i = 1; i < notSignDays.Length - 1; i++)
                    {
                        notSignDays[i] = Convert.ToInt32(data[i - 1]);
                    }
    
                    int continuityMaxDays = 0;
                    if (m >= n)
                    {
                        continuityMaxDays = 100;
                    }
                    else
                    {
                        for (int i = 1; i < notSignDays.Length - m; i++)
                        {
                            #region 总结规律
                            m=1 n=5
                            1
                            //notSignDays[1+m] - notSignDays[1-1]-1;
                            2
                            //notSignDays[2+m] - notSignDays[2-1] - 1;
                            3
                            //notSignDays[3+m] - notSignDays[3-1] - 1;
                            4
                            //notSignDays[5] - notSignDays[3] - 1;
                            5
                            //notSignDays[6] - notSignDays[4] - 1;
    
                            m=2 n=5
                            1   1+M  -  1-1
                            //notSignDays[3] - notSignDays[0] - 1;
                            2
                            //notSignDays[4] - notSignDays[1] - 1;
                            3
                            //notSignDays[5] - notSignDays[2] - 1;
                            4
                            //notSignDays[6] - notSignDays[3] - 1;
                            #endregion                 
                            if (notSignDays[i + m] - notSignDays[i - 1] - 1 > continuityMaxDays)
                            {
                                continuityMaxDays = notSignDays[i + m] - notSignDays[i - 1] - 1;
                            }
    
                        }
    
                    }
                    days.Add(continuityMaxDays);
                }
                foreach (var item in days)
                {
                    Console.WriteLine(item);
                }
                Console.ReadKey();
            }
        }
    }

    展开全文
  • 精心收集面试必备的C#题库

    千次阅读 2013-12-23 21:33:08
    6、C#中索引器是否只能根据数字进行索引?是否允许多个索引器参数? 参数的个数和类型都是任意的。加分的补充回答:用reflector反编译可以看出, 索引器的内部本质上就是 set_item 、 get_item 方法。加分的补充...

    技术类面试、笔试题汇总

    注:标明*的问题属于选择性掌握的内容,能掌握更好,没掌握也没关系。

     

    下面的参考解答只是帮助大家理解,不用背,面试题、笔试题千变万化,不要梦想着把题覆盖了,下面的题是供大家查漏补缺用的,真正的把这些题搞懂了,才能“以不变应万变”。回答问题的时候能联系做过项目的例子是最好的,有的问题后面我已经补充联系到项目中的对应的案例了。

     

     

    1、简述 private、 protected、 public、 internal 修饰符的访问权限。

    private : 私有成员, 在类的内部才可以访问 ,也就是类内部的函数等成员可以访问。

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

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

    internal: 当前程序集内可以访问。

     

    2、ADO.NET中的五个主要对象

    Connection:主要是开启程序和数据库之间的连接。没有利用连接对象将数据库打开,是无法从数据库中取得数据的。Close和Dispose的区别,Close以后还可以Open,Dispose以后则不能再用。

    Command:主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令,以及调用存在数据库中的存储过程等。这个对象是架构在Connection 对象上,也就是Command 对象是透过连接到数据源。

    DataAdapter:主要是在数据源以及DataSet 之间执行数据传输的工作,它可以透过Command 对象下达命令后,并将取得的数据放入DataSet 对象中。这个对象是架构在Command对象上,并提供了许多配合DataSet 使用的功能。

    DataSet:这个对象可以视为一个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来,DataSet是放在内存中的。DataSet 的能力不只是可以储存多个Table 而已,还可以透过DataAdapter对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet 对象可以说是ADO.NET 中重量级的对象,这个对象架构在DataAdapter对象上,本身不具备和数据源沟通的能力;也就是说我们是将DataAdapter对象当做DataSet 对象以及数据源间传输数据的桥梁。DataSet包含若干DataTableDataTableTable包含若干DataRow

    DataReader:当我们只需要循序的读取数据而不需要其它操作时,可以使用DataReader 对象。DataReader对象只是一次一笔向下循序的读取数据源中的数据,这些数据是存在数据库服务器中的,而不是一次性加载到程序的内存中的,只能(通过游标)读取当前行的数据,而且这些数据是只读的,并不允许作其它的操作。因为DataReader 在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好。使用DataReader 对象除了效率较好之外,因为不用把数据全部传回,故可以降低网络的负载。

    ADO.NET 使用Connection 对象来连接数据库,使用Command 或DataAdapter对象来执行SQL语句,并将执行的结果返回给DataReader 或 DataAdapter ,然后再使用取得的DataReader 或DataAdapter 对象操作数据结果。

     

    3、列举ASP.NET 页面之间传递值的几种方式。

    1.使用QueryString, 如....?id=1; response. Redirect()....

    2.使用Session变量

    3.使用Server.Transfer

    4.Cookie传值

    5.Application传值 需要注意些什么??

    6.PreviosPage

     

    Server.Transfer和Response.Redirect的区别:Server.Transfer是服务器内部的转接,浏览器不知晓;即已经跳转到制定的的页面,显示的也是跳转后页面的内容,但是地址栏中显示的仍然死跳转前的地址;Response.Redirect是有浏览器参与的,所以在地址栏中可以看到地址的变化。

     

    4、C#中的委托是什么?事件是不是一种委托?事件和委托的关系。

    委托可以把一个方法作为参数代入另一个方法。

    委托可以理解为指向一个函数的指针。

    委托和事件没有可比性,因为委托是类型,事件是对象,下面说的是委托的对象(用委托方式实现的事件)和(标准的event方式实现)事件的区别。事件的内部是用委托实现的。因为对于事件来讲,外部只能“注册自己+=、注销自己-=”,外界不可以注销其他的注册者,外界不可以主动触发事件,因此如果用Delegate就没法进行上面的控制,因此诞生了事件这种语法。事件是用来阉割委托实例的,类比用一个自定义类阉割List。事件只能add、remove自己,不能赋值。事件只能+=、-=,不能= 。加分的补充回答:事件内部就是一个private的委托和addremove两个方法。

     

    面试聊:用Reflector查看.Net的类的内部实现,解决问题。

     

    5、override与重载(overload)的区别

    重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要。重载(overload)是面向过程的概念。

    Override 是进行基类中函数的重写。Override是面向对象的概念

     

    6、C#中索引器是否只能根据数字进行索引?是否允许多个索引器参数?

    参数的个数和类型都是任意的。加分的补充回答:用reflector反编译可以看出,索引器的内部本质上就是set_itemget_item方法。加分的补充回答:回答传智播客.net培训中讲解设计模式中开发的SettingsProvider就是用的string类型的参数名做索引器参数。

     

    7、属性和public字段的区别是什么?调用set方法为一个属性设值,然后用get方法读取出来的值一定是set进去的值吗?

    属性可以对设值、取值的过程进行非法值控制,比如年龄禁止设值负数,而字段则不能进行这样的设置。虽然一般情况下get读取的值就是set设置的值,但是可以让get读取的值不是set设置的值的,极端的例子。Public Age{get{return 100;}set{}}。加分的补充回答:用reflector反编译可以看出,属性内部本质上就是set_***get_***方法,详细参考传智播客.net培训视频中串讲.net基础的部分。

        class Person

        {

            public int Age

            {

                get

                {

                    return 3;

                }

                set

                {

     

                }

            }

        }

                Person p1 = new Person();

                p1.Age = 30;

                p1.Age++;

                Console.Write(p1.Age);//输出3

     

    8、三层架构

    通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。

    区分层次的目的即为了“高内聚,低耦合”的思想。

    表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候的所见所得。

    业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

    数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等每层之间是一种垂直的关系。

    三层结构是N层结构的一种,一般来说,层次之间是向下依赖的,下层代码未确定其接口(契约)前,上层代码是无法开发的,下层代码接口(契约)的变化将使上层的代码一起变化。

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

    缺点: 增加成本。

     

    9、MVC模式 *

    MVC(Model View Controller)模型-视图-控制器

    aspx就是View,视图;ModelDataSetReader、对象;Controllercs代码。

     

    MVC是典型的平行关系,没有说谁在上谁在下的关系,模型负责业务领域的事情,视图负责显示的事情,控制器把数据读取出来填充模型后把模型交给视图去处理。而各种验证什么的应该是在模型里处理了。它强制性的使应用程序的输入、处理和输出分开。MVC最大的好处是将逻辑和页面分离。

     

    10、什么是装箱(boxing)和拆箱(unboxing)? (*)

    装箱:从值类型接口转换到引用类型。

    拆箱:从引用类型转换到值类型。 

                object obj = null;//引用类型

                obj = 1;//装箱,boxing。把值类型包装为引用类型。

                int i1 = (int)obj;//拆箱。unboxing

     

    11、什么叫应用程序域(AppDomain) *

    一种边界,它由公共语言运行库围绕同一应用程序范围内创建的对象建立(即,从应用程序入口点开始,沿着对象激活的序列的任何位置)。

    应用程序域有助于将在一个应用程序中创建的对象与在其他应用程序中创建的对象隔离,以使运行时行为可以预知。

    在一个单独的进程中可以存在多个应用程序域。应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。

     

    12、CTS、CLS、CLR分别作何解释(*)

    CTS:Common Type System 通用系统类型。Int32、Int16→int、String→string、Boolean→bool

    CLS:Common Language Specification 通用语言规范。不同语言语法的不同。

    CLR:Common Language Runtime 公共语言运行时,就是.Net提供的那些 类。

     

    13、在dotnet中类(class)与结构(struct)的异同?

    Class可以被实例化,属于引用类型,是分配在内存的堆上的。类是引用传递的。

    Struct属于值类型,是分配在内存的栈上的。结构体是复制传递的。加分的回答:Int32、Boolean等都属于结构体。

     

    14、堆和栈的区别?

    栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;局部值类型变量、值类型参数等都在栈内存中

    堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。

     

    15、能用foreach遍历访问的对象的要求

    需要实现IEnumerable(可列举的)接口或声明GetEnumerator方法的类型。

     

     

    16、GC是什么? 为什么要有GC? 

    GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。GC只能处理托管内存资源的释放,对于非托管资源则不能使用GC进行回收,必须由程序员手工回收,一个例子就是FileStream或者SqlConnection需要程序员调用Dispose进行资源的回收。

    要请求垃圾收集,可以调用下面的方法:GC.Collection()一般不需要手动调用GC.Collection()。加分的回答:有一次用OLEAutomation的方式操作Excel的时候,Excel经常不能正常退出,在MSDN网站上找到官方解答说要调用一下GC.Collection(),至于为什么这样就可以也没找到答案。

     

    17、String s = new String("xyz");创建了几个String Object?

    两个对象,一个是“xyx”,一个是指向“xyx”的引用对象。

     

    18、值类型和引用类型的区别?

    1.将一个值类型变量赋给另一个值类型变量时,将复制包含的值。引用类型变量的赋值只复制对对象的引用,而不复制对象本身。

    2.值类型不可能派生出新的类型:所有的值类型均隐式派生自 System.ValueType。但与引用类型相同的是,结构也可以实现接口。

    3.值类型不可能包含 null 值:然而,可空类型功能允许将 null 赋给值类型。

    4.每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。 

     

    19、C#中的接口和类有什么异同。

     

    不同点:

    不能直接实例化接口。

    接口不包含方法的实现。

    接口可以多继承,类只能单继承。

    类定义可在不同的源文件之间进行拆分。

    相同点:

    接口、类和结构都可以从多个接口继承。

    接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。

    接口和类都可以包含事件、索引器、方法和属性。

     

    20abstract classinterface有什么区别?

     

    相同点:

    都不能被直接实例化,都可以通过继承实现其抽象方法。

    不同点:

    接口支持多继承;抽象类不能实现多继承。

    接口只能定义行为;抽象类既可以定义行为,还可能提供实现。

    接口可以用于支持回调(CallBack);抽象类不能实现回调,因为继承不支持。

    接口只包含方法(Method)、属性(Property)、索引器(Index)、事件(Event)的签名,但不能定义字段和包含实现的方法;

    抽象类可以定义字段、属性、包含有实现的方法。 

    接口可以作用于值类型(Struct)和引用类型(Class);抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。

    加分的补充回答:讲设计模式的时候SettingsProvider的例子。

     

    21、是否可以继承String?

    String类是sealed类故不可以继承。 Sealed类是指密封类

     

    22、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行?

    会执行,在return前执行。

    加分的补充回答(也助记):读取数据库中数据的条数的程序

    public int QueryCount()

    {

       …..

       try

       {

          return cmd.ExecuteScalar();

       }

       finally

       {

          cmd.Dispose();

       }

    }

    如果C#设计的是先执行cmd.Dispose()再执行return就会出现return执行失败了,因为cmd已经Dispose了。

    因为c#就是这么设计的,finally中的代码一般都是释放资源,清除对象的,而return一般是用来返回数据的。如果限制性

    23、new 关键字用法(*)

    new 运算符 用于创建对象和调用构造函数。

    new 修饰符 用于向基类成员隐藏继承成员。

    new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型。

     

    24、如何把一个Array复制到ArrayList里(*)

     

    实现1 string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(); list.AddRange(s);

    实现2 string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(s);

     

    25、描述线程与进程的区别?(*)

    1.线程(Thread)与进程(Process)二者都定义了某种边界,不同的是进程定义的是应用程序与应用程序之间的边界,不同的进程之间不能共享代码和数据空间,而线程定义的是代码执行堆栈和执行上下文的边界。

    2.一个进程可以包括若干个线程,同时创建多个线程来完成某项任务,便是多线程。而同一进程中的不同线程共享代码和数据空间。用一个比喻来说,如果一个家庭代表一个进程,在家庭内部,各个成员就是线程,家庭中的每个成员都有义务对家庭的财富进行积累,同时也有权利对家庭财富进行消费,当面对一个任务的时候,家庭也可以派出几个成员来协同完成,而家庭之外的人则没有办法直接消费不属于自己家庭的财产。

    加分的回答:举例,传智播客的.Net培训中用多线程(ThreadPool)实现网站蜘蛛的案例。

     加分的回答。

    谈谈多线程:多线程不一定比单线程快,尤其是在进行I/O操作的时候,因为浪费了多线程切换的时间。多线程只是为了充分利用空闲的CPU,提高计算效率。

    另外,多线程虽然不一定能够提高执行速度,但是至少可以避免界面卡死的问题,尤其对于Winform这类程序。

    26、什么是强类型,什么是弱类型?哪种更好些?为什么? 
    C#中

    int i=3;

    i="a";

    不可以

    JavaScript中

    var i=3;

    i="a";

    可以

    强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会确定类型。

    没有好不好,二者各有好处,强类型安全,因为它事先已经确定好了,而且效率高。弱类型更灵活,但是效率低,而且出错概率高

    一般用于编译型编程语言,如c++,java,c#,pascal等,弱类型相比而言不安全,在运行的时候容易出现错误,但它灵活,多用于解释型编程语言,如javascript,vb等

    加分的补充回答:引用传智播客.net培训呼叫中心项目中用强类型DataSet的例子,侃一通用强类型DataSet是多么方便。

     

    27、什么是反射?

    程序集包含模块,而模块又包括类型,类型下有成员,反射就是管理程序集,模块,类型的对象,它能够动态的创建类型的实例,设置现有对象的类型或者获取现有对象的类型,能调用类型的方法和访问类型的字段属性。它是在运行时创建和使用类型实例

    加分的补充回答:聊用反射实现编辑器动态插件和如鹏网项目中插件体系实现第三方支付和定时任务的案例。

     

    28、int、DateTime、string是否可以为null?

    int、DateTime不能,因为其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才能被赋值null。string可以为null。

     

    29、using关键字有什么用?什么是IDisposable?

    using可以声明namespace的引入,还可以实现非托管资源的释放,实现了IDisposiable的类在using中创建,using结束后会自动调用该对象的Dispose方法,释放资源。加分的补充回答:using其实等价于try……finally,用起来更方便。

    int?→Nullable<int>

     

    30、Assembly.Load("foo.dll"); 这句话是否正确?(*

    错误,正确的应该是Assembly.Load("foo"); 或者Assembly.LoadFrom("foo.dll");

     

    31、XML 与 HTML 的主要区别

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

    2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>之类的结束 标记。在XML中,绝对不能省略掉结束标记。

    HTML:<img src="1.jpg"><br><br>

    XML:<img src="1.jpg"></img><br/><br/>

    3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用 查找结束标记了。

    4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。

    5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。

     

    XML是用来存储和传输数据的

    HTML是用来显示数据的

     

    32、string str = null 与 string str = “”说明其中的区别。

    答:string str = null 是不给他分配内存空间,而string str = \"\" 给它分配长度为空字符串的内存空间。 string str = null没有string对象,string str = “”有一个字符串对象。

     

    33.写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。

    答:解1: 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)

    解答3ROW_NUMBER(推荐)

     

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

    答:封装、继承、多态。

    不要背,脑子中要有联想。

     

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

    答:[serializable]

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

    答:GC。

     

    37、什么叫应用程序域?什么是受管制的代码?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTSCLSCLR分别作何解释?

    应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应用程序域通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。应用程序域提供了一个更安全、用途更广的处理单元,公共语言运行库可使用该单元提供应用程序之间的隔离。

    受管制的代码:在.Net环境中运行的任何代码都是受管制的代码(managed code),.Net外部的代码也运行在windows上,这些代码称为未受管制的代码(unmanaged code)。

    使用基于公共语言运行库的语言编译器开发的代码称为托管代码;托管代码具有许多优点,例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试和分析服务等。

    强类型语言是能够禁止任何违反类型系统的代码的语言,或者说是能够捕获所有违反类型系统的错误的语言。我们说C++相对于C是强类型的,是因为C++禁止了一些C中的隐式转换,比如将void*转换为任意的指针类型。

    装箱和拆箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。这使得值类型可以存储于垃圾回收堆中。拆箱将从对象中提取值类型。

    每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。只要签名不同,就可以在一种类型内定义具有相同名称的多种方法。当定义两种或多种具有相同名称的方法时,就称作重载。

    CTS通用类型系统 (common type system)

    一种确定公共语言运行库如何定义、使用和管理类型的规范。

    CLR公共语言运行库

    .NET Framework 提供了一个称为公共语言运行库的运行时环境,它运行代码并提供使开发过程更轻松的服务。

    CLS公共语言规范

    要和其他对象完全交互,而不管这些对象是以何种语言实现的,对象必须只向调用方公开那些它们必须与之互用的所有语言的通用功能。为此定义了公共语言规范 (CLS),它是许多应用程序所需的一套基本语言功能。

     

    38、什么是code-Behind技术。

    就是代码隐藏,在ASP.NET中通过ASPX页面指向CS文件的方法实现显示逻辑和处理逻辑的分离,这样有助于web应用程序的创建。比如分工,美工和编程的可以个干各的,不用再像以前asp那样都代码和html代码混在一起,难以维护。

     

    39、接口是一种引用类型,在接口中可以声明(   a),但不可以声明公有的域或私有的成员变量。   
      a) 方法、属性、索引器和事件;   
     
      c) 索引器和字段;     
      d) 事件和字段;   

    40. 在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(c)。   
      a) insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;   
      b) ExecuteNonQuery()方法返回执行Sql语句所影响的行数。   
      c) Select操作的Sql语句只能由ExecuteReader()方法来执行;   
      d) ExecuteReader()方法返回一个DataReder对象;  

     

    解答:ExecuteScalar→select getdate()。

     
    41. 下列关于C#中索引器理解正确的是(c   )   
      a) 索引器的参数必须是两个或两个以上   
      b) 索引器的参数类型必须是整数型   
      c) 索引器没有名字   
      d) 以上皆非   

    42. 要创建多文档应用程序,需要将窗体的(d   )属性设为true   
      a) DrawGrid;   
      b) ShowInTaskbar;   
      c) Enabled;   
      d) IsMdiContainer;   

    43. 如果设treeView1=new   TreeView(),则treeView1.Nodes.Add("根节点")返回的是一个   (a)类型的值。   
      a) TreeNode;   
      b) int;   
      c) string;   
      d) TreeView;  


    44. 下面关于XML的描述错误的是(d)。   
      a) XML提供一种描述结构化数据的方法;   
      b) XML   是一种简单、与平台无关并被广泛采用的标准;   
      c) XML文档可承载各种信息;   
      d) XML只是为了生成结构化文档;  


    45、以下的C#代码,试图用来定义一个接口:   
      public   interface   IFile   
      {   
                  int   A;   
                  int   delFile()   
                  {   
                          A   =   3;   
                  }   
                  void   disFile();   
      }   
      关于以上的代码,以下描述错误的是(d   )。   
      a) 以上的代码中存在的错误包括:不能在接口中定义变量,所以int   A代码行将出现错误;   
      b) 以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以不能编写具体的实现函数;   
      c) 代码void   disFile();声明无错误,接口可以没有返回值;   
      d) 代码void   disFile();应该编写为void   disFile(){};  

     

     空和null不一样。 

    46 在ASP.NET中有Button控件myButton,要是单击控件时,导航到其他页面http://www.abc.com,   正确的代码为(   c)。   
      a) private   void   myButton_Click(object   sender,   System.EventArgs   e){Redirect(“http://www.abc.com”);}   
      b) private   void   myButton_Click(object   sender,   System.EventArgs   e){Request.Redirect(“http://www.abc.com”);}   
      c) private   void   myButton_Click(object   sender,   System.EventArgs   e){Reponse.Redirect(“http://www.abc.com”);}   
      d) private   void   myButton_Click(object   sender,   System.EventArgs   e){Request.Redirect(“http://www.abc.com”);return   true;}   

    47. 声明一个委托public   delegate   int   myCallBack(int   x);   则用该委托产生的回调方法的原型应该是(b   )。   
      a) void   myCallBack(int   x)   ;   
      b) int   receive(int   num)   ;   
      c) string   receive(int   x)   ;   
      d) 不确定的;   

    48.StringBuilder 和 String 的区别?

    答:String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String

     如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。 

     

     

    49、.请叙述属性与索引器的区别。 (*)没啥意义

         属性          索引器    

      通过名称标识。 通过签名标识。    

      通过简单名称或成员访问来访问。 通过元素访问来访问。    

      可以为静态成员或实例成员。 必须为实例成员。    

      属性的   get   访问器没有参数。 索引器的   get   访问器具有与索引器相同的形参表。    

      属性的   set   访问器包含隐式   value   参数。 除了   value   参数外,索引器的   set   访问器还具有与索引器相同的形参表。 

     

    50.请叙述constreadonly的区别。(*

            const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。

            const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。

            const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。

            readonly在运行期评估赋值,使我们得以在确保“只读访问”的前提下,把object的初始化动作推迟到运行期进行。

            readonly 关键字与 const 关键字不同: const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而 readonly 字段可用于运行时常数。

      readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。

    参考资料:

    http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html

    http://www.cnblogs.com/jams742003/archive/2010/03/23/1692913.html

    http://www.cnblogs.com/wayfarer/archive/2006/04/27/386658.html

     

    51.  请解释ASP。NET中的web页面与其隐藏类之间的关系?

    一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下

    <%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>

    Codebehind="Tst1.aspx.cs" 表明经编译此页面时使用哪一个代码文件

    Inherits="T1.Tst1" 表用运行时使用哪一个隐藏类

     

    52.  什么是viewstate,能否禁用?是否所用控件都可以禁用?

    Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用。最有力的举例子:LabelTextBox在禁用ViewState后不同的表现来说明。

     

    53、你对web service的体会?

    答:如果自己写的一些程序也希望别人可以通过Web服务来使用,也可以把自己编写的方法贴上标签[WebMethed]来实现Web 服务。[是当编写程序时,希望实现一些别的网站已经实现过的,也用Web服务可视成XML语言的编码。可以使用别人的编码生成的XML找到自己需要的信息,来实现自己编写的程序的一些功能。把传智播客.net培训的如鹏网项目中用WebService实现管理客户端的例子说出来。

    SOAP、WSDL。

     

    54您在什么情况下会用到虚方法?它与接口有什么不同?

    答案:子类重新定义父类的某一个方法时,必须把父类的方法定义为virtual

    在定义接口中不能有方法体,虚方法可以。

    实现时,子类可以不重新定义虚方法,但如果一个类继承接口,那必须实现这个接口。

     

    讲到这里了

    55. 不定项选择:

    (1) 以下叙述正确的是: B C

    A. 接口中可以有虚方法。B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。

    (2) 从数据库读取记录,你可能用到的方法有:B C D

          A. ExecuteNonQuery            B. ExecuteScalar      C. Fill                        D. ExecuteReader

    (3).对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选)   (        ABC         )  

      A.Close B.Dispose C.Finalize  

      D.using E.Quit  

    (4)以下关于ref和out的描述哪些项是正确的?(多选)   (    ACD   )  

      A.使用ref参数,传递到ref参数的参数必须最先初始化。  

      B.使用out参数,传递到out参数的参数必须最先初始化。  

      C.使用ref参数,必须将参数作为ref参数显式传递到方法。  

      D.使用out参数,必须将参数作为out参数显式传递到方法。 

    讲到这里

    56. 单项选择:

    (1)下列选项中,(C)是引用类型。

    a)enum类型   b)struct类型 c)string类型   d)int类型

     

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

    a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。

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

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

    d)以上都不正确。

     

    (3).下列描述错误的是(D)

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

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

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

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

     

    57、DataReader和DataSet的异同?

    DataReader使用时始终占用SqlConnection,在线操作数据库

    每次只在内存中加载一条数据,所以占用的内存是很小的

    是只进的、 只读的

    DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接(非连接模式)

    DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行 回传更新操作(动态操作读入到内存的数据)

     

    58、public static const; int  A = 1;这段代码有错误么?

    错误:const不能被修饰为static ;因为定义为常量 (const )后就是静态的(static )。

     

    59传入某个属性的set方法的隐含参数的名称是什么?

    value,它的类型和属性所声名的类型相同。

     

    60、C#支持多重继承么?

    类之间不支持,接口之间支持。类对接口叫做实现,不叫继承。

     

    61、C#中所有对象共同的基类是什么?

    System.Object

     

    62、通过超链接怎样传递中文参数?

    答:用URL编码,通过QueryString传递,用urlencode编码 用urldecode解码

     

    63、string、String;int、Int32;Boolean、bool的区别

    String、Int32、Boolean等都属于.Net中定义的类,而string、int、bool相当于C#中对这些类定义的别名。CTS。

     

    64、Server.Transfer和Response.Redirect的区别是什么?(常考)

    答: Server.Transfer仅是服务器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;Response.Redirect则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。

    Server.Transfer是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 这个过程中浏览器和Web服务器之间经过了一次交互。

       Response.Redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求。这个过程中浏览器和Web服务器之间经过了两次交互。

     

    65、不是说字符串是不可变的吗?string s="abc";s="123"不就是变了吗?(传智播客.Net培训班原创模拟题)

    String是不可变的在这段代码中,s原先指向一个String对象,内容是 "abc",然后我们将s指向"123",那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"123",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。

     

    66、是否可以从一个static方法内部发出对非static方法的调用?

    不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部不能发出对非static方法的调用。

     

    67、.Net中会存在内存泄漏吗,请简单描述。 (*)

    所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。.Net中有垃圾回收机制,它可以保证一对象不再被引用的时候,即对象编程了孤儿的时候,对象将自动被垃圾回收器从内存中清除掉。虽然.Net可以回收无用的对象,但是.Net仍然存在由于使用不当导致的内存泄露问题。.Net中的内存泄露的情况:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是.Net中内存泄露的发生场景,通俗地说,就是程序员可能创建了一个对象,以后一直不再使用这个对象,这个对象却一直被引用,即这个对象无用但是却无法被垃圾回收器回收的,这就是.Net中可能出现内存泄露的情况,例如,缓存系统,我们加载了一个对象放在缓存中(例如放在一个全局Dictionary对象中),然后一直不再使用它,这个对象一直被缓存引用,但却不再被使用。

    formManager

    {

      public static IList<Form> forms = new .....; 

    }

    扩展:使用弱引用那么及时被引用也可以被回收。

     

    68说出一些常用的类、接口,请各举5个

    要让人家感觉你对.Net开发很熟,所以,不能仅仅只列谁都能想到的那些东西,要多列你在做项目中涉及的那些东西。就写你最近写的那些程序中涉及的那些类。

    常用的类:StreamReader、WebClient、Dictionary<K,V>、StringBuilder、SqlConnection、FileStream、File、Regex、List<T>

    常用的接口:IDisposable、IEnumerable、IDbConnection、IComparable、ICollection、IList、IDictionary

    要出乎意料!不要仅仅完成任务!

     

    69、BS与CS的联系与区别。

    C/SClient/Server的缩写。客户端需要安装专用的客户端软件。

    B/S是Brower/Server的缩写,客户机上只要安装一个浏览器。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要逻辑在服务器端实现。浏览器通过Web Server 同数据库进行数据交互。

    C/S 与 B/S 区别:

    1).硬件环境不同:

      C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务. 

      B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行

    2).对安全要求不同

      C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.

      B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。

    3).处理问题不同

      C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统。C/S的客户端由于是本地程序,因此和本地硬件、程序的交互性很强,比如可以控制本机的其他程序、可以读写本地磁盘文件、可以与硬件交互。

      B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小,正应为如此B/S很难和本地硬件、程序、文件进行交互,比如很难控制本机的其他程序、很难读写本地磁盘文件、很难与硬件交互,当然可以用ActiveX技术解决,比如网银等就是这么解决的,这样做的问题就是可能会被客户拒绝,而且只局限于Windows操作系统。

     

    C/S也分为两层架构和三层架构。两层架构:客户端程序程序直连数据库;三层架构:客户端访问服务端的服务,主要逻辑代码写在服务端的服务中,然后服务端服务再去访问数据库,Oracle版分布式呼叫中心,WCF

     

    70、编写一个单例(Singleton)类。

    参考复习ppt。

    把构造函数设置为private,设置一个public、static的对象实例

    public FileManager

    {

        private FileManager(){}

        public static FileManager Instance = new FileManager();

    }

     

    扩展:搜“C#  Singleton”

    71、什么是sql注入?如何避免sql注入?

    用户根据系统的程序构造非法的参数从而导致程序执行不是程序员期望的恶意SQL语句。使用参数化的SQL就可以避免SQL注入。

    详细参考复习ppt。举例子,摆事实!

    1' or 1=1

     

    72、数据库三范式是什么?

    传智播客风格的非严谨却一下子明了的解答方式:

    第二范式:表必须有主键。

    第三范式:表引用其他的表必须通过主键引用。

     

    73、说出一些数据库优化方面的经验?

    索引内部原理:想象成Dictionary,插入、删除、更新的速度慢了,加上索引也多占用了空间,查询的速度快了。加上索引以后速度提升非常明显。

    (1)在经常检索的字段上(select * from Person where Name=@Name)使用索引提高查询速度。(2)select中只列出必要的字段,而不是*。(3)避免隐式类型转换造成的全表扫描,在索引上使用函数也会造成全表扫描(因为索引只是为字段建立的,一旦使用表达式或者函数,那么索引就是失效了,当然也可以使用“函数索引”、“表达式索引”解决这个问题),使用索引不一定能提高查询速度。(4)避免在索引列上使用计算(where Name+'A'=@MyName)

    加分的回答:不进行无意义优化,根据性能查看器的报表,对最耗时的SQL进行优化。

     

    74、什么是数据库事务?

    事务三个特性:一致性、原子性、隔离性。

    几个SQL语句,要么全部执行成功,要么全部执行失败。举例就用最经典的银行转账的例子就行,然后再举一个项目中用的例子:传智播客.net培训中批量导入客户数据的时候要么全部导入成功,要么全部导入失败。事务的三个操作:Begin、Commit、RollBack。

    取刚插入数据的id值,就要用事务来隔离:Insert 和select top 1 id from ....

     

    75、谈谈你对设计模式的理解(传智播客.Net培训班原创模拟题)

    世界上本没有模式,用的人多了,也就有了模式。不用刻意记每种模式的名字,手中无模式,心中有模式。

    大部分设计模式就是接口、抽象类的一个组合。ADO.Net基于接口编程,SafeDbCommand、SafeConnection。SettingsProvider。没必要记模式的名字。

    举例:传智播客.net培训时SettingsProvider、第三方支付的例子。

     

    76、谈谈ViewState。谈谈对ASP.Net原理的理解。谈谈ASP.Net生命周期。

    Label、Textbox在禁用ViewState的时候自增的不同表现

    Http是无状态的,WebForm为了实现基于http的“有状态”从而简化开发,ViewState用来在两次请求间保持状态。页面返回前将界面的状态序列化到ViewState中,这样就将状态保存在了浏览器中,下次页面提交的时候会顺便再将ViewState提交到服务器,这样服务器就根据ViewState还原了状态,这样WebForm开发就像有状态一样了。谈谈自定义AutoInc控件。

     

    77、post、get的区别

    get的参数会显示在浏览器地址栏中,而post的参数不会显示在浏览器地址栏中;

    使用post提交的页面在点击【刷新】按钮的时候浏览器一般会提示“是否重新提交”,而get则不会;

    用get的页面可以被搜索引擎抓取,而用post的则不可以;

    用post可以提交的数据量非常大,而用get可以提交的数据量则非常小(2k),受限于网页地址的长度。

    用post可以进行文件的提交,而用get则不可以。

     参考阅读:http://www.cnblogs.com/skynet/archive/2010/05/18/1738301.html

     

    78、下面的程序执行结果是什么?(传智播客.Net培训班原创模拟题)

        class Person

        {

            public int Age { getset; }

        }

                int i1 = 20;

                int i2 = i1;

                i1++;

                Console.WriteLine(i2);

     

                Person p1 = new Person();

                p1.Age = 20;

                Person p2 = p1;

                p1.Age++;

                Console.WriteLine(p2.Age);

    答案:

    20

    21

     

    解释:引用类型和值类型的区别。

     

    79、Http默认的端口号是(80)、Ftp默认的端口号是(21)、SQLServer的默认端口号是(1433)(传智播客.Net培训班原创模拟题)

    80、运算符++a表示(先将a1,然后表达式的值为a1后的值),i++表示(表达式的值为a,然后a1)。

    81、下面程序的执行结果是什么?(传智播客.Net培训班原创模拟题)

                int i = 10;

                Console.WriteLine(i++);

                Console.WriteLine(++i);

                Console.WriteLine(i=20);

    答案:

    10

    12

    20       

    解答:前两个参考第80题,i++表达式的值为i自增之前的值,所以打印10,执行完成后i变成11,执行++i的时候表达式的值为自增以后的值12。C#中赋值表达式的值为变量被赋值的值,因此最后一个就输出i赋值后的值20

    while((line=reader.ReadLine())!=null)

    {

    }

     

    82、如果不用VisualStudio,用哪个命令行编译C#程序?(*)(传智播客.Net培训班原创模拟题)

    答:csc.exe。

     

    83、下列哪个名词和WebService不直接相关?(B)(传智播客.Net培训班原创模拟题)

    A、UDDI

    B、GUID

    C、WSDL

    D、SOAP

     

    SOAP和HTTP的关系:SOAP基于Http协议的,和普通网页不同的是网页返回HTML,SOAP则是符合SOAP协议的XML数据。

     

    84、.Net Framework中的类是专门供C#调用的是吗?(传智播客.Net培训班原创模拟题)

    答:错。VB.Net等语言都可以调用.Net Framework中的类。CTS、CLS。

     

    85、开放性问题:说出尽可能多的基于.Net Framework的语言。(*)(传智播客.Net培训班原创模拟题)

    参考解答:C#、VB.Net、F#、PowerShell、IronPython、J#、Ruby.Net

     

    86、.Net、ASP.Net、C#、VisualStudio之间的关系是什么?(传智播客.Net培训班原创模拟题)

    答:.Net一般指的是.Net Framework,提供了基础的.Net类,这些类可以被任何一种.Net编程语言调用,.Net Framework还提供了CLR、JIT、GC等基础功能。

    ASP.Net是.Net中用来进行Web开发的一种技术,ASP.Net的页面部分写在aspx 文件中,逻辑代码通常通过Code-behind的方式用C#、VB.Net等支持.Net的语言编写。

    C#是使用最广泛的支持.Net的编程语言。除了C#还有VB.Net、IronPython等。

    VisualStudio是微软提供的用来进行.Net开发的集成开发环境(IDE),使用VisualStudio可以简化很多工作,不用程序员直接调用csc.exe等命令行进行程序的编译,而且VisualStudio提供了代码自动完成、代码高亮等功能方便开发。除了VisualStudio,还有SharpDevelop、MonoDevelop等免费、开源的IDE,VisualStudio Express版这个免费版本。

     

    87、AJAX解决什么问题?如何使用AJAX?AJAX有什么问题需要注意?项目中哪里用到了AJAX?(传智播客.Net培训班原创模拟题)

    答:AJAX解决的问题就是“无刷新更新页面”,用传统的HTML表单方式进行页面的更新时,每次都要将请求提交到服务器,服务器返回后再重绘界面,这样界面就会经历:提交→变白→重新显示这样一个过程,用户体验非常差,使用AJAX则不会导致页面重新提交、刷新。

    AJAX最本质的实现是在Javascript中使用XMLHttpRequest进行Http的请求,开发中通常使用UpdatePanel、JQuery等方式简化AJAX的开发,UpdatePanel的方式实现AJAX最简单,但是数据通讯量比较大,因为要来回传整个ViewState,而且不灵活,对于复杂的需求则可以使用JQuery提供的ajax功能。

    UpdatePanel的内部原理。

    AJAX最重要的问题是无法跨域请求(www.rupeng.com →so.rupeng.com),也就是无法在页面中向和当前域名不同的页面发送请求,可以使用在当前页面所在的域的服务端做代理页面的方式解决。

    在如鹏网项目中发帖的时候显示相关帖的功能、站内搜索项目中显示搜索Suggestion、数据采集项目中都用到了AJAX。

    88、NET通过对各语言先编译成( IL),然后再执行时用( JIT)将其编译成本地平台代码,来实现异构平台下对象的互操作。(*)

    89、编写正则表达式验证一个字符串是否为Email。复习正则表达式部分的知识。

    90、Application 、Cookie和 Session 两种会话有什么不同?

    答:Application是用来存取整个网站全局的信息,而Session是用来存取与具体某个访问者关联的信息。

     

    91、开放式问题:你经常访问的技术类的网站是什么?

    博客园(www.cnblogs.com)、csdn、codeplex、codeproject、msdn文档、msdn论坛(遇到问题先到网上搜解决方案,还不行就问同事,同事也解决不了就去MSDN论坛提问,一定能得到解决)

     

    92、你对.net的GC的理解

    GC是.Net的垃圾收集器,可以进行内存资源的回收,程序员无需关心资源的回收,当一个对象没有任何引用的时候就可以被回收了。一个对象可以被回收并不意味着一定会被立即回收,GC会选择时机进行回收。可以调用GC.Collect()让GC立即回收。GC不能回收非托管资源,对于非托管资源一般都实现了IDisposable接口,然后使用using关键字进行资源的回收。

     

     

    93、请写一个SQL语句:从user表中取出name列中的起始字符是“北京”的全部记录

    select * from [user] wherer name like'北京%'

     

    94、请你简单的说明数据库建立索引的优缺点

    使用索引可以加快数据的查询速度,不过由于数据插入过程中会建索引,所以会降低数据的插入、更新速度,索引还会占磁盘空间。

     

    95、什么是WEB服务控件?使用WEB服务控件有那些优势、劣势? 

    web服务控件就是可以在服务器执行的控件,优势在于可以回传数据(ViewState),带有事件驱动(doPostBack),简化了Html标签的使用,使得开发ASP.net程序可以像开发Winform程序一样简单。Web服务控件最终还是被渲染(Render)为Html标签。使用WEB服务控件的劣势是会生成一些无用的属性、ViewState等,不利于SEO,一般在内网系统或者互联网系统的后台中使用WEB服务控件。如果没有复杂的服务器交互动作,就不用Web服务器控件。

    runat=server的HTML控件有什么特点:路径不用程序员解析,可以使用“~”来虚拟路径。

     

    96、下面程序的执行结果是什么?(传智播客.Net培训班原创模拟题)

                int i = 10;

                if (i <=0) ;

                    Console.WriteLine("i必须大于0");

                Console.WriteLine("ok");

    答案:

    i必须大于0

    ok

     

    解答:注意if (i <=0)后面的“;”,由于有了“;”,所以Console.WriteLine("i必须大于0")不再是和if一起的一部分,而是独立的语句。

    for循环也是如此。

     

    97、下面程序的执行结果是什么?(传智播客.Net培训班原创模拟题)(*)

            static void Main(string[] args)

            {

                Console.WriteLine(Calc());

     

                Console.ReadKey();

            }

     

            static int Calc()

            {

                int i = 0;

                try

                {

                    return i;

                }

                finally

                {

                    Console.WriteLine("finally");

                    i++;

                }

            }

    答案:

    finally

    0

     

    解释:参考第22题的值,return先执行,finally后执行,所以return的值是没有i++之前的0。注意并不是return的时候函数真的就“返回、执行结束”了,return只是标记函数的返回值是0,标记完了还会执行finally中的代码,只有finally中的代码执行完成后函数才真正的返回。

     

     

    98、开放式问题:工作中遇到不懂的问题是怎样去解决的?(传智播客.Net培训班原创模拟题)

    参考解答:首先到百度上搜索中文的资料,一般都可以找到解决方案,如果还找不到解决方案就到google上搜索英文的资料,如果还没有解决方案就请教同事,如果同事也没有解决方案,就将问题提交到MSDN论坛。

     

    99、开放性问题:你能说出哪些数据库?(传智播客.Net培训班原创模拟题)

    参考解答:MSSQLServer、Oracle、Access、DB2、Sybase

     

    100、开放性问题:你能说出尽可能多的你听说过的编程语言?(传智播客.Net培训班原创模拟题)(*)

    参考解答:C#、VB.Net、Ada、Cobol、C、C++、Delphi、Erlang、F#、Fortran、Java、JavaScript、Pascal、Python、PowerShell、Ruby、Smalltalk。

     

    101、请翻译下面的文章(*)
    The BaseDataBoundControl is the root of all data-bound control classes. It defines the DataSource and DataSourceID properties and validates their assigned content. DataSource accepts enumerable objects obtained and assigned the ASP.NET 1.x way.

     

    Mycontrol1.DataSource = dataSet;

     

    Mycontrol1.DataBind();

     

    DataSourceID is a string and refers to the ID of a bound data source component. Once a control is bound to a data source, any further interaction between the two (in both reading and writing) is handled out of your control and hidden from view. This is both good and bad news at the same time. It is good (rather, great) news because you can eliminate a large quantity of code. The ASP.NET framework guarantees that correct code executes and is written according to recognized best practices. You're more productive because you author pages faster with the inherent certainty of having no subtle bugs in the middle. If you don't like this situation—look, the same situation that many ASP.NET 1.x developers complained about—you can stick to the old-style programming that passes through the DataSource property and DataBind method. Also in this case, the base class saves you from common practices even though the saving on the code is less remarkable.

     

    参考翻译(自我感觉翻译的很烂,仅供参考。):

    BaseDataBoundControl是所有的数据绑定控件类的根类。它定义了DataSource、DataSourceID两个属性,并且对为它们赋值的内容进行验证。DataSource属性接受读取、设置ASP.Net 1.x方式的IEnumerable 对象。

    Mycontrol1.DataSource = dataSet;

    Mycontrol1.DataBind();

    DataSourceID 是一个字符串,引用绑定的数据源控件的ID。一旦一个控件绑定到了数据源,这两者之间的任何交互(读和写)都会在你的控件之外被处理,并且被隐藏起来。这既是好消息也是坏消息。ASP.Net框架保证代码按照最佳实践进行代码的执行、编写。你会更加高效,因为你编写了更快的、没有任何错误的分页代码。如果你不喜欢这样的行为(看,就和ASP.Net 1.x开发人员抱怨的一样),你仍然可以使用老的编程风格,也就是将对象传递给DataSource属性,然后调用DataBind方法。另外在这种情况下,基类可以帮你避免常规的做法,即使看起来改进不明显。

     

    102、在下述选项时,没有构成死循环的程序是 (C)

    A.int i=100;while (1) { i=i%100+1; if (i>100) break; }

    B.for (;;);

    C.int k=1000; do { ++k; }while(k>=10000);

    D.int s=36; while (s);--s;

     

    103、下列哪个是和数据库访问技术关系不大的技术(C)

    A、SQLHelper

    B、EnterPrise Library

    C、AppDomain

    D、Linq

     

    104、下列哪些说法是错误的(传智播客.Net培训班原创模拟题)

    A、将bmp格式的文件修改为jpg是修改图片格式最简单的方法

    B、将QQ动态表情显示在网页上用gif格式比较好

    C、将bmp格式的图片放到网页中可以优化网站速度

    D、png格式用在网页中可以实现透明的效果。

     

    答案:A、C。A错误是因为修改文件的后缀并没有真的修改文件的格式,要使用Photoshop、mspaint等图片处理工具进行转换才可以。C错误是因为在网页中不能使用bmp图片。

     

    105、从以下简写中任选一个简单描述

    OA\MIS\HRM\CRM\KM

     

    参考答案:

    OA(Office Automation):办公自动化

    MIS(Managment Information system):管理信息系统

    HRM(Human Resource Managment):人力资源管理,包括员工管理、薪资管理、入职管理、离职管理、报销管理、请假管理等

    CRM(Customer Relation Managment):客户关系管理系统,包括客户管理、客户关怀、客户回访、投诉管理、咨询管理、报修管理等

    KM(Knowledge Managment):知识管理

     

    106、请在数据库中设计表来保存一个树状结构的公司组织结构

    参考呼叫中心项目的代码和板书。

     

    107、下面程序的执行结果是什么?

        public struct Point

        {

            public int x;

            public int y;

            public Point(int x, int y)

            {

                this.x = x;

                this.y = y;

            }

        }

                Point p1 = new Point(100, 100);

                Point p2 = p1;

                p1.x = 200;

                Console.WriteLine("{0},{1}", p1.x, p2.x);

    答案:

    200,100

     

    解答:结构体是复制传递的。

     

    108、在Windows命令行中敲入下面的指令各有什么反应(传智播客.Net培训班原创模拟题)

    cd ..

     

    notepad

    cmd

    ipconfig

    dir

     

    答案:

    cd ..:进入上一级目录

    notepad:打开记事本

    cmd:启动另外一个命令行

    ipconfig:打印网络设置信息

    dir:显示当前目录下的文件

     

    109、下列这些软件用过哪些?他们是用来做什么的?(传智播客.Net培训班原创模拟题)

    TypeAndRun、FoxMail、Reflector、UltraEdit、VSS、VirtualPC、VMWare

    参考答案:

    TypeAndRun:快速通过敲命令的方式启动其他程序的工具。

    FoxMail:邮件收发客户端

    Reflector:.net程序反编译工具

    UltraEdit:高级文本编辑器

    VSS:源代码管理工具

    VirtualPC:在一台计算机中虚拟出另外一个计算机的软件,是微软的产品

    VMWare:和VirtualPC一样,也是一种虚拟机软件

     

    110、开放式问题:如果程序连不上SQLServer数据库服务器服务器,你会怎么排除这个故障?(传智播客.Net培训班原创模拟题)

    参考解答:首先ping一下服务器IP,看是否能够ping通,如果不能ping通,则看是否网络有问题;如果能ping通,再telnet一下服务器的1433端口,看是否能够连通;如果不能连通则可能是SQLServer服务停掉了或者是服务器上的防火墙封掉了1433端口;如果能连通再检查是不是本地程序的问题、驱动的问题。

     

    111、下面的IP地址有什么含义?(传智播客.Net培训班原创模拟题)

    127.0.0.1:本地回环地址(LoopBack),localhost

    0.0.0.0:监听所有的网卡。AnyIP。

    255.255.255.0

     

    112、不用JQuery等框架实现AJAX无刷新登录。

    提示:用纯XMLHttpRequest实现。

    113、单点登录。

    114、Http状态码各是什么意思。

    301 :重定向
    404 :页面不错在

    500:服务器内部错误

    115、 对html文本框进行赋值的JQuery语句,对html文本框进行取值的JQuery语句,对TextBox服务端控件进行取值的语句JQuery。

    116、IE和FireFox的不同,IE6和IE8的不同。JQuery

    XMLHttpRequest。不同浏览器实现AJAX的代码是不一样的。InnerHTML。

    CSS、Javascript、dom。

    我们项目开发中为了避免这些跨浏览器兼容的问题,就是用JQuery框架,他帮我们屏蔽了浏览器的差异。

     

    说说在软件设计中你遇到的以空间换时间的例子?Cache、索引、简繁转换用Dictionary。

     

    机试题:

    1、下面是一个由*号组成的4行倒三角形图案。要求:1、输入倒三角形的行数,行数的取值3-21之间,对于非法的行数,要求抛出提示“非法行数!”2、在屏幕上打印这个指定了行数的倒三角形。

    *******

    *****

    ***

    *

    2、现有1~100共一百个自然数,已随机放入一个有98个元素的数组a[98]。要求写出一个尽量简单的方案,找出没有被放入数组的那2个数,并在屏幕上打印这2个数。注意:程序不用实现自然数随机放入数组的过程。

    3、一个文本文件含有如下内容:

    4580616022644994|3000|赵涛

    4580616022645017|6000|张屹

    4580616022645090|3200|郑欣夏

    上述文件每行为一个转账记录,第一列表示帐号,第二列表示金额,第三列表示开户人姓名。

    创建一张数据库表(MS SQLServer数据库,表名和字段名自拟),请将上述文件逐条插入此表中。

    4、一个文本文件含有如下内容,分别表示姓名和成绩:

    张三 90

    李四 96

    王五 78

    赵六 82

     

    提供用户一个控制台界面,允许用户输入要查询的姓名,输入姓名并且按回车以后,打印出此人的成绩,如果不输入姓名直接按回车则显示所有人的姓名以及成绩。(注意:不能使用数据库)

    展开全文
  • C#面试题库

    2011-12-01 12:04:28
    C#面试题库包括了C#基础,及以往的题库。很多大型公司都出过得题。
  • c#认证题库 希望有用

    2009-08-05 15:40:01
    c#认证题库c#认证题库c#认证题库c#认证题库c#认证题库
  • C#题库汇总

    千次阅读 2019-05-06 14:51:00
    C# 题库汇总 1、如下所示,是一段递归程序,求它的输出结果? 2、判断如下代码是否合法?  static const double PI=3.14; 3、通过析构函数我们可以明确指定在什么时候释放掉不需要的资源? 4、索引和属性都...
  • C# 面试题库

    2008-03-30 08:54:54
    很有用的C# 面试题库
  • c#面试题库

    2008-02-22 11:12:25
    个人整理的面试题库 c#
  • C#题库答案汇总

    千次阅读 2019-05-06 14:54:00
    C# 题库答案汇总 1、答案: 2、答案:  错误(常量不能被指定为static,但是具有静态量的使用功能) 3、答案:  错误,我们并不知道析构函数会在什么时候被调用,也不能显示的调用析构函数进行资源释放。...
  • C#认证题库

    2008-01-06 22:00:18
    C#认证的题库看看吧
  • C# 认证题库.rar

    2010-03-22 11:07:30
    ATA C# 认证题库!ATA C# 认证题库!ATA C# 认证题库
  • C#习题题库

    2012-12-06 10:25:24
    c#考试复习题,该复习试题简单的将大学生c#考试的内容包括在里面,是学习c#专业备考的很好复习资料
  • C# 最新面试 题库

    2009-07-24 08:00:13
    C# 最新面试 题库 C# 最新面试 题库
  • c#.net题库

    2013-07-08 23:28:25
    提供给c#的初学者来加强概念上的理解,如果有些人看不懂书看不理解,可以在这里学到更多。我觉得这个可以给大家学到更多。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,187
精华内容 2,074
关键字:

c#题库

c# 订阅