.net面试题(高级)
DateTime.Parse(myString); 這行代碼有什么問題?
有問題,當myString不能滿足時間格式要求的時候,會引發異常,建議使用DateTime.TryParse()
?
?PDB是什么東西? 在調試中它應該放在哪里?
PDB是用于保存調試和項目狀態信息的文件,在debug的時候將產生pdb文件,調試的時候應該放在和對應應用程序集相同目錄。
?
什么叫(cyclomatic complexity)?為什么它很重要?
一種代碼復雜度的衡量標準,中文名稱叫做圈復雜度。在軟件測試的概念里,圈復雜度“用來衡量一個模塊判定結構的復雜程度,數量上表現為獨立現行路徑條數,即合理的預防錯誤所需測試的最少路徑條數,圈復雜度大說明程序代碼可能質量低且難于測試和維護,根據經驗,程序的可能錯誤和高的圈復雜度有著很大關系”。
?
gacutil /l | find /i "Corillian" 這句命令的作用是什么?
全局程序集緩存中如果有Corillian就更新該程序集,沒有就安裝
?
sn -t foo.dll 這句命令是干嘛的?
顯示程序集foo.dll的公鑰標記
?
DCOM需要防火墻打開哪些端口?端口135是干嘛用的?
135端口,因為DCOM的端口號是隨機分配的,默認情況下,會分配1024以上的端口號,所以默認情況下,DCOM不能穿越防火墻。因為根本不曉得開哪個端口。但有解決辦法可以使DCOM分配的端口號固定,有關內容我在http://www.cnblogs.com/jillzhang/archive/2008/02/20/1075057.html?有過一些描述。135是遠程過程調用(RPC)的默認端口
?
對比OOP和SOA,它們的目的分別是什么?
我想OOP和SOA應該沒有對比性吧。OOP是一種編程模型,強調將復雜的邏輯分解出小的模塊,特性是繼承,封裝和多態 。而SOA是一個技術框架,SOA的思想是將業務邏輯封裝成服務或者中間件提供給應用程序來調用,當然其組件化思想是繼承和發揚了OOP的優點。
參見:?http://www.ibm.com/developerworks/cn/webservices/newto/?http://se.csai.cn/zt/SOA/index.asp
XmlSerializer是如何工作的?使用這個類的進程需要什么ACL權限
我只知道XmlSerializer是將對象的屬性和字段進行序列化和反序列化的,序列化成為xml數據,反序列化再將xml轉換成對象。應該至少需要ACL權限中的讀權限.
為什么不提倡catch(Exception)
原因可能有兩點:1)try..catch在出現異常的時候影響性能 2)應該捕獲更具體得異常,比如IOExeception,OutOfMemoryException等
Debug.Write和Trace.Write有什么不同?何時應該使用哪一個??
Debug.Write是調試的時候向跟蹤窗口輸出信息。當編譯模式為debug的時候才有效,為release的時候Debug.Write在編譯的時候會忽略,而Trace則是在debug和release兩種模式下均可以向跟蹤窗口輸出信息。
Debug Build和Release Build的區別,是否會有明顯的速度變化?請說明理由。
Debug會產生pdb文件,release不會。Debug用于開發時的調試,不能要于部署,而release用于部署.debug編譯一些特殊代碼,比如#IFDEBUG Debug.Write等,而Release則會將那些特殊標記省略
對比抽象基類和接口的使用?
抽象類能有具體實現,而接口只定義行為規范,不能有具體實現。一個類只能繼承一個父類,但能實現多個接口。
XmlSerializer使用的針對屬性的模式有什么好處?解決了什么問題?
只序列化有用的數據,而不是序列化整個對象。實現沒必要的數據冗余,和提升序列化時的性能。
描述線程與進程的區別??
線程(Thread)與進程(Process)二者都定義了某種邊界,不同的是進程定義的是應用程序與應用程序之間的邊界,不同的進程之間不能共享代碼和數據空間,而線程定義的是代碼執行堆棧和執行上下文的邊界。一個進程可以包括若干個線程,同時創建多個線程來完成某項任務,便是多線程。而同一進程中的不同線程共享代碼和數據空間。用一個比喻來說,如果一個家庭代表一個進程,在家庭內部,各個成員就是線程,家庭中的每個成員都有義務對家庭的財富進行積累,同時也有權利對家庭財富進行消費,當面對一個任務的時候,家庭也可以派出幾個成員來協同完成,而家庭之外的人則沒有辦法直接消費不屬于自己家庭的財產。
什么是Windows服務,它的生命周期與標準的EXE程序有什么不同??
Windows服務是運行在windows后臺指定用戶下(默認System)的應用程序,它沒有標準的UI界面,想比標準的EXE程序,Windows服務是在服務開始的時候創建,而在服務結束的時候銷毀,而且可以設置服務是否與操作系統一起啟動,一起關閉。它支持三種方式:1)自動方式 2)手動方式 3)禁用 。自動方式的時候,windows服務將在OS啟動后自動啟動運行,而手動方式則必須手工啟動服務,禁用的情況下服務將不能被啟動。另外標準的EXE默認使用的當前登錄的用戶,而windows服務則默認使用System用戶,這在對系統資源訪問的時候特別需要注意。
Windows單個進程所能訪問的最大內存量是多少?它與系統的最大虛擬內存一樣嗎?這對于系統設計有什么影響??
這個需要針對硬件平臺,公式為單個進程能訪問的最大內存量=2的處理器位數次方/2,比如通常情況下,32位處理器下,單個進程所能訪問的最大內存量為:232 /2 = 2G 。單個進程能訪問的最大內存量是最大虛擬內存的1/2,因為要分配給操作系統一半虛擬內存。
什么是強類型,什么是弱類型?哪種更好些?為什么??
強類型是在編譯的時候就確定類型的數據,在執行時類型不能更改,而弱類型在執行的時候才會確定類型。沒有好不好,二者各有好處,強類型安全,因為它事先已經確定好了,而且效率高。一般用于編譯型編程語言,如c++,java,c#,pascal等,弱類型相比而言不安全,在運行的時候容易出現錯誤,但它靈活,多用于解釋型編程語言,如javascript,vb和.net formwork3.0中的匿名類型var等.
PID是什么?在做系統的故障排除時如何使用它??
PID是進程編號,在系統發現故障的時候,可以根據它尋找故障所發生的具體進程,并且可通過visual studio.net等ide將故障進程附加到進程中進行調試(debug)
單個TCP/IP端口上能夠被多少個進程偵聽??
1個
什么是GAC?它解決了什么問題??
Gloal Assembly Cache,全局應用程序集緩存。它解決了幾個程序共享某一個程序集的問題。不必再將那個被共享的程序集拷貝到應用程序目錄了,.net應用程序在加載的時候,會首先查看全局應用程序集緩存,如果有就可以直接使用,沒有再到應用程序目錄進行查找。
闡述面向接口、面向對象、面向方面編程的區別
面向接口更關注的是概念,它的原則是先定義好行為規范,再根據行為規范創建實現,嚴格的來說,面向接口應該是面向對象中的一部分吧,因為面向對象也強調的是本末倒置原則,也就是實現依賴于抽象,而抽象不依賴于具體實現,更具比較的應該是面向接口與面向抽象對象,我的體會是面向接口更加靈活,但實現時候,稍微有些代碼冗余,而面向抽象可以結合面向接口,先定義接口,再定義抽象類,在抽象類中處理一些公共邏輯,再實現具體實現類。面向對象是對復雜問題的分解。面向方面的編程是一種新概念,它解決了很多面向對象無法解決的問題,比如面向對象技術只能對業務相關的代碼模塊化,而無法對和業務無關的代碼模塊化。而面向方面正是解決這一問題的方案,它的關鍵思想是"將應用程序中的商業邏輯與對其提供支持的通用服務進行分離"。
使用ASMX的XML Web服務與使用SOAP的.NET Remoting的區別??
Web服務使用的消息機制,而Remoting采用的RPC. Web Service能用于不同平臺,不同語言,Remoting只適用于.Net。效率上Remoting高于Xml Web Service?
WS主要是可利用HTTP,穿透防火墻。而Remoting可以利用TCP/IP,二進制傳送提高效率。
從概念上闡述前期綁定(early-binding)和后期綁定(late-binding)的區別?
這個就像是強弱類型的比較相似,前期綁定是在編譯的時候就確定了要綁定的數據,而后期綁定是在運行的時候才填充數據。所以前期綁定如果失敗,會在編譯時報編譯錯誤,而后期綁定失敗只有在運行時的時候才發生
請敘述類與結構的區別。
結構:
  1)、結構是值類型;
  2)、結構不支持繼承;
  3)、結構不能定義默認的構造函數;
  4)、結構不能定義析構函數;
  5)、結構不能使用初始值設置域值。
類:1)、類是引用類型;
??? 2)、類可以繼承;
??? 3)、類可以定義構造函數;
??? 4)、類可以定義析構函數;
??? 5)、類的屬性以被初始化。 ? ?
轉載于:https://www.cnblogs.com/KohnKong/articles/2303739.html
總結
以上是生活随笔為你收集整理的.net面试题(高级)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 中文Ubuntu主目录下的文档文件夹改回
- 下一篇: 点击弹出窗口外任意地方关闭弹出窗口
