微軟.NET 經典面試題前端
1. OO 面向對象的語言具備的三大特性:________性、_________性、________性程序員
答:封裝、繼承、多態。web
2. 什麼是多態?C#如何支持多態?面試
多態指的是多種行爲。C#能夠經過方法重載以及方法重寫實現多態。算法
3. C#中能用 foreach 遍歷訪問的對象須要實現 ________________接口或聲明數據庫
________________方法的類型。編程
答:IEnumerable 、 GetEnumerator。緩存
4. 垃圾收集器 GC 做用是什麼? 爲何要有 GC?安全
答:服務器
a) .NET 與 Java 相似,屬於託管平臺,C#等語言編寫的代碼由 CLR 託管執行。
b) GC 是垃圾收集器。程序員不用擔憂內存管理,由於垃圾收集器會自動進行管理。
要請求垃圾收集,能夠調用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
5. 簡述 C# private、 protected、 public、 internal 修飾符的訪問權限。
答.:
a) private : 私有成員, 在類的內部才能夠訪問。
b) protected : 保護成員,該類內部和繼承類中能夠訪問。
c) public : 公共成員,徹底公開,沒有訪問限制。
d) internal: 在同一命名空間內能夠訪問。
6. 列舉 ASP.NET 頁面之間傳遞值的幾種方式。
答:
a) URL 使用 QueryString, 如....?id=1; response. Redirect()....
b) 使用 Session 對象
c) Cache
d) 文件
e) 數據庫
7. C#中的委託是什麼?事件是否是一種委託?
答 :
a) 委託也是類型
b) 委託是類型安全的指針
c) 事件是特殊的委託
8. override 與 OverLoad 重載的區別
答 :
a) Override 是進行基類中函數的重寫。
b) 重載是方法的名稱相同,可是參數或者返回值不一樣。
OO 實現多態的方式。
9. 若是在一個 B/S 結構的系統中須要傳遞變量值,可是又不能使用 Session、Cookie、
Application,您有幾種方法進行處理?
答 :
a) this.Server.Transfer
b) Cache
c) 文件
d) 數據庫
10. 用.net 開發系統,通常是什麼架構?,每一層之間的關係以及爲何要這樣分層?
答:通常爲 3 層架構
a) 數據訪問層 DAL,業務層 BLL,顯示層 PL。
b) 優勢: 分工明確,條理清晰,易於調試,並且具備可擴展性。
缺點: 增長資源開銷、提高開發、運營成本。
11. 什麼叫應用程序域 AppDomain?
答:應用程序域(由 AppDomain 對象表示)爲執行託管代碼提供隔離、卸載和安全邊界。多個應用程序域能夠在一個進程中運行;可是,在應用程序域和線程之間沒有一對一的關聯。 多個線程能夠屬於一個應用程序域,儘管給定的線程並不侷限於一個應用程序域,但在任何給定時間,線程都在一個應用程序域中執行。
12. .NET 中的 CTS、CLS、CLR 分別是什麼?
答:CTS:通用語言系統。CLS:通用語言規範。CLR:公共語言運行庫。做用相似於
JVM 虛擬機,託管執行代碼。
13. 什麼是裝箱和拆箱?
答:Inbox 從值類型轉換到引用類型叫作裝箱。OutBox 從引用類型轉換到值類型叫作
拆箱。
14. 什麼是託管代碼?
答: 託管代碼,指的的是 C#或者 VB.NET 等語言編寫的代碼,不是直接編譯成機器碼,
而是編譯成中間語言 IL,由 CLR 託管運行。Java 也屬於託管語言,使用 Java 編寫的代碼也屬於託管代碼。
15. ADO.NET 中讀寫數據庫須要用到那些類?他們的做用?
答:
a) DataSet:數據集,能夠離線存儲數據庫數據。
b) DataCommand:執行語句命令,也能夠執行 SQL 和存儲過程。
c) DataAdapter:數據的集合,用語填充。
d) SQLConnection 提供連接字符串對象
e) DataReader 數據讀取器,每次讀取一行數據。
16. ASP.net 的身份驗證方式有哪些?分別是什麼原理?
答:
a) Windows(默認):使用 Window 域驗證。
b) From(表單)用賬戶:用戶再 Form 中輸入用戶名和密碼,而後提交給服務器驗證。
c) Passport(密鑰) 微軟提供服務,收費。
17. 什麼是 Code-Behind 技術?
答:代碼後植。 也叫代碼隱藏,是.NET 提供了一種把前臺 UI 代碼和後臺邏輯代碼分離的技術。在 Winform、WebForm、WPF、Silverlight 很常見。MVC 開發中已經再也不支
持。
18. .NET 調用 Web Service 的方法有哪些?
答:
a) 使用 WSDL.exe 命令行工具。
b) 使用 Visual Studio 中的 Add Web Reference,自動生成客戶端調用代碼
c) 用 WCF 帶的 SvcUtils 工具。
d) 自定義代碼構造 SOAP 消息調用。
19. .net Remoting 的工做原理是什麼?
答: 客戶端和服務經過對象序列化傳遞信息,使用 HTTP、 TCP 或者 IPC,服務端收到消息後執行方法調用。實際也是一種代理模式。WCF 框架必定程度上借鑑了.NET
Remoting 的編程模型,差異是 WCF 還能夠支持跨平臺調用。
20. 在 C#中,string str = null 與 string str = 「」 請儘可能使用文字或圖象說明其中的區別。
答:
a) string str = null 是不給他分配內存空間,
b) 而 string str = "" 給它分配長度爲空字符串的內存空間。
21. 請詳述在 dotnet 中類(class)與結構(struct)的異同?
答:
a) Class 屬於引用類型,是分配在內存的堆上, 能夠被實例化,
b) Struct 屬於值類型,分配在內存的棧上.
22. 簡要談一下您對微軟.NET remoting 和 ASP.NET web service、WCF 技術的理解以及
實際中的應用。
答:
a) ASP.NET web service,微軟早期的 Web 服務開發技術,支持 的 WS 協議。使用HTTP 協議,不支持安全、事務等高級特性。
b) Remoting 只能應用於.NET 平臺,不能誇平臺。能夠利用 TCP/IP,HTTP,IPC
等協議。
c) WCF 是微軟推出的全新的分佈式開發技術,兼容舊的 ASP.NET web service,支
持最新的 WS 規範,好比 WS 安全、分佈式事務、會話等特性。功能強大。
23. 寫出一條 Sql 語句:取出表 A 中第 31 到第 40 記錄(SQLServer,以自動增加的 ID 做
爲主鍵,注意:ID 可能不是連續的。
答:
解 1: select top 10 * from A where id not in (select top 30 id from A)
解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as
A)
24. C#中 abstract class 抽象類和 interface 有什麼區別?
答:
a) 抽象類使用 abstract 聲明,(abstract class)
b) 不能建立 abstract 類的實例。在子類中實現該方法。知道其行爲的其它類能夠在
類中實現這些方法。實現多態。
c) 抽象類只能單繼承,能夠包含實現的方法。
d) 接口表示契約,一種約束關係(interface)是抽象類的變體。在接口中,全部方法
都是抽象的。
e) 多繼承性可經過實現這樣的接口而得到。
f) 接口容許多繼承。
25. 啓動一個線程 thread 是用 run()仍是 start()?
答:啓動一個線程是調用 start()方法
26. 接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concrete class)?
答:
a) 接口能夠繼承接口。抽象類能夠實現(implements)接口,
b) 抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。
27. C#構造函數 Constructor 是否可被 override?
答:
a) 構造器 Constructor 不能被繼承,所以不能重寫 Overriding,
b) 但能夠被重載 Overloading。
28. C#中 是否能夠繼承 String 類?
答:String 類是 final 類故不能夠繼承。
29. try {}裏有一個 return 語句,那麼緊跟在這個 try 後的 finally {}裏的 code 會不會被執行,何時被執行,在 return 前仍是後?
答:不必定,可能會執行,A)異常被捕獲,則在 return 前執行。B)若是沒有捕獲,
則 finally 塊的執行取決於如何觸發異常展開操做。此操做又取決於計算機是如何設置的。應該說在{}括號前執行。
30. 兩個對象值相同(x.equals(y) == true),但卻可有不一樣的 hash code,這句話對不對?
答:不對,有相同的 hash code。
31. swtich 是否能做用在 byte 上,是否能做用在 long 上,是否能做用在 String 上?
答:switch (expr1)中,expr1 是一個整數表達式。所以傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 byte。long,string 都不能做用於 swtich。
32. 當一個線程進入一個對象的一個 synchronized 方法後,其它線程是否可進入此對象的
其它方法?
不能,一個對象的一個 synchronized 方法只能由一個線程訪問。
33. abstract 的 method 是否可同時是 static,是否可同時是 native,是否可同時是
synchronized?
答:抽象方法只能屬於抽象類,都不能。
34. Thread 的線程的 sleep() 和 wait() 方法有什麼區別?
答:
a) sleep()方法是使線程中止一段時間的方法。在 sleep 時間間隔期滿後,線程不必定
當即恢復執行正在運行的線程由於其它緣由而阻塞。
b) wait()是線程交互時,若是線程對一個同步對象 x 發出一個 wait()調用,該線程會
暫停執行,被調對象進入等待狀態,直到被喚醒或等待時間到。
35. 談談 C#中 final, finally 區別
答:
a) final—修飾符(關鍵字)若是一個類被聲明爲 final,意味着它不能再派生出新的子
類,不能做爲父類被繼承。
b) finally—再異常處理時提供 finally 塊來執行任何清除操做。
36. Session 有什麼重大 BUG,微軟提出了什麼解決方法?
答:
a) 可能出現會話信息丟失的問題。
b) 是 iis 中因爲有進程回收機制,系統繁忙的話 Session 會丟失
c) 能夠用 Sate server 或 SQL Server 數據庫的方式存儲 Session 不過這種方式比
較慢,並且沒法捕獲 Session 的 END 事件。
37. 進程和線程的區別?
答:
a) 進程是系統進行資源分配和調度的單位;
b) 線程是 CPU 調度和分派的單位,一個進程能夠有多個線程,這些線程共享這個進
程的資源。
38. 堆和棧的區別?
答:
棧:由編譯器自動分配、釋放。在函數體中定義的變量一般在棧上。
堆:通常由程序員分配釋放。用 new、malloc 等分配內存函數分配獲得的就是在堆
上。C#中的堆爲託管堆,GC 負責管理。
39. C# static 的做用?是否是全部的方法都應該聲明爲 Static 的?
答:
a) 對象方法或者聲明爲 Static 靜態成員,表示此成員不在屬於對象的實例,而是屬
於整個 Class,咱們能夠直接經過 Class 直接調用該方法。
b) 不該該,靜態成員存儲在內存靜態存儲區,訪問速度快,可是容量有限。
40. ASP.NET Web Form 有幾種頁面傳值方式?各有什麼優劣?
Session、Viewstate、URL 等
41. ASP.NET Web Form 與 ASP 相比,主要有哪些進步?
答:
a) asp 屬於微軟早起的編程技術,頁面代碼嵌入腳本 VbScript,解釋執行類型.已經
被淘汰了。存在不少安全問題,執行效率低下。和 JSP 相似。
b) ASP.NET Web Form 屬於新的網站開發框架,基於.NET 平臺。 編譯型,性能提升,
安全性更高,更利於提高開發、調試工做的效率。 提供了豐富的控件庫、支持事件
編程模型。
42. ASP.NET MVC 是什麼?
ASP.NET MVC 是微軟推出的全新的網站開發框架,支持 MVC 架構模式。支持關注點
分離,更好地支持團隊開發,支持單元測試。 讓程序員更深刻地瞭解 Web 開發的本質。
目前已經發布到最新的 MVC6.0 版本。
43. ASP.NET MVC 一共有幾個版本,哪一個版本比較穩定?哪一個集成到.NET 框架中?
MVC1.0-6.0,6 個版本 MVC。
44. ASP.NET MVC6 最大的新特性是什麼?
45. ASP.NET MVC 有幾種頁面傳值方式?
46. Bootstrap 是什麼?如何使用?
Bootstrap 是 Twitter 推出的一個用於前端開發的開源工具包。它由 Twitter 的設計師
Mark Otto 和 Jacob Thornton 合做開發,是一個 CSS/HTML 框架。免費、開源,使用起
來很是簡單。目前很是流行。ASP.NET MVC 5.0 版本直接集成到模板中。
47. ASP.NET WebForm 與 MVC 有什麼區別?各自的優缺點是什麼?
a) ASP.NET Web Form 網站開發框架,基於.NET 平臺。編譯型,性能提升,安全性
更高,更利於提高開發、調試工做的效率。 提供了豐富的控件庫、支持事件編程模
型。
b) ASP.NET MVC 屬於全新的微軟網站開發框架,開源。
c) 支持 MVC 架構模式,很好地實現了職責分離。更好地支持單元測試,和團隊協做
開發工做!
d) MVC 與三層架構區別,路由、緩存、安全驗證等
48. Web API 是什麼?和 REST WCF 有什麼關係?
49. ASP.NET Identity 是什麼?
ASP.NET Identity 屬於微軟推出的全新的、更加簡單易用的、安全身份驗證框,取代之
前的 ASP.NET Membership 組件。它支持最新的 Oath,兼容 OWIN 組件,與 Visual
Studio2013 一塊兒發佈。
50. 什麼是 SOA?什麼是 Web 服務?與 Web API 有什麼不一樣?
SOA 又稱做面向服務的架構,以服務爲核心來實現分佈式系統的集成交互。最大限度
利用現有資源。WCF 是微軟的全新的分佈式開發框架,支持最新的 Web 服務標準規
範,Web API 也稱做 Web 接口,微軟推出的
ASP.NET Web API 是一種 REST 風格的開發框架,簡單方便。
51. 微軟下一代.NET vNext 有什麼新特性?你比較期待什麼?
52. 如何實現跨平臺分佈式系統安全身份驗證和數據加密?
53. 如何保證網站系統安全?加密算法各有什麼優勢和缺陷?有什麼措施?
54. 如何實現高併發電商網站分佈式架構?
55. 如何支持百萬用戶同時在線 NoSQL 是什麼?MongoDB 如何作分佈式集羣?
56. 如何實現 SSO 單點登陸,跨平臺對接 QQ 或者微博帳號?
57. 如何實現千萬數據庫查詢優化?
58. 如何實現上億規模數據快速存取?