原文地址:http://www.hanselman.com/blog/WhatGreatNETDevelopersOughtToKnowMoreNETInterviewQuestions.aspx作者:Scott
Hanselman
譯者:Tony Qu
前些日子我發了一份ASP.NET面試題 清單. 有一些訪客比較保守,覺得我是沒事找事,裡面都是些很瑣碎的問題。剩下的人則說“蠻不錯的,我得去看一看其中的一些問題” 我更喜歡後者的回複,我覺得後者才是正確的態度。
當然我並不想把.NET軟體開發概括為一些簡單的小問題,我只是想讓大家多思考。我相信一個真正優秀的ASP.NET(及WinForm)開發人員應該不僅僅會拖放控制項到設計器中,也應該掌握更多的東西。一個優秀的賽車比賽選手很瞭解他自己的坐駕,他知道哪些可以做?哪些不能做?
所以我準備了另外一份清單——一份擴充的清單,供你使用。這是我上個星期在從博伊西去傳輸速率蘭的路上寫在一塊板上的,並且我也考慮到了那些覺得我的清單過於瑣碎的意見,試圖把這個清單按節管理。如果你從來沒有深入ASP.NET,你肯定不會知道所有ASP.NET問題的答案。如果你是一個獨立顧問,你可能從來沒有遇到過這些概念。但在我呆在科林斯的這4年中,這些問題我都遇到過。因此,是否全面理解這些問題也許與你是不是一個優秀的開發人員沒有關係,但在遇到問題時它的確可以幫你節省不少時間。
.NET牛人應該知道些什嗎?
任何一個使用.NET的人
•描述線程與進程的區別?
•什麼是Windows服務,它的生命週期與標準的EXE程式有什麼不同
•Windows上的單個進程所能訪問的最大記憶體量是多少?它與系統的最大虛擬記憶體一樣嗎?這對於系統設計有什麼影響?
•EXE和DLL之間的區別是什嗎?
•什麼是強型別,什麼是弱類型?哪種更好些?為什麼?
•PID是什嗎?在做系統的故障排除時如何使用它?
•單個TCP/IP連接埠上能夠偵聽多少個進程?
•什麼是GAC?它解決了什麼問題?
中級.NET開發人員
•闡述面向介面、物件導向、面向方面編程的區別
•什麼是Interface?它與Class有什麼區別?
•什麼是反射?
•使用ASMX的XML Web服務與使用SOAP的.NET Remoting的區別?
•類型系統是由XMLSchema表示的嗎?CLS是XMLSchema表示的嗎?
•從概念上闡述前期綁定(early-binding)和後期綁定(late-binding)的區別?
•調用Assembly.Load算靜態引用還是動態引用?
•何時使用Assembly.LoadFrom?何時使用Assembly.LoadFile?
•什麼叫Assembly Qualified Name?它是一個檔案名稱嗎?它有什麼不同?
•Assembly.Load("foo.dll"); 這句話是否正確?
•做強簽名的assembly與不做強簽名的assembly有什麼不同?
•DateTime是否可以為null?
•什麼叫JIT?什麼是NGEN?它們分別有什麼限制和好處?
•.NET CLR中一代的垃圾收集器是如何管理對象的生命週期的?什麼叫非確定性終結?
•Finalize()和Dispose()之間的區別?
•using() 文法有用嗎?什麼是IDisposable?它是如何?確定性終結的。
•tasklist /m "mscor*" 這句命令是幹嘛的?
•in-proc和out-of-proc的區別
•.NET裡的哪一項技術能夠實現out-of-proc通訊?
•當你在ASP.NET中運行一個組件時,它在Windows XP, Windows 2000, Windows 2003上分別跑在哪個進程裡面?
進階開發人員/架構師
•DateTime.Parse(myString); 這行代碼有什麼問題?
•PDB是什麼東西? 在調試中它應該放在哪裡?
•什麼叫循環複雜度(cyclomatic complexity)?為什麼它很重要?
•寫一個標準的lock(),在訪問變數的前後建立臨界區,要有"雙重檢查",
•什麼叫FullTrust?放入GAC的assembly是否是FullTrust的?
•代碼加上需要安全許可權的特性有什麼好處?
•gacutil /l | find /i "Corillian" 這句命令的作用是什嗎?
•sn -t foo.dll 這句命令是幹嘛的?
•DCOM需要防火牆開啟哪些連接埠?連接埠135是幹嘛用的?
•對比OOP和SOA,它們的目的分別是什嗎?
•XmlSerializer是如何工作的?使用這個類的進程需要什麼ACL許可權?
•為什麼不提倡catch(Exception)?
•Debug.Write和Trace.Write有什麼不同?何時應該使用哪一個?
•Debug Build和Release Build的區別,是否會有明顯的速度變化?請說明理由。
•JIT是以assembly為單位發生還是以方法為單位發生?這對於工作區有何影響?
•對比抽象基類和介面的使用
•a.Equals(b)和a == b一樣嗎?
•在對象比較中,對象一致和對象相等分別是指什嗎?
•在.NET中如何?深拷貝(deep copy)?
•請解釋一下IClonable
•什麼叫裝箱?
•string是實值型別還是參考型別?
•XmlSerializer使用的針對屬性的模式有什麼好處?解決了什麼問題?
•為什麼不應該在.NET中使用out參數?它究竟好不好?
•特效能夠放到某個方法的參數上?如果可以,這有什麼用?
C# 組件開發人員
•什麼時候使用override?什麼時候使用new? 什麼叫shadowing?
•解釋virtual、sealed、override和abstract的區別
•Foo.Bar, Version=2.0.205.0, Culture=neutral, PublicKeyToken=593777ae2d274679d 解釋這個字串每個部分的重要性和作用
•解釋public、protected、private和internal的區別
•使用Primary Interop Assembly (PIA)有什麼好處?
•NUnit是通過什麼機制獲知需要測試哪些方法的?
•catch(Exception e){throw e;}和catch(Exception e){throw;}的區別
•typeof(foo)和myFoo.GetType()的區別?
•public class c{ public c(string a) : this() {;}; public c() {;} } 解釋第一個建構函式中發生了什嗎? 這個建構函式有什麼用?
•this是幹嘛用的?能夠用在static方法中?
ASP.NET (UI)開發人員
•闡述一個基於瀏覽器的Form POST如何變成一個伺服器端的事件,如Button1_OnClick。
•什麼是PostBack?
•什麼是ViewState? 它是否被編碼過? 是否被加密過?誰會使用ViewState?
•<machinekey>元素是幹嘛用的?它用於哪兩項ASP.NET技術?
•說出ASP.NET 1.1中的3種Session State提供者以及它們的優缺點?
•什麼叫Web Gardening? 在設計中如何使用它?
•假設有一個ASP.NET應用程式,那麼單獨一個進程中允許多少應用程式物件?那兩個進程呢?啟用了Web Gardening的2個進程呢?這對設計有何影響?
•ASP.NET會重用多個請求之間的線程嗎?是否每個HttpRequest都有自己的線程?你是否應該用ASP.NET的Thread Local儲存?
•[ThreadStatic]屬性在ASP.NET中有用嗎?它有沒有副作用?是好是壞?
•如何使用HttpHandler簡化現有的為.aspx頁面提供驗證圖片的設計
•HttpModule訂閱的是什麼類型的事件? 這對於實現有何影響?如果不打算重新編譯ASP.NE應用程式,應該怎麼做?
•說出表示任意一個終端(URL)的方式,以及ASP.NET中把請求路由到那個終點的方式
•解釋cookie的工作原理。給出一個濫用Cookie的例子。
•解釋HttpRequest.ValidateInput()的重要性?
•哪些資料是通過HTTP Header傳遞的?
•對比HTTP動詞GET和POST? 什麼是HEAD?
•說出至少6個HTTP狀態代碼以及它們的含義
•if-not-modified-since的工作原理是什麼? 用ASP.NET如何?它?
•解釋 <@OutputCache%>和如何使用VaryByParam、VaryByHeader.
•VaryByCustom是如何工作的?
•如何通過q=? (除了q=5)來實現ASP.NET HTML輸出緩衝和緩衝到期(比如http://localhost/page.aspx?q=5)?
XML開發人員
•XML命名空間的作用?
•何時適合使用DOM?何時不適合?有沒有尺度限制?
•什麼是WS-I基本配置?它重要在哪裡?
•寫一個小XML文檔,其中使用的是預設的命名空間,以及一個合法的(首碼)命名空間,其中要有分別屬性這兩個命名空間的元素
•元素和特性的基本區別在哪裡?
•格式完好的XML和有效XML有什麼區別?
•.NET中如何驗證XML?
•myXmlDocument.SelectNodes("//mynode"); 為什麼這句代碼不好?什麼時候它是好的?
•拉式解析(XmlReader)與事件讀取器(Sax)的區別
•XPathDocument和XmlDocument的區別? 在何種情況下應該用哪一個?
•“XML片斷”與“XML文檔”有什麼區別
•什麼叫格式規範的XML?
•XML InfoSet規範與Xml DOM有什麼不同? InfoSet是要解決什麼問題?
•比較DTD和XSD,它們的相似點與區別分別是什嗎?哪個更好些?為什嗎?
•System.Xml支援DTD嗎?如果支援,如何使用?
•XML Schema能夠表示為對象圖?對象圖能夠表示為XML Schema?