必会的asp.net面试题!

 1.面向对象的思想主要包括什么?
继承 多态 封装
● 封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。
● 继承:子类拥有父类的所有数据和操作。
● 多态:一个程序中同名的不同方法共存的情况。
有两种形式的多态– 重载与重写。
面向对象技术的好处
第一,类具有"独立性".
由于这种独立的存在,使得和其他的"过程也好,对象也罢"能够不彼此牵引.避免"牵一发而动全身"的局面.

这有利于维护和调试.
第二,类具有"通用性".
这种通用性,是通过抽象得来的.所谓抽象,就是抽取出事物的共同特征并且加以概括.正是因为这种"通用

性"的实现,才造就了"re-use"的可能.
第三,类具有"灵活性".
由于第二个特征的存在,加上客观事物的特殊性,有可能通用的类中一部分成员方法变得"不通用",这个时

候通过继承和Overload的机制,使得它能够应付某些特殊情况,从而实现了"灵活性".
就分析设计层面来说,面向对象技术提供了更高级的抽象能力以及更多的方法和工具,如设计模式; 就

实现维护层面来说,面向对象技术使代码重用更容易,且使代码具有可扩展性,便于软件的维护和升级更

新。

2.什么是ASP.net中的用户控件?作用?

有了ASP.NET,我们拥有了一个新的简单的工具来编写可重用的代码—用户控件。用户控件(也叫pagelets)提供了这样一种机制,他使得我们可以建立能够非常容易的被ASP.NET页面使用或者重新利用的代码部件。一个用户控件也是一个简单的ASP.NET页面,不过它可以被另外一个ASP.NET页面包含进去。在你的ASP.NET应用程序当中使用用户控件的一个主要的优点是用户控件的支持一个完全面向对象的 模式 ,使得你有能力去捕获事件。而且,用户控件支持你使用一种语言编写ASP.NET页面其中的一部分代码,而使用另外的一种语言编写ASP.NET页面另外一部分代码,因为每一个用户控件可以使用和主页面不同的语言来编写。 建立用户控件的第一步是建立一个.ascx文件。这是用户控件需要的文件扩展名。

在一个一个.ascx文件中不能包含head,form,或者body标签,因为包含此.ascx文件的.aspx文件已经包含了这些标签。一个.ascx文件只能包含 方法 ,函数,以及和用户控件相关的内同。

3.什么叫应用程序域?

应用程序域为隔离正在运行的应用程序提供了一种灵活而安全的方法。
应用程序域通常由运行库宿主创建和操作。有时,您可能希望应用程序以编程方式与应用程序域交互,例如想在不停止应用程序运行的情况下卸载某个组件时。
应用程序域使应用程序以及应用程序的数据彼此分离,有助于提高安全性。单个进程可以运行多个应用程序域,并具有在单独进程中所存在的隔离级别。在单个进程中运行多个应用程序提高了服务器伸缩性。
4.请编程实现一个冒泡排序算法
    
     int [] i  =   new   int [ 5 {5,3,4,2,1} ;
        
for ( int  j  =   0 ; j  <  i.Length - 1 ; j ++ )
        
{
            
for (int k = 0; k < i.Length-1; k++)
            
{
                
int a;
                
if (i[k] > i[k + 1])
                
{
                    a 
= i[k];
                    i[k] 
= i[k + 1];
                    i[k
+1]=a;                
                }
 
            }

        }
5. 请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
protected   void  Page_Load( object  sender, EventArgs e)
    {
        
foreach  (Control ctl  in  Page.Controls[ 0 ].Controls)
        {
            
if  (ctl.GetType().Name  ==   " TextBox " )
            {
                TextBox tb 
=   new  TextBox();
                tb 
=  (TextBox) this .FindControl(ctl.ID);
                tb.Text 
=   "" ;                
            }
        }
    }
6.您对Web Service的体会
  
World Wide Web Consortium----W3C组织
WSDL(Web Service Description Language,Web Service描述语言)
7.CTS、CLS和CLR分别作何解释?
通用类型系统(CTS:Common Type System):为了实现语言的互操作性,必须有一组各种语言都认可的基本数据类型,这样才能对所有的语言进行标准化处理。CTS 就提供了这个功能,还提供了定义定制类的功能。
     公共语言规范(CLS:Common Language Specification):这是确保代码可以在任何语言中访问的最小集合,所有用于.Net的编译器都应该该支持CLS。CLS构成了可以在.Net  和 IL中使用的功能子集,代码也可以使用CLS外部的功能。如果非CLS功能在代码所在的装配件外部是可见的,那么这些功能就不能在某些语言中使用。
     公共语言运行时(CLR:Common Language Runtime):它实际上管理代码,他可以处理加载程序、运行程序的代码以及提供所有支持服务的代码。
8.值类型与引用类型的区别?
   值类型用于存储数据,引用类型用于定义行为.
   1.    值类型的数据存储内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。
   2.     值类型存取速度快,引用类型存取速度慢。
   3.     值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用
   4.     值类型继承自System.ValueType,引用类型继承自System.Object
   5.     的内存分配是自动释放;而堆在.NET中会有GC来释放
    C#中基本数据类型是值类型,结构也是值类型。而数组、类、接口、字符串都是引用类型。
9.C#中的接口和类有什么异同?
   接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!
而类是负责功能的具体实现!

在类中也有抽象类的定义,抽象类与接口的区别在于:
抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。
但接口是一个行为的规范,里面的所有东西都是抽象的!
一个类只可以继承一个基类也就是父类,但可以实现多个接口

PS:接口除了规范一个行为之外,在具体项目中的实际作用也是十分重要的,在面向对象的设计原则以及设计模式的使用中,无不体现作为一个接口的使用好处,最直接的就是设计原则中OCP(开放封闭原则),我们使用接口,而不需要关心他的具体实现,具体实现的细节变化也无关客户端(使用接口的类)的使用,对与扩展是开放的,我们可以另写一个接口的实现来扩展当前程序,而不影响上层的使用,但对修改是封闭的,即我们不能够再去修改接口的定义,当然这个“不能够”是指在规范原则上不应该这么做!                  
10.C#中的委托该如何理解?
    简单的说:委托是一种 方法 容器,里面可以装载若干个具有相同签名的方法引用地址,那么调用委托,就相当于同时调用了该容器内的所有方法。
    如果方法相当于一个动词,委托相当于一个动 名词    
 class    人类   
  {   
          
//构造函数代码略   

          public   void    好()   
  }   
  
//分别new   一个人类的实例:我、他   (代码略   )   

    
  
public   void   delegate
   好();     
    
  好   他好
=new
   好(他.好)   
  好   我好
=new
   好(我.好)   
  好   大家好
=他好+我好
   
11..NET中读写SQL Server数据库需要用到哪些类?
    NET下使用ADO.NET进行数据访问,通常会使用如下几个类:
1、DataSet 用来无连接的储存多个表的数据,并包含表与表之间的关联关系
2、DataTable 用来存储一个表的数据
3、SqlConnection 用来创建一个到数据库的连接
4、SqlCommand 用来执行SQL语句
5、SqlDataReader 用来顺序读取数据
6、SqlDataAdapter 用来将数据填充到DataSet或DataTable
12.UDP连接和TCP连接有什么异同?
   1、TCP协议是面向连接的,每个数据包的传输过程是:先建立链路、数据传输、然后清除链路。数据包不包含目的地址。受端和发端不但顺序一致,而且内容相同。它的可靠性高,
   2、UDP协议是面向无连接的,每个数据包都有完整的源、目的地址及分组编号,各自在网络中独立传输,传输中不管其顺序,数据到达收端后再进行排序组装,遇有丢失、差错和失序等情况,通过请求重发来解决。它的效率比较高。
13.如何理解.net中的垃圾回收机制?
答:.NET中的垃圾回收机制是引用程序对内存的回收和释放。当每次用new关键字创建一个对象时,运行库都要从托管堆中为其分配内存,因为空间是有限的,最终垃圾回收机制是要回收不用的内存的。已释放内存,重新使用。
14.在.NET中所有类的基类是?
答:object。
15.如何部署一个ASP.net页面?
答:vs2003,vs2005里边都有发表机制,vs2003可以发布然后在复制部署。
Vs2005可以直接部署到对应的位置。
16.什么是SOAP?
答:是简单访问协议。是在分布式环境中,交换信息并实现远程调用的协议。是一个基于XML的协议。使用SOAP,可以不考虑任何传输协议,但通常还是HTTP协议,可以允许任何类型的对象或代码,在任何平台上,以任一种语言相互通信。它是一种轻量级协议。
17.ASP.net的身份验证方式有哪些?
答:windows,forms,passport
18.ASP.NET页面之间传递值的几种方式?
答:QueryString,session,cookies,application,server.Transfer,respose.redictor
19.进程和线程分别该怎么理解?
答:进程是比线程大的程序运行单元,都是由操作系统所体会的系统运行单元,一个程序中至少要有一个进程,在一个进程中,至少要有一个线程,线程的划分尺度要比进程要小,进程拥有独立的内存单元,线程是共享内存,从而极大的提高了程序的运行效率同一个进程中的多个线程可以并发执行。
20.New有种用法?
答:有3种,第一种是,实例化如:New Class()
  第二种是,public new 隐藏基类的方法
  第三种是,在泛型类申明中的任何类型参数都必须有公共的无参构造函数。
21.C#种索引器实现过程,是否只能根据数字索引?
答:不是的,可以是任意类型。
22.Override, Overload,的区别?
答:Override是重写的意思,它表示重写基类的方法,而且方法的名称,返回类型,参数类型,参数个数要与基类相同。
  Overload是重载是意思,它也表示重写基类的方法,但是只要方法名相同,别的可以不同。
23.C#中委托是什么?事件是不是一种委托?
答:委托是一种安全的类似与函数指针,但是她比指针要安全的多,它可以把方法作为一个参数传递给另一个方法,可以理解为指向函数的引用。事件是一种消息机制,它是一种委托,委托不带方法体。
24.谈谈final,finally,finallize的区别?
答:final用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承。
  Finally是异常处理语句结构中,表示总是执行的部分。
  Finallize表示是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法。
25.C#是否可以对内存直接进行操作?

答:这个问题比较难回答,也是个很大的问题。但是可以这样问答。C#是可以对内存进行直接操作的,虽然很少用到指针,但是C#是可以使用指针的,在用的时候需要在前边加unsafe,,在.net中使用了垃圾回收机制(GC)功能,它替代了程序员,不过在C#中不可以直接使用finalize方法,而是在析构函数中调用基类的finalize()方法
26.死锁的必要条件?怎么克服?

答:系统的资源不足,进程的推进的顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已获得资源不放,进程获得资源时,未使用完前,不能强行剥夺。
27.NET中类和结构的区别?

答:结构和类具有大体的语法,但是结构受到的限制比类要多。结构不能申明有默认的构造函数,为结构的副本是又编译器创建和销毁的,所以不需要默认的构造函数和析构函数。结构是值类型,所以对结构变量所做的改变不会影响其的原值,而类是应用类型,改变其变量的值会改变其原值。申明结构用Struck关键字,申明类用class关键字,向方法传递结构是时是通过值传递的,而不是通过引用。与类不同,结构的实例化可以不使用New关键字。类可以实现接口。
28.Const和ReadOnly?
   答:Const用来申明编程时申明常量,ReadOnly用来申明运行时常量。
29.Heap与stack的差别?
   答:Heap是堆,空间是由手动操作分配和释放的,它的存储区很大的自由存储区。
  Stack是栈,是由是操作系统自动分配和释放的,栈上的空间是有限的。程序在编译期间变量和函数分配内存都是在栈上进行的,且在运行时函数调用时的参数的传递也是在栈上进行的。
30.Override, Overload,的区别?

答:Override是重写的意思,它表示重写基类的方法,而且方法的名称,返回类型,参数类型,参数个数要与基类相同。
  Overload是重载是意思,它也表示重写基类的方法,但是只要方法名相同,别的可以不同。
31.什么是codebehind模式?
   Code Behind就是所谓的代码分离,Code Behind主要是用二个文件来创建一个ASP.NET的页面,其中一个是设计文件,
   Code Behind优点:
   而Code Behind把界面设计代码和程序设计代码以不同的文件分开,对于代码的重复使用,程序的调试和维护都是革命性的。还有一点是,当你发布你的网站的时候,你就可以利用这种技术来有效的保护你的代码。这对于程序的安全性是一个提高。
32.常用的调用webservice方法有哪些?
  WEBSERVICE可以在服务端使用.NET调(添加WEB引用),也可以使用JAVASCRIPT调,也可以通过HTTP直接调用!
最后:如果有机会还可以问一下面试公司这几个问题?
  1.贵公司是否有正式或非正式教育训练?
  2.贵公司的升迁管道如何?
  3.贵公司的多角化经营,而且在海内外都设有分公司,将来是否有外派、轮调的机会?
  4.在项目的执行分工上,是否有资深的人员能够带领新进者,并让新进者有发挥的机会?
  5.贵公司强调的团队合作中,其它的成员素质和特性如何?
 
  6.贵公司是否鼓励在职进修?对于在职进修的补助办法如何?
  7.能否为我介绍一下工作环境,或者是否有机会能参观一下贵公司? 


(Aaron整理于2008-04-05)





 Web Service是由URI(统一资源标识符)标识的软件应用程序,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值