.NET 經典面試題


微軟.NET 經典面試題

1.  OO 面向對象的語言具有的三大特性:________性、_________性、________性

答:封裝、繼承、多態。

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.  如何實現上億規模數據快速存取?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM