视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
面试题(.NET)答案
2025-09-22 17:43:44 责编:小OO
文档
一、C#

1.请解释在new 与override的区别?

 在 C# 中,new 关键字可用作运算符或修饰符。 

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

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

使用 override 修饰符来修改方法、属性、索引器或事件。重写方法提供从基类继承的成员的新实现。由重写声明重写的方法称为重写基方法。重写基方法必须与重写方法具有相同的签名。

不能重写非虚方法或静态方法。重写基方法必须是虚拟的、抽象的或重写的。

重写声明不能更改虚方法的可访问性。重写方法和虚方法必须具有相同的访问级修饰符。不能使用下列修饰符修改重写方法:new   static    virtual   abstract重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且重写属性必须是虚拟的、抽象的或重写的。

2.请解释virtual的含义?

     virtual 关键字用于修改方法或属性的声明,在这种情况下,方法或属性被称作虚拟成员。虚拟成员的实现可由派生类中的重写成员更改。

调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。默认情况下,方法是非虚拟的。不能重写非虚方法。不能将 virtual 修饰符与以下修饰符一起使用:static   abstract   override除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。 

∙在静态属性上使用 virtual 修饰符是错误的。 

∙通过包括使用 override 修饰符的属性声明,可在派生类中重写虚拟继承属性

3.请解释.net采用委托实现的事件模型与JAVA中采用接口实现的事件模型有什么区别,以图示方式解释。

4.请解释接口的显式实现有什么意义?

     接口是其他类型为确保它们支持某些操作而实现的引用类型。接口从不直接创建而且没有实际的表示形式,其他类型必须转换为接口类型。一个接口定义一个协定。实现接口的类或结构必须遵守其协定。接口可以包含方法、属性、索引器和事件作为成员。

5.请以图示方式解释.net framework?

           

     

VBC++C#JScript
Common Language Specification
XML Web

services

Web Forms
Windows Forms
Data and XML
Base Class Library
CLR
CLI

Visual Studio .NET
6.什么是.net?

     .net是一种平台和框架, .net 不是单纯的语言也不是单纯的工具,它是从底层平台开始构建起来的一个整体框架

6.Ref 与out有什么不同?

      方法参数上的 ref 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,必须将参数作为 ref 参数显式传递到方法。ref 参数的值被传递到 ref 参数。传递到 ref 参数的参数必须最先初始化。将此方法与 out参数相比,后者的参数在传递到 out 参数之前不必显式初始化。属性不是变量,不能作为 ref 参数传递。如果两种方法的声明仅在它们对 ref 的使用方面不同,则将出现重载。但是,无法定义仅在 ref 和 out 方面不同的重载。

     方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。

当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。不必初始化作为 out 参数传递的变量。然而,必须在方法返回之前为 out 参数赋值。属性不是变量,不能作为 out 参数传递。如果两个方法的声明仅在 out 的使用方面不同,则会发生重载。不过,无法定义仅在 ref 和 out 方面不同的重载。

7.值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型。

大多数编程语言提供内置的数据类型(比如整数和浮点数),这些数据类型会在作为参数传递时被复制(即,它们通过值来传递)。在 .NET Framework 中,这些称为值类型。您可以创建值类型的实例,将它们作为参数传递,将它们存储为局部变量,或将它们存储在另一值类型或对象的字段中。值类型没有与存储类的实例相关的系统开销,并且它们不需要构造函数。值类型可以有字段、属性和事件。它们也有静态和非静态方法。当它们被装箱时,会从 System.ValueType 继承虚方法,并可实现零个或更多接口。值类型是密封的,这意味着不能从它们派生出其他类型。但是,可以直接对值类型定义虚方法,并且既可对该类型的已装箱形式,也可对未装箱形式调用这些方法。尽管不能从一种值类型派生出另一种类型,但是当所用语言处理虚方法比处理非虚方法或静态方法更方便时,可以对值类型定义虚方法。

引用类型的变量又称为对象,可存储对实际数据的引用。以下用于声明引用类型的关键字: 

∙class

∙interface 

∙delegate      

8.结构体是值类型还是引用类型的?

      是值类型。

9.C#中有没有静态构造函数,如果有是做什么用的?

         有. 静态构造函数用于初始化类。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。静态构造函数既没有访问修饰符,也没有参数。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。无法直接调用静态构造函数。在程序中,用户无法控制何时执行静态构造函数。静态构造函数的典型用途是:当类使用日志文件时,将使用这种构造函数向日志文件中写入项。

10.在C#中如何实现多态?

         “多态性”指定义具有功能不同但名称相同的方法或属性的多个类的能力,这些类可由客户端代码在运行时交换使用。大部分面向对象的编程系统都通过继承提供多态性。基于继承的多态性涉及在基类中定义方法并在派生类中使用新实现重写它们。

11.什么是反射?如何实现反射?

反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。通过反射命名空间中的类以及 System.Type,您可以获取有关已加载的程序集和在其中定义的类型(如类、接口和值类型)的信息。您也可以使用反射在运行时创建类型实例,然后调用和访问这些实例。

12.请解释流与文件有什么不同?

文件是一些具有永久存储及特定顺序的字节组成的一个有序的、具有名称的集合。因此,对于文件,人们常会想到目录路径、磁盘存储、文件和目录名等方面。相反,流提供一种向后备存储器写入字节和从后备存储器读取字节的方式,后备存储器可以为多种存储媒介之一。正如除磁盘外存在多种后备存储器一样,除文件流之外也存在多种流。例如,还存在网络流、内存流和磁带流等。

           

13.程序集与命名空间有什么不同?

命名空间是用于避免命名冲突,专用于组织代码,当代码要在其他某个应用程序中重用时,可以降低复杂性。

程序集是重用代码的一种方式

不同: 可以将相同命名空间中的类部署到不同的程序集中,也可以命名空间中的类部署到一个程序集中

命名空间程序集
有逻辑编译时机制有物理编译时机制
不是运行时实体是运行时实体
为源代码元素的名称提供逻辑结构为可执行文件的运行时提供物理结构
14.请编写一个捕获所有错误的错误处理代码

15.

16.  Try{

17.    …

18.}catch(Exception e){…}

19.委托与事件是什么关系?为什么要使用委托

•委托提供了封装方法的方式,事件是某动作已发生的说明,事件是建立于委托之上的

•程序运行时同一个委托能够用来调用不同的方法只要改变它的引用方法即可

•同一个委托能够用来调用不同的方法,只要改变它引用的方法即可,因此委托调节器用的方法不是在编译时决定的,而是在运行时确定的.

20.一个类中有几种元素?

        类由字段,属性,方法组成

21.请解释这种语法现象Session[“name”]=20;

             给类的索引器赋值.

                  

22.装箱与取消装箱是什么含义?

装箱是值类型到 object 类型或到该值类型所实现的任何接口类型的隐式转换。将一个值的值装箱会分配一个对象实例并将该值复制到新的对象中。

取消装箱是从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。取消装箱操作包括: 

∙检查对象实例,确保它是给定值类型的一个装箱值。 

∙将该值从实例复制到值类型变量中。 

23.一个构造函数能否调用另一个构造函数,如果能请写出简单的代码

能.     

class class1

    {

           int y;

public class1(){

    new class1(5);

}

            public class1(int i)

            { 

                    this.y=i;

            }

        public void x(){

            Console.WriteLine(y.ToString());

        }

        static void Main(string[] args)

        {

            //

            class1 cl=new class1(5);

            cl.x();

        }

    }

24.请编写创建一个线程的代码。

using System;

using System.IO;

using System.Threading ;

class MyThread{

    public int count;

    string thrdName;

    public MyThread(string name){

        count=0;

        thrdName=name;

    }

    public void run(){

        Console.WriteLine(thrdName+"starting.");

        do{

            Thread.Sleep(500);

            Console.WriteLine("In"+thrdName+", count is "+count);

            count++;

        }while(count<10);        

    Console.WriteLine(thrdName+" terminating.");

    }

}

class MultiThread{

    public static void Main(){

        Console.WriteLine("Main thread starting.");

        MyThread mt=new MyThread("Child #1");

        Thread newThrd=new Thread(new ThreadStart(mt.run));

        newThrd.Start();

        do {

            Console.Write(".");

            Thread.Sleep(100);

        }while(mt.count!=10);

        Console.WriteLine("Main thread ending.");

    }

}

25.Params是什么含义?

params 关键字可以指定在参数数目可变处采用参数的方法参数。在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。

26.C#中有没有运算符重载?能否使用指针?

•重载操作符意味着使该操作符具有不同的行为

•使用操作符可以使方程式简单易懂

 •重载运算符使用operator关键字来创建一个运算符方法

能使用指针, 在 C# 中很少需要使用指针,但仍有一些需要使用的情况。例如,在下列情况中使用允许采用指针的不安全上下文是正确的: 

∙处理磁盘上的现有结构 

∙涉及内部包含指针的结构的高级 COM 或平台调用方案 

∙性能关键代码 

不鼓励在其他情况下使用不安全上下文。具体地说,不应该使用不安全上下文尝试在 C# 中编写 C 代码。

27.C#中有很多类被定义为public有什么意义?

Public 关键字将公共访问权限授予一个或多个被声明的编程元素。对公共元素的可访问性没有。

28.Internal修饰符有什么含义?

internal 关键字是类型和类型成员的访问修饰符。内部成员只有在同一程序集中的文件内才是可访问的。内部访问通常用于基于组件的开发,因为它使一组组件能够以私有方式进行合作,而不必向应用程序代码的其余部分公开。例如,用于生成图形用户界面的框架可以提供“控件”类和“窗体”类,这些类通过使用具有内部访问能力的成员进行合作。由于这些成员是内部的,它们不向正在使用框架的代码公开。在定义具有内部访问能力的成员的程序集外部引用该成员是错误的。

29.JAVA的代码是半编译半解释的C#的代码是否也是这样

       C#源码经过语言编译器执行第一次编译,变为中间语言,然后再由CLR编译成可执行代码.

30.私有程序集与共享程序集有什么区别?

私有程序集: 

•默认情况下,C# 程序编译为私有程序集

•需要放在应用程序所在的文件夹中

•程序集的名称在应用程序中应当是唯一的

共享程序集:

•可以被不同的应用程序共享

•在所有使用程序集的应用程序中,程序集名称应当是唯一的

•放在全局程序集缓存中

31.请解释进程与线程的区别?进程与程序的区别?

用最简短的话来说,进程就是当前运行的应用程序。线程是操作系统向其分配处理器时间的基本单位。线程可执行进程的任何一部分代码,包括当前由另一线程执行的部分。

32.CLR与IL分别是什么含义?

CLR(公共语言运行库):能管理内存,能够轻松地设计其对象可以跨语言互动的组件和应用程序,编译一次,并可以在任何支持运行库的CPU和操作系统上运行,跨语言集成(特别是跨语言继承)

IL(中间语言):可用于语言互操作性,IL不是字节代码,但很接近字节代码,因此执行应用程序时,IL到机器代码的转换要快很多。于CPU的指令集。由CLR转换为特定于CPU的代码。

        

33.对象能否调用静态方法

       

         对象能调用静态方法。

34.请说明如下代码的结果

    class Father{

        void show()    {

            Console.Write("Father");

        }

        static void Main(string[] args)    {

            Father obj=new Child();

            obj.show();

        }

    }

    class Child:Father{

        void show()    {

            Console.Write("Child");

        }

}

执行结果为:Father.

二、ASP.NET

1.ASP.NET中的身份验证有那些?请解释。

      

(1)Windows验证:指定Windows身份验证作为默认的身份验证模式.如果是任何形式的Internet信息服务(IIS)身份验证,则使用此模式.

(2)Forms验证:指定基于ASP。NET窗体的身份验证作为默认的身份验证模式。

(3)Passport:指定Microsoft Passport身份验证作为默认的身份验证模式。

(4)None:不指定身份验证,仅适用于匿名用户,或者应用程序可以处理事件以提供它们自己的身份验证情况。

2.什么是WEB控件?使用WEB控件有那些优势?

WEB控件是能拖放在WEB页面上的控件

WEB控件分为:内部控件, 列表控件, 复杂控件, 验证控件

•WEB控件优势:Web 控件是对象

–与对象一样,Web 控件拥有方法和属性,并且响应事件

–一旦将 Web 控件包括在 Web 页中,就可以设置其属性并调用其方法

–可以为 Web 控件编写服务器端代码以响应在客户端上发生的事件

3.请解释ASP。NET中以什么方式进行数据验证?

      是以验证控件进行数据验证的。

4.请谈谈对正则表达式的看法?

        能将一些比较复杂的验证逻辑以简单的验证表达式验证.

5.ASP。NET有几种类型的控件?各有什么区别?

WEB控件分为:内部控件, 列表控件, 复杂控件, 验证控件

内部控件--内部控件的使用方法与 HTML 控件相同,它们映射到 HTML 元素并通过使用 runat = "server" 属性在服务器上执行 

列表控件--用于在 Web 页中创建数据列表

复杂控件-- •当希望控件拥有复杂的功能或使用 HTML 元素无法创建的功能丰富的用户界面时,可以使用复杂控件

验证控件--输入控件的数据需要进行准确性和取值范围方面的检查

6.WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。

由于ASP。NET是Web页面和服务端分离的,因此要产生了服务端事件. 

•使用_doPostBack函数能够自动地把客户端的javascript事件转变为一个服务器端的事件

•Asp.net框架自动为我们处理有关的细节简化工作

     使用自动传回的特性:在检测到一个特定用户动作时,自动传回能够将这个页面传回服务器以处理

事件.

7.WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?

8.ASP。NET与ASP相比有什么优势?

 

ASP的缺点:

(1)VBScript和JavaScript是在ASP中仅可使用的两种脚本语言。它们是基本的非类型化语言。在ASP中不能使用强类型语言.

(2)ASP页面需要解释,使得它执行速度较慢。

(3)ASP页面非常凌乱。

(4)在使用ASP创建WEB应用程序时,程序员和设计人员必须在同一文件上一起工作。

(5)在ASP中,必须通过编写代码来提供所需的任何功能。

(6)在ASP中没有对代码给予太多的关注。

(7)在ASP中没有调试机制。

(8)在ASP中。必须停止WEB服务器才能安装DLL的新版本,并且在应用程序中使用DLL的新版本之前,必须先在注册表中注册它,而且,DLL注册过程非常复杂。

ASP.NET的优点:

(1)ASP。NET中支持强类型语言.

(2)ASP。NET页将被编译而不是解释,这样它们的执行速度就比ASP页快。

(3)ASP。NET提供声明性服务器控件。

(4)ASP。NET通过继承机制来支持代码的重用。

(5)ASP。NET具有Trace的内置方法,可以帮助对页面进行调试。

(6)在ASP。NET中,置于应用程序的BIN目录中的任何组件将自动对应用程序可用.

9.请解释web.config文件中的重要节点

   动态调试编译--,自定义错误信息--,身份验证—,授权--,应用程序级别跟踪记录--,会话状态设置--,全球化--

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

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

12.请解释该错误

13.当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决

14.请解释一个WEB页面中代码执行次序。

15.请解释什么是上下文对象,在什么情况下要使用上下文对象

16.请解释转发与跳转的区别?

17.请解释ASP.NET中不同页面之间数据传递有那些方式?

18.请解释ASP。NET中button   linkbutton  imagebutton  及hyperlink这四个控件之间的区别

19.请解释一下。NET多层应用程序中层与层之间以那几种方式进行数据传递。并解释你自己的项目中采用那种方式进行。

20.如果出现ASP。NET中的事件不能触发可能由于什么原因造成?请列举至少两个

21.如果需要在datagride控件中的某一列中添加下拉列表框并绑定数据怎么解决?

22.请解释asp.net中的数据绑定与传统数据绑定有什么区别?

23.请以图示方式解释ADO。NET的对象模型。

24.请解释webService? 如何实现webService。

25.如果用dataSet提交数据请编写实现代码?

26.DataList 能否分页,请问如何实现?

27.请列举DataSet中的了对象?

28.请分别比较JDBC ADO ADO.NET并说明三者之间的异同点及优势

29.请解释这个正则表达式“[AB][TJG][1-3][QSW]\\d{4}”

30.在ASP.NET中如何进行文件上传?下载本文

显示全文
专题