---
# System prepended metadata

title: Tibame JAVA基本觀念整理：

---

# Tibame JAVA基本觀念整理：

## 基礎JAVA：
1. String/String Builder/String Buffer的差別：
    a. String/String Pool介紹在模組14(P.127)：複習字串比對equals, ==的差別
    b. String Builder/ String Buffer在模組27(P.386, 387)
    c. Thread-safe: String Buffer
2. Iterator是什麼：
    模組14-3(P.324)
    取得Collection內的元素，但不保證取得順序。
3. Collection有幾種：
    講義P.318
![](https://hackmd.io/_uploads/BysU9-z1s.png)
4. List, Set是什麼？
    講義P.320
    List有特定順序，可重複
    Set無特定順序，不重複
5. Array和ArrayList差別：
    1. Array: 模組12
    2. Arraylist: 模組14
6. ArrayList和Linkedlist差別 
    模組20-1(P.351)
![](https://hackmd.io/_uploads/HJblTbMyi.png)
7. Vector是什麼
    模組24-3(P.375)
    Vector等同於ArrayList, 但vector提供同步化優點(多執行緒存取)。
8. 如何用Iterator取ArrayList
    模組17-1(P.337)
![](https://hackmd.io/_uploads/H1ENyQGys.png)
9. 如何用for-loop + index取ArrayList
10. 請敘述你知道的design-pattern
    1. Singleton pattern 
    2. Hook
    3. Factory pattern
    4. Facade pattern
    5. Strategy pattern(Java RPG)
    6. Builder pattern(Lamda)
11. MVC model是什麼？
    a. Model2 OpenHomeCC(https://openhome.cc/Gossip/ServletJSP/Model2.html)
    ![](https://hackmd.io/_uploads/BkTFSGz1o.png)
12. 修飾子，解釋大小關係
    ![](https://hackmd.io/_uploads/ryanLfGyj.png)
    a. 模組16(P.136)
    b. Public->Protected->default->private 講義P.191
14. this, super區別/繼承解釋
    a. this關鍵字：講義P.150
    b. 當前類別/父類別
    c. 模組21(P.163)
14. 多型
    Object就是最基本的多型。
    參考模組11-3(P.111)
    模組22(P.171)
    模組23(P.175)
15. 介面
16. 可以多重繼承嗎？
17. 介面與抽象類別的差別
    模組24(P.182)
    模組25(P.184)
        1. 避免濫用繼承
        2. 定義規格用途
        3. 介面宣告的方法為抽象方法
    JAVA不能多重繼承而是用實作介面取代此功能。(C++可以多重繼承)
18. 抽象方法
    沒有方法主體，加上abstract修飾子
19. Generic(泛型)
    模組16(P.330)
    Object是最基本的多型，基本型別不能使用(int, float...)
    利用\<?>增加彈性(ResponseEntity)

20. 兩種Exception(Uncheck, Check)
    講義P.259
    uncheck: 不必檢查的例外(runtime exception, sub-class)
    check: 一定要處理的例外(IOException, SQLException)
35. finally的重要性
    finally一定會執行，可用在檔案讀取，資料庫連線等資源釋放。
    **try with resources取代([try-with-resources](https://www.baeldung.com/java-try-with-resources))**
34. throw, throws
    講義P.261
        1. throws: 定義方法時將可能的例外丟出。
        2. throw: 將方法內的例外手動丟出。
30. Overload
    模組9-3(P.93)
    Java依據參數的數目以及不同的資料型別，自動呼叫對應的方法。
31. Override
    模組21(P.163)
    繼承父類別後重新改寫方法。static方法無法override
32. int/Integer
    模組31(包裝類別)
    Auto-boxing/unboxing
33. 如何分辨是不是個物件(instance of)
    講義P.176

36. Spring是什麼
    DI, IOC, AOP...一言難盡 一定會被問爆。
37. Static是什麼
    模組19(P.153)
        1. static類別變數：由該類別的物件共享共用
        2. static類別：在實體建構前，變數和方法就會先被載入。
        3. static方法不可override
        4. static方法內不可以存取該類別中非靜態的變數和方法，需要先new實體使用。
        5. static區塊：在載入類別時會先執行一次。
38. Class A 可以再裝一個Class B
    模組34：內部類別(P.412)
    內部類別不用透過參數傳遞。
39. Lambda
    模組37(P.424)

## 專題相關：
1. 專題如何定義Coding rules
    * 駝峰式/全小寫
    * Class命名規則：參考JAVA SPEC方式：
    * Interface/Implement
2. 用什麼版本控制：Git-Hub