一些.net中应该知道的问题

 

1.C#中的垃圾回收机制是怎样的?

  垃圾回收器是用来管理应用程序的内存分配和释放的。当一个应用程序在运行的时候,垃圾回收器设置了一个托管堆。每次当开发人员使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。新创建的对象被放在上次创建的对象之后。垃圾回收器保存了一个指针,该指针总是指向托管堆中最后一个对象之后的内存空间。当新的对象被产生时,运行库就知道应该将新的对象放在内存的什么地方。当垃圾回收器的指针指向托管堆以外的内存空间时,就需要回收内存中的垃圾了。在这个过程中,垃圾回收器首先假设在托管堆中所有的对象都需要被回收。然后它在托管堆中寻找被根对象引用的对象(根对象就是全局,静态或处于活动中的局部变量以及寄存器指向的对象),找到后将它们加入一个有效对象的列表中,并在已经搜索过的对象中寻找是否有对象被新加入的有效对象引用。直到垃圾回收器检查完所有的对象后,就有一份根对象和根对象直接或间接引用了的对象的列表,而其它没有在表中的对象就被从内存中回收

 

2. 请编程遍历页面上所有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 = "";               
            }
        }
    }
 
3.请编程实现一个冒泡排序算法
        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;               
                }
            }
        }
 
4.什么是Application Pool?
It is the new features in IIS 6.0. An Application Pool can contain one or more applications and allows us to configure a level of isolation between different Web applications. For example, if you want to isolate all the Web applications running in the same computer, you can do this by creating a separate application pool for every Web application and placing them in their corresponding application pool. Because each application pool runs in its own worker process, errors in one application pool will not affect the applications running in other application pools. Deploying applications in application pools is a primary advantage of running IIS 6.0 in worker process isolation mode because you can customize the application pools to achieve the degree of application isolation that you need.____  http://www.developer.com/net/asp/article.php/2245511 需要的话,大家多多支持,我可以抓时间翻译全文,呵呵。
 
5.微软推出了一系列的Application Block,请举出您所知道的Application Block并说明其作用?
  以前下过一个Enterprise Library 2006,但是没具体应用过,我知道和熟悉的就是Data Access Application Block 和一个关于日志的Application Block了。下面是所有的:数据访问应用程序块;配置管理应用程序块;安全应用程序库;日志和监测应用程序块;缓存应用程序块;异常处理应用程序块;加密应用程序块。
8.什么是应用程序域?(C# 编程指南)
应用程序域为隔离正在运行的应用程序提供了一种灵活而安全的方法。
应用程序域通常由运行库宿主创建和操作。有时,您可能希望应用程序以编程方式与应用程序域交互,例如想在不停止应用程序运行的情况下卸载某个组件时。
应用程序域使应用程序以及应用程序的数据彼此分离,有助于提高安全性。单个进程可以运行多个应用程序域,并具有在单独进程中所存在的隔离级别。在单个进程中运行多个应用程序提高了服务器伸缩性。

6 .NET 中的3C

通用类型系统(CTS:Common Type System):为了实现语言的互操作性,必须有一组各种语言都认可的基本数据类型,这样才能对所有的语言进行标准化处理。CTS 就提供了这个功能,还提供了定义定制类的功能。
     公共语言规范(CLS:Common Language Specification):这是确保代码可以在任何语言中访问的最小集合,所有用于.Net的编译器都应该该支持CLS。CLS构成了可以在.Net  和 IL中使用的功能子集,代码也可以使用CLS外部的功能。如果非CLS功能在代码所在的装配件外部是可见的,那么这些功能就不能在某些语言中使用。
     公共语言运行时(CLR:Common Language Runtime):它实际上管理代码,他可以处理加载程序、运行程序的代码以及提供所有支持服务的代码。

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

在开发WEB系统中,我们都会遇到这样的一种情况,一个页面处理完信息,还有一些处理需要其它页面继续处理,这时候就会有两个选择,是使用页面跳转还是使用请求转发呢?

  首先要介绍一下它们的区别。页面转发:服务器返回一个页面转发请求给客户端(浏览器),客户端重新链接服务器,访问跳转的页面。请求转发:服务器将所有请求信息杂服务器端直接转发给另外一个页面。
  下面是一个简单的经常可以看到的例子。用户在填写一些个人资料的时候,我们用到post方法提交数据,当用户提交数据完成,页面跳转到用户填写数据浏览页面,由于程序使用页面跳转机制实现,所以用户刷新页面,不会提示“重新提交”;而服务器使用请求转发机制来实现的话,用户看到的同样是数据浏览页面,可刷新页面时会提示“重新提交”。还有一个区别就是,页面跳转会显示出跳转后的页面URL,而请求重发显示的还是重发之前的页面URL。
  接下来看看在.NET中与JAVA中是如何实现页面跳转与请求重发的。
  .NET中的处理:
页面跳转Response.Redirect("page.jsp");
请求重发Server.Transfer("page.jsp");
   由于请求转发实在服务器上完成,而且所有的请求数据都可以很好的保存与传递,所以在程序处理中尽量用请求转发,但是为了避免因为请求转发的URL迷惑了用户,还有就是因为刷新会提示“重新提交”,我们还是需要使用页面跳转机制来避免这些不利因素,即使页面跳转在服务器与客户端之间多了一次请求、交互过程。
  因为页面跳转与请求重发都有它们各自不同的特点,在实际的使用中还需要做出一个合理的选择,这样才可以实现系统的最优化设计与实现。

8.请简述一下用Socket进行同步通讯编程的详细步骤

A、在应用程序和远程设备中使用协议和网络地址初始化套接字

B、在应用程序中通过指定端口和地址建立监听

C、远程设备发出连接请求

D、应用程序接受连接产生通信scoket

E、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)

F、通讯结束,关闭应用程序和远程设备的Socket回收资源

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

string    str    =    null    是不给他分配内存空间,而string    str    =    “”给它分配长度为空字符窜的内存空间.  

posted on 2007-06-27 17:23  念时  阅读(258)  评论(0编辑  收藏  举报

细节决定成败!态度决定一切!