1.面向對象的語言具備(繼承)性、(多態)性、(封裝)性。html
2.能用foreach遍歷訪問的對象須要實現 (IEnumberable)接口或聲明(GetEnumberator)方法的類型。數據庫
3.列舉ADO.net中的五個主要對象(Command)、(Connection)、(DataReader)、(DataSet)、(DataAdapter)。編程
4.C#中的三元運算符是__(?:)__數組
5.當整數a賦值給一個object對象時,整數a將會被__(裝箱)___緩存
6.類成員有__(3)__種可訪問形式安全
7.float f=-123.567F;int i=(int)f;i的值如今是_(-123)__服務器
8.委託聲明的關鍵字是___( delegate) _數據結構
9.在Asp.net中全部的自定義用戶控件都必須繼承自_ (System.Web.UI.UserControl) __架構
10.在.Net中全部可序列化的類都被標記爲__[serializable]___框架
11.在.Net託管代碼中咱們不用擔憂內存漏洞,這是由於有了_ GC __
12.當類T只聲明瞭私有實例構造函數時,則在T的程序文本外部,_不能夠_(能夠 or 不能夠)從T派生出新的類,_不能夠_(能夠 or 不能夠)直接建立T的任何實例。
1.如下敘述正確的是: BC
A. 接口中能夠有虛方法。 B. 一個類能夠實現多個接口。
C. 接口不能被實例化。 D. 接口中能夠包含已實現的方法。
2.從數據庫讀取記錄,你可能用到的方法有: BCD
A. ExecuteNonQuery B. ExecuteScalar
C. Fill D. ExecuteReader
3.對於一個實現了IDisposable接口的類,如下哪些項能夠執行與釋放或重置非託管資源
相關的應用程序定義的任務?(多選) ( ABC )
A.Close B.Dispose C.Finalize D.using E.Quit
4.如下關於ref和out的描述哪些項是正確的?(多選) ( ACD )
A.使用ref參數,傳遞到ref參數的參數必須最早初始化。
B.使用out參數,傳遞到out參數的參數必須最早初始化。
C.使用ref參數,必須將參數做爲ref參數顯式傳遞到方法。
D.使用out參數,必須將參數做爲out參數顯式傳遞到方法。
5.在對SQL Server 數據庫操做時應選用(A)
A.SQL Server .NET Framework 數據提供程序;
B.OLE DB .NET Framework 數據提供程序;
C.ODBC .NET Framework 數據提供程序;
D.Oracle .NET Framework數據提供程序;
6.下列選項中,(C)是引用類型。
A.enum類型 B.struct類型 C.string類型 D.int類型
7.關於ASP.NET中的代碼隱藏文件的描述正確的是(C)
A.Web窗體頁的程序的邏輯由代碼組成,這些代碼的建立用於與窗體交互。編程邏輯惟一與用戶界面不一樣的文件中。該文件稱做爲「代碼隱藏」文件,若是用C#建立,該文件將具備「.ascx.cs」擴展名。
B.項目中全部Web窗體頁的代碼隱藏文件都被編譯成.EXE文件。
C.項目中全部的Web窗體頁的代碼隱藏文件都被編譯成項目動態連接庫(.dll)文件。
D.以上都不正確。
8.如下描述錯誤的是(A)
A.在C++中支持抽象類而在C#中不支持抽象類。
B.C++中可在頭文件中聲明類的成員而在CPP文件中定義類的成員,在C#中沒有頭文件而且在同一處聲明和定義類的成員。
C.在C#中可以使用 new 修飾符顯式隱藏從基類繼承的成員。
D.在C#中要在派生類中從新定義基類的虛函數必須在前面加Override。
9.C#的數據類型有(B)
A.值類型和調用類型 B.值類型和引用類型
C.引用類型和關係類型 D.關係類型和調用類型
10.下列描述錯誤的是(D)
A.類不能夠多重繼承而接口能夠
B.抽象類自身能夠定義成員而接口不能夠
C.抽象類和接口都不能被實例化
D.一個類能夠有多個基類和多個基接口
11.在DOM中,裝載一個XML文檔的方法(D)
A.save方法 B.load方法 C.loadXML方法 D.send方法
12.下列關於構造函數的描述正確的是(C)
A.構造函數能夠聲明返回類型。
B.構造函數不能夠用private修飾
C.構造函數必須與類名相同
D.構造函數不能帶參數
13.如下是一些C#中的枚舉型的定義,其中錯誤的用法有(A)
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 }
14.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.越界
15.接口是一種引用類型,在接口中能夠聲明(A),但不能夠聲明公有的域或私有的成員變量
A..方法、屬性、索引器和事件 B.方法、屬性信息、屬
C.索引器和字段 D.事件和字段;
16.ASP.NET框架中,服務器控件是爲配合Web表單工做而專門設計的。服務器控件有兩種類型,它們是(A )
A.HTML控件和Web控件 B.HTML控件和XML控件
C.XML控件和Web控件 D.HTML控件和IIS控件
17.ASP.NET中,在Web窗體頁上註冊一個用戶控件,指定該控件的名稱爲」Mike」,正確的註冊指令爲( D)
A.<%@Register TagPrefix = 「Mike」 TagName = 「Space2」 Src = 「myX.ascx」%>
B.<%@Register TagPrefix = 「Space2」 TagName = 「Mike」 Src = 「myX.ascx」%>
C.<%@Register TagPrefix = 「SpaceX」 TagName = 「Space2」 Src = 「Mike」%>
D.以上皆非
18.在ADO.NET中,對於Command對象的ExecuteNonQuery()方法和ExecuteReader()方法,下面敘述錯誤的是(C)
A.insert、update、delete等操做的Sql語句主要用ExecuteNonQuery()方法來執行;
B.ExecuteNonQuery()方法返回執行Sql語句所影響的行數。
C.Select操做的Sql語句只能由ExecuteReader()方法來執行;
D.ExecuteReader()方法返回一個DataReder對象;
19.下列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」);
20.Winform中,關於ToolBar控件的屬性和事件的描述不正確的是(D)
A.Buttons屬性表示ToolBar控件的全部工具欄按鈕
B.ButtonSize屬性表示ToolBar控件上的工具欄按鈕的大小,如高度和寬度
C.DropDownArrows屬性代表工具欄按鈕(該按鈕有一列值須要如下拉方式顯示)旁邊是否顯示下箭頭鍵
D.ButtonClick事件在用戶單擊工具欄任何地方時都會觸發
21.在ADO.NET中執行一個存儲過程時,若是要設置輸出參數則必須同時設置參數的方向和(D ),必要時還要設置參數尺寸。
A.大小; B.上限; C.初始值; D.類型
22.若是將窗體的FormBoderStyle設置爲None,則( A)。
A.窗體沒有邊框並不能調整大小; B.窗體沒有邊框但能調整大小;
C.窗體有邊框但不能調整大小; D.窗體是透明的;
23.若是要將窗體設置爲透明的,則( B)
A.要將FormBoderStyle屬性設置爲None; B.要將Opacity屬性設置爲小於100%的值;
C.要將locked 屬性設置爲True; D.要將 Enabled屬性設置爲True;
24.下列關於C#中索引器理解正確的是(B/C )
A.索引器的參數必須是兩個或兩個以上 B.索引器的參數類型必須是整數型
C.索引器沒有名字 D.以上皆非
25.下面描述錯誤的是( C/D)
A.窗體也是控件; B.窗體也是類; C.控件是從窗體繼承來的;D.窗體的父類是控件類
26.要對註冊表進行操做則必須包含( D)
A.System.ComponentModel命名空間;B.System.Collections命名空間;
C.System.Threading命名空間; D.Microsoft.Win32命名空間;
27.要建立多文檔應用程序,須要將窗體的(D )屬性設爲true。
A.DrawGrid; B.ShowInTaskbar; C.Enabled; D.IsMdiContainer;
28.若是設treeView1=new TreeView(),則treeView1.Nodes.Add("根節點")返回的是一個 (A)類型的值。
A.TreeNode; B.int; C.string; D.TreeView;
29.下面關於XML的描述錯誤的是(D)
A.XML提供一種描述結構化數據的方法;
B.XML 是一種簡單、與平臺無關並被普遍採用的標準;
C.XML文檔可承載各類信息;
D.XML只是爲了生成結構化文檔;
30.裝箱、拆箱操做發生在: ( C )
A.類與對象之間 B.對象與對象之間
C.引用類型與值類型之間 D.引用類型與引用類型之間
31.用戶類若想支持Foreach語句須要實現的接口是: ( A )
A.Ienumerable B.Ienumerator C.Icollection D.IcollectData
32.Net Framework經過什麼與COM組件進行交互操做?( C )
A.Side By Side B.Web Service C.Interop D.PInvoke
33..Net依靠如下哪一項技術解決COM存在的Dll Hell問題的?( A )
A.Side By Side B.Interop C.Pinvoke D.COM+
34.裝箱與拆箱操做是不是互逆的操做?( B )
A.是 B.否
35.如下哪一個是能夠變長的數組?( D )
A.Array B.string[] C.string[N] D.ArrayList
36.用戶自定義異常類須要從如下哪一個類繼承:( A )
A.Exception B.CustomException C.ApplicationException D.BaseException
面向接口更關注的是概念,它的原則是先定義好行爲規範,再根據行爲規範建立實現,嚴格的來講,面向接口應該是面向對象中的一部分吧,由於面向對象也強調的是依賴倒置原則,也就是實現依賴於抽象,而抽象不依賴於具體實現,更具比較的應該是面向接口與面向抽象對象,個人體會是面向接口更加靈活,但實現時候,稍微有些代碼冗餘,而面向抽象能夠結合面向接口,先定義接口,再定義抽象類,在抽象類中處理一些公共邏輯,再實現具體實現類。面向對象是對複雜問題的分解。面向方面的編程是一種新概念,它解決了不少面向對象沒法解決的問題,好比面向對象技術只能對業務相關的代碼模塊化,而沒法對和業務無關的代碼模塊化。而面向方面正是解決這一問題的方案,它的關鍵思想是"將應用程序中的商業邏輯與對其提供支持的通用服務進行分離"。
接口(Interface)是用來定義行爲規範的,不會有具體實現,而抽象類除定義行爲規範外,能夠有部分實現,但一個類能實現多個接口,但只能繼承一個父類
程序集包含模塊,而模塊又包括類型,類型下有成員,反射就是管理程序集,模塊,類型的對象,它可以動態的建立類型的實例,設置現有對象的類型或者獲取現有對象的類型,能調用類型的方法和訪問類型的字段屬性。它是在運行時建立和使用類型實例
Web服務使用的消息機制,而Remoting採用的RPC. Web Service能用於不一樣平臺,不一樣語言,Remoting只適用於.Net。效率上Remoting高於Xml Web Service
XmlSchema是一個特定的XML文檔必須知足的一套標準。這些標準可以描述不一樣的數據類型。例如:一個XSD文件(XmlSchema的物理實例化)可能會有一個entry like。這意味着一個必須知足XSD文件架構的XML文件可能有一個entry like 21.33。xs:decimal是一種XmlSchema 數據類型。其餘類型包括xs:Boolean,xs:Date,xs:int等等。
CLS是公共語言規範(Common Language Specification),它是任何.net 語言(C#,VB.net等)使用的一套數據類型。例如:一個C#程序可能有這麼一行代碼:
System.Doublepayrate=21.33;System.Double是一種CLS數據類型。其餘的包括System.Int32,System.Boolean等。
那什麼是同構(isomorphic)呢?這是真正模棱兩可的地方。同構能夠不嚴謹地理解爲「有類似的外表但不一樣的內在」,或者能夠理解爲「一對一的類似」。若是你將同構理解爲有類似的外表,那麼這道題的答案是「有點兒」。例如xs:Boolean 和System.Boolean類似。若是你將同構理解爲「一對一的類似」那麼這道題的答案仍然是「有點兒」。
這個就像是強弱類型的比較類似,前期綁定是在編譯的時候就肯定了要綁定的數據,然後期綁定是在運行的時候才填充數據。因此前期綁定若是失敗,會在編譯時報編譯錯誤,然後期綁定失敗只有在運行時的時候才發生
動態
呵呵,這個比較有意思,相比LoadFile,LoadFrom則顯得不地道,由於它娶媳婦的時候,是讓人家穿上嫁妝,坐上馬車,還得帶着人家的妹妹來,:)用它加載的是程序集,這就要求同時將此程序集所依賴的程序集加載進來。而LoadFile就地道的多,它是加載程序集文件的內容,只將傳入參數的文件加載,不考慮程序集依賴,但若是有相同實現,但位置不一樣的文件用LoadFrom是不能同時加載進來的,而LoadFile卻能夠。因爲LoadFile加載的是文件,因此調用它以後,可能由於缺乏必要的依賴形成沒法被執行。
它不是一個文件名,相比文件名,Assembly Qualified Name(程序集限定名稱),更能肯定一個程序集,它包含文件名,但同時包含版本,公鑰,和區域。由於一樣一個名稱的文件可能有不一樣的版本和區域,此時單獨靠文件名稱,可能會形成不能肯定程序集的正確性。
錯誤,正確的應該是Assembly.Load("foo"); 或者Assembly.LoadFrom("foo.dll"); (多謝 Tristan(Guozhijian)的提示更正)
強簽名的程序集能夠作成com,而不作強簽名的就不行,一樣強簽名程序集能夠安裝到GAC中,而不作強簽名的確不能。
不能,由於其爲Struct類型,而結構屬於值類型,值類型不能爲null,只有引用類型才能被賦值null
Just In Time 及時編譯,它是在程序第一次運行的時候才進行編譯,而NGEN是所謂的pre-jit,就是說在運行前事先就將生成程序集的本機鏡像,並保存到全局緩存中,適用NGEN能夠提升程序集的加載和執行速度,由於它能夠從本機映像中還原數代碼和數據結構,而沒必要像jit那樣動態生成它們。感受和緩存的道理大同小異。
Finalize()用於隱式釋放資源,Dispose()用於顯示釋放資源 (Finalize()的確至關於C++中的析構函數(多謝Jeffrey Zhao提示更正)
有用,實現了IDisposiable的類在using中建立,using結束後會自定調用該對象的Dispose方法,釋放資源。不明白什麼是肯定性終結
列出全部使用了以" mscor"做爲開頭的dll或者exe的進程和模塊信息
in-proc是進程內,進程內能共享代碼和數據塊,out-of-proc是進程外,進程外的互操做須要用進程間通信來實現。
.Net Remoting技術或者WCF技術
Xp : aspnet_Wp.exe
Windows 2000 : aspnet_Wp.exe
Windows 2003 : w3wp.exe
有問題,當myString不能知足時間格式要求的時候,會引起異常,建議使用DateTime.TryParse() ,同時,還須要注意到文化區域的設置,若是作代碼規範檢查,該語句也會不符合規範,就是由於缺乏文化區域的設置
PDB是用於保存調試和項目狀態信息的文件,在debug的時候將產生pdb文件,調試的時候應該放在和對應應用程序集相同目錄。 默認的是同一目錄,ide還能夠設置全局pdb symbol文件的地址,這也是vs2008能調試.net framework source code的方法。還能夠爲解決方案指定pdb位置
所謂圈複雜度是一種代碼複雜度的衡量標準,中文名稱叫作圈複雜度。在軟件測試的概念裏,圈複雜度「用來衡量一個模塊斷定結構的複雜程度,數量上表現爲獨立現行路徑條數,即合理的預防錯誤所需測試的最少路徑條數,圈複雜度大說明程序代碼可能質量低且難於測試和維護,根據經驗,程序的可能錯誤和高的圈複雜度有着很大關係」。它的計算方法很簡單,計算公式爲:V(G)=e-n+2。其中,e表示控制流圖中邊的數量,n表示控制流圖中節點的數量。其實,圈複雜度的計算還有更直觀的方法,由於圈複雜度所反映的是「斷定條件」的數量,因此圈複雜度實際上就是等於斷定節點的數量再加上1,也即控制流圖的區域數,對應的計算公式爲:V(G)=區域數=斷定節點數+1。
圈複雜度大說明程序代碼可能質量低且難於測試和維護。
private static object instrace; static object lockedObj = new object(); public static void LockTest() { if (instrace == null) { lock (lockedObj) { if (instance == null) { instance = new object(); } } } }
FullTrust徹底信任。放入GAC中的Assembly是否FullTrust個人理解不是。我理解FullTrust是能夠經過代碼設定的
能夠更加靈活的設置對代碼的訪問權限,實現代碼級保護。?這點不是特清楚,有明白的給講解下
全局程序集緩存中若是有Corillian就更新該程序集,沒有就安裝
顯示程序集foo.dll的公鑰標記
135端口,由於DCOM的端口號是隨機分配的,默認狀況下,會分配1024以上的端口號,因此默認狀況下,DCOM不能穿越防火牆。由於根本不曉得開哪一個端口。但有解決辦法可使DCOM分配的端口號固定,有關內容我在http://www.cnblogs.com/jillzhang/archive/2008/02/20/1075057.html 有過一些描述。135是遠程過程調用(RPC)的默認端口
我想OOP和SOA應該沒有對比性吧。OOP是一種編程模型,強調將複雜的邏輯分解出小的模塊,特性是繼承,封裝和多態。而SOA是一個技術框架,技術框架和編程模型應該說不是一碼事吧?SOA的思想是將業務邏輯封裝成服務或者中間件提供給應用程序來調用,固然其組件化思想是繼承和發揚了OOP的優勢。
我只知道XmlSerializer是將對象的屬性和字段進行序列化和反序列化的,序列化成爲xml數據,反序列化再將xml轉換成對象。應該至少須要ACL權限中的讀權限.
緣由可能有兩點:1)try..catch在出現異常的時候影響性能 2)應該捕獲更具體得異常,好比IOExeception,OutOfMemoryException等
Debug.Write是調試的時候向跟蹤窗口輸出信息。當編譯模式爲debug的時候纔有效,爲release的時候Debug.Write在編譯的時候會忽略,而Trace則是在debug和release兩種模式下都可以向跟蹤窗口輸出信息。
Debug會產生pdb文件,release不會。Debug用於開發時的調試,不能要於部署,而release用於部署.debug編譯一些特殊代碼,好比#IFDEBUG Debug.Write等,而Release則會將那些特殊標記省略
方法,道理很簡單,由於對於一次運行,極可能只用到一個程序集中極少數類型和對象,而大部分可能並不會被使用,此時CLR傻乎乎的給整個程序集都給Compile了,CLR不是傻瘋了麼
抽象類能有具體實現,而接口只定義行爲規範,不能有具體實現。一個類只能繼承一個父類,但能實現多個接口。
不同。多數狀況下,a.Equals(b)表示a與b一致, a==b表示a與b的值相等。也能夠有具體重載(多謝Jeffrey Zhao 的指正)
對象一致是指兩個對象是同一個對象,引用相同。而對象相等是指兩個對象的值相同,但引用不必定相同
實現IClonable接口
IClonable方法是實現深度複製的接口,實現它應該能深度複製一個對象出來。深度複製的特徵的調用對象的構造方法,建立新的對象,包括建立對象中嵌套的引用對象的新實例。而Shadow複製則不一樣,是淺表複製,不從新建立新實例。淺表複製的實現是Object.MemberWiseClone().
public class Name { public string FirstName; public string LastName; } public class Person:ICloneable { public Name PersonName; public string Email; /// <summary> /// Deep Copy的例子 /// </summary> /// <returns></returns> public Object Clone() { Person p = new Person(); p.Email = this.Email; p.PersonName = new Name(); p.PersonName.FirstName = this.PersonName.FirstName; p.PersonName.LastName = this.PersonName.LastName; return p; } public void ChangLastName(string lastName) { this.PersonName.LastName = lastName; } public static void Main() { Person p = new Person(); p.PersonName = new Name(); p.PersonName.LastName = "jill"; p.PersonName.FirstName = "zhang"; p.Email = "jillzhang@126.com"; Person sameNamePerson = p.Clone() as Person; sameNamePerson.ChangLastName("clr_"); Console.WriteLine(p.PersonName.LastName); Console.WriteLine(sameNamePerson.PersonName.LastName); Person samePerson = p.MemberwiseClone() as Person; samePerson.ChangLastName("Shadow"); Console.WriteLine(p.PersonName.LastName); Console.WriteLine(sameNamePerson.PersonName.LastName); Console.Read(); } }
裝箱(boxing)是將值類型的數據轉化成引用類型,int i=3; object o = i ;即是裝箱過程,而拆箱(unboxing)是將飲用類型數據轉換值類型,好比int j = (int)o;屬於拆箱
引用類型
只序列化有用的數據,而不是序列化整個對象。實現不必的數據冗餘,和提高序列化時的性能。
我挺喜歡用out參數的,特別是當函數須要有多於1個返回的時候,我比較願意用out,至於它好很差沒研究過 ?
能夠,做用能夠對參數有進一步限定,好比輸入參數爲int類型,能夠經過容許AttributeTargets=ParameterInfo的Attribute自定義實現來限定輸入參數的大小,好比當輸入參數小於100的時候便抱錯。
[AttributeUsage(AttributeTargets.Parameter)] public class ParameterAtt : Attribute { public int Min = 100; } public class AttributeTest { public void TestMethod([ParameterAtt(Min = 100)] int par1) { ParameterInfo para = MethodInfo.GetCurrentMethod().GetParameters()[0]; ParameterAtt att = ParameterAtt.GetCustomAttribute(para, typeof(ParameterAtt)) as ParameterAtt; if (att.Min > par1) { throw new Exception("要求para1最小爲" + att.Min); } } }