遇见的面试题

  • 1

public class Test {
    public static void main(String[] args) {
        Integer[] a1 = new Integer[3];
        a1[0]= new Integer(1);
        a1[1]= new Integer(1);
        a1[2]= new Integer(1);

        int[] a2 = new int[3];
        a2[0] = 1;
        a2[1] = 2;
        a2[2] = 3;
        System.out.println("++++++++++++++++++++++++++++++++++++++++++++=");
        System.out.println(Arrays.asList(a1).size());//3
        System.out.println(Arrays.asList(a2).size());//1
    }
}

为什么输出结果为3和1

因为泛型不支持基础数据类型,int数组当成了一个List<int[]>中的一个元素
  • 2

public static void main(String[] args) {
        short a =1;
        a=a+1;
        a+=1;
    }

第一种写法是错误的,在编译器里就提示,需要short类型,但是发现是一个int类型,a+1操作的时候默认向上转型了,转成了int,但是再赋值给a的时候需要向下转型为short,向下转型编译器不会默认的给你转,需要你手动转,比如a=short(a+1);这也能编译通过。像a+=1应该是编译器做了特殊处理。

  •  3描述一下ZooKeeper的leader选举过程

参考《从paxos到zookeeper分布式一致性原理》一书的7.6节内容。

原文地址:https://www.cnblogs.com/dupang/p/5721901.html