# 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

4. List, Set是什麼?
講義P.320
List有特定順序,可重複
Set無特定順序,不重複
5. Array和ArrayList差別:
1. Array: 模組12
2. Arraylist: 模組14
6. ArrayList和Linkedlist差別
模組20-1(P.351)

7. Vector是什麼
模組24-3(P.375)
Vector等同於ArrayList, 但vector提供同步化優點(多執行緒存取)。
8. 如何用Iterator取ArrayList
模組17-1(P.337)

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)

12. 修飾子,解釋大小關係

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