總結一下面試.Net所遇到的基礎知識題,在此做下記錄
1、try {} catch{} finally{}執行順序
無論try和catch代碼塊里是否有return,finally代碼塊都會執行
如果try中沒有異常,則順序為try→finally,如果try中有異常,則順序為try→catch→finally。
如果有return,則有兩種不同情況:
private int test1() { int i = 1; try { i++; Console.WriteLine("try:" + i); return i; } catch (Exception e) { i++; Console.WriteLine("catch:" + i); } finally { i++; Console.WriteLine("finally:" + i); } return i; }
輸出:
try:2
finally:3
2
注:因為當try中帶有return時,會先執行return前的代碼,然后暫時保存需要return的信息,再執行finally中的代碼,最后再通過return返回之前保存的信息。所以,這里方法返回的值是try中計算后的2,而非finally中計算后的3。
1 private List<Int32> test2() { 2 List<Integer> list = new ArrayList<>(); 3 try { 4 list.add(1); 5 Console.WriteLine("try:" + list); 6 return list; 7 } catch (Exception e) { 8 list.add(2); 9 Console.Writeline("catch:" + list); 10 } finally { 11 list.add(3); 12 Console.Writeline("finally:" + list); 13 } 14 return list; 15 }
輸出:
try:[1]
finally:[1, 3]
[1, 3]
注:這里為什么和上個例子不同呢,其實問題出在參數類型上,上一個例子用的是基本類型,這里用的引用類型。list里存的不是變量本身,而是變量的地址,所以當finally通過地址改變了變量,還是會影響方法返回值的。
2、web Service的了解
web service 即web服務,舉個例子說明一下說明是web 服務。
例如在Windows Server服務器上有個C#.Net開發的應用A,在Linux上有個Java語言開發的應用B,B應用要調用A應用,或者是互相調用,用於查看對方的業務數據。
通過Web Service,客戶端和服務器才能夠自由的用HTTP進行通信,不論兩個程序的平台和編程語言是什么。
WebService是一種跨語言和跨平台的遠程調用技術。
XML+XSD,SOAP和WSDL就是構成WebService平台的三大技術。
WebService采用HTTP協議傳輸數據,采用XML格式封裝數據
SOAP協議 = HTTP協議 + XML數據格式
WebService務器端首先要通過一個WSDL文件來說明自己家里有啥服務可以對外調用,服務是什么(服務中有哪些方法,方法接受 的參數是什么,返回值是什么),服務的網絡地址用哪個url地址表示,服務通過什么方式來調用。
3、webAPI和MVC的區別
Web API屬於ASP.NET核心平台的一部分,它利用MVC框架的底層功能方便我們快速的開發部署WEB服務.
mvc主要用於建站,web api主要用於構建http服務
兩種框架主要是在Asp .Net
的基礎上進行改造,主要是對HttpModule
和HttpHandler
做了擴展,實現方法是不一樣的。
比如說前者更像是在一層上建了第二層,引伸出更強大的路由機制,實現了諸如MvcHandler
和ControllerFactory
這種消息處理和后台控制器方法選擇機制,
Web Api
除了擴展了前者以外,另外寫出了一套獨立的,獨立於Asp .Net
的消息處理管道,就像是借鑒原來房子的模型,重新設計出了另外一套別墅。這也很好地解釋了為什么Web Api
可以寄宿在不同的宿主上
Web Api
處理消息有兩個核心類是HttpRequestMessage
和HttpResponseMessage
4、XML的理解
可擴展標記性語言
使用xml時,一定要引用命名空間:using System.Xml;
主要用來處理、存儲數據。無規定標簽,可擴展。
只能有一個根節點。