天天看點

誰是代碼界3%的王者?

在Java代碼界

有些陷阱外表看起來是個青銅

實際上是王者

據說97%工程師會被“秒殺”

不信?

阿裡妹這有五道“基礎題”

堪稱5個溫柔的陷阱

似是而非,霧裡看花

考驗真功夫的時候到了!

public class FloatPrimitiveTest {
    public static void main(String[] args) {
        float a = 1.0f - 0.9f;
        float b = 0.9f - 0.8f;
        if (a == b) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }
    }
}           

01

這段代碼輸出的結果是:

A: true

B: false

C: 由硬體指令決定

public class FloatWrapperTest {
    public static void main(String[] args) {
        Float a = Float.valueOf(1.0f - 0.9f);
        Float b = Float.valueOf(0.9f - 0.8f);
        if (a.equals(b)) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }
    }
}           

02

C: 編譯出錯
public class SwitchTest {
    public static void main(String[] args) {
        String param = null;
        switch (param) {
            case "null":
                System.out.println("null");
                break;
            default:
                System.out.println("default");
        }
    }
}           

03

下列哪種說法是正确的:

A: null

B: 抛出異常

C: default

public class BigDecimalTest {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal(0.1);
        System.out.println(a);
        BigDecimal b = new BigDecimal("0.1");
        System.out.println(b);
    }
}           

04

A: 兩種指派的方式是一樣的

B: 推薦a的指派方式

C: 推薦b的指派方式

private final static Lock lock = new ReentrantLock();

    public static void main(String[] args) {
        try {
            lock.tryLock();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            lock.unlock();
        }
    }
}           

05

下列哪種說法是錯誤的:

A: lock是非公平鎖

B: finally代碼塊不會抛出異常

C: tryLock擷取鎖失敗則直接往下執行

原文釋出時間為: 2019-06-17

本文作者: 阿裡妹

本文來自雲栖社群合作夥伴“

阿裡技術

”,了解相關資訊可以關注“

”。

繼續閱讀