.NET面试题(三)
.NET題
1頁面?zhèn)髦捣绞?/strong>
2堆跟棧的區(qū)別
棧(操作系統(tǒng)):由編譯器自動(dòng)分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧
棧使用的是一級(jí)緩存, 他們通常都是被調(diào)用時(shí)處于存儲(chǔ)空間中,調(diào)用完畢立即釋放
堆(操作系統(tǒng)): 一般由程序員分配釋放, 若程序員不釋放,程序結(jié)束時(shí)可能由OS回收,分配方式倒是類似于鏈表。
堆則是存放在二級(jí)緩存中,生命周期由虛擬機(jī)的垃圾回收算法來決定(并不是一旦成為孤兒對(duì)象就能被回收)。所以調(diào)用這些對(duì)象的速度要相對(duì)來得低一些
堆(數(shù)據(jù)結(jié)構(gòu)):堆可以被看成是一棵樹,如:堆排序
棧(數(shù)據(jù)結(jié)構(gòu)):一種后進(jìn)先出的的數(shù)據(jù)結(jié)構(gòu)
3怎么理解ajax的機(jī)制
Ajax作為一種常用的web技術(shù),本質(zhì)是通過XMLHttpRequest對(duì)象請(qǐng)求遠(yuǎn)程接口獲取數(shù)據(jù)
一個(gè)完整的Ajax過程如下:
1創(chuàng)建XMLHttpRequest對(duì)象
2通過上一步創(chuàng)建的XMLHttpRequest對(duì)象,打開一個(gè)連接
3綁定事件,對(duì)獲取到的數(shù)據(jù)進(jìn)行處理。一般為請(qǐng)求成功后的回調(diào)函數(shù)
4發(fā)送該請(qǐng)求
它有以下特點(diǎn):
使用XHTML+CSS來表示信息
使用JavaScript操作DOM(Document Object Model)進(jìn)行動(dòng)態(tài)顯示及交互
使用XML和XSLT進(jìn)行數(shù)據(jù)交換及相關(guān)操作
使用XMLHttpRequest對(duì)象與Web服務(wù)器進(jìn)行異步數(shù)據(jù)交換
使用JavaScript將所有的東西綁定在一起
使用SOAP以XML的格式來傳送方法名和方法參數(shù)
4三層理解
1:數(shù)據(jù)數(shù)據(jù)訪問層:主要是對(duì)原始數(shù)據(jù)(數(shù)據(jù)庫或者文本文件等存放數(shù)據(jù)的形式)的操作層,而不是指原始數(shù)據(jù),也就是說,是對(duì)數(shù)據(jù)的操作,而不是數(shù)據(jù)庫,具體為業(yè)務(wù)邏輯層或表示層提供數(shù)據(jù)服務(wù).
2:業(yè)務(wù)邏輯層:主要是針對(duì)具體的問題的操作,也可以理解成對(duì)數(shù)據(jù)層的操作,對(duì)數(shù)據(jù)業(yè)務(wù)邏輯處理,如果說數(shù)據(jù)層是積木,那邏輯層就是對(duì)這些積木的搭建。
3:表示層:主要表示W(wǎng)EB方式,也可以表示成WINFORM方式,WEB方式也可以表現(xiàn)成:aspx, 如果邏輯層相當(dāng)強(qiáng)大和完善,無論表現(xiàn)層如何定義和更改,邏輯層都能完善地提供服務(wù)。
具體的區(qū)分方法
1:數(shù)據(jù)數(shù)據(jù)訪問層:主要看你的數(shù)據(jù)層里面有沒有包含邏輯處理,實(shí)際上他的各個(gè)函數(shù)主要完成各個(gè)對(duì)數(shù)據(jù)文件的操作。而不必管其他操作。
2:業(yè)務(wù)邏輯層:主要負(fù)責(zé)對(duì)數(shù)據(jù)層的操作。也就是說把一些數(shù)據(jù)層的操作進(jìn)行組合。
3:表示層:主要對(duì)用戶的請(qǐng)求接受,以及數(shù)據(jù)的返回,為客戶端提供應(yīng)用程序的訪問。
5js方法實(shí)現(xiàn)一個(gè)datetime的當(dāng)前時(shí)間
this.GetDate = function(){
var result = new DateTime(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0, 0, 0);
return result ;
}
6js一個(gè)對(duì)象如何繼承另外一個(gè)對(duì)象的方法和屬性
javascript的實(shí)現(xiàn)繼承方式是通過 constructor function和prototype屬性來實(shí)現(xiàn)繼承
7類和結(jié)構(gòu)的區(qū)別
類是引用類型在堆上分配,類的實(shí)例進(jìn)行賦值只是復(fù)制了引用,都指向同一段實(shí)際對(duì)象分配的內(nèi)存
類有構(gòu)造和析構(gòu)函數(shù)
類可以繼承和被繼承
結(jié)構(gòu):
結(jié)構(gòu)是值類型在棧上分配(雖然棧的訪問速度比較堆要快,但棧的資源有限放),結(jié)構(gòu)的賦值將分配產(chǎn)生一個(gè)新的對(duì)象。
結(jié)構(gòu)沒有構(gòu)造函數(shù),但可以添加。結(jié)構(gòu)沒有析構(gòu)函數(shù)
結(jié)構(gòu)不可以繼承自另一個(gè)結(jié)構(gòu)或被繼承,但和類一樣可以繼承自接口
8xml與html的區(qū)別
html用于顯示頁面,而xml用于描述頁面內(nèi)容的數(shù)據(jù)或數(shù)據(jù)的結(jié)構(gòu)。Html把數(shù)據(jù)和顯示結(jié)合在一起,在頁面中把這數(shù)據(jù)顯示出來,而xml則將數(shù)據(jù)和顯示分開
9js和jquery遍歷數(shù)組的循環(huán)
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函數(shù)遍歷
??????????? $.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可以處理各種風(fēng)格的數(shù)組,但是沒有返回值
???? //使用jquery的map函數(shù)遍歷
??????????? var arr22 = $.map(arr2, function(item) { return item * 2 });
?????????? ?alert(arr22);
??????????? //注意,map函數(shù)不能處理dictionary風(fēng)格的數(shù)組。from:http://tongxiehui.net/
10頁面?zhèn)髦档膬?yōu)點(diǎn)和缺點(diǎn)
Session 不建議頁面之間傳遞參數(shù),Session是服務(wù)器和客戶機(jī)之前的會(huì)話狀態(tài),適合做登錄驗(yàn)證
Cookie? 不建議頁面之間傳遞參數(shù),Cookie和Session類似,不過Session相對(duì)Cookie安全一些,適合做登錄驗(yàn)證
Application 不建議頁面之間傳遞參數(shù),Application是服務(wù)器級(jí)別變量,也就是說,如果不手動(dòng)刪除Application里面的值,服務(wù)器變量會(huì)越來越大,增加服務(wù)器壓力
頁面之間傳遞參數(shù),建議直接用URL傳值方式,如:a.aspx?id=1 在a.aspx中可以用Request["id"]獲取參數(shù)的值,如果有多個(gè)值,可以這樣傳遞:a.aspx?id=1&p1=2&p2=3;
11wpf和webservice的交互區(qū)別;
(1)WCF可以不依賴于IIS。
(2)WCF可以配置成BasicHttpBinding來兼容(或者說變身成)WS。
(3)WCF可以基于TCP或者M(jìn)essegeQueue來傳輸數(shù)據(jù)。
(4)WCF的可配置性比WS強(qiáng),比如安全性。
(5)WCF可以是有狀態(tài)的,并支持事務(wù)。
12linq和entity的區(qū)別
Entity Framework(linq to entity):支持多種數(shù)據(jù)庫,可以只編寫代碼,可以Mock及單元測(cè)試,不能調(diào)用MSSQL函數(shù)
linq to sql:只支持MSSQL,必須有配置文件,不能進(jìn)行單元測(cè)試,可以調(diào)用MSSQL函數(shù)
13mvc中的session怎么去掉;
session.invalidate();是讓當(dāng)前瀏覽器的session銷毀,也就是一個(gè)session被銷毀.
removeAttribute()可以指定銷毀哪個(gè)session
14requet的屬性和方法;
屬性
Response.AddHeaderName,Value
向應(yīng)答中添加一個(gè)新的HTML標(biāo)題。Name為新HTML標(biāo)題的名稱。Value為該頭變量的值。你可以添加任何名稱和任何值的HTML標(biāo)題。它并不替代現(xiàn)有的同名標(biāo)題。一旦標(biāo)題被添加,將不能刪除。
Response.AppendToLogString
向Web服務(wù)器的日志條目的末尾添加一字符串。String為要添加到日志文件中的字符串。
Response.BinaryWriteData
該方法可以不經(jīng)任何字符轉(zhuǎn)換就將制定的信息寫到HTTP輸出,主要用于寫非字符串信息(如客戶端應(yīng)用程序所需的二進(jìn)制數(shù)據(jù)等)。Data是要發(fā)送的數(shù)據(jù)。
Response.Clear
刪除緩沖區(qū)的所有HTML輸出,但只刪除響應(yīng)正文而不刪除響應(yīng)標(biāo)題。可以用該方法處理錯(cuò)誤情況。需要注意的是,如果Response.Buffer設(shè)置為True,則該方法將導(dǎo)致運(yùn)行是錯(cuò)誤。
Response.End
強(qiáng)迫Web服務(wù)器停止執(zhí)行更多的腳本,并發(fā)送當(dāng)前結(jié)果,文件中剩余的內(nèi)容將不被處理。如果Response.Buffer設(shè)置為True,則調(diào)用Response.end將緩沖輸出。
Response.Flush
對(duì)于一個(gè)緩沖的回應(yīng),發(fā)送所有的緩沖信息。如果Response.Buffer設(shè)置為True,則該方法將導(dǎo)致運(yùn)行是錯(cuò)誤。
Response.RedirectURL
將客戶端的瀏覽器重定向到一個(gè)新的Internet地址。Url為新網(wǎng)頁的Internet地址。
Response.WriteVariant
Response.Write是Response對(duì)象最常用的方法,該方法可以向?yàn)g覽器發(fā)送字符串。Variant是一字符串或一個(gè)具有字符串值的變量。
屬性
Response.Buffer
緩沖一ActiveServerPage。回應(yīng)只到某一頁結(jié)束或Response.Flush或Response.End方法調(diào)用時(shí)才發(fā)送出去。服務(wù)器將輸出送給客戶端后就不能再設(shè)置Buffer屬性。
Response.CacheControl
指明是否Proxy服務(wù)器能緩存ActiveServerPage。缺省時(shí),其值為FALSE。當(dāng)設(shè)置其屬性為Public時(shí),Proxy服務(wù)器可以緩沖由Asp產(chǎn)生的輸出。
Response.CharSet(Charsetname)
將字符集名稱(如GB)附加到Response對(duì)象中content-type標(biāo)題的后面,用來設(shè)置web服務(wù)器響應(yīng)給客戶端的文件字符編碼。一個(gè)可能的值為“ISO_LATIN_1”。
???Response.ContentType
指明回應(yīng)內(nèi)容的類型。可能的值為text/plain和image/GIF,默認(rèn)值text/HTML。
Response.Expires
瀏覽器可以緩存當(dāng)前頁的時(shí)間長度,以分鐘為單位。
Response.ExpiresAbsolute
瀏覽器不能再緩存當(dāng)前頁的日期和時(shí)間。在未到期之前,可以返回。如果未指定時(shí)間,該主頁在當(dāng)天午夜到期;如果未指定日期,則到當(dāng)天指定時(shí)間到期。
True/False=Response.IsClientConnected
屬性為只讀,指明自上次調(diào)用Response.Write之后,客戶端是否仍然和服務(wù)器連接。該屬性允許用戶在客戶端和服務(wù)器沒有聯(lián)接的情況下有更多的控制。例如,在從客戶端提出請(qǐng)求起到服務(wù)器做出相應(yīng),其間要用去很長一段時(shí)間的情況下,這就可能有助于確保在繼續(xù)處理腳本之前客戶端仍是連通的。具有值?TRUE或FALSE。
Response.PICS(PICS字符串)
用于添加網(wǎng)頁的PICS等級(jí)。PICS級(jí)別指明某一網(wǎng)頁的內(nèi)容級(jí)別,比如暴力或色情的程度等。
Response.Status="狀態(tài)描述字符串"
用來設(shè)置Web服務(wù)器要響應(yīng)的狀態(tài)行的值。
15頁面 無刷;
1. js方法實(shí)現(xiàn)無刷新 Page.ClientScript.RegisterClientScriptBlock
//創(chuàng)建字符串連接對(duì)象
StringBuilder myscript = new StringBuilder();
//使用字符串組織一個(gè)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 '濟(jì)南': \n");
myscript.Append("FillData('" + GetCityStr("濟(jì)南") + "'); \n");
myscript.Append("break; }\n");
myscript.Append(" }\n");
//使用注冊(cè)腳本方法在頁面的客戶端,注冊(cè)這個(gè)字符串編寫的腳本方法。
Page.ClientScript.RegisterClientScriptBlock(typeof(string), "seekCity", myscript.ToString(),true);
2. 使用ajax技術(shù)實(shí)現(xiàn)無刷新
<script type="text/javascript">
var xmlhttp;
function getData()
{
//獲取用戶填寫的名稱
var city=document.getElementById("txt").value;
//創(chuàng)建異步調(diào)用對(duì)象
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
//將對(duì)象狀態(tài)與事件相關(guān)聯(lián)
xmlhttp.onreadystatechange=statechange;
//加載要鏈接的頁面
xmlhttp.Open("POST","datapage.aspx?city=" +city,true);
//發(fā)送請(qǐng)求
xmlhttp.Send();
轉(zhuǎn)載于:https://www.cnblogs.com/BabyMengYuan/p/8040577.html
總結(jié)
以上是生活随笔為你收集整理的.NET面试题(三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 城联数据TSM技术方案起底
- 下一篇: 构建之法读书笔记03