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























