zoukankan      html  css  js  c++  java
  • .net 基础面试问题,总有你的盲点

    null>=0 结果是什么,?为什么

    原理
    1:任何对象和基本类型直接比较,都会按顺序调用自身的valueOf()和tostring()返回类型后(只要ValueOf存在,就不会再调用toString)进行比较
    2:相同基本类型直接的比较运算或相等运算,按照常识理解即可
    3:不同基本类型直接的比较运算或相等运算有区别
         1:相等运算符:有个特殊规则,null,undefined 相互判断是否相等为true        
               其余全是false
         2:比较运算符,特殊规则是null与其他类型比较时,被转化为数字 
              0,undefined是正常转化为数字NaN
         3:其余情况,不同基本类型直接一律转化为数字进行比较运算或相等运算,注 
            意:布尔型转化为数字后对应为0和1,NaN与任意类型比较运算或相等 
            运算一律是false
    View Code

    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→catchfinally。
    
    如果有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通过地址改变了变量,还是会影响方法返回值的。
    View Code

    什么是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地址表示,服务通过什么方式来调用。
    View Code

    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
    View Code

    性能调优

    说起性能调优,可以说是面试中、实际工作中经常会面对的一个系列问题,在硬件条件非常有限的情况下,如果让系统跑得通、跑得快,是考验一个程序员,特别是高级程序员很重要的专业命题。
    何谓性能调优?性能调优就是用更少的资源提供更好的服务,成本利益最大化。性能调优的手段并不新鲜,性能调优常规手段有:

    • 空间换时间,内存、缓存就是典型的空间换时间的例子。利用内存缓存从磁盘上取出的数据,CPU请求数据直接从内存中获取,从而获取比从磁盘读取数据更高的效率。
    • 时间换空间,当空间成为瓶颈时,切分数据分批次处理,用更少的空间完成任务处理。上传大附件时经常用这种方式。
    • 分而治之,把任务切分,分开执行,也方便并行执行来提高效率。
    • 异步处理,业务链路上有任务时间消耗较长,可以拆分业务,减少阻塞影响。常见的异步处理机制有MQ(消息队列),目前在互联网应用中大量使用。
    • 并行,多个进程或者线程同时处理业务,缩短业务处理时间,比如我们在银行办理业务时,如果排队人数较多时,银行会加开柜台。
    • 离用户更近一点,比如CDN技术,把用户请求的静态资源放在离用户更近的地方。
    • 一切可扩展,业务模块化、服务化(同时无状态化)、良好的水平扩展能力。

    就.NET性能调优来说,主要包括数据库调优、Webapi调优、O/RM框架调优以及性能排查,这一方面要求程序员拥有扎实的专业知识,一方面也要求有丰富的实战经验,也是衡量程序员是否能成为团队技术核心很重要的指标。

  • 相关阅读:
    jquery,字符串转json对象,json对象转字符串
    Oracle,跳出游标循环
    oracle常用函数使用大全 Oracle除法(转)
    Oracle 数字操作。数字函数。mod(),trunc(),round(),ceil(),floor的使用
    Oracle 和sqlserver 字符串补齐
    js中数组的splice()方法
    详解JavaScript的splice()方法
    使用GDB命令行调试器调试C/C++程序
    代码为什么需要重构
    Spring事务管理要点总结
  • 原文地址:https://www.cnblogs.com/LZXX/p/12753699.html
Copyright © 2011-2022 走看看