首頁  >  文章  >  後端開發  >  C#.net常用常混淆的知識點

C#.net常用常混淆的知識點

巴扎黑
巴扎黑原創
2016-12-19 16:44:101757瀏覽

1, 請你說說.NET中類別和結構的差別? 
答:結構和類別有大體的語法,但是結構受到的限制比類別多。結構不能申明有預設的建構函數,為結構的副本是又編譯器創建和銷毀的,所以不需要預設的建構子和析構函數。結構是值類型,所以對結構變數所做的改變不會影響其的原值,而類別是應用類型,改變其變數的值會改變其原值。申明結構用Struck關鍵字,申明類別用class關鍵字,向方法傳遞結構是時是透過值傳遞的,而不是透過引用。與類別不同,結構的實例化可以不使用New關鍵字。類別可以實作介面。 
2, 死鎖的必要條件?怎麼克服?
答:系統的資源不足,進程的推進的順序不合適,資源分配不當,一個資源每次只能被一個進程使用,一個資源請求資源時,而此時這個資源已阻塞,對已獲得資源不放,進程取得資源時,未使用完前,無法強行剝奪。 
3, 介面是否可以繼承介面?抽象類別是否可以實作介面?抽象類別是否可以繼承實體類別? 
答:介面是可以繼承介面的,抽象類別是可以實作介面的,抽象類別可以繼承實體類別,但是有個條件,條件是,實體類別必須要有明確的建構子。 
4, 構造器Constructor是否可以被繼承?是否可以被Override? 
答:Constructor不可以被繼承,因此不能被重寫(Overriding),但可以被重載(Overloading). 
5,是否可以繼承String類別? 
答:因為String類別是final類別所以不可以繼承string類別。 
5, 當一個執行緒進入一個物件的方法後,其它執行緒是否可以進入該物件的方法? 
答:不可以,一個物件的方法只能由一個執行緒存取。 
6, 用最有效的方法算出等已8對於幾? 
答:27,C#是否可以直接對記憶運作? 
答:這個問題比較難回答,也是個很大的問題。但是可以這樣問答。 C#是可以直接操作記憶體的,雖然很少用到指針,但是C#是可以使用指針的,在用的時候需要在前邊加unsafe,,在.net中使用了垃圾回收機制(GC)功能,它取代了程式設計師,不過在C#中不可以直接使用finalize方法,而是在析構函式中呼叫基底類別的finalize()方法。 
7, 陣列有沒有Length()這和方法? string有沒有這個方法? 
答:陣列中沒有這個方法,但有這個屬性,string中有這個方法。 
8, Error和Exception有是差別? 
答:error表示恢復不是不可能,但是很困難,exception表示一種實際或實作問題,它表示程式運作正常不可以發生的。 
9,談final,finally,finallize的差別? 
答:final用於申明屬性,方法和類,表示屬性不可變,方法不可以被覆寫,類別不可以被繼承。 
Finally是異常處理語句結構中,表示總是執行的部分。 
Finallize表示是object類別一個方法,在垃圾回收機制中執行的時候會被呼叫被回收物件的方法。 
10,HashMap和Hashtable差別? 
答:HashMap是Hashtable的輕量級實現,非線程安全的實現他們都實現了map接口,主要區別是HashMap鍵值可以為空null,效率可以高於Hashtable。 
11,Collection和Collections的差別?
答:Collection是****類的上級接口,Collections是針對****類的一個幫助類,它提供一系列靜態方法來實現對各種****的搜索,排序,線程安全化操作。 
12,C#中委託是什麼?事件是不是一種委託? 
答:委託是一種安全的類似與函數指針,但是她比指針要安全的多,它可以把方法作為一個參數傳遞給另一個方法,可以理解為指向函數的引用。事件是一種訊息機制,它是一種委託,委託不帶方法體。 
13,Override, Overload,的差別? 
答:Override是重寫的意思,它表示重寫基底類別的方法,而且方法的名稱,回傳類型,參數類型,參數個數要與基底類別相同。 
Overload是重載是意思,它也表示重寫基底類別的方法,但是只要方法名稱相同,別的可以不同。 
14,在一個BS結構中需要傳遞變數值時,不能使用session,coolke,application,你有幾中方法? 
答:this.server.Transfer,Querystring. 
15,C#種索引器實作過程,是否只能根據數字索引? 
答:不是的,可以是任意型。 
15,C#種索引器實現過程,是否只能根據數字索引? 
答:不是的,可以是任意型。 
16,New有 種用法? 
答:有3種,第一種是,實例化如:New Class() 
第二種是,public new 隱藏基底類別的方法 
第三種是,在泛型類別申明中的任何型別參數都必須有公共的無參構造函數。 
17,任何把一個Array複製到Arraylist? 
答:Foreach (object o in Array), ArrayList.Add (0) 
等有很多中種方法。自己想。 
18,概述反射和序列化? 
答:反射:要給發射下一個定義還是比較難的,這裡先說說我的理解。反射提供了封裝程序集,模組和類型對象,可以用反射動態地創建類型的實例,將類型綁定到現有對象,或者從現有對象類型裡獲取類型,然後調用類型的方法或訪問字段和屬性。 
序列化:將物件轉換為另一種媒介傳輸的格式過程。如,序列化一個對象,用Http透過internet在客戶端和伺服器之間傳遞該對象,在另一端用反序列化從該流中重新得到對象。 
19,Const和ReadOnly? 
答:Const用來申明程式時申明常數,ReadOnly用來申明執行時間常數。 
20,UDP和TCP連接有和異同?
答:TCP是傳輸控制協議,提供的是面向連接的,是可靠的,字節流服務,當用戶和伺服器彼此進行數據交互的時候,必須在他們數據交互前要進行TCP連接之後才能傳輸數據。 TCP提供超時重撥,檢驗資料功能。 UDP是用戶資料報協議,是一個簡單的面向資料報的傳輸協議,是不可靠的連接。 
21,進程和執行緒分別該怎麼理解?
答:進程是比線程大的程式運行單元,都是由作業系統所體會的系統運行單元,一個程式中至少要有一個進程,有一個進程中,至少要有一個線程,線程的劃分尺度要比進程要小,進程擁有獨立的內存單元,線程是共享內存,從而極大的提高了程序的運行效率同一個進程中的多個線程可以並發執行。 
22,ASP。 NET頁面之間傳遞值的幾種方式? 
答:QueryString,session,cookies,application,server.Transfer,respose.redictor. 
41. 什麼叫做應用程式網域?什麼是託管程式碼?什麼是強類型系統?什麼是裝箱和拆箱?什麼是重載? CTS、CLS和CLR分別有何解釋? 
答:應用程式域:就是為安全性,可靠性,隔離性,和版本控制,及卸載程式提供的隔離邊界。它通常由運行庫宿主創建,應用程式域提供了一個更安全,用途更廣的處理單元。 
託管程式碼:使用CLR編譯語言編輯器開發寫的程式碼就叫託管程式碼。 
裝箱與拆箱:是把值型別轉換成引用型別的過程,是隱式的,相反的過程就是拆箱,是顯式的。 
CTS是公共類型系統,CLS是公共語言規範,CLR公共語言運作庫。 
強型系統:每個變數和物件都必須有申明類型。 
41.值類型和引用類型的區別?
答:值類型的值是存放在堆疊中的,改變其值,不改變變數原有的值,而引用類型的值是存放在堆疊中的,其引用的位址是存放在堆疊中的,改變其值也就改變了變數原有的值。值類型不允許包含null值,然而可空型別可以將null賦值給值型別l。 
42. ASP.net的身份驗證方式有哪些? 
答:windows,forms,passport 
43.解釋一下UDDI、WSDL的意義及其角色?
答:UDDI是統一描述整合協議,是一套基於Web的,分散式的,為WEB服務提供的資訊註冊的實現標準規範,同時為也是為企業本身提供的Web服務註冊以讓別的企業能夠發現並存取的協議標準。提供了基於標準的規範,用於描述和發現服務,也提供了一組基於網際網路的實作。 
WSDL這是一個基於XML的描述WEB服務的介面。 
44.什麼是SOAP? 
答:是簡單存取協定。是在分散式環境中,交換資訊並實現遠端呼叫的協定。是一個基於XML的協定。使用SOAP,可以不考慮任何傳輸協議,但通常還是HTTP協議,可以允許任何類型的物件或程式碼,在任何平台上,以任一種語言相互通訊。它是一種輕量級協定。 
45.如何部署一個ASP.net頁面? 
答:vs2003,vs2005裡邊都有發表機制,vs2003可以發佈然後在複製部署。 
Vs2005可以直接部署到對應的位置。 
46.如何理解.net中的垃圾回收機制? 
答:.NET中的垃圾回收機制是引用程式對記憶體的回收與釋放。當每次用new關鍵字創建一個物件時,運行庫都要從託管堆中為其分配內存,因為空間是有限的,最終垃圾回收機制是要回收不用的內存的。已釋放內存,重新使用。 
47.物件導向的三大基本原則? 
答:封裝,繼承,多態。 
48.在.NET中所有類別的基底類別是? 
答:object。 
50.能用foreach遍歷存取的物件需要實現? 
答:需要實作IEnumerable介面和GetEnumerator ()方法。 
51. Heap與stack的差異? 
答:Heap是堆,空間是由手動操作分配和釋放的,它的儲存區很大的自由儲存區。 
Stack是棧,是由是作業系統自動分配和釋放的,堆疊上的空間是有限的。程式在編譯期間變數和函數分配記憶體都是在堆疊上進行的,且在執行時間函數呼叫時的參數的傳遞也是在堆疊上進行的。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn