ASP.NET面試題
來源:互聯網
上載者:User
asp.net面試集合 asp.net面試集合1 :維護資料庫的完整性、一致性、你喜歡用觸發器還是自寫商務邏輯?為什麼 答:儘可能用約束(包括CHECK、主鍵、唯一鍵、外鍵、非空欄位)實現,這種方式的效率最好;其次用觸發器,這種方式可以保證無論何種業務系統訪問資料庫都能鑑效組資料庫的完整性、一致性;最後再考慮用自寫商務邏輯實現,但這種方式效率最低、編程最複雜,當為下下之策2 : ADO。NET相對於ADO等主要有什麼改進?答 ADO資料以Recordset 形式儲存 ADO.NET以DataSet形式儲存
Recordset對資料庫持續串連訪問ADO.NET提供對資料庫中斷連線
ADO.NET與ADO相比,優勢在於提供了資料集和資料配接器,有利於實現分散式處理,降低對資料庫伺服器資源的消耗。3 : ASP。NET與ASP相比,主要有哪些進步?答 asp.net 可以使用強型別語言
頁面是編譯,執行速度快, 增加安全性和可靠性
,通過繼承機制來支援代碼的重用,提供聲明性伺服器控制項減少程式碼數
Asp需要解釋,執行速度慢,重用代碼不方便,沒有調試機制 4:C#中的委託是什嗎?事件是不是一種委託? 答 委託本質上是一種“方法介面”,它相當於C/C++中的函數指標,當然它比函數指標安全,在C#中通常用於事件處理。與JAVA相比,可以避免使用大量小粒度的匿名類。(不過,也許微軟就是使用類似於JAVA的匿名類實現委託的,只不過從字面上看起不是那麼回事罷了,誰知道呢?) 事件不是委託,不過由於事件的性質決定了處理它的程式邏輯能訪問的參數,因此,在C#中處理事件的邏輯都封裝為委託(一種“方法介面”)。實際上,如果你處理自訂的事件,就像JAVA中那樣用介面實現也是可以的,不過這麼做在C#一般沒有什麼特別的好處。5:new有幾種用法第一種:new Class();第二種:覆蓋方法public new XXXX(){}第三種:new 約束指定泛型類聲明中的任何型別參數都必須有公用的無參數建構函式。6:如何把一個array複製到arrayList裡答 foreach( object o in array )arrayList.Add(o);7:datagrid.datasouse可以串連什麼資料來源答 [dataset,datatable,dataview] dataset,datatable,dataview , IList8:概述反射和序列化答 反射:程式集包含模組,而模組包含類型,類型又包含成員。反射則提供了封裝程式集、模組和類型的對象。您可以使用反射動態地建立類型的執行個體,將類型綁定到現有對象,或從現有對象中擷取類型。然後,可以調用類型的方法或訪問其欄位和屬性答 序列化:序列化是將對象轉換為容易傳輸的格式的過程。例如,可以序列化一個對象,然後使用 HTTP 通過 Internet 在用戶端和伺服器之間傳輸該對象。在另一端,還原序列化將從該流重新構造對象。9:概述o/r mapping 的原理答 利用反射,配置 將類於資料庫表映射10:類成員有( )種可訪問形式答 可訪問性:public ,protected ,private,internal11:用sealed修飾的類有什麼特點答 sealed 修飾符用於防止從所修飾的類派生出其它類。如果一個密封類被指定為其他類的基類,則會發生編譯時間錯誤。密封類不能同時為抽象類別。
sealed 修飾符主要用於防止非有意的派生,但是它還能促使某些運行時最佳化。具體說來,由於密封類永遠不會有任何衍生類別,所以對密封類的執行個體的虛擬函數成員的調用可以轉換為非虛擬調用來處理。11:列舉ADO.NET中的五個主要對象,並簡單描述connection,command,dataReader,dataAdapter,dataset ...12:執行下面代碼後: String strTemp ="abcdefg 某某某";Int i System.Text.Encoding.Default.GetBytes(strTemp).Length;Int j = strTemp.Length;問:i=(14 ) ;j=(11 )i=(14 ) ;j=(11 ) 中文兩個位元組13:C#中,string str = null 與 string str ="",請盡量用文字說明區別。(要點:說明詳細的記憶體空間分配)答 string str = null 是不分配記憶體空間,而string str = "" 給它分配長度為空白字串的記憶體空間。 14:概述.NET裡對 remoting 和 webservice 兩項技術的理解和實際中的應用。答 遠程邏輯調用,remoing介面只能用在.net中15:什麼是code-behind技術答 aspx and cs 程式碼後置16:概述三層結構體系
答 展示層 資料層 業務層 17:用.net做B/S結構的系統,您是用幾層結構來開發,每一層之間的關係以及為什麼要這樣分層?
答:一般為3層
資料訪問層,業務層,展示層。
資料訪問層對資料庫進行增刪查改。
業務層一般分為二層,業務表觀層實現與展示層的溝通,商務規則層實現使用者密碼的安全等。
展示層為了與使用者互動例如使用者添加表單。
優點: 分工明確,條理清晰,易於調試,而且具有可擴充性。
缺點: 增加成本。18:什麼是ASP.net中的使用者控制項答:使用者控制項就是.ascx副檔名的東西嘍,可以拖到不同的頁面中調用,以節省代碼.比如登陸可能在多個頁面上有,就可以做成使用者控制項,但是有一個問題就是使用者控制項拖到不同層級的目錄下后里面的圖片等的相對路徑會變得不準確,需要自已寫方法調整.19:什麼叫應用程式定義域?什麼是受管制的代碼?什麼是強型別系統?什麼是裝箱和拆箱?什麼是重載?CTS、CLS和CLR分別作何解釋?答 應用程式定義域可以理解為一種輕量級進程。起到安全的作用。佔用資源小
受管制的代碼:unsafe:Unmanaged 程式碼。不經過CLR運行。
強型別系統 RTTI:類型識別系統。
裝箱就是把實值型別到參考型別的轉換
拆箱就是參考型別到實值型別的轉換
重載 方法名相同 不用個數的參數或者指定不同參數類型
CTS:通用語言系統。CLS:通用語言規範。CLR:公用語言運行庫。
class box{
int aa(object i)
{}
object bb()
{}
}
int bb=5
new box().aa(bb) //裝箱
int conver=(int)new box().zz(); //拆箱
//重載
public void aaa(int rad)
{ }
public void aaa(int len,int bre )
{ }
public void aaa(sting str)
{ }20:列舉一下你所瞭解的XML技術及其應用答:xml可以統一資料格式,XML可是好東西,儲存配置,站與站之間的交流,WEB SERVICE都要用它.
21 :ADO.net中常用的對象有哪些?分別描述一下。答:Connection 對象用於在應用程式和資料庫之間的串連
Command 可以檢索和操縱資料庫中的資料
DataAdapter對象充當DataSet和資料來源之間用於檢索和儲存資料的橋接器
DataSet 對象從資料庫檢索的資料可以儲存在其中能夠以XML形式儲存
DataReader 是查詢結果的一種只進。唯讀視圖 不具有DataSet的任何複雜功能
所以可以加快訪問和查看資料的速度 不提供斷開式訪問22:如何理解委託?答:據說相當於函數指標,定義了委託就可以在不調用原方法名稱的情況下調用那個方法.
msdn2005中是這樣解釋的:
委託具有以下特點:委託類似於 C++ 函數指標,但它是型別安全的。
委託允許將方法作為參數進行傳遞。委託可用於定義回調方法
委託可以連結在一起;例如,可以對一個事件調用多個方法。
方法不需要與委託簽名精確匹配。23:C#中的委託是什嗎?事件是不是一種委託?答 委託可以把一個方法作為參數代入另一個方法。
委託可以理解為指向一個函數的引用。
是,是一種特殊的委託 24:UDP串連和TCP串連的異同。答: udp前者只管傳,不管資料到不到,無須建立串連. tcp後者保證傳輸的資料準確,須要連結.25:ASP.net的身分識別驗證方式有哪些?分別是什麼原理?答:Forms認證,windows整合認證等,passport驗證 None26:進程和線程分別怎麼理解?答:進程是老子,線程是兒子,沒有老子就沒有兒子,一個老子可以有多個兒子.一個兒子可以成為別人的兒子,一個老子也可以為別的老子生兒子.27:什麼是code-Behind技術。答:代碼分離,這是個明智的東西,或者可以理解成HTML代碼寫在前台,C#代碼寫在後台.當然前台也有指令碼,類的調用等,其實寫在一起也是可以的.28:net中讀寫XML的類都歸屬於哪些命名空間?
答:System.Xml 29解釋一下UDDI、WSDL的意義及其作用答:UDDI 用於註冊各個服務提供者提供的服務 以便可以共用它們 它還有助於WEB服務客戶或web使用者尋找該Web服務
wsdl 是web服務描述語言(web Services Description Language)30:什麼是SOAP,有哪些應用。答:SOAP(Simple Object Access Protocol )簡易物件存取通訊協定 (SOAP)是在分散或分布式的環境中交換資訊並執行遠端程序呼叫的協議,是一個基於XML的協議。使用SOAP,不用考慮任何特定的傳輸協議(最常用的還是HTTP協議),可以允許任何類型的對象或代碼,在任何平台上,以任何一直語言相互連信。這種相互連信採用的是XML格式的訊息,具體請看
31:如何理解.net中的記憶體回收機制。答 GC?對象建立了總要清除啊,不然記憶體哪夠用?32:常用的調用webservice方法有哪些?答 HTTP-get Http-post Http-soap 33 概述.NET裡對 remoting 和 webservice 兩項技術的理解和實際中的應用。答 遠程邏輯調用,remoing介面只能用在.net中 34: 簡述 private、 protected、 public、 internal 修飾符的存取權限。
答 private : 私人成員, 在類的內部才可以訪問。
protected : 保護成員,該類內部和繼承類中可以訪問。
public : 公用成員,完全公開,沒有訪問限制。
internal: 在同一命名空間內可以訪問。 35:列舉ASP.NET 頁面之間傳遞值的幾種方式。
答. 1.使用QueryString,
源頁面
string url;
url="anotherwebform.aspx?name=" + TextBox1.Text
Response.Redirect(url); 目標頁面
Label1.Text=Request.QueryString["name"]; 2.使用Session變數
源頁面
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Server.Transfer("anotherwebform.aspx"); 目標頁面
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
Session.Remove("name");
Session.Remove("email"); 3.使用Server.Transfer
源頁面代碼:
public string Name
{
get {
return TextBox1.Text; }
}
//然後調用Server.Transfer方法
private void Button1_Click
(object sender, System.EventArgs e)
{
Server.Transfer("anotherwebform.aspx");
} 目標頁面代碼:
private void Page_Load
(object sender, System.EventArgs e)
{
WebForm1 wf1;
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
}
36:一列數的規則如下: 1、1、2、3、5、8、13、21、34...... 求第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);
}
} 37:override與重載的區別
答 :
override 與重載的區別。重載是方法的名稱相同。參數或參數類型不同,進行多次重載以適應不同的需要
Override 是進行基類中函數的重寫。為了適應需要。38:請編程遍曆頁面上所有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 ;
}
} 39:請編程實現一個冒泡排序演算法?
答:
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 ;
}
}
} 40:描述一下C#中索引器的實現過程,是否只能根據數字進行索引?
答:不是。可以用任意類型。 41:求以下運算式的值,寫出您想到的一種或幾種實現方法: 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() ;42:在下面的例子裡
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 43:net中讀寫資料庫需要用到那些類?他們的作用?
答:DataSet:資料存放區器。
DataCommand:執行語句命令。
DataAdapter:資料的集合,用於填充。 44:ASP.net的身分識別驗證方式有哪些?分別是什麼原理?
答:Windwos(預設)用IIS...
From(表單)用帳戶
Passport(密鑰) 45:在.net中,配件的意思是?
答:程式集。(中繼語言,來源資料,資源,裝配清單) 46:net Remoting 的工作原理是什嗎?
答:伺服器端向用戶端發送一個進程編號,一個程式域編號,以確定對象的位置
47:根據委託(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 ; 48:SQLSERVER伺服器中,給定表 table1 中有兩個欄位 ID、LastUpdateDate,ID表示更新的事務號, LastUpdateDate表示更新時的伺服器時間,請使用一句SQL語句獲得最後更新的事務號
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1) 49:根據安全執行緒的相關知識,分析以下代碼,當調用test方法時i>10時是否會引起死結?並簡要說明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答:不會發生死結,(但有一點int是按值傳遞的,所以每次改變的都只是一個副本,因此不會出現死結。但如果把int換做一個object,那麼死結會發生) 50:簡要談一下您對微軟.NET 構架下remoting和webservice兩項技術的理解以及實際中的應用。答:WS主要是可利用HTTP穿透防火牆。Remoting可以利用TCP/IP,二進位傳輸提高效率51:用C#實現以下功能
a 產生一個int數組,長度為100,並向其中隨機插入1-100,並且不能重複
答 :List L=new List();
Random random = new Random();
for (int i = 1; i <= 100; i++)
{
if (L.IndexOf(i) < 0)
{
L.Add(random.Next(1,100));
}
}
b 對上面產生的數組排序,需要支援升序、降序兩種順序
答 L.Reverse(L);
L.Sort(L); 52:請說明.net中的錯誤處理機制,並舉例答 異常是從 Exception 類類繼承的對象。異常從發生問題的代碼地區引發,然後沿堆棧向上傳遞,直到應用程式處理它或程式終止。
try
{ //執行代碼,不確定是否會出錯 }
catch
{ //出錯處理 }
finally
{ //無論怎樣,都要執行 } 53:請說出強名的含義
答 記憶體回收的原理是根據是否Null 參考,和該資料類型佔用記憶體來判斷該收回多少記憶體.強型別說白就是必須要有個資料類型.54:請列出c#中幾種迴圈的方法,並指出他們的不同
答 FOR WHILE foreach do while55:請指出.net中所有類型的基類
答 object 56:請指出GAC的含義
答 全域訪問緩衝57:SQL SREVER中,向一個表中插入了新資料,如何快捷的得到自增量欄位的當前值
答 INSERT INTO jobs (job_desc,min_lvl,max_lvl)
VALUES ('Accountant',12,125)
58:什麼是WEB控制項?使用WEB控制項有那些優勢?
答 web控制項就是可以在伺服器執行的控制項,優勢在於可以回傳資料,帶有事件驅動 59: 請解釋ASP。NET中以什麼方式進行資料驗證?
答 .net中提供了幾個資料驗證控制項,可以在伺服器端或者用戶端進行驗證。60: 請談談對Regex的看法?
答 主要用在字串的匹配上面,與具體的語言環境無關。
61: ASP。NET中共有幾種類型的控制項?各有什麼區別?
答 Html 控制項 傳統的html標記
Web 控制項 可以回傳資料,事件驅動
自訂 控制項 在原有控制項的基礎上增加功能
複合控制項 多個子控制項複合成一個新的控制項
62: WEB控制項可以激法服務端事件,請談談服務端事件是怎麼發生並解釋其原理?自動傳回是什嗎?為什麼要使用自動傳回。
答 通過實現IPostBack這個介面來執行事件。自動回傳就是AutoPostBack,使用自動回傳可以監視用戶端變化情況並將這種改變返回到伺服器端
63: WEB控制項及HTML服務端控制項能否調用用戶端方法?如果能,請解釋如何調用?
答 能,伺服器端控制項在html中表現形式還是html標記,所以可以執行用戶端事件,有多種方式:1、control.Attributes["onclick"]="...;";
2、<script for="controlName" event="onclick"></script>
64: 請解釋ASP。NET中的web頁面與其隱藏類之間的關係?
答 繼承的關係
65: 什麼是viewstate,能否禁用?是否所用控制項都可以禁用?
答 可以全部禁用,viewstate就是hidden input,只不過加上了微軟的編碼方式記錄控制項的狀態
66: 當發現不能讀取頁面上的輸入的資料時很有可能是什麼原因造成的?怎麼解決
答 可能就是事件沒有關聯,或者根本就沒有寫讀取代碼。
解決 檢查代碼, 設斷點調試
67:請解釋一個WEB頁面中代碼執行次序。
答 參看.cs 知道最先執行OnInit(); 然後到Page_Load,最後到具體的執行事件。
68:請解釋什麼是內容物件,在什麼情況下要使用內容物件
答 HttpContext, 在類中調用的時候需要用到HttpContext
69:請解釋轉寄與跳轉的區別?
答 Transfer 是轉寄 包括HttpHandler對象
Redirect 就是跳轉
70: 請解釋ASP。NET中button linkbutton imagebutton 及hyperlink這四個控制項之間的功別
答 button imagebutton 將資料傳遞迴伺服器
hyperlinK 頁面之間的導航
linkbutton主要用於將資料儲存到伺服器或訪問伺服器上的資料71:請解釋一下。NET多層應用程式中層與層之間以那幾種方式進行資料傳遞。並解釋你自己的項目中採用那種方式進行。
答 這個傳遞方式不定,很多都是傳遞DataSet, XML也可以
72:如果出現ASP。NET中的事件不能觸發可能由於什麼原因造成?
答 事件丟失,特別是使用vss的時候最容易造成這種情況,原因不明
73:如果需要在datagride控制項中的某一列中添加下拉式清單方塊並綁定資料怎麼解決?
答 使用模板列來添加dropdownlist,綁定資料使用代碼前置的方式
74:請解釋asp.net中的資料繫結與傳統資料繫結有什麼區別?
答 更靈活 更方便
75:請解釋.net採用委託實現的事件模型與JAVA中採用介面實現的事件模型有什麼區別,
答 以圖示方式解釋。
76:請解釋介面的顯式實現有什麼意義?
答 規定強制執行,保持一致 77: 什麼情況用HTML控制項,什麼情況用WEB控制項,並比較兩者差別
答 用戶端表現用html控制項,如果想和server端互動,那麼加上runat=server,它就成了伺服器端控制項,但它沒有web控制項的很多方法和屬性,如果你需要用到,那麼還是用web controls78: C#中的介面和類有什麼異同。答 介面只能包含抽象方法,不能包含任何方法實現,不能建立介面執行個體,介面成員沒有存取修飾詞,介面成員必須是方法屬性事件或者索引器不能包含常數欄位運算子也不能有靜態成員