1. 程式人生 > >記錄一次別人的面試題

記錄一次別人的面試題

1. 下面程式的執行結果是什麼?

 static class HelloA {

        public HelloA() {
            System.out.println("HelloA");
        }

        {
            System.out.println("I m A class");
        }

        static {
            System.out.println("static A");
        }
    }


    static class HelloB extends HelloA {
        public HelloB() {
            System.out.println("HelloB");
        }

        {
            System.out.println("I m B class");
        }

        static{
            System.out.println("static B");
        }

        public static void main(String[] args) {
            new HelloB();
        }

    }

這個考察的是類的初始化順序,一般是父類的靜態變數,靜態程式碼塊->子類的靜態成員,靜態程式碼塊->父類的成員變數->父類的初始化塊(就是直接用大括號擴起來的,平時不常見)->父類的建構函式->子類的成員變數->子類的初始化塊->子類的建構函式

執行結果如下:

static A
static B
I m A class
HelloA
I m B class
HelloB

2.用最有效率的方法計算5*32

我能想到的只有使用位移了

5 << 5

測試一下

        int n1 = 5 * 32;
        int n2 = 5 << 5;

        System.out.println(n1);
        System.out.println(n2);

執行結果

160
160