ASP.NET(C#)面试题目

1、在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。 

回答要点:说明详细的空间分配。(10分) 

答:string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间. 


2、请详述在dotnet中类(class)与结构(struct)的异同:(10分) 

答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. 

3、根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:(10) 

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 

  
4、分析以下代码,完成填空(10分) 

string strTmp = "abcdefg某某某"; 

int i= System.Text.Encoding.Default.GetBytes(strTmp).Length; 

int j= strTmp.Length; 

以上代码执行完后,i=                 j=          

答:i=13,j=10 

  
5、SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号。(10) 

答:SELECT ID 

FROM table1 

WHERE LastUpdateDate = (SELECT MAX(LastUpdateDate) FROM table1) 



6、根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。(10分) 

public void test(int i) 

{   

lock(this) 



if (i>10) 



i--; 

test(i); 







答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生) 

 
7、分析以下代码。(10) 

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。所以理论上并非所有异常都会被捕捉。) 



8、简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。(10) 

答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。 

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

答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中 
 

10、给定以下XML文件,完成算法流程图。(10) 

<FileSystem> 

< DriverC > 

<Dir DirName=”MSDOS622”> 

<File FileName =” Command.com” ></File> 

</Dir> 

<File FileName =”MSDOS.SYS” ></File> 

<File FileName =” IO.SYS” ></File> 

</DriverC> 

</FileSystem> 

请画出遍历所有文件名(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 

    } 



简单的说就是从根节点开始遍历找子节点,在从找到的子节点找它的子节点,一层层下去

11.net 里面的三层结构.
数据访问层,业务层,表示层(可能叫法上有些不同)

12.NET内值对象.
.NET的公共类型系统CTS可以分为两大类,引用类型和值类型,引用类型分配在堆中,值类型分配在栈中;
对于值类型的变量或常量我们一般不称之为对象,题目竟然将其称做值对象,可见出题的人本身就概念不清;设计上,对象的概念是伴随类而出现的,类的实例我们才称之为对象

13.一个页面调用另一个页面的状态有几种方法.
如果是方法可以声明为public或者public static的方法或变量,或通过设置获取属性。

14.session和application有什么区别.
Session是会话,多线程;application是全局唯一的,对它的操作牵扯到同步问题.
简单例子,application(一个应用例如你的站点)是一个聊天室,session(访问站点的一个活动用户)就是里面的一个人,

15.如何让一个类不允许被new出来.
把类的构造函数声明为私有,同时可以提供一个public static 类名 GetInstance()函数来构造类的实例.

16.PreRender和Event有什么区别?
PreRender是
事件处理程序接收一个 EventArgs 类型的参数。

备注
使用该事件在服务器控件呈现给页的输出之前执行任何更新。在该事件的生存期内可以保存服务器控件视图状态的任何更改。不保存呈现阶段内所做的同样更改。
————————————————————————
就是说当控件在输出到客户端时将要进行的处理

17.面向对象的思想主要包括什么?
面向对象三大特征:继承,封套,多态.面相对象的思想也不是一句两句就能说清楚..主要思想就是减少代码重复,增大代码复用率..

18.什么是ASP.net中的用户控件
问这样的问题,一般是迷惑你.因为新手还是分不清楚用户控件和服务器控件(也称自定义控件)..用户控件一般用在内容多为静态,或者少许会改变的情况下..用的比较大..类似ASP中的include..但是功能要强大的多..

19.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
这个需要当前描述了..东西太多..打字要打死了..找个比较简单的说说吧!
CTS:公共类型系统.主要是为了语言之间的进行标准化处理.
CLS:公共语言规范.主要是确保代码可以在任何语言中访问的最小标准集体
CLR:公共语言运行时.主要是管理代码..处理,加载代码,以及所有服务的代码

20.列举一下你所了解的XML技术及其应用
xml用于配置,用于保存静态数据类型.接触XML最多的是web Services..和config

21.值类型和引用类型的区别?写出C#的样例代码。
值类型是在内存中保存,引用类型是在内存中保存一副本.你在内存中可以有多个某种引用对象..但是值类型始终只有一个.
最常见的值类型就是static,struct;
例如:
static int aa = 1;//值类型
如果多个用户改变aa的值则,aa的值会以最后一个修改的记录为准.其他人的修改则会被冲掉.
引用类型,最能说明问题的就是实例化..你new出来的对象单独分配一个独立的内存..所以值不会互相冲突/

22.ADO.net中常用的对象有哪些?分别描述一下。
Connection 数据库连接对象
Command 数据库命令
DataReader 数据读取器
DataSet 数据集

23.如何理解委托?
委托的概念,最好的说明就是事件.因为事件使用的就是委托.例如:this.Load += new System.EventHandler(this.Page_Load);这个就是使用了一个委托.
具体的用法请参考.我以前的帖子,设计猫鼠联动..

24.C#中的接口和类有什么异同。
类是方法功能的实现和集合,接口是规范类.约束类.

25.net中读写数据库需要用到哪些类?他们的作用
看第六题..答案差不多

26.UDP连接和TCP连接的异同。
这个说不清楚.

27.ASP.net的身份验证方式有哪些?分别是什么原理?
window验证:为每个用户开启window帐号,验证其身份.安全性较高.
forms验证:为每个登陆用户写入一个身份验证票据..在web使用最广的验证方式..灵活方便.

28.进程和线程分别怎么理解?
这个是新人最容易迷惑的东西..
进程:Process

29.什么是code-Behind技术。
新建一个VS.NET下的项目..看到ASPX,RESX和CS三个后缀的文件了吗??这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理.

30.活动目录的作用。
活动目录是window2000的最重要的功能.可以将用户信息全部集成起来,登陆以后可以访问多个不同的网络服务..没深入研究过.
查看一下帖子:http://www.ies.impu.edu.cn/resource/os/windowsx/WindowsGeneral/WinGeneral0008.htm
31..net中读写XML的类都归属于哪些命名空间?
System.XML类

32.解释一下UDDI、WSDL的意义及其作用。
解释不清楚了..又是一大块..

33.什么是SOAP,有哪些应用。
simple object access protocal,简单对象接受协议.以xml为基本编码结构,建立在已有通信协议上(如http,不过据说ms在搞最底层的架构在tcp/ip上的soap)的一种规范
是微软大力推广的Web Service使用的协议..

34.如何部署一个ASP.net页面。
不清楚问的什么意思...如果非要回答的话,就写一个带.aspx的后缀文件..然后安装IIS和FrameWork环境..浏览就好了.

35.如何理解.net中的垃圾回收机制。
垃圾回收体制如下:
如果发现内存不够,则垃圾回收器,将全部对象作为无效对象(被回收对象),然后先将全局变量,static,处于活动中的局部变量,以及当前CG指针指向的对象放入一个表中.然后
会搜索新列表中的对象所引用的对象.加入列表中,其他没有被加入列表的对象都会被回收.

36.常用的调用webservice方法有哪些?
我一般用的是WSDL..或者web引用..

37..net中读写XML的类都归属于哪些命名空间?
System.XML类

38.解释一下UDDI、WSDL的意义及其作用。
解释不清楚了..又是一大块..

39.什么是SOAP,有哪些应用。
simple object access protocal,简单对象接受协议.以xml为基本编码结构,建立在已有通信协议上(如http,不过据说ms在搞最底层的架构在tcp/ip上的soap)的一种规范
是微软大力推广的Web Service使用的协议..

40.如何部署一个ASP.net页面。
不清楚问的什么意思...如果非要回答的话,就写一个带.aspx的后缀文件..然后安装IIS和FrameWork环境..浏览就好了.

41.如何理解.net中的垃圾回收机制。
垃圾回收体制如下:
如果发现内存不够,则垃圾回收器,将全部对象作为无效对象(被回收对象),然后先将全局变量,static,处于活动中的局部变量,以及当前CG指针指向的对象放入一个表中.然后
会搜索新列表中的对象所引用的对象.加入列表中,其他没有被加入列表的对象都会被回收.

42.常用的调用webservice方法有哪些?
我一般用的是WSDL..或者web引用..

原文地址:https://www.cnblogs.com/nonsuch/p/473083.html