总结一下面试.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;
主要用来处理、存储数据。无规定标签,可扩展。
只能有一个根节点。