面試過後自己的不足
給的建議:理論聯系實踐,今後從事Java會接觸到微服務,并且面試時也會是加分項。
1.InnoDB的可重複讀底層實作
答:使用MVCC(多版本并發控制)。
InnoDB為每行記錄添加一個版本号(系統版本号),每當修改資料時版本号加一。
讀取事務開始時,系統會給事務一個目前版本号,事務會讀取版本号<=目前版本号的資料,這時另一個事務插入一條資料,并立馬送出,新插入這條資料的版本号會比讀取事務的版本号高,是以,讀取事務讀的資料還是不會變。
2.ThreadLocal作用及使用場景 詳細連結
答:
- 介紹
- 同一個ThreadLocal所包含對象在不同Thread中有不同的副本,其它Thread不可通路,是以不存在多線程間共享問題。
- ThreadLocal可以使用其它方法達到效果,不過這樣實作更簡潔。
- 每一個Thread存在每個線程專屬的ThreadLocalMap,維護着ThreadLocal對象與具體執行個體的映射,
- ThreadLocalMap 的 Entry 對 ThreadLocal 的引用為弱引用,避免了 ThreadLocal 對象無法被回收的問題
- ThreadLocalMap 的 set 方法中,通過 replaceStaleEntry 方法将所有鍵為 null 的 Entry 的值設定為 null,進而使得該值可被回收。
- 使用場景:
- 每個線程需要自己獨立的執行個體
- 執行個體需要在多個方法中共享,但不希望在多個線程中共享。
3.Mysql函數 連結1 連結2
- join 是兩張表做交連後裡面條件相同的部分記錄産生一個記錄集,
- union是産生的兩個記錄集并在一起,成為一個新的記錄集 。
4.ConcurrentHashMap 詳細介紹
5.JUC 中的 Atomic 原子類 詳細介紹
JUC下底層原理是CAS操作
6.Volatile和Transient
- Transient代表不會序列化。
- Volatile有可見性不具有原子性。(如果具有原子性就不需要juc下的atomic包了)
7.Spring的單例 / 多例模式 詳細介紹
類有一個普通屬性和一個靜态屬性
- 多例,多個線程共享靜态屬性,普通屬性是獨立的。
- 單例,多個線程共享靜态屬性和普通屬性。
8.微服務Spring Cloud 詳細介紹