null>=0 结果是什么,?为什么
原理 1:任何对象和基本类型直接比较,都会按顺序调用自身的valueOf()和tostring()返回类型后(只要ValueOf存在,就不会再调用toString)进行比较 2:相同基本类型直接的比较运算或相等运算,按照常识理解即可 3:不同基本类型直接的比较运算或相等运算有区别 1:相等运算符:有个特殊规则,null,undefined 相互判断是否相等为true 其余全是false 2:比较运算符,特殊规则是null与其他类型比较时,被转化为数字 0,undefined是正常转化为数字NaN 3:其余情况,不同基本类型直接一律转化为数字进行比较运算或相等运算,注 意:布尔型转化为数字后对应为0和1,NaN与任意类型比较运算或相等 运算一律是false
for和forech的区别
for:在固定长度不需要计算的时候使用 forech:1:在不确定长度,或计算长度有性能损耗的时候,用foreach比较方便. 2:能够进行foreach的类型结构,都必须实现IEnumerable接口。 3:并且foreach的时候会锁定集合中的对象.期间不能修改
什么是c# 匿名类型
匿名类就是没有名字的类。匿名类不能被引用,只能再创建的时候用new语句来声明。 //这就是匿名类型 var news = new {title="标题"};
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。 private List<Int32> test2() { List<Integer> list = new ArrayList<>(); try { list.add(1); Console.WriteLine("try:" + list); return list; } catch (Exception e) { list.add(2); Console.Writeline("catch:" + list); } finally { list.add(3); Console.Writeline("finally:" + list); } return list; } 输出: try:[1] finally:[1, 3] [1, 3] 注:这里为什么和上个例子不同呢,其实问题出在参数类型上,上一个例子用的是基本类型,这里用的引用类型。list里存的不是变量本身,而是变量的地址,所以当finally通过地址改变了变量,还是会影响方法返回值的。
什么是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地址表示,服务通过什么方式来调用。
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
性能调优
说起性能调优,可以说是面试中、实际工作中经常会面对的一个系列问题,在硬件条件非常有限的情况下,如果让系统跑得通、跑得快,是考验一个程序员,特别是高级程序员很重要的专业命题。
何谓性能调优?性能调优就是用更少的资源提供更好的服务,成本利益最大化。性能调优的手段并不新鲜,性能调优常规手段有:
- 空间换时间,内存、缓存就是典型的空间换时间的例子。利用内存缓存从磁盘上取出的数据,CPU请求数据直接从内存中获取,从而获取比从磁盘读取数据更高的效率。
- 时间换空间,当空间成为瓶颈时,切分数据分批次处理,用更少的空间完成任务处理。上传大附件时经常用这种方式。
- 分而治之,把任务切分,分开执行,也方便并行执行来提高效率。
- 异步处理,业务链路上有任务时间消耗较长,可以拆分业务,减少阻塞影响。常见的异步处理机制有MQ(消息队列),目前在互联网应用中大量使用。
- 并行,多个进程或者线程同时处理业务,缩短业务处理时间,比如我们在银行办理业务时,如果排队人数较多时,银行会加开柜台。
- 离用户更近一点,比如CDN技术,把用户请求的静态资源放在离用户更近的地方。
- 一切可扩展,业务模块化、服务化(同时无状态化)、良好的水平扩展能力。
就.NET性能调优来说,主要包括数据库调优、Webapi调优、O/RM框架调优以及性能排查,这一方面要求程序员拥有扎实的专业知识,一方面也要求有丰富的实战经验,也是衡量程序员是否能成为团队技术核心很重要的指标。