1. 程式人生 > WINDOWS開發 >C#.NET重點知識點彙總(三)

C#.NET重點知識點彙總(三)

A.填空題
1.類的三大特性是(封裝性)(繼承性)(多型性)。
2.SQL語言中,用於事務回滾的語句是(rollback)。
3.宣告靜態變數的關鍵字是(static),宣告常量的關鍵字是(const)。
4.軟體工程的三大文件(需求分析)(概要設計)(詳細設計)。
5.為資料表建立索引的目的是(提高查詢的檢索效能)。
6.B/S通常使用的結構設計模型分為(表示層)(業務邏輯層)(資料庫層)。
7.SQL SERVER中索引型別包括的三種類型分別是(唯一索引)(簇索引)(非簇索引)。
8.在SQL SERVER2000中的四中約束(主鍵)(唯一性)(外來鍵)(檢查約束)。
9.Codebehind主要是通過把(頁面程式碼)和(功能程式碼)放在不同的檔案中來實現程式碼分離的。

10.計算欄位的平均值和最大值的函式是:(Average())(Max())
11.XML的全稱是(可擴充套件標記語言),提供了快速和有效地讀寫XML的方式的類分別是(
XmlTextReader)(XmlTextWriter)。;
12. SQL SERVER 中的儲存過程是(儲存過程是一組預先編譯好的T-SQL程式碼)。
13.C#中所有的型別實質上都是從(object)類派生而來的。
14..NET執行庫支援被稱為(委託)的引用型別,其作用類似於C++中函式指標的用途。
15. 在流程控制中CONTINUE的作用(終止當前迴圈)

B.簡答題
1.描述下C#中的程式集?程式集是有哪兩部分組成?
用於代替DLL和可執行檔案(EXE)概念的自我描述.程式集由中間語言和元資料組成。

2.什麼是元資料?
描述程式集的內容,通過將元資料嵌入每個程式集中,任何程式集都可以實現完全的自我描述,從而簡化了釋出使用較舊技術的元件時所需要的工作.

3.請寫出 BOOL flag 與“零值”比較的 if 語句?請寫出 char p 與“零值”比較的 if 語句?
if(flag) if(flag==null)

4.說出下面幾個函式的區別:
private void test(string str){…}被呼叫函式不更新引數的值,因為傳遞的是引數的副本
private void test(ref string str){…}關鍵字REF用來引用傳遞引數,從而使得被呼叫方法能夠更新引數的值.
private void test(out string str){…} OUT修飾引數,是該方法會把一個值從自身回傳給呼叫函式.

5.什麼是強型別系統?
中間語言一個重要方面是建立在非常強的型別化功能上.所有的變數都清晰地標記為屬於某個特定資料型別,特別是如果給定的引用表示某個資料型別比較模糊的,那麼中間語言一般不允許對它執行任何操作.

6.值型別和引用型別的區別?
值型別的變數總是一個值,當宣告時編譯器分配與此型別相關聯的位元組數,而且你將直接操已經分配的記憶體,另外在傳遞值型別的變數時,是在傳遞變數的值而不是它的底層物件的引用。而宣告一個引用型別的變數時,是在操作對此物件的引用,而不是象值型別那樣直接操作資料。主要的引用型別有:類,陣列,介面,委託。

7.如何理解委託?
委託是一個可以對方法進行引用的類。與其他的類不同,委託類具有一個簽名,並且它只能對與其簽名匹配的方法進行引用。這樣,委託就等效於一個型別安全函式指標或一個回撥。事件是一種委託.

8.事務是什麼?
事務的所有操作必須完成,否則事務將被撤消。也就是說,事務是作為一個整體的單位處理,不可以被分割,事務中操作失敗回滾,處理成功時提交。

9.解釋過載函式、虛擬函式的概念?
過載分為函式過載和運算子過載。通過使用過載機制,可以對一個函式名(或運算子)定義多個函式(或運算功能)只不過要求這些函式的引數(或參加運算的運算元)型別有所不同。
函式過載:指一組功能類似但函式引數型別(個數)不同的函式可以共用一個函式名.當編譯器遇到過載函式的呼叫語句時,它能夠根據不同的引數型別或不同的引數個數選擇一個合適的函式.
運算子過載:指對於不同資料型別的運算元,同一個運算子所代表的運算功能可以不同.
虛擬函式是用於實現多型的機制。就是通過基類訪問派生類定義的函式。虛擬函式一般是在派類中使用同基類相同的函式的時候用的,為了正確區分所要呼叫的函式是基類還是派生類函式。若在派生類中聲明瞭一個虛擬函式則呼叫的是派生類中的函式,而非基類中的函式。

10.請簡述以下兩個for迴圈的優缺點
for (i=0; i<N; i++)
{
if (condition)
DoSomething();
else
DoOtherthing();
}
--------
if (condition)
{
for (i=0; i<N; i++)
DoSomething();
}
else
{
for (i=0; i<N; i++)
DoOtherthing();
}
第一個優點:程式簡潔;缺點:多執行了N-1次邏輯判斷,並且打斷了迴圈“流水線”作業,使得編譯器不能對迴圈進行優化處理,降低了效率。
第二個優點:迴圈的效率高;缺點:程式不簡潔。

11.描述描述怎樣區分ExcuteNonQuery ,ExcuteDataReader和ExcuteScalar方法?
ExecuteNonQuery;用於查詢不返回結果集或者不返回除了所影響的行數之外的任何值.
ExecuteScalar:用於執行返回一個值的命令.
ExecuteReader:用於執行命令,並將結果集作為DataReader物件返回.
12. 列出ADO.NET中讀寫資料庫的主要的幾個類?它們的作用?
SqlConnection OleDbConnection >> 連線資料庫
SqlCommand OleDbCommand >> SQL語句的包裝或儲存過程的呼叫
SqlDataAdapter OleDbDataAdapter >> 用於儲存選擇,插入,更新和刪除語句的類,
填充DataSet
SqlDataReader OleDbDataReader >> 只向前的連線資料庫讀取器
DataSet>> 用於資料庫操作的資料集。

13. 什麼是中間語言(IL)?它的作用?
中間語言代替了COM的呼叫約定和記憶體管理標準,所有其他的NET語言都將編譯為這種語言,結果就是程式設計師不必來確保他們的程式碼將與一種確定的二進位制標準進行互操作,而是由不同。NET語言編譯器將程式碼編譯到IL中來確保這種互操作性。

14. 在SQL SERVER2000中儲存過程和觸發器的區別?
1.儲存過程是一段預先編譯好的T-SQL程式碼,可以被重複呼叫,觸發器是在進行表更改操作
時才執行功能.
2.觸發器執行的時間較長,效能較低;儲存過程重用性好,執行效能較高.
3.觸發器多用在完善表的資料完整性和約束;儲存過程多用在方便重複使用資料庫操作.

15.在ASP.NET中頁面之間傳遞值的方式?(儘可能敘述)
Session;Cookie;Server;Transfer;QueryString

16.分析類和結構的異同?
1.結構可以繼承介面,但不允許繼承類和其他結構;2.結構是值型別,類是引用型別;
3.結構不允許宣告解構函式;4,結構是從棧分配記憶體,而類是從堆上分配記憶體。

17.short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?
short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉化為short型。可修改為s1 =(short)(s1 + 1)。short s1 = 1; s1 += 1正確。

18.敘述ASP.NET中的equiredFieldValidator和RegularExpressionValitor驗證控制元件及作用?
RequiredFieldValidator 如果指定的文字控制元件空白,產生錯誤
RegularExpressionValitor文字域的值與使用常規表示式指定的模式不匹配是,產生錯誤。

19.敘述下Using 的用法?
Using語句用來確保即使發生異常,也會呼叫dispose方法,來釋放系統空閒的資源。

20.C#中介面和類有什麼異同?
介面類似於類,但它們有區別:介面中的方法沒有訪問限制符;在介面中不執行任何方法;
介面中的方法不能如抽象方法那樣定義為虛擬和顯式的,由實現介面的類來決定如何實現方法;介面不能示例化,沒有建構函式,也沒有欄位,在介面中不允許進行操作符的過載。

21.什麼是裝箱和拆箱?
裝箱是將值型別轉換為引用型別的過程,相反的過程(即將引用型別轉換為值型別)被稱為拆箱。在裝箱是不需要顯示的型別轉換,但在拆箱是需要型別轉換,這是因為在拆箱是物件可以被轉換為任何型別。

22.什麼是WEBSERVICE ?
從表面上看,Web Service就是一個應用程式,它向外界暴露出一個能夠通過Web進行呼叫的API。這就是說,你能夠用程式設計的方法通過Web呼叫來實現某個功能的應用程式。從深層次上看,Web Service是一種新的Web應用程式分支,它們是自包含、自描述、模組化的應用,可以在網路(通常為Web)中被描述、釋出、查詢以及通過Web來呼叫。

23.軟體開發過程一般有幾個階段?
系統需求分析,系統概要設計,系統詳細設計,編碼,系統測試,安裝除錯。

24.在ASP。NET中自定義控制元件是什麼?
使用者控制元件是用ASP.NET程式碼所建立的控制元件,它的建立如同在標準的ASP.NET WEB頁中建立控制元件一樣,不同之處在於一旦建立了使用者控制元件,就可以在多個ASP.NET頁面中重複使用他們。

25.ASP.NET的Application、Session、Cookie、ViewState、Cache 、Hidden等變數的區別是什麼?
Application
1.Application用來儲存所有使用者共用的資訊;
2.在Asp時代,如果要儲存的資料在應用程式生存期內不會或者很少發生改變,那麼使用Application是理想的選擇。但是在Asp.net開發環境中我們把類似的配置資料放在Web.config中;
3. 如果要使用Application 要注意的是所有的寫操作都要在Application_OnStart事件中完成(global.Asax),儘管可以使用Application.Lock()避免了衝突,但是它序列化了對Application的請求,會產生嚴重的效能瓶頸;
4.不要使用Application儲存大資料量資訊;
5.程式碼:Application[“UserID”]=”test”;
String UserName=Application[“UserID”].ToString();
Session
1.Session用來儲存每一個使用者的專有資訊;
2.Session的生存期是使用者持續請求時間加上一段時間(一般是20分鐘左右);
3.Session資訊是儲存在Web伺服器記憶體中的,儲存資料量可大可小;
4.Session超時或者被關閉將自動釋放資料資訊;
5.由於使用者停止使用應用程式之後它仍在記憶體中存留一段時間,因此這種方法效率較低
6.程式碼:Session[“UserID”]=”test”;
String UserName=Session[“UserID”].ToString()。
Cookie
1.Cookie用來儲存客戶瀏覽器請求伺服器頁面的請求資訊;
2.我們可以存放非敏感的使用者資訊,儲存時間可以根據需要設定;
3.如果沒有設定Cookie失效日期,它的生命週期儲存到關閉瀏覽器為止;
4. Cookie物件的Expires屬性設定為MinValue表示永不過期;
5. Cookie儲存的資料量受限制,大多數的瀏覽器為4K因此不要存放大資料;
6.由於並非所有的瀏覽器都支援Cookie,資料將以明文的形式儲存在客戶端;
7.程式碼:Resopnse.Cookies[“UserID”]=”test”;
String UserName= Resopnse.Cookies [“UserID”].ToString();
ViewState
1.ViewState用來儲存使用者的狀態資訊,有效期等於頁面的生命週期;
2.可以儲存大量資料但是要慎用,因為會影響程式效能;
3.所有的Web伺服器控制元件都是用ViewState在頁面PostBack期間儲存狀態;
4.不需要則關閉 @page 裡面設定EnableViewState=false;
5.程式碼:ViewState[‘”ID”]=”yiner”;
String ID =ViewState[“ID”].ToString()。
Cache
1. Cache用於在Http請求期間儲存頁面或者資料;
2. Cache的使用可以大大的提高整個應用程式的效率;
3. 它允許將頻繁訪問的伺服器資源儲存在記憶體中,當用戶發出相同的請求後伺服器不是再次處理而是將Cache中儲存的資料直接返回給使用者;
4.可以看出Cache節省的是時間—伺服器處理時間;
5.Cache例項是每一個應用程式專有的,其生命週期==該應用程式週期應用程式重啟將重新建立其例項;
6.注意:如果要使用快取的清理、到期管理、依賴項等功能必須使用Insert 或者Add方法方法新增資訊;
7.程式碼:Cache[‘”ID”]=”yiner”;或者Cache.Insert(“ID”,”test”);
String ID =Cache[“ID”].ToString();
Hidden
1.Hidden控制元件屬於Html型別的伺服器控制元件,始終處於隱藏狀態;
2.每一次提交的時候它會和其他伺服器控制元件一起提交到伺服器端;
3. 程式碼如下:Hidden.Value=”king”;string id=Hidden.Value; 要使用Runat=server。

26.解釋下在ASP.NET中Response的作用?
與Request獲取客戶端HTTP資訊相反,Response用來控制傳送給使用者的資訊,包括直接傳送資訊給瀏覽器,重定向到另一個ULR或設定COOKIE值。

27.解釋下在ASP.NET中Request的作用?
Request訪問任何基於HTTP請求傳遞的所有資訊,包括從HTML表格用POST方法和GET方法傳遞的引數,COOKIE和使用者人證。

28. C#中能夠使用指標嗎?如果不能使用說明理由,如果能使用說出使用方法?
C#中能夠使用指標,因為在.NET框架內使用無用單元回收器,隱藏了記憶體的管理工作.所以C#只允許在特定的程式碼塊內使用指標,標記所用的關鍵字是unsafe。

29. 淺談property和attribute區別.
property和attribute漢語都稱之為屬性。不過property是指類向外提供的資料區域。而attribute則是描述物件在編譯時或執行時屬性的。這兩者是有本質區別的。

C.程式設計題:
1.為管理崗位業務培訓資訊,建立3個表:
   S (S#,SN,SD,SA) S#,SA 分別代表學號、學員姓名、所屬單位、學員年齡
   C (C#,CN) C#,CN 分別代表課程編號、課程名稱
   SC ( S#,C#,G ) S#,G 分別代表學號、所選修的課程編號、學習成績
1.使用標準SQL巢狀語句查詢選修課程名稱為’稅收基礎’的學員學號和姓名
SELECT S#,SN FROM S WHERE S# IN(SELECT S# FROM C,SC
  WHERE C.C#=SC.C# AND CN=‘稅收基礎‘)
  2. 使用標準SQL巢狀語句查詢選修課程編號為’C2’的學員姓名和所屬單位
SELECT S.SN,S.SD FROM S,SC WHERE S.S#=SC.S# AND SC.C#=‘C2‘
  3. 使用標準SQL巢狀語句查詢不選修課程編號為’C5’的學員姓名和所屬單位
SELECT SN,SD FROM S WHERE S# NOT IN(SELECT S# FROM SC WHERE C#=‘C5‘)
  4. 使用標準SQL巢狀語句查詢選修全部課程的學員姓名和所屬單位
SELECT SN,SD FROM S WHERE S# IN(SELECT [S#] FROM SC
   RIGHT JOIN C ON SC.C#=C.C# GROUP BY S# HAVING COUNT *=COUNT(S#))
  5. 查詢選修了課程的學員人數
SELECT 學員人數=COUNT(DISTINCT S#) FROM SC
  6. 查詢選修課程超過5門的學員學號和所屬單位
SELECT SN,SD FROM S WHERE S# IN(SELECT S# FROM SC GROUP BY S#
   HAVING COUNT(DISTINCT C#)>5 )

2.SQLSERVER伺服器中,給定表 table1 中有兩個欄位 ID、LastUpdateDate,ID表示更新的事務號, LastUpdateDate表示更新時的伺服器時間,請使用一句SQL語句獲得最後更新的事務號。
SELECT IDFROM table1
WHERE LastUpdateDate = (SELECT MAX(LastUpdateDate) FROM table1)