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相比,可以避免使用大量小粒度的匿名類。
事件不是委托,不過由於事件的性質決定了處理它的程序邏輯能訪問的參數,因此,在C#中處理事件的邏輯都包裝為委托(一種“方法接口”)。實際上,如果你處理自定義的事件,就像JAVA中那樣用接口實現也是可以的,不過這么做在C#一般沒有什么特別的好處。

5:new有幾種用法
第一種:new Class();
第二種:覆蓋方法
public new XXXX(){}
第三種:new 約束指定泛型類聲明中的任何類型參數都必須有公共的無參數構造函數。

6:如何把一個array復制到arrayList里
答 foreach( object o in array )
{
arrayList.Add(o)
}

7:DataGrid、DataSource可以連接什么數據源
答 [ DataSet、DataTable、DataView] DataSet、DataTable、DataView、IList

8:概述反射和序列化
答 反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對象。可以使用反射動態地創建類型的實例,將類型綁定到現有對象,或從現有對象中獲取類型,然后,可以調用類型的方法或訪問其字段和屬性
答 序列化:序列化是將對象轉換為容易傳輸的格式的過程。例如,可以序列化一個對象,然后使用 HTTP 通過 Internet 在客戶端和服務器之間傳輸該對象。在另一端,反序列化將從該流重新構造對象。

9:概述OR/Mapping 的原理
答 利用反射,配置 將類於數據庫表映射

10:類成員有( )種可訪問形式
答 可訪問性:public、protected 、private、internal

11:用sealed修飾的類有什么特點
答 sealed 修飾符用於防止從所修飾的類派生出其它類。如果一個密封類被指定為其他類的基類,則會發生編譯時錯誤。密封類不能同時為抽象類。
sealed 修飾符主要用於防止非有意的派生,但是它還能促使某些運行時優化。具體說來,由於密封類永遠不會有任何派生類,所以對密封類的實例的虛擬函數成員的調用可以轉換為非虛擬調用來處理。

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 和 Webservices 兩項技術的理解和實際中的應用
答 遠程邏輯調用,Remoing接口只能用在.NET中

16:概述三層結構體系
答 表示層 數據層 業務層

17:用.net做B/S結構的系統,您是用幾層結構來開發,每一層之間的關系以及為什么要這樣分層?
答:一般為3層
數據訪問層,業務層,表示層。
數據訪問層對數據庫進行增刪查改。
業務層一般分為二層,業務表觀層實現與表示層的溝通,業務規則層實現用戶密碼的安全等。
表示層為了與用戶交互例如用戶添加表單
優點: 分工明確,條理清晰,易於調試,而且具有可擴展性。
缺點: 增加成本。

18:什么是ASP.NET中的用戶控件
答:用戶控件就是.ascx擴展名的東西嘍,可以拖到不同的頁面中調用,以節省代碼.比如登陸可能在多個頁面上有,就可以做成用戶控件,但是有一個問題就是用戶控件拖到不同級別的目錄下后里面的圖片等的相對路徑會變得不准確,需要自已寫方法調整。

19:什么叫應用程序域?
什么是受管制的代碼?
什么是強類型系統?
什么是裝箱和拆箱?
什么是重載?
CTS、CLS和CLR分別作何解釋?
答 應用程序域可以理解為一種輕量級進程。起到安全的作用。占用資源小
受管制的代碼:unsafe:非托管代碼。不經過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可是好東西,保存配置,站與站之間的交流,WebServices都要用它.

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驗證 None

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 )簡單對象訪問協議是在分散或分布式的環境中交換信息並執行遠程過程調用的協議,是一個基於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 && i 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 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 {
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:請說出強名的含義
答 垃圾回收的原理是根據是否空引用,和該數據類型占用內存來判斷該收回多少內存.強類型說白就是必須要有個數據類型.

54:請列出c#中幾種循環的方法,並指出他們的不同
答 FOR WHILE foreach do while

55:請指出.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: 請談談對正則表達式的看法?
答 主要用在字符串的匹配上面,與具體的語言環境無關。

61: ASP.NET中共有幾種類型的控件?各有什么區別?
答 Html 控件 傳統的html標記
Web 控件 可以回傳數據,事件驅動
自定義 控件 在原有控件的基礎上增加功能
復合控件 多個子控件復合成一個新的控件

62: WEB控件可以激法服務端事件,請談談服務端事件是怎么發生並解釋其原理?自動傳回是什么?為什么要使用自動傳回。
答 通過實現IPostBack這個接口來執行事件。自動回傳就是AutoPostBack,使用自動回傳可以監視客戶端變化情況並將這種改變返回到服務器端

63: WEB控件及HTML服務端控件能否調用客戶端方法?如果能,請解釋如何調用?
答 能,服務器端控件在html中表現形式還是html標記,所以可以執行客戶端事件,有多種方式:1、control.Attributes["onclick"]=”…;”;
2、

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:如果需要在DataGrid控件中的某一列中添加下拉列表框並綁定數據怎么解決?
答 使用模板列來添加DropDwonList綁定數據使用代碼前置的方式

74:請解釋ASP.NET中的數據綁定與傳統數據綁定有什么區別?
答 更靈活 更方便

76:請解釋接口的顯式實現有什么意義?
答 規定強制執行,保持一致

77: 什么情況用HTML控件,什么情況用Web控件,並比較兩者差別
答 客戶端表現用HTML控件,如果想和Server端交互,那么加上runat=server,它就成了服務器端控件,但它沒有Web控件的很多方法和屬性,如果你需要用到,那么還是用Web Controls

78: C#中的接口和類有什么異同。
答 接口只能包含抽象方法,不能包含任何方法實現,不能創建接口實例,接口成員沒有訪問修飾符,接口成員必須是方法屬性事件或者索引器不能包含常數字段運算符也不能有靜態成員

可訪問性的關鍵字有如下5個:
internal:在所屬程序集中可以訪問。
private:私有成員, 在當前類中可以訪問。
protected:保護成員,在當前類及其子類中可以訪問。
public:公共成員,完全公開,沒有訪問限制。
internal protected:在所屬程序集或當前類的子類中可以訪問。(題目中未提及)
【擴展】

類的修飾符:abstract,sealed,static,unsafe 4個。
abstract:類是抽象的,不能創建類的實例
sealed:類是密封的,不能被繼承
static:類是靜態的,只有靜態成員,沒有非靜態成員
unsafe:類有非安全的結構,比如指針

2 .列舉ASP.NET 頁面之間傳遞值的幾種方式。
答:有 querystring,cookie,session,server.transfer,application 5種方式。

【擴展】
1.使用QueryString方式(或稱url傳值、Response.Redirect傳值),這是最簡單的方式,因為傳遞的值在瀏覽器的url中會顯示出來,所以用來傳遞沒有安全要求的值。
發送頁面代碼:
Response.Redirect(“index.aspx?username=”+txtUserName.Text.Trim());接收頁面代碼:
if(Request.QueryString["username"]!=null)
{
strUserName = Request.QueryString["username"];
}
2.使用cookie方式,cookie由服務器創建,但是保存在客戶端

發送頁面代碼:

HttpCookie userName = new HttpCookie(“username”);
userName.Value = this.txtUserName.Text.Trim();
Response.Cookies.Add(userName);
Response.Redirect(“index.aspx”);接收頁面代碼:

if (Request.Cookies["username"] != null)
{
strUserName = Request.Cookies["username"].Value;
}
3.使用Session變量,session在用戶向服務器發出首次請求時被創建,在服務器端,在用戶關閉瀏覽器或異常發生時終止(還有別的session過期情況)。

發送頁面代碼:
Session["username"] = this.txtUserName.Text.trim();
Response.Redirect(“index.aspx”);接收頁面代碼:

if (Session["username"] != null)
{
strUserName = Session["username"].ToString();
}
4.使用Application變量

發送頁面代碼:

Application["username"] = this.txtUserName.Text.trim();
Response.Redirect(“index.aspx”);接收頁面代碼:

if (Application["username"] != null)
{
strUserName = Application["username"].ToString();
}
5.使用Server.Transfer方式(或稱為HttpContext方式),要傳遞的變量可以通過屬性或方法來獲得,使用屬性比較容易一些。

發送頁面制作一個屬性:
public string GetName
{
get { return this.txtUserName.Text.Trim(); }
}
發送頁面代碼:
Server.Transfer(“index.aspx”);接收頁面代碼:
w = (WebForm4)Context.Handler;
strUserName = w.GetName;

3.重寫、重載和隱藏三個概念的區別。
答:重寫(Override)指用Override關鍵字重新實現基類中的虛方法,在運行過程中,無論通過哪個類型的引用,真正對象類型的方法將被調用。
重載(Overload)指多個方法共享一個名字並且擁有相同的返回值,但是擁有不同的參數。
隱藏(new)指用new關鍵字重新實現基類中的方法,在運行的過程中通過引用的類型判斷應該調用哪個類型的方法。
【擴展】
重寫實現的是運行時多態,重載實現的是編譯時多態。
override 與重載的區別。重載是方法的名稱相同。參數或參數類型不同,進行多次重載以適應不同的需要
Override 是進行基類中函數的重寫。為了適應需要。

6.如果在一個B/S結構的系統中需要傳遞變量值,但是又不能使用Session、Cookie、Application,您有幾種方法進行處理?
答 :
this.Server.Transfer

7.請編程遍歷頁面上所有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 ;
}
}

16.什么是受管制的代碼?
答:unsafe:非托管代碼。不經過CLR運行。

17.什么是強類型系統?
答:RTTI:類型識別系統。

22.常用的調用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜單選項

23..NET Remoting 的工作原理是什么?
答:服務器端向客戶端發送一個進程編號,一個程序域編號,以確定對象的位置。

25.請詳述在.NET中類(class)與結構(struct)的異同?
答:Class可以被實例化,屬於引用類型,是分配在內存的堆上的,Struct屬於值類型,是分配在內存的棧上的.

31.公司要求開發一個繼承System.Windows.Forms.ListView類的組件,要求達到以下的特殊功能:點擊ListView各列列頭時,能按照點擊列的每行值進行重排視圖中的所有行 (排序的方式如DataGrid相似)。根據您的知識,請簡要談一下您的思路
答:根據點擊的列頭,包該列的ID取出,按照該ID排序后,在給綁定到ListView中。

32.給定以下XML文件,完成算法流程圖。

< DriverC >

請畫出遍歷所有文件名(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 );
}
}

33.寫出一條Sql語句:取出表A中第31到第40記錄(SQLServer,以自動增長的ID作為主鍵,注意:ID可能不是連續的。
答:解1: select top 10 * from A where id not in (select top 30 id from A)
解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)

35.能用foreach遍歷訪問的對象需要實現 ________________接口或聲明________________方法的類型。
答:IEnumerable 、 GetEnumerator。

37.String s = new String(“xyz”);創建了幾個String Object?
答:兩個對象,一個是“xyx”,一個是指向“xyx”的引用對象s。

41.構造器Constructor是否可被Override?
答:構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。

43.try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執行,什么時候被執行,在return前還是后?
答:會執行,在return前執行。

55.如何處理幾十萬條並發數據?
答:用存儲過程或事務。取得最大標識的時候同時更新..注意主鍵不是自增量方式這種方法並發的時候是不會有重復主鍵的..取得最大標識要有一個存儲過程來獲取.

56.Session有什么重大BUG,微軟提出了什么方法加以解決?
答:是IIS中由於有進程回收機制,系統繁忙的話Session會丟失,可以用Sate Server或SQL Server數據庫的方式存儲Session不過這種方式比較慢,而且無法捕獲Session的END事件。

57.進程和線程的區別?
答:進程是系統進行資源分配和調度的單位;線程是CPU調度和分派的單位,一個進程可以有多個線程,這些線程共享這個進程的資源。

58.堆和棧的區別?
答:
棧:由編譯器自動分配、釋放。在函數體中定義的變量通常在棧上。
堆:一般由程序員分配釋放。用new、malloc等分配內存函數分配得到的就是在堆上。

59.成員變量和成員函數前加static的作用?
答:它們被稱為常成員變量和常成員函數,又稱為類成員變量和類成員函數。分別用來反映類的狀態。比如類成員變量可以用來統計類實例的數量,類成員函數負責這種統計的動作。

62.請說明在.NET中常用的幾種頁面間傳遞參數的方法,並說出他們的優缺點。
答:session(viewstate) 簡單,但易丟失
application 全局
cookie 簡單,但可能不支持,可能被偽造
input ttype=”hidden” 簡單,可能被偽造
url參數 簡單,顯示於地址欄,長度有限
數據庫 穩定,安全,但性能相對弱

63.請指出GAC的含義?
答:全局程序集緩存。

64.向服務器發送請求有幾種方式?
答:get,post。get一般為鏈接方式,post一般為按鈕方式。

65.DataReader與DataSet有什么區別?
答:一個是只能向前的只讀游標,一個是內存中的表。

66.軟件開發過程一般有幾個階段?每個階段的作用?
答:需求分析,架構設計,代碼編寫,QA,部署

67.在C#中using和new這兩個關鍵字有什么意義,請寫出你所知道的意義?using 指令 和語句 new 創建實例 new 隱藏基類中方法。
答:using 引入名稱空間或者使用非托管資源
new 新建實例或者隱藏父類方法

68.需要實現對一個字符串的處理,首先將該字符串首尾的空格去掉,如果字符串中間還有連續空格的話,僅保留一個空格,即允許字符串中間有多個空格,但連續的空格數不可超過一個.
答:string inputStr=” xx xx “;
inputStr=Regex.Replace(inputStr.Trim(),” *”,” “);

69.下面這段代碼輸出什么?為什么?
int i=5;
int j=5;
if (Object.ReferenceEquals(i,j))
Console.WriteLine(“Equal”);
else
Console.WriteLine(“Not Equal”);
答:不相等,因為比較的是對象

70.什么叫做SQL注入,如何防止?請舉例說明。
答:利用sql關鍵字對網站進行攻擊。過濾關鍵字’等

71.什么是反射?
答:動態獲取程序集信息

72.用Singleton如何寫設計模式
答:static屬性里面new ,構造函數private

73.什么是Application Pool?
答:Web應用,類似Thread Pool,提高並發性能。

74.什么是虛函數?什么是抽象函數?
答:虛函數:沒有實現的,可由子類繼承並重寫的函數。抽象函數:規定其非虛子類必須實現的函數,必須被重寫。

75.什么是XML?
答:XML即可擴展標記語言。eXtensible Markup Language.標記是指計算機所能理解的信息符號,通過此種標記,計算機之間可以處理包含各種信息的文章等。如何定義這些標記,即可以選擇國際通用的標記語言,比如HTML,也可以使用象XML這樣由相關人士自由決定的標記語言,這就是語言的可擴展性。XML是從SGML中簡化修改出來的。它主要用到的有XML、XSL和XPath等。

76.什么是Web Service?UDDI?
答:Web Service便是基於網絡的、分布式的模塊化組件,它執行特定的任務,遵守具體的技術規范,這些規范使得Web Service能與其他兼容的組件進行互操作。
UDDI 的目的是為電子商務建立標准;UDDI是一套基於Web的、分布式的、為Web Service提供的、信息注冊中心的實現標准規范,同時也包含一組使企業能將自身提供的Web Service注冊,以使別的企業能夠發現的訪問協議的實現標准。

78.列舉一下你所了解的XML技術及其應用
答:XML用於配置,用於保存靜態數據類型.接觸XML最多的是Web Services..和config

81.什么是SOAP?有哪些應用。
答:simple object access protocal,簡單對象接受協議.以xml為基本編碼結構,建立在已有通信協議上(如http,不過據說ms在搞最底層的架構在tcp/ip上的soap)的一種規范Web Service使用的協議..

83.XML 與 HTML 的主要區別
答:1. XML是區分大小寫字母的,HTML不區分。
2. 在HTML中,如果上下文清楚地顯示出段落或者列表鍵在何處結尾,那么你可以省略

或者

之類的結束 標記。在XML中,絕對不能省略掉結束標記。
3. 在XML中,擁有單個標記而沒有匹配的結束標記的元素必須用一個 / 字符作為結尾。這樣分析器就知道不用 查找結束標記了。
4. 在XML中,屬性值必須分裝在引號中。在HTML中,引號是可用可不用的。
5. 在HTML中,可以擁有不帶值的屬性名。在XML中,所有的屬性都必須帶有相應的值。

99.利用operator聲明且僅聲明了==,有什么錯誤么?
答:要同時修改Equale和GetHash() ? 重載了”==” 就必須重載 “!=”

102.在.net(C# or vb.net)中,Appplication.Exit 還是 Form.Close有什么不同?
答:一個是退出整個應用程序,一個是關閉其中一個Form。

103.在C#中有一個double型的變量,比如10321.5,比如122235401.21644,作為貨幣的值如何按各個不同國家的習慣來輸出。比如美國用$10,321.50和$122,235,401.22而在英國則為£10 321.50和£122 235 401.22
答:System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo(“en-US”);
//System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo(“en-GB”);為英 國 貨幣類型
decimal y = 9999999999999999999999999999m;
string str = String.Format(MyCulture,”My amount = {0:c}”,y);

8. 62-63=1 等式不成立,請移動一個數字(不可以移動減號和等於號),使得等式成立,如何移動?
答案:62移動成2的6次方

108.ADO.NET相對於ADO等主要有什么改進?
答:1ADO.NET不依賴於OleDb提供程序,而是使用.NET托管提供的程序
2不使用com
3不在支持動態游標和服務器端游
4可以斷開Connection而保留當前數據集可用
5強類型轉換
6 xml支持

109.寫一個HTML頁面,實現以下功能,左鍵點擊頁面時顯示“您好”,右鍵點擊時顯示“禁止右鍵”。並在2分鍾后自動關閉頁面。
答:

<script language=javascript>
setTimeout('window.close();',3000000000);
function show()
{
if (window.event.button == 1)
{
alert("左");
}
else if (window.event.button == 2)
{
alert("右");
}else{
alert("中");
}
}
document.onmousedown=show;
</script>

110.大概描述一下ASP.NET服務器控件的生命周期
答:初始化 加載視圖狀態 處理回發數據 加載 發送回發更改通知 處理回發事件 預呈現 保存狀態 呈現 處置 卸載

113.,&和&&的區別。
&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and).

118.和 有什么區別?
答:表示綁定的數據源
是服務器端代碼塊

119.你覺得ASP.NET 2.0(VS2005)和你以前使用的開發工具(.Net 1.0或其他)有什么最大的區別?你在以前的平台上使用的哪些開發思想(pattern / architecture)可以移植到ASP.NET 2.0上 (或者已經內嵌在ASP.NET 2.0中)
答:1 ASP.NET 2.0 把一些代碼進行了封裝打包,所以相比1.0相同功能減少了很多代碼.
2 同時支持代碼分離和頁面嵌入服務器端代碼兩種模式,以前1.0版本,.NET提示幫助只有在分離的代碼文件,無法在頁面嵌入服務器端代碼獲得幫助提示,
3 代碼和設計界面切換的時候,2.0支持光標定位.這個我比較喜歡
4 在綁定數據,做表的分頁.Update,Delete,等操作都可以可視化操作,方便了初學者
5 在ASP.NET中增加了40多個新的控件,減少了工作量

125.分析以下代碼。
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。所以理論上並非所有異常都會被捕捉。)

127.什么是WSE?目前最新的版本是多少?
答:WSE (Web Service Extension) 包來提供最新的Web服務安全保證,目前最新版本2.0。

129.下面的例子中
using System;
class A{
public static int X;
static A(){
X=B.Y+1;
}
}
class B{
public static int Y=A.X+1;
static B(){}
static void Main(){
Console.WriteLine(“X={0},Y={1}”,A.X,B.Y);
}
}
產生的輸出結果是什么?
答:x=1,y=2

2. 不定項選擇:
(1) 以下敘述正確的是: B C
A. 接口中可以有虛方法。B. 一個類可以實現多個接口。 C. 接口不能被實例化。 D. 接口中可以包含已實現的方法。
(2) 從數據庫讀取記錄,你可能用到的方法有:B C D
A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader

2.對於一個實現了IDisposable接口的類,以下哪些項可以執行與釋放或重置非托管資源相關的應用程序定義的任務?(多選) ( ABC )
A.Close
B.Dispose
C.Finalize
D.using
E.Quit

3.以下關於ref和out的描述哪些項是正確的?(多選) ( ACD )
A.使用ref參數,傳遞到ref參數的參數必須最先初始化。
B.使用out參數,傳遞到out參數的參數必須最先初始化。
C.使用ref參數,必須將參數作為ref參數顯式傳遞到方法。
D.使用out參數,必須將參數作為out參數顯式傳遞到方法。

1.在對SQL Server 數據庫操作時應選用(A)。
a)SQL Server .NET Framework 數據提供程序;
b)OLE DB .NET Framework 數據提供程序;
c)ODBC .NET Framework 數據提供程序;
d)Oracle .NET Framework數據提供程序;

2.下列選項中,(C)是引用類型。
a)enum類型 b)struct類型 c)string類型 d)int類型

3.關於ASP.NET中的代碼隱藏文件的描述正確的是(C)
a)Web窗體頁的程序的邏輯由代碼組成,這些代碼的創建用於與窗體交互。編程邏輯唯一與用戶界面不同的文件中。該文件稱作為“代碼隱藏”文件,如果用C#創建,該文件將具有“.ascx.cs”擴展名。
b)項目中所有Web窗體頁的代碼隱藏文件都被編譯成.EXE文件。
c)項目中所有的Web窗體頁的代碼隱藏文件都被編譯成項目動態鏈接庫(.dll)文件。
d)以上都不正確。

4.以下描述錯誤的是(A)
a)在C++中支持抽象類而在C#中不支持抽象類。
b)C++中可在頭文件中聲明類的成員而在CPP文件中定義類的成員,在C#中沒有頭文件並且在同一處聲明和定義類的成員。
c)在C#中可使用 new 修飾符顯式隱藏從基類繼承的成員。
d)在C#中要在派生類中重新定義基類的虛函數必須在前面加Override。

5.C#的數據類型有(A)
a)值類型和調用類型; b)值類型和引用類型;c)引用類型和關系類型;d)關系類型和調用類型;

6.下列描述錯誤的是(D)
a)類不可以多重繼承而接口可以;
b)抽象類自身可以定義成員而接口不可以;
c)抽象類和接口都不能被實例化;
d)一個類可以有多個基類和多個基接口;

7.在DOM中,裝載一個XML文檔的方法(D)
a)save方法 b)load方法 c)loadXML方法 d)send方法

8.下列關於構造函數的描述正確的是(C)
a)構造函數可以聲明返回類型。
b)構造函數不可以用private修飾
c)構造函數必須與類名相同
d)構造函數不能帶參數

9.以下是一些C#中的枚舉型的定義,其中錯誤的用法有()
a)public enum var1{ Mike = 100, Nike = 102, Jike }
b)public enum var1{ Mike = 100, Nike, Jike }
c)public enum var1{ Mike=-1 , Nike, Jike }
d)public enum var1{ Mike , Nike , Jike }

10.int[][] myArray3=new int[3][]{
new int[3]{5,6,2},
new int[5]{6,9,7,8,3},
new int[2]{3,2}
};
myArray3[2][2]的值是(D)。
a)9 b)2 c)6 d)越界

11.接口是一種引用類型,在接口中可以聲明(A),但不可以聲明公有的域或私有的成員變量。
a)方法、屬性、索引器和事件;
b)方法、屬性信息、屬性;
c)索引器和字段;
d)事件和字段;

12.ASP.NET框架中,服務器控件是為配合Web表單工作而專門設計的。服務器控件有兩種類型,它們是(A )
a)HTML控件和Web控件 b)HTML控件和XML控件 c)XML控件和Web控件 d)HTML控件和IIS控件

13.ASP.NET中,在Web窗體頁上注冊一個用戶控件,指定該控件的名稱為”Mike”,正確的注冊指令為( D)
a)
b)
c)
d)以上皆非

14.在ADO.NET中,對於Command對象的ExecuteNonQuery()方法和ExecuteReader()方法,下面敘述錯誤的是(C)。
a)insert、update、delete等操作的Sql語句主要用ExecuteNonQuery()方法來執行;
b)ExecuteNonQuery()方法返回執行Sql語句所影響的行數。
c)Select操作的Sql語句只能由ExecuteReader()方法來執行;
d)ExecuteReader()方法返回一個DataReder對象;

15.下列ASP.NET語句(b)正確地創建了一個與SQL Server 2000數據庫的連接。
a)SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
b)SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
c)SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);
d)SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);

16.WinForm中,關於ToolBar控件的屬性和事件的描述不正確的是(D)。
a)Buttons屬性表示ToolBar控件的所有工具欄按鈕
b)ButtonSize屬性表示ToolBar控件上的工具欄按鈕的大小,如高度和寬度
c)DropDownArrows屬性表明工具欄按鈕(該按鈕有一列值需要以下拉方式顯示)旁邊是否顯示下箭頭鍵
d)ButtonClick事件在用戶單擊工具欄任何地方時都會觸發

17.在ADO.NET中執行一個存儲過程時,如果要設置輸出參數則必須同時設置參數的方向和(B ),必要時還要設置參數尺寸。
a)大小; b)上限; c)初始值; d)類型;
18.如果將窗體的FormBoderStyle設置為None,則( B)。
a)窗體沒有邊框並不能調整大小; b)窗體沒有邊框但能調整大小;
c)窗體有邊框但不能調整大小; d)窗體是透明的;

19.如果要將窗體設置為透明的,則( B)
a)要將FormBoderStyle屬性設置為None; b)要將Opacity屬性設置為小於100%得值;
c)要將locked 屬性設置為True; d)要將 Enabled屬性設置為True;

20.下列關於C#中索引器理解正確的是(B/C )
a)索引器的參數必須是兩個或兩個以上 b)索引器的參數類型必須是整數型
c)索引器沒有名字 d)以上皆非

21.下面描述錯誤的是( C/D)。
a)窗體也是控件; b)窗體也是類; c)控件是從窗體繼承來的; d)窗體的父類是控件類;

22.要對注冊表進行操作則必須包含( D)。
a)System.ComponentModel命名空間; b)System.Collections命名空間;
c)System.Threading命名空間; d)Microsoft.Win32命名空間;

23.要創建多文檔應用程序,需要將窗體的(D )屬性設為true。
a)DrawGrid; b)ShowInTaskbar; c)Enabled; d)IsMdiContainer;

24.如果設treeView1=new TreeView(),則treeView1.Nodes.Add(“根節點”)返回的是一個 ()類型的值。
a)TreeNode;
b)int;
c)string;
d)TreeView;

25.下面關於XML的描述錯誤的是(D)。
a)XML提供一種描述結構化數據的方法;
b)XML 是一種簡單、與平台無關並被廣泛采用的標准;
c)XML文檔可承載各種信息;
d)XML只是為了生成結構化文檔;

1.裝箱、拆箱操作發生在: ( C )
A.類與對象之間 B.對象與對象之間
C.引用類型與值類型之間 D.引用類型與引用類型之間

2.用戶類若想支持Foreach語句需要實現的接口是: ( A )
A.IEnumerableB.IEnumerator
C.ICollectionD.ICollectData

3..Net Framework通過什么與COM組件進行交互操作?( C )
A.Side By SideB.Web Service
C.InteropD.PInvoke

4..Net依靠以下哪一項技術解決COM存在的Dll Hell問題的?( A )
A.Side By SideB.Interop
C.PInvokeD.COM+

6.以下哪個是可以變長的數組?( D )
A.Array B.string[]
C.string[N] D.ArrayList

7.用戶自定義異常類需要從以下哪個類繼承:( A )
A.Exception B.CustomException
C.ApplicationException D.BaseException

9.對於一個實現了IDisposable接口的類,以下哪些項可以執行與釋放或重置非托管資源相關的應用程序定義的任務?(多選) ( ABC )
A.Close B.DisposeC.Finalize
D.using E.Quit

10.Net依賴以下哪項技術實現跨語言互用性?( C )
A.CLR B.CTS C.CLS D.CTT
11.請問: String類與StringBuilder類有什么區別?為什么在.Net類庫中要同時存在這2個類?(簡答)
如果要操作一個不斷增長的字符串,盡量不用String類,改用StringBuilder類。兩個類的工作原理不同:String類是一種傳統的修改字符串的方式,它確實可以完成把一個字符串添加到另一個字符串上的工作沒錯,但是在.NET框架下,這個操作實在是划不來。因為系統先是把兩個字符串寫入內存,接着刪除原來的String對象,然后創建一個String對象,並讀取內存中的數據賦給該對象。這一來二去的,耗了不少時間。而使用System.Text命名空間下面的StringBuilder類就不是這樣了,它提供的Append方法,能夠在已有對象的原地進行字符串的修改,簡單而且直接。當然,一般情況下覺察不到這二者效率的差異,但如果你要對某個字符串進行大量的添加操作,那么StringBuilder類所耗費的時間和String類簡直不是一個數量級的。

二、C# 部分*
13.以下哪些可以作為接口成員?(多選) ( ABDE )
A.方法B.屬性C.字段D.事件E.索引器
F.構造函數G.析構函數
14.以下關於ref和out的描述哪些項是正確的?(多選) ( ACD )
A.使用ref參數,傳遞到ref參數的參數必須最先初始化。
B.使用out參數,傳遞到out參數的參數必須最先初始化。
C.使用ref參數,必須將參數作為ref參數顯式傳遞到方法。
D.使用out參數,必須將參數作為out參數顯式傳遞到方法。

15.“訪問范圍限定於此程序或那些由它所屬的類派生的類型”是對以下哪個成員可訪問性含義的正確描述?( B )
A.public B.protected C.internal D.protected internal
16.class Class1
{
private static int count = 0;
static Class1()
{
count++;
}
public Class1()
{
count++;
}
}
Class1 o1 = new Class1();
Class1 o2 = new Class1();
請問,o1.Count的值是多少?( C )
A.1 B.2 C.3 D.4

17.abstract class BaseClass
{
public virtual void MethodA()
{
}
public virtual void MethodB()
{
}
}
class Class1: BaseClass
{
public void MethodA(string arg)
{
}
public override void MethodB()
{
}
}
class Class2: Class1
{
new public void MethodB()
{
}
}
class MainClass
{
public static void Main(string[] args)
{
Class2 o = new Class2();
Console.WriteLine(o.MethodA());
}
}
請問,o.MethodA調用的是: ( A )
A.BaseClass.MethodAB.Class2.MethodA
C.Class1.MethodAD.都不是

18.請敘述屬性與索引器的區別。
屬性 索引器
通過名稱標識。 通過簽名標識。
通過簡單名稱或成員訪問來訪問。 通過元素訪問來訪問。
可以為靜態成員或實例成員。 必須為實例成員。
屬性的 get 訪問器沒有參數。 索引器的 get 訪問器具有與索引器相同的形參表。
屬性的 set 訪問器包含隱式 value 參數。 除了 value 參數外,索引器的 set 訪問器還具有與索引器相同的形參表。

19.請敘述const與readonly的區別。
每一個class至多只可以定義一個static構造函數,並且不允許增加訪問級別關鍵字,參數列必須為空。
為了不違背編碼規則,通常把static數據成員聲明為private,然后通過statci property提供讀寫訪問。
const 關鍵字用於修改字段或局部變量的聲明。它指定字段或局部變量的值不能被修改。常數聲明引入給定類型的一個或多個常數。
const數據成員的聲明式必須包含初值,且初值必須是一個常量表達式。因為它是在編譯時就需要完全評估。
const成員可以使用另一個const成員來初始化,前提是兩者之間沒有循環依賴。
readonly在運行期評估賦值,使我們得以在確保“只讀訪問”的前提下,把object的初始化動作推遲到運行期進行。
readonly 關鍵字與 const 關鍵字不同: const 字段只能在該字段的聲明中初始化。readonly 字段可以在聲明或構造函數中初始化。因此,根據所使用的構造函數,readonly 字段可能具有不同的值。另外,const 字段是編譯時常數,而 readonly 字段可用於運行時常數。
readonly 只能在聲明時或者構造函數里面初始化,並且不能在 static 修飾的構造函數里面。

21.您需要創建一個ASP.NET應用程序,公司考慮使用Windows身份認證。
所有的用戶都存在於AllWin這個域中。您想要使用下列認證規則來配置這個應用程序:
a、 匿名用戶不允許訪問這個應用程序。
b、 所有雇員除了Tess和King都允許訪問這個應用程序。
請問您應該使用以下哪一個代碼段來配置這個應用程序?( A )
A.

B.

C.

D.

E.

22.您要創建一個顯示公司員工列表的應用程序。您使用一個DataGrid控件顯示員工的列表。您打算修改這個控件以便在這個Grid的Footer顯示員工合計數。請問您應該怎么做?( C? )
A.重寫OnPreRender事件,當Grid的Footer行被創建時顯示合計數。
B.重寫OnItemCreated事件,當Grid的Footer行被創建時顯示合計數。
C.重寫OnItemDataBound事件,當Grid的Footer行被創建時顯示合計數。
D. 重寫OnLayout事件,當Grid的Footer行被創建時顯示合計數。

23.您要創建ASP.NET應用程序用於運行AllWin公司內部的Web站點,這個應用程序包含了50個頁面。您想要配置這個應用程序以便當發生一個HTTP代碼錯誤時它可以顯示一個自定義的錯誤頁面給用戶。您想要花最小的代價完成這些目標,您應該怎么做?(多選)( CD )
A.在這個應用程序的Global.asax文件中創建一個Application_Error過程去處理ASP.NET代碼錯誤。
B.在這個應用程序的Web.config文件中創建一個applicationError節去處理ASP.NET代碼錯誤。
C.在這個應用程序的Global.asax文件中創建一個CustomErrors事件去處理HTTP錯誤。
D.在這個應用程序的Web.config文件中創建一個CustomErrors節去處理HTTP錯誤。
E.在這個應用程序的每一頁中添加一個Page指示符去處理ASP.NET 代碼錯誤。
F. 在這個應用程序的每一頁中添加一個Page指示符去處理ASP.NET HTTP錯誤。

24.您的公司有一個DB Server,名為AllWin,其上裝了MS SQLSERVER 2000。現在需要您寫一個數據庫連接字符串,用以連接AllWin上SQL SERVER中的一個名為PubBase實例的Test庫。請問,應該選擇下面哪一個字符串?( B )
A. “Server=AllWin;Data Source=PubBase;Initial Catalog=Test;Integrated Security=SSPI”
B. “Server= AllWin;Data Source=PubBase;Database=Test;Integrated Security= SSPI”
C. “Data Source= AllWin \PubBase;Initial Category=PubBase;Integrated Security= SSPI”
D. “Data Source= AllWin \ PubBase;Database=Test;Integrated Security= SSPI”

25.您為AllWin公司創建了一個ASP.NET應用程序。這個應用程序調用一個 Xml Web Service。這個 Xml Web Service 將返回一個包含了公司雇員列表的DataSet對象。請問您該如何在這個程序中使用這個 Xml Web Service?( ? )
A.在“引用”對話框的.Net標簽中選擇 System.Web.Services.dll。
B.在“Web引用”對話框中輸入這個 XML Web service 的地址。
C.在您的 Global.asax.cs 中添加一條 using 語句並指定這個 XML Web service 的地址。
D.在您的 Global.asax.cs 中寫一個事件處理器導入這個 Xml Web Service 相應的 .wsdl 和 .disco 文件。

26.您要創建一個ASP.NET應用程序在DataGrid控件中顯示一個經過排序的列表。產品數據被存放於一個名為PubBase的Microsoft SQL Server 數據庫。每個產品的主鍵是ProductID,Numeric型並且每個產品有一個字母描述字段,名為ProductName。您使用一個SqlDataAdapter對象和一個SqlCommand對象通過調用一個存儲過程從數據庫中獲取產品數據。您將SqlCommand對象的CommandType屬性設置為CommandType.StoredProcedure,並將它的CommandText屬性設置為procProductList。您成功的獲取了一個DataTable對象,其中是已經按ProductID降序排列的產品列表。您打算顯示以相反的字母順序排列的ProductName,請問該怎么做? ( B )
A. 將SqlCommand對象的CommandType屬性修改為CommandType.Text,將CommandText屬性修改為”SELECT * FROM procProductList ORDER BY ProductName DESC”。然后將這個DataTable對象綁定到DataGrid控件。
B. 創建一個基於這個DataTable對象的新的DataView並將這個DataView的Sort屬性設置為“ProductName DESC”。然后將這個DataView對象綁定到DataGrid控件。
C. 將DataGrid控件的AllowSorting屬性設置為True,並將DataGridColumn的SortExpression屬性設置為 “ProductName DESC”.以顯示ProductName。然后將這個DataTable對象綁定到DataGrid控件。
D. 將DataTable對象的DisplayExpression屬性設置為 “ORDER BY ProductName DESC”.。然后將這個DataTable對象綁定到DataGrid控件。
76.C#代碼實現,確保windows程序只有一個實例(instance)
///

///應用程序的主入口點。
///

 

[STAThread]
staticvoid Main()
{
//防止程序多次運行
if(!OneInstance.IsFirst(“GetPayInfo”))
{
MessageBox.Show (“警告:程序正在運行中! 請不要重復打開程序!可在右下角系統欄找到!”,”程序錯誤提示:”,MessageBoxButtons.OK,MessageBoxIcon.Stop);
return;
}
Application.Run(new Form1());
}
// ******************* 防止程序多次執行 **************************
publicabstractclass OneInstance
{
///

///判斷程序是否正在運行
///

 

///程序名稱 ///如果程序是第一次運行返回True,否則返回False
publicstaticbool IsFirst(string appId)
{
bool ret=false;
if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero)
{
CreateMutex(IntPtr.Zero,0,appId);
ret=true;
}
return ret;
}
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticextern IntPtr OpenMutex(
uint dwDesiredAccess, // access
int bInheritHandle, // inheritance option
string lpName // object name
);

[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticextern IntPtr CreateMutex(
IntPtr lpMutexAttributes, // SD
int bInitialOwner, // initial owner
string lpName // object name
);
}

4、DataReader和DataSet的異同
DataReader和DataSet最大的區別在於,DataReader使用時始終占用SqlConnection,在線操作數據庫..任何對SqlConnection的操作都會引發DataReader的異常..因為DataReader每次只在內存中加載一條數據,所以占用的內存是很小的..因為DataReader的特殊性和高性能.所以DataReader是只進的..你讀了第一條后就不能再去讀取第一條了..
DataSet則是將數據一次性加載在內存中.拋棄數據庫連接..讀取完畢即放棄數據庫連接..因為DataSet將數據全部加載在內存中.所以比較消耗內存…但是確比DataReader要靈活..可以動態的添加行,列,數據.對數據庫進行回傳更新操作…

6. 私有程序集與共享程序集有什么區別?
一個私有程序集通常為單個應用程序所使用,並且存儲於這個應用程序所在的目錄之中,或此目錄下面的一個子目錄中。共享程序集通常存儲在全局程序集緩存(Global Assembly Cache)之中,這是一個由.NET運行時所維護的程序集倉庫。共享程序集通常是對許多應用程序都有用的代碼庫,比如.NET Framework類。

7. 請解釋進程與線程的區別?進程與程序的區別?
一般,一個應用程序對應於一個或多個進程,可以把進程看作是該應用程序在*作系統中的標識;而一個進程通常由多個線程組成,而線程是*作系統為該應用程序分配處理時間的最小單元。

8. CLR與IL分別是什么含義?
CLR:公共語言運行時,類似於Java中的JVM,Java虛擬機;在.Net環境下,各種編程語言使用一種共同的基礎資源環境,這就是CLR,CLR將直接與*作系統進行通信,而編程語言如C#.NET將盡量避免直接與*作系統直接通信,加強了程序代碼的執行安全性,可以這樣看:CLR就是具體的編程語言如:C#.NET與*作系統之間的翻譯,同時它為具體的編程語言提供了許多資源:
IL,中間語言,也稱MSIL,微軟中間語言,或CIL,通用中間語言;所有.NET源代碼(不管用哪種語言編寫)在進行編譯時都被編譯成IL。在應用程序運行時被即時(Just-In-Time,JIT)編譯器處理成為機器碼,被解釋及執行。

13. 請解釋web.config文件中的重要節點
appSettings包含自定義應用程序設置。
system.web 系統配置
compilation動態調試編譯設置
customErrors自定義錯誤信息設置
authentication身份驗證,此節設置應用程序的身份驗證策略。
authorization授權, 此節設置應用程序的授權策略.

14. 請解釋ASP。NET中的web頁面與其隱藏類之間的關系?
一個ASP.NET頁面一般都對應一個隱藏類,一般都在ASP.NET頁面的聲明中指定了隱藏類例如一個頁面Tst1.aspx的頁面聲明如下

Codebehind=”Tst1.aspx.cs” 表明經編譯此頁面時使用哪一個代碼文件
Inherits=”T1.Tst1″ 表用運行時使用哪一個隱藏類

15. 什么是ViewState,能否禁用?是否所用控件都可以禁用?
ViewState是保存狀態的一種機制,EnableViewState屬性設置為false即可禁用

16. 當發現不能讀取頁面上的輸入的數據時很有可能是什么原因造成的?怎么解決
很有可能是在Page_Load中數據處理時沒有進行Page的IsPostBack屬性判斷

17. 請解釋什么是上下文對象,在什么情況下要使用上下文對象
上下文對象是指HttpContext類的Current 屬性,當我們在一個普通類中要訪問內置對象(Response,Request,Session,Server,Appliction等)時就要以使用此對象

18. 請解釋轉發與跳轉的區別?
轉發就是服務端的跳轉A頁面提交數據到B頁面,B頁面進行處理然后從服務端跳轉到其它頁面
跳轉就是指客戶端的跳轉

4. 簡述全局變量和局部變量的區別。
全局變量和局部變量的差別:程序上講是作用域不同,生存期不同,存儲上來講,存儲的位置不同,
一個存放在靜態存儲區,另一個存放在動態存儲區。

5. 簡述傳值調用與傳址調用的主要區別。
傳值調用,實參把值傳遞給參數,在被調函數中形參的值得變化不會影響實參。傳址調用,實參把值的地址傳給了形參,如果被調函數中形參所指的值發生了變化,實參所指的值夜將變化,因為他們指向的是同一個地址。

6. 試述函數和過程的區別。
函數和過程不是asp.net的內容吧?pascal中有這個概念,函數可有返回值,存過程沒有(但是可以通過
參數達到這樣的效果)。

7. 對變量而言,遵循“先聲明,后使用”的原則有什么好處。
先聲名,在編譯調試的過程中可以及早的發現問題。眾所周知,解決問題越早付出的代價越少。

8. HtmlGenericControl控件與那些Html標記對應?
HtmlGenericControl控件與那些Html標記對應?可以到msdn上察看。這就不累贅了。

9. 控件LinkButton與Button的主要區別在哪里?
LinkButton和Button外觀上不同,linkbutton上的文本顯示為超鏈接的樣子,用法和Button相同。

10. 控件ImageButton與Image有哪些不同?
ImageButton上顯示的是圖片,用法和Button也大同小異。

13. 在設計ASP.NET應用程序時,怎樣獲取客戶端的IP地址?
可以在客戶端提取IP,也可以在服務器端提取。客戶端用jscript或javascript,服務器端有相應的類解決。

14. 在ASP.NET應用程序設計中,Server.MapPath()方法有什么實用價值?
Server.MapPath(),程序做出來以后,移植性好。

19. 簡述認證和授權的概念。
包名:System.Security.Principal:
Identity:(識別)包裝了已經驗證過的用戶名和認證的方式
主要成員:Name, IsAuthenticated, AuthenticationType
Principal: 當前代碼的security上下文。包含Identity和Roles. 用於授權
主要成員:IsInRole, Identity

* // 一般用戶可以有多個Indentity, 即多種身份來訪問不同資源 –pending
* 每個AppDomain里面都有CallContext,CallContext里面包含Principal。線程在啟動的時候也會帶上

Pricncipal的ref。靜態方法,僅對當前線程
* Thread.CurrentPrincipal / WindowsIdentity.GetCurrent()靜態方法返回當前用戶。

Permission: 權限。不是用戶需要權限,是執行它的代碼需要權限。
Demand()要求調用此代碼的代碼有什么權限。Assert()斷言
三種權限:
1 代碼權限: 基類為CodeAccessPermission .用來保護環境變量、文件、訪問非托管代碼。
2 Identity權限:基類為CodeAccessPermission。對應於控制台中的信任集設定。基於發行者、強類型、域、URL。總表:
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/cpguide/html/cpconidentitypermissions.htm
3. PrincipalPermission(Role Based Permission)

Authorization 授權 判斷用戶是否有權操作,比如登錄的用戶有沒有權限訪問資源或者數據庫
Authentication 認證 用戶的Identity. 主要有:HTTP基礎認證、證書、Kerberos、Passport、NTLM、
Forms-based、Digest

這兩個東西最好從讀音上區別,以前一直糊塗。一般應用先authenticate用戶, 判斷用戶是否能鏈接到系
統。然后authorization, 判斷對某個功能是否有權限。

authorization一般有兩種:ACL/ROLES
ACL:Acess Control Lists. 判斷用戶是否在有權限的用戶組內。缺點:不能定義動態條件。
Role based: 用戶加入到某個role以后,自動獲得了很多特定的權限。先判斷請求者的Identity, 然后看

它是否在Role里面。類似windows用戶和組的關系

1. 代碼中的檢查方式:new PrincipalPermission(name,role).Demand();
2. 利用Attribute的方式:[PrincipalPermissionAttribute(SecurityAction.Demand,Name="MyUser",

Role="Administrator")]
3. 使用 Principal 對象中的屬性和 IsInRole 方法執行顯式安全性檢查。
4. web.config里面authorization節中的users/roles(這個一般資料都沒提到)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM