• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET面试题2

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

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

3. 一列数的规则如下: 112358132134  求第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(默认)用IISFrom(窗体)用帐户.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,二进制传送提高效率。

1.new有几种用法
 第一种:
new Class();
 第二种:覆盖方法
public new XXXX(){}
 第三种:
new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。

2.如何把一个array复制到arrayList里

foreachobject o in array )arrayList.Add(o);

3.datagrid.datasouse可以连接什么数据源 [dataset,datatable,dataview]

dataset,datatable,dataview , IList

4.概述反射和序列化

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

序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

5.概述o/r mapping 的原理

利用反射,配置 将类于数据库表映射

6.类成员有( )种可访问形式

可访问形式?不懂。

可访问性:
public ,protected ,private,internal

7.用sealed修饰的类有什么特点

sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其他类的基类,则会发生编译时错误。

密封类不能同时为抽象类。

sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。

8.列举ADO.NET中的五个主要对象,并简单描述

connection,command,dataReader,trans,dataset 

9.执行下面代码后:

String strTemp 
="abcdefg 某某某"
Int i System.Text.Encoding.Default.GetBytes(strTemp).Length;
Int j 
= strTemp.Length;
问:i
=(14 ) ;j=(11 )

i
=(14 ) ;j=(11 ) 中文两个字节

10.C#中,string str = null 与 string str ="",请尽量用文字说明区别。(要点:说明详细的内存空间分配)

string str ="" 分配空间 

11.详述.NET里class和struct的异同!

class:放在 ? struct放在?
struct值传递

类与结构有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。结构的值存储在“在堆栈上”或“内联”。细心的程序员有时可以通过聪明地使用结构来增强性能。


12.概述.NET里对 remoting 和 webservice 两项技术的理解和实际中的应用。

远程逻辑调用,remoing接口只能用在.net中

13.什么是code-behind技术

aspx and cs 

14.概述三层结构体系
web
/business/dataaccess

15.asp.net如何实现MVC模式,举例说明!
web
/business/dataaccess

----------------------------------------------------------------------------------------------------------

1.面向对象的思想主要包括什么?
答:这个题范围太广,不知道说什么.

2.什么是ASP.net中的用户控件
答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.

3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
答:装箱就是把值类型转成引用类型,从MS IL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相反,重载就是指一个方法名同,参数个数不同,返回值可以相同的方法.CLR是通用语言运行时,其它的不清楚.

4.列举一下你所了解的XML技术及其应用
答:XML可是好东西,保存配置,站与站之间的交流,WEB SERVICE都要用它.

5.值类型和引用类型的区别?写出C#的样例代码。
答:结构是值类型,类是引用类型,所以传结构就是值类型的应用啦,传对象或类就是引用类型的,这个不用多写了吧.

6.ADO.net中常用的对象有哪些?分别描述一下。
答:connection command sqladapter dataset datatable dataview等等.写不完了.

7.如何理解委托?
答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.
msdn2005中是这样解释的:

委托具有以下特点:
委托类似于 C
++ 函数指针,但它是类型安全的。
委托允许将方法作为参数进行传递。
委托可用于定义回调方法。
委托可以链接在一起;例如,可以对一个事件调用多个方法。
方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。
C# 
2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。

8.C#中的接口和类有什么异同。
答:这个异同可多了,要说清楚还真不容易.

9.。net中读写数据库需要用到哪些类?他们的作用
答:这个类自已可以写的啊,你是指基类吗
?那configuration,sqlconnection,sqlcommand等都要用到.

10.UDP连接和TCP连接的异同。
答:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结.

11.ASP.net的身份验证方式有哪些?分别是什么原理?
答:form认证,windows集成认证等,原理不清楚.

12.进程和线程分别怎么理解?
答:进程是老子,线程是儿子,没有老子就没有儿子,一个老子可以有多个儿子.一个儿子可以成为别人的儿子,一个老子也可以为别的老子生儿子.

13.什么是code-Behind技术。
答:代码分离,这是个明智的东西,像ASP这样混成一堆很不爽.或者可以理解成HTML代码写在前台,C#代码写在后台.当然前台也有脚本,类的调用等,其实写在一起也是可以的.

14.活动目录的作用。
答:这个不明白.请明白的补充一下.

15..net中读写XML的类都归属于哪些命名空间?
答:System.Xml
我自已写的就不一定了,嘿嘿.

16.解释一下UDDI、WSDL的意义及其作用。
答:什么东西
?

17.什么是SOAP,有哪些应用。
答:SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。这种相互通信采用的是XML格式的消息,具体请看:http:
//playist.blogchina.com/2521621.html

18.如何部署一个ASP.net页面。
答:随便啦,想直接上传就直接上传,想打包成EXE就打包,看个人喜好.

19.如何理解.net中的垃圾回收机制。
答:GC
?对象创建了总要清除啊,不然内存哪够用?

20.常用的调用webservice方法有哪些?
答:调用就调用,还有很多方法吗
?


Q3:维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么 

尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策。 


Q4:ADO。NET相对于ADO等主要有什么改进? 

我个人认为,ADO.NET与ADO相比,优势在于提供了数据集和数据适配器,有利于实现分布式处理,降低了对数据库服务器资源的消耗

Q5:ASP。NET与ASP相比,主要有哪些进步? 
坦率的说,我不喜欢ASP.NET。也许,开始许多人会喜欢MS提供的那么一大堆的服务器控件,但真的碰上了复杂的界面,那么这些服务器控件很可能成为“鸡肋”。如果一个程序员没有真正理解MS封装在服务器控件后面的实现机制,这些东西很容易被滥用,成为麻烦的来源。 

如果一定要说ASP.NET比ASP进步,还是有的:在形式上实现了面向对象编程;预编译的服务器端代码;更好的安全机制(那些ASPX文件的后台代码是以另外一个帐号运行的,与启动IIS的帐号不相同)等。 


Q6:C#中的委托是什么?事件是不是一种委托? 
委托本质上是一种“方法接口”,它相当于C
/C++中的函数指针,当然它比函数指针安全,在C#中通常用于事件处理。与JAVA相比,可以避免使用大量小粒度的匿名类。(不过,也许微软就是使用类似于JAVA的匿名类实现委托的,只不过从字面上看起不是那么回事罢了,谁知道呢?) 

事件不是委托,不过由于事件的性质决定了处理它的程序逻辑能访问的参数,因此,在C#中处理事件的逻辑都包装为委托(一种“方法接口”)。实际上,如果你处理自定义的事件,就像JAVA中那样用接口实现也是可以的,不过这么做在C#一般没有什么特别的好处。 

Q7:描述一下C#中索引器的实现过程,是否只能根据数字进行索引? 

Q8:C#中要使一个类支持FOREACH遍历,实现过程怎样?

------------------------------------------------------------------------------------------------------------------

Q1:求以下表达式的值,写出您想到的一种或几种实现方法:   
          
1-2+3-4+……+m   
  Q2:给定以下两个表:   
          部门ID       部门名称   
              
1                   部门1   
              
2                   部门2   
              
3                   部门3   
              
4                   部门4   
    
      人员ID     人员姓名         部门ID   
        
1                   姓名1           1   
        
2                   姓名2           1   
        
3                   姓名3           2   
        
4                   姓名4             3   
        
5                     姓名5         5   
    
      (
1)用一条SQL语句显示所有人员的姓名及所在部门,没有部门的用“未标志”代替。   
        (
2)用ASP。NET中的DATAGRID控件,实现以下显示,描述你的思路。   
    
                                                                姓名1   
        部门1                                               姓名2   
          
        部门2                                               ……   
      部门3                                                     ……   
      
    
  Q3:   维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么   
    
  Q4:ADO。NET相对于ADO等主要有什么改进?   
    
  Q5:ASP。NET与ASP相比,主要有哪些进步?   
    
  Q6:C#中的委托是什么?事件是不是一种委托?   
    
  Q7:描述一下C#中索引器的实现过程,是否只能根据数字进行索引?   
    
  Q8:C#中要使一个类支持FOREACH遍历,实现过程怎样?   
    
  Q9:C#中,执行以下代码后S的结果:   
          
string[]   a=new   string[5];   
          aa[
0]="33";   
          aa[
6]="66";   
  
string   s="";   
  
foreach(string   m   in   aa)   s+=m;   
    
  Q10:写一个HTML页面,实现以下功能,左键点击页面时显示“您好”,右键点击时显示“禁止右键”。并在2分钟后自动关闭页面。   
    
    
  Q11:你对XMLHTTP、WEBSERVICE   了解吗?简单描述其特点、作用   
    
  Q12:接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?   
    
  Q13:自定义控件和一般用户控件的异同?如果要用这两者之一,你会选择哪种?为什么   
    
  Q14:大概描述一下ASP。NET服务器控件的生命周期   
  Q15:UML   
  Q16:面向对象的概念,主要特点   
  Q17:类划分的依据。类粒度问题   
  Q18:事物管理问题


在指定的路径下,创建一个bat文件,并且写入内容regsvr32.exe 注册组件
  
private void WriteFile()
  {
   
string fileName = Application.StartupPath + @"\reg.bat";
   
string content = @"regsvr32.exe /s """ +  Application.StartupPath + @"\xxx.ocx""";
   
byte[] info = new byte[]{255};
   
if(System.IO.File.Exists(fileName))
   {
    System.IO.File.Delete(fileName);
   }
    
   System.IO.FileStream cfs 
= System.IO.File.Create(fileName);
   cfs.Close();
   FileInfo fi 
= new FileInfo(fileName);
   System.IO.FileStream fs 
= fi.Open(FileMode.OpenOrCreate,FileAccess.ReadWrite);
   info 
= System.Text.Encoding.GetEncoding("gb2312").GetBytes(content);
   
   fs.Write(info,
0,info.Length);
   fs.Close();
   System.Diagnostics.Process.Start(Application.StartupPath 
+ @"\reg.bat");

  }

Regsvr32又一解
Regsvr32是Windows系统的内嵌命令,通过它可以注册或取消注册对象链接和嵌入控件(OLE),比如最常见的动态链接库文件(DLL)及网页制作和浏览时必须用到的 ActiveX 控件文件(OCX)。但由于缺乏相关的学习资料,许多朋友都误解Regsvr32只是一个安装和卸载DLL动态链接库的命令,更谈不上正确使用它了。所以,应广大读者的点播,本期特刊登此文,以期达到帮助读者快速掌握并熟练使用Regsvr32命令的目的。
  Regsvr32命令,在许多杂志媒体以及网络教学站点中出现的频率极高,可是许多朋友对它的了解却很浅显。其实,Regsvr32命令拥有强大的本领。例如,当我们的Windows系统或IE浏览器出现故障的时候,通过使用Regsvr32命令来注册文件就可轻松解决问题。现在,就让我们开始Regsvr32命令的学习之旅吧!

一、准备篇 Regsvr32命令哪里寻

  不同的Windows系统, Regsvr32.exe命令的位置也不同。正常状态下, Windows 
2000/XP系统中,该命令位于C:\WINNT\system32下;如果是Windows 9x系统,该命令则位于C:\WINNT\system下。

二、基础篇 Regsvr32命令的使用方法

  命令的讲解往往枯燥难懂,所以本篇借助实例来辅助说明。例如,我们要注册C:\kk文件夹下一个名为kav.dll的动态链接库,可以在“开始→运行”中键入“CMD”命令,在打开的DOS窗口中键入“Regsvr32 C:\kk\kav.dll”并回车。此时,系统会自动加载kav.dll且开始尝试调用该动态链接库的DLLSelfRegister函数,成功调用后会显示相应的提示框。如果要卸载Kav.dll动态链接库,则键入“Regsvr32 
/u C:\kk\kav.dll”即可(如图1)。




  上述只是Regsvr32命令的基本用法,从中可见该命令的格式为:Regsvr32 [
/s] [/u] [/n] [/i[:cmdline]] dllname。它包括下面4个参数。
/u:卸载安装的控件或卸载服务器的注册;
/s:注册成功后不显示操作成功信息框;
/i:调用DllInstall函数并把可选参数[cmdline]传给它,当使用/u时用来卸载DLL;
/n:不调用DllRegisterServer,该参数必须和/i一起使用。

  小提示:执行Regsvr32命令还需要系统的Kernel32.dll、User32.dll和Ole32.dll这3个文件才能正常运行。

三、提高篇 错误提示及解决

  如果Regsvr32命令加载不成功,系统会给予相应提示,它们的含义是什么且如何解决呢?
1)提示“kav.def is not an executable file and no registration helper is registered for this file type.”:如果键入文件的后缀名不是EXE、DLL或OCX,就会出现以上提示。
2)提示“LoadLibrary("c:\kav.bat") failed”:系统找不到指定的kav.bat。我们需要指定路径,例如键入Regsvr32 d:\download32\kav.bat。
3)提示“OleInitialize failed (or OleUninitialize failed)”: COM库的初始化失败。如果Regsvr32命令在加载的时

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
asp.net动态输出透明gif图片发布时间:2022-07-10
下一篇:
ASP.NET2.0中使用multiview控件发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap