.NET面试题(三)

.NET题

1页面传值方式

  1. querystring的方式:将需要的值直接写到链接的后面,这些内容将直接显示到地址栏中,在传递安全性要求不高的一个或多个值或者是结构简单的值就可以使用这样的方法。
  2. cookie方式,使用cookie对象方式,cookie是放在客户端的
  3. session变量,session是放置于服务器端的
  4. 使用Application 对象变量,Application对象的作用范围是整个全局,也就是说对所有用户都有效。此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。
  5. PostBackUrl()方法
  6. 用Server.Transfer方法 ,这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。

2堆跟栈的区别

栈(操作系统):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈

栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放

堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。

堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些

堆(数据结构):堆可以被看成是一棵树,如:堆排序

栈(数据结构):一种后进先出的的数据结构

3怎么理解ajax的机制

Ajax作为一种常用的web技术,本质是通过XMLHttpRequest对象请求远程接口获取数据

一个完整的Ajax过程如下:

1创建XMLHttpRequest对象

2通过上一步创建的XMLHttpRequest对象,打开一个连接

3绑定事件,对获取到的数据进行处理。一般为请求成功后的回调函数

4发送该请求

它有以下特点:
使用XHTML+CSS来表示信息
使用JavaScript操作DOM(Document Object Model)进行动态显示及交互
使用XML和XSLT进行数据交换及相关操作
使用XMLHttpRequest对象与Web服务器进行异步数据交换
使用JavaScript将所有的东西绑定在一起
使用SOAP以XML的格式来传送方法名和方法参数

4三层理解

1:数据数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.
2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
3:表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx, 如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。

具体的区分方法
1:数据数据访问层:主要看你的数据层里面有没有包含逻辑处理,实际上他的各个函数主要完成各个对数据文件的操作。而不必管其他操作。
2:业务逻辑层:主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。
3:表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。

5js方法实现一个datetime的当前时间

this.GetDate = function(){
var result = new DateTime(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0, 0, 0);
return result ;
}

6js一个对象如何继承另外一个对象的方法和属性

javascript的实现继承方式是通过 constructor function和prototype属性来实现继承

7类和结构的区别

类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存
类有构造和析构函数
类可以继承和被继承
结构:
结构是值类型在栈上分配(虽然栈的访问速度比较堆要快,但栈的资源有限放),结构的赋值将分配产生一个新的对象。
结构没有构造函数,但可以添加。结构没有析构函数
结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口

8xml与html的区别

html用于显示页面,而xml用于描述页面内容的数据或数据的结构。Html把数据和显示结合在一起,在页面中把这数据显示出来,而xml则将数据和显示分开

9js和jquery遍历数组的循环

var arr = { "tom": 22, "jim": 32, "joy": 43 };

            var arr2 = [2, 3, 4];

            //使用普通的js遍历方法遍历

                        for (var key in arr) {

                           alert(arr[key]);

                        }

            for (var i = 0; i < arr2.length; i++) {

                alert(arr2[i]);

            }

         //使用jquery的each函数遍历

            $.each(arr, function(key, value) {

                alert(key + "=" + value);

            });

            $.each(arr2, function(key, value) {

                alert(key + "=" + value);

            });

 

           //$.each(arr2, function(item) { alert(arr2[item]); });

            //  $.each(arr2, function() { alert(this); });

            //each可以处理各种风格的数组,但是没有返回值

     //使用jquery的map函数遍历

            var arr22 = $.map(arr2, function(item) { return item * 2 });

            alert(arr22);

            //注意,map函数不能处理dictionary风格的数组。from:http://tongxiehui.net/

10页面传值的优点和缺点

Session 不建议页面之间传递参数,Session是服务器和客户机之前的会话状态,适合做登录验证
Cookie  不建议页面之间传递参数,Cookie和Session类似,不过Session相对Cookie安全一些,适合做登录验证
Application 不建议页面之间传递参数,Application是服务器级别变量,也就是说,如果不手动删除Application里面的值,服务器变量会越来越大,增加服务器压力
页面之间传递参数,建议直接用URL传值方式,如:a.aspx?id=1 在a.aspx中可以用Request["id"]获取参数的值,如果有多个值,可以这样传递:a.aspx?id=1&p1=2&p2=3;

11wpf和webservice的交互区别

(1)WCF可以不依赖于IIS。

(2)WCF可以配置成BasicHttpBinding来兼容(或者说变身成)WS。

(3)WCF可以基于TCP或者MessegeQueue来传输数据。

(4)WCF的可配置性比WS强,比如安全性。

(5)WCF可以是有状态的,并支持事务。

12linq和entity的区别

Entity Framework(linq to entity):支持多种数据库,可以只编写代码,可以Mock及单元测试,不能调用MSSQL函数
linq to sql:只支持MSSQL,必须有配置文件,不能进行单元测试,可以调用MSSQL函数

13mvc中的session怎么去掉

session.invalidate();是让当前浏览器的session销毁,也就是一个session被销毁.

removeAttribute()可以指定销毁哪个session

14requet的属性和方法;

属性

Response.AddHeaderName,Value
向应答中添加一个新的HTML标题。Name为新HTML标题的名称。Value为该头变量的值。你可以添加任何名称和任何值的HTML标题。它并不替代现有的同名标题。一旦标题被添加,将不能删除。
Response.AppendToLogString
向Web服务器的日志条目的末尾添加一字符串。String为要添加到日志文件中的字符串。
Response.BinaryWriteData
该方法可以不经任何字符转换就将制定的信息写到HTTP输出,主要用于写非字符串信息(如客户端应用程序所需的二进制数据等)。Data是要发送的数据。
Response.Clear
删除缓冲区的所有HTML输出,但只删除响应正文而不删除响应标题。可以用该方法处理错误情况。需要注意的是,如果Response.Buffer设置为True,则该方法将导致运行是错误。
Response.End

强迫Web服务器停止执行更多的脚本,并发送当前结果,文件中剩余的内容将不被处理。如果Response.Buffer设置为True,则调用Response.end将缓冲输出。
Response.Flush
对于一个缓冲的回应,发送所有的缓冲信息。如果Response.Buffer设置为True,则该方法将导致运行是错误。
Response.RedirectURL
将客户端的浏览器重定向到一个新的Internet地址。Url为新网页的Internet地址。
Response.WriteVariant
Response.Write是Response对象最常用的方法,该方法可以向浏览器发送字符串。Variant是一字符串或一个具有字符串值的变量。
属性
Response.Buffer
缓冲一ActiveServerPage。回应只到某一页结束或Response.Flush或Response.End方法调用时才发送出去。服务器将输出送给客户端后就不能再设置Buffer属性。
Response.CacheControl
指明是否Proxy服务器能缓存ActiveServerPage。缺省时,其值为FALSE。当设置其属性为Public时,Proxy服务器可以缓冲由Asp产生的输出。
Response.CharSet(Charsetname)
将字符集名称(如GB)附加到Response对象中content-type标题的后面,用来设置web服务器响应给客户端的文件字符编码。一个可能的值为“ISO_LATIN_1”。
   Response.ContentType
指明回应内容的类型。可能的值为text/plain和image/GIF,默认值text/HTML。
Response.Expires
浏览器可以缓存当前页的时间长度,以分钟为单位。
Response.ExpiresAbsolute
浏览器不能再缓存当前页的日期和时间。在未到期之前,可以返回。如果未指定时间,该主页在当天午夜到期;如果未指定日期,则到当天指定时间到期。
True/False=Response.IsClientConnected
属性为只读,指明自上次调用Response.Write之后,客户端是否仍然和服务器连接。该属性允许用户在客户端和服务器没有联接的情况下有更多的控制。例如,在从客户端提出请求起到服务器做出相应,其间要用去很长一段时间的情况下,这就可能有助于确保在继续处理脚本之前客户端仍是连通的。具有值 TRUE或FALSE。
Response.PICS(PICS字符串)
用于添加网页的PICS等级。PICS级别指明某一网页的内容级别,比如暴力或色情的程度等。
Response.Status="状态描述字符串"
用来设置Web服务器要响应的状态行的值。

15页面 无刷;
1. js方法实现无刷新 Page.ClientScript.RegisterClientScriptBlock

    //创建字符串连接对象
    StringBuilder myscript = new StringBuilder();
    //使用字符串组织一个JavaScript脚本方法
    myscript.Append("function seekCity()  {\n");
    myscript.Append("var city=document.getElementById('TextBox1').value; \n");
    myscript.Append("switch(city)    {\n");
    myscript.Append("case '北京': \n");
    myscript.Append("FillData('" + GetCityStr("北京") +"'); \n");
    myscript.Append("break; \n");
    myscript.Append("case '上海': \n");
    myscript.Append("FillData('" + GetCityStr("上海") + "'); \n");
    myscript.Append("break; \n");
    myscript.Append("case '济南': \n");
    myscript.Append("FillData('" + GetCityStr("济南") + "'); \n");
    myscript.Append("break; }\n");
    myscript.Append(" }\n");
    //使用注册脚本方法在页面的客户端,注册这个字符串编写的脚本方法。
    Page.ClientScript.RegisterClientScriptBlock(typeof(string), "seekCity", myscript.ToString(),true);

2. 使用ajax技术实现无刷新
 <script type="text/javascript">
  var xmlhttp;
  function getData()
  {
   //获取用户填写的名称
   var city=document.getElementById("txt").value;
   //创建异步调用对象
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   //将对象状态与事件相关联
   xmlhttp.onreadystatechange=statechange;
   //加载要链接的页面
   xmlhttp.Open("POST","datapage.aspx?city=" +city,true);
   //发送请求
   xmlhttp.Send();

posted @ 2017-12-14 23:30  Baby圆圆  阅读(230)  评论(0编辑  收藏  举报