1.維護數據庫的完整性、一致性、你喜歡用觸發器仍是自寫業務邏輯?爲何?
儘量用約束(包括CHECK、主鍵、惟一鍵、外鍵、非空字段)實現,這種方式的效率最好;其次用觸發器,這種方式能夠保證不管何種業務系統訪問數據庫都能維持數據庫的完整性、一致性;最後再考慮用自寫業務邏輯實現,但這種方式效率最低、編程最複雜,當爲下下之策javascript
2.ADO.NET相對於ADO等主要有什麼改進?
ADO 數據以Recordset 形式存儲(Recordset看起來更像單表,若是讓Recordset以多表的方式表示就必須在SQL中進行多表鏈接),ADO使用COM技術,這就要求所使用的數據類型必須符合COM規範;ADO.NET以DataSet 形式存儲,ADO.NET基於XML格式,數據類型更爲豐富而且不須要再作COM編排導 致的數據類型轉換,從而提升了總體性能
ADO中Recordset對數據庫持續鏈接訪問;ADO.NET中Dataset提供對數據庫斷開鏈接(離線數據庫)。
ADO.NET與ADO相比,優點在於提供了數據集和數據適配器,有利於實現分佈式處理,下降對數據庫服務器資源的消耗。html
3.ASP.NET與ASP相比,主要有哪些進步?
asp.net(編譯型)可使用強類型語言頁面是編譯,執行速度快, 增長安全性和可靠性,經過繼承機制來支持代碼的重用,提供聲明性服務器控件減小代碼行數Asp(解釋型)須要解釋,執行速度慢,重用代碼不方便,沒有調試機制java
4.C#中的委託是什麼?事件是否是一種委託?
委託是一個能夠對方法進行引用的類。與其餘的類不一樣,委託類具備一個簽名,而且它只能對與其簽名匹配的方法進行引用。這樣,委託就等效於一個類型安全函數指針或一個回調。事件是一種委託程序員
5.C#中 property 與 attribute的區別,他們各有什麼用處,這種機制的好處在哪裏?
Property(屬性):通常是指一對get,set方法,能夠稱爲是類的成員屬性,它大部分時候用來對類的成員變量進行讀取或賦值。
Attributes(特徵):公共語言運行時容許你添加相似關鍵字的描述聲明,叫作attributes, 它對程序中的元素進行標註,如類型、字段、方法和屬性等。Attributes和Microsoft .NET Framework文件的元數據保存在一塊兒,能夠用來向運行時描述你的代碼,或者在程序運行的時候影響應用程序的行爲。
通俗講Attribute是類,不過是一類比較特殊的類,Attribute必須寫在一對方括號中,用來處理net中多種問題:序列化、程序的安全特徵等等.
對於Property,咱們能夠用Attributes給它加上一些「特性」,好比是否能夠序列化等。web
六、接口和抽象類有什麼區別?你選擇使用接口和抽象類的依據是什麼?
接口是一個純粹的抽象類,沒有任何實際的東西,只是定義了一個框架,而抽象類裏面能夠有實際的一個方法,並不要求全部的方法都是抽象的。能夠實現一個接口 中的全部方法,也能夠繼承一個抽象的類,而後覆寫其中的方法。接口通常只有方法,而沒有數據成員或屬性。抽象類有方法,也有數據成員或屬性,通常狀況下, 優先考慮用接口,只有當可能要訪問到數據成員或屬性時,用抽象類。正則表達式
7:談談final, finally, finalize的區別。
final 修飾符用於指定類不能擴展或者方法或屬性不能重寫。它將防止其餘類經過重寫重要的函數來更改該類的行爲。帶有 final 修飾符的方法能夠由派生類中的方法來隱藏或重載。 finally 塊用於清除在 try 塊中分配的任何資源。控制老是傳遞給 finally 塊,與 try 塊的存在方式無關(待肯定)。 finalize容許 Object 在「垃圾回收」回收 Object 以前嘗試釋放資源並執行其餘清理操做。算法
8:new有幾種用法
第一種:實例化類 new Class();
第二種:覆蓋方法 public new XXXX(){}
第三種:new 約束指定泛型類聲明中的任何類型參數都必須有公共的無參數構造函數。sql
9:如何把一個array複製到arrayList裏
foreach( object o in array ){ arrayList.Add(o) }數據庫
10:DataGrid、DataSource能夠鏈接什麼數據源
DataSet、DataTable、DataView、IList編程
11:概述反射、序列化(串行化)、反序列化、持久化
反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對象。可使用反射動態地建立類型的實例,將類型綁定到現有對象,或從現有對象中獲取類型,而後,能夠調用類型的方法或訪問其字段和屬性。反射就是動態獲取程序集信息
序列化:也叫串行化,是將對象轉換爲容易傳輸的格式的過程(序列化類的時候是從屬性讀取值以某種格式保存下來,而類的成員函數不會被序列化,.net存在的幾種默認序列化:二進制、XML、JSON).
反序列化是將存儲的數據轉化爲原來的對象。
持久化的對象:已經存儲到數據庫或保存到本地硬盤中的對象,咱們稱之爲持久化對象
12:概述OR/Mapping 的原理
利用反射,配置 將類同數據庫表的映射
13:類成員有幾種可訪問形式
public: 同一程序集中的任何其餘代碼或引用該程序集的其餘程序集均可以訪問該類型或成員
protected:只有同一類或結構或者此類的派生類中的代碼才能夠訪問的類型或成員
private:只有同一類或結構中的代碼能夠訪問該類型或成員
internal:同一程序集中的任何代碼均可以訪問該類型或成員,但其餘程序集中的代碼不能夠
protected internal:由其聲明的程序集或另外一個程序集派生的類中任何代碼均可訪問的類型或成員。 從另外一個程序集進行訪問必須在類聲明中發生,該類聲明派生自其中聲明受保護的內部元素的類,而且必須經過派生的類類型的實例發生。
14:用sealed修飾的類有什麼特色
sealed 修飾符用於防止從所修飾的類派生出其它類。若是一個密封類被指定爲其餘類的基類,則會發生編譯時錯誤。密封類不能同時爲抽象類。
sealed 修飾符主要用於防止非有意的派生,可是它還能促使某些運行時優化。具體說來,因爲密封類永遠不會有任何派生類,因此對密封類的實例的虛擬函數成員的調用能夠轉換爲非虛擬調用來處理。
15:執行下面代碼後:
String strTemp =」abcdefg 某某某」;
Int i System.Text.Encoding.Default.GetBytes(strTemp).Length;
Int j = strTemp.Length;
答:i=(14 ) ;j=(11 ) 中文兩個字節
16:C#中,string str = null 與 string str =」」,請儘可能用文字說明詳細的內存空間分配的區別)
string str = null 是不分配內存空間,而string str = 「」 給它分配長度爲空字符串的內存空間。
17:用.net作B/S結構的系統,您是用幾層結構來開發,每一層之間的關係以及爲何要這樣分層?
答:通常爲3層。數據訪問層(DAL),業務層(BLL),表示層。
數據訪問層對數據庫進行增刪改查。
業務層通常分爲二層,業務表現層實現與表示層的溝通,業務規則層實現用戶密碼的安全等。
表示層爲了與用戶交互例如用戶添加表單
優勢: 分工明確,條理清晰,易於調試,並且具備可擴展性。
缺點: 增長成本。
18:什麼是ASP.NET中的用戶控件
用戶控件就是.ascx擴展名的文件,能夠拖到不一樣的頁面中調用,以節省代碼.好比登錄可能在多個頁面上有,就能夠作成用戶控件,可是有一個問題就是用戶控件拖到不一樣級別的目錄下后里面的圖片等的相對路徑會變得不許確,須要自已寫方法調整。
19:應用程序域?受管制的代碼?強類型系統?裝箱和拆箱?重載?CTS、CLS和CLR分別做何解釋?
應用程序域能夠理解爲一種輕量級進程。起到安全的做用。佔用資源小
託管代碼(Managed Code)是由公共語言運行庫(CLR)執行的代碼,而不是由操做系統直接執行。託管的代碼就是把有關內存管理(內存申請,內存釋放,垃圾回收之類的)所有都是.net的CLR來管理,就是說使用託管的代碼把底層的一些操做都封裝起來了,不能直接進行內存的讀取之類的和硬件相關的操做,優勢就是比較安全,不會出現諸如內存泄露之類的問題,缺點也很明顯,不能直接讀取內存,性能上會有損失,使用起來有時也不夠靈活。
受管制的代碼:unsafe非託管代碼,不通過CLR運行。非託管的代碼能夠直接進行硬件操做,性能較高。
強類型系統 RTTI:類型識別系統。C# 是強類型語言;所以每一個變量和對象都必須具備聲明類型。爲全部變量指定數據類型稱爲「強類型」。
裝箱就是把值類型到引用類型的轉換;拆箱就是引用類型到值類型的轉換
重載是僅方法名相同,但參數個數不一樣或者參數類型不一樣
CTS:通用語言系統。CLS:通用語言規範。CLR:公共語言運行庫。
C#3.0+後的
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三、2一、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 (由於在new B()前會先new A())
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) select identity;
58:什麼是WEB控件?使用WEB控件有那些優點?
答 web控件就是能夠在服務器執行的控件,優點在於能夠回傳數據,帶有事件驅動
59: 請解釋ASP.NET中以什麼方式進行數據驗證?
答 .NET中提供了幾個數據驗證控件,能夠在服務器端或者客戶端進行驗證。
60: 請談談對正則表達式的見解?
答 主要用在字符串的匹配上面,與具體的語言環境無關。
61: ASP.NET中共有幾種類型的控件?各有什麼區別?
答 Html 控件 傳統的html標記
Web 控件 能夠回傳數據,事件驅動
自定義 控件 在原有控件的基礎上增長功能
複合控件 多個子控件複合成一個新的控件
62: WEB控件能夠激法服務端事件,請談談服務端事件是怎麼發生並解釋其原理?自動傳回是什麼?爲何要使用自動傳回。
答 經過實現IPostBack這個接口來執行事件。自動回傳就是AutoPostBack,使用自動回傳能夠監視客戶端變化狀況並將這種改變返回到服務器端
63: WEB控件及HTML服務端控件可否調用客戶端方法?若是能,請解釋如何調用?
答 能,服務器端控件在html中表現形式仍是html標記,因此能夠執行客戶端事件,有多種方式:一、control.Attributes["onclick"]=」…;」;
二、
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
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」);
答:不相等,由於比較的是對象,即便是j = i也依舊不相等
70.什麼叫作SQL注入,如何防止?請舉例說明。
答:利用sql關鍵字對網站進行攻擊。過濾關鍵字’等
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#的數據類型有(b)
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控件
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中執行一個存儲過程時,若是要設置輸出參數則必須同時設置參數的方向和(D),必要時還要設置參數尺寸。
a)大小; b)上限; c)初始值; d)類型;
18.若是將窗體的FormBoderStyle設置爲None,則( a)。
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(「根節點」)返回的是一個 (d)類型的值。
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 Side B.Web Service
C.Interop D.PInvoke
4..Net依靠如下哪一項技術解決COM存在的Dll Hell問題的?( A )
A.Side By Side B.Interop
C.PInvoke D.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.Dispose C.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類簡直不是一個數量級的。
2、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 修飾的構造函數裏面。
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?( B )
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
);
}
四、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. 簡述傳值調用與傳址調用的主要區別。
傳值調用,實參把值傳遞給參數,在被調函數中形參的值得變化不會影響實參。傳址調用,實參把值的地址傳給了形參,若是被調函數中形參所指的值發生了變化,實參所指的值夜將變化,由於他們指向的是同一個地址。
7. 對變量而言,遵循「先聲明,後使用」的原則有什麼好處。
先聲名,在編譯調試的過程當中能夠及早的發現問題。衆所周知,解決問題越早付出的代價越少。
9. 控件LinkButton與Button的主要區別在哪裏?
LinkButton和Button外觀上不一樣,linkbutton上的文本顯示爲超連接的樣子,用法和Button相同。
10. 控件ImageButton與Image有哪些不一樣?
ImageButton上顯示的是圖片,用法和Button也大同小異。
13. 在設計ASP.NET應用程序時,怎樣獲取客戶端的IP地址?
能夠在客戶端提取IP,也能夠在服務器端提取。客戶端用jscript或javascript,服務器端有相應的類解決。
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(這個通常資料都沒提到)