zoukankan      html  css  js  c++  java
  • 20160606面试题总结

    1、左链接、右链接、内链接、交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。 

    -------------------------------------------------
      a表     id   name     b表     id   job   parent_id   
                  1   张3                   1     23     1   
                  2   李四                 2     34     2   
                  3   王武                 3     34     4       
      a.id同parent_id   存在关系   

    --------------------------------------------------    
     1) 内连接   
      select   a.*,b.*   from   a   inner   join   b     on   a.id=b.parent_id       
      结果是     
      1   张3                   1     23     1   
      2   李四                  2     34     2   
        
      2)左连接   
      select   a.*,b.*   from   a   left   join   b     on   a.id=b.parent_id       
      结果是     
      1   张3                   1     23     1   
      2   李四                  2     34     2   
      3   王武                  null   

     3) 右连接   
      select   a.*,b.*   from   a   right   join   b     on   a.id=b.parent_id       
      结果是     
      1   张3                   1     23     1   
      2   李四                  2     34     2   
      null                       3     34     4   
        
     4) 完全连接   
      select   a.*,b.*   from   a   full   join   b     on   a.id=b.parent_id   

      结果是     
      1   张3                  1     23     1   
      2   李四                 2     34     2   
      null                   3     34     4   
      3   王武                 null

    2、C#中new关键字的作用有哪些

    在 C# 中,new 关键字可用作运算符、修饰符或约束。
    1)new 运算符:用于创建对象和调用构造函数。这种大家都比较熟悉,没什么好说的了。
    2)new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。
    3)new 约束:用于在泛型声明中约束可能用作类型参数的参数的类型。
    3、抽象类
    抽象类不能实例化、是必须被子类重写的方法、如果抽象类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其他一般方法。
    类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象
    4、封装
    方法和属性包装在类中,通过类的实例来实现
    5、值类型和引用类型的区别
    6、装箱、拆箱
    装箱:值类型装换到引用类型
    7、值类型、引用类型

    值类型和引用类型的基类
    引用类型和值类型都继承自System.Object类。不同的是,几乎所有的引用类型都直接从System.Object继承,而值类型则继承其子类,即直接继承System.ValueType。
    作为所有类型的基类,System.Object提供了一组方法,这些方法在所有类型中都能找到,其中包含toString方法及clone等方法。
    System.ValueType直接继承System.Object,即System.ValueType本身是一个类类型,而不是值类型;System.ValueType没有添加任何成员,但覆盖了所继承的一些方法,使其更适合于值类型。例如,ValueType重写了Equals()方法,从而对值类型按照实例的值来比较,而不是引用地址来比较。

    复制代码
        struct Program
    {
    static void Main(string[] args)
    {
    Program testType = new Program();

    if (testType.GetType().IsValueType)
    {
    Console.WriteLine("{0} is value type.", testType.ToString());
    }
    Console.ReadLine();
    }
    }
    复制代码

    值类型
    值类型的特性:
    1.C#的所有值类型均隐式派生自System.ValueType。
    各个值类型及其基类:
    结构体:struct(直接派生于System.ValueType);
    数值类型:
    整型:
    short(System.Int16),ushort(System.UInt16),int(System.Int32),uint(System.UInt32),
    long(System.Int64),ulong(System.UInt64),
    sbyte(System.SByte的别名),byte(System.Byte),
    字符型:char(System.Char);
    浮点型:float(System.Single),double(System.Double);
    用于财务计算的高精度decimal型decimal(System.Decimal)。
    boolbool(System.Boolean的别名);
    枚举:enum(派生于System.Enum);
    可空类型(派生于System.Nullable泛型结构体,语法 T? 是 System.Nullable<T> 的简写,此处的 T 为值类型。)
    2.每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。
    例如:
    int i = new int();
    等价于:
    Int32 i = new Int32();
    等价于:
    int i = 0;
    等价于:
    Int32 i = 0;
    使用new运算符时,将调用特定类型的默认构造函数并对变量赋以默认值。在上例中,默认构造函数将值0赋给了i。
    3.所有的值类型都是密封(seal)的,所以无法派生出新的值类型。
    4.
    值类型的实例通常是在线程栈上分配的(静态分配),但是在某些情形下可以存储在堆中。
    引用类型
    引用类型的特性:
    1.
    C#的所有引用类型均隐式派生自System.object。
    各个引用类型及其基类:
    数组:(派生于System.Array)数组的元素,不管是引用类型还是值类型,都存储在托管堆上;
    类:class(派生于System.Object);
    接口:interface(接口不是一个“东西”,所以不存在派生于何处的问题。);
    委托:delegate(派生于System.Delegate);
    objectSystem.Object的别名);
    字符串:string(System.String的别名)。
    2.引用类型可以派生出新的类型。
    3.引用类型可以包含null值。
    4.
    引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
    5.引用类型的对象总是在进程堆中分配(动态分配)。

    值类型和引用类型的区别
    所有继承System.Value的类型都是值类型,其他类型都是引用类型。
    引用类型可以派生出新的类型,而值类型不能;
    引用类型存储在堆中,而值类型既可以存储在堆中也可以存储在栈中。
    引用类型可以包含null值,值类型不能(可空类型功能允许将 null 赋给值类型);
    引用类型变量的赋值只复制对对象的引用,而不复制对象本身。而将一个值类型变量赋给另一个值类型变量时,将复制包含的值。
    当比较两个值类型时,进行的是内容比较;而比较两个引用类型时,进行的是引用比较。
    值类型在内存管理方面具有更好的效率,并且不支持多态,适合用作存储数据的载体;引用类型支持多态,适合用于定义应用程序的行为。
    Int[]是引用类型还是值类型
    数组类型是一族类型,它们都继承System.Array,而System.Array继承自System.Object。所以所有的数组类型都是引用类型

     8、redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。redis提供五种数据类型:string,hash,list,set及zset(sorted set)。
    9、Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
    memcached作为高速运行的分布式缓存服务器,具有以下的特点。
    · 协议简单
    · 基于libevent的事件处理
    · 内置内存存储方式
    · memcached不互相通信的分布式
  • 相关阅读:
    Java tomcat max-http-header-size配置导致的oom
    Idea修改jvm参数
    Java List的SubList使用问题
    Java Arrays.asList的三个坑
    Java 重写equals的时候为什么一定要重写hashcode-一个例子
    远心镜头
    镜头常识总结
    halcon中保存图像jpeg的压缩比
    红外光 相机拍照
    电磁波的穿透能力总结
  • 原文地址:https://www.cnblogs.com/zhangxiaolei521/p/5566697.html
Copyright © 2011-2022 走看看