2020/12/08背題筆記
阿新 • • 發佈:2020-12-08
反射怎麼建立物件,構造器裡的引數是什麼?
import java.lang.reflect.Constructor; import java.lang.reflect.Method; /** * @Author:Frank * @Date:2020/12/8 15:38 */ public class Reject { public static void main(String[] args) { try { Class tree=Class.forName("TreeNode"); Constructor constructor=tree.getConstructor(new Class[]{int.class}); //Constructor []constructors=tree.getConstructors(); Object arr[]=new Object[]{1,2}; //TreeNode s=(TreeNode) constructor.newInstance(123); Method go=tree.getMethod("go",new Class[]{int.class,int.class}); System.out.println(go.invoke(constructor.newInstance(123),arr)); //System.out.println(go.invoke(null,arr)); } catch (Exception e) { e.printStackTrace(); } } }
-
Class.forName或者TreeNode.class獲取class
-
獲取建構函式,可以指定引數獲取哪個建構函式,或者可以直接陣列全都獲取
-
如果要建立物件,直接newInstance,構造器傳入建構函式的引數
-
如果只是想用方法,定義一個Method傳入想要獲取函式的引數來指定獲取的方法
-
通過invoke來實現方法,如果是靜態方法,傳入null,如果傳入多個引數,需要以Object陣列的形式傳入
執行緒池引數有哪些,拒絕策略講一下?
-
執行緒池七大引數
-
核心執行緒數
-
最大執行緒數
-
空閒執行緒等待時間
-
空閒執行緒等待時間的單位
-
阻塞佇列
-
拒絕策略
-
建立執行緒的工廠
-
-
拒絕策略
- 丟棄任務丟擲異常
- 丟棄任務不丟擲異常
- 丟掉佇列最前面的任務,然後再提交一次任務
- 由提交任務的執行緒處理該任務
spring事務傳播機制
-
支援當前事務的
- required----當前存在事務則加入,不存在建立一個
- supports----當前存在事務則加入,不存在那就非事務放hi執行
- mandatory----存在事務則加入,不存在那就報錯
-
不支援當前事務的
- required_news----建立一個新事務----如果當前存在事務則掛起
- not_supported----以非事務方式執行----如果當前存在事務則掛起
- never----以非實物方式執行-----如果當前存在事務報錯
-
其他情況
- nested----如果當前存在事務,則建立一個新事務作為當前事務的巢狀事務執行,否則和requird等價
資料庫索引的底層原理,B樹和B+樹有什麼區別
- B樹,資料不下沉也儲存資料,會導致索引儲存量下降
- b+樹,資料存在葉子節點,並且還有底層連結串列存在
那你是認為b樹不適合作為索引麼?(面試官:其實這兩個都作為索引,只不過各有優點的)
- 大坑!面試的時候不要把b樹噴得一無是處,mongodb用的是b樹
- b樹內,每個節點都儲存資料,因此在查詢單條資料的時候,有可能o(1)就查到,也有可能會更高,所以做單一資料查詢時,b樹平均效能更好,但是不適合做資料遍歷操作
- b+樹,資料出現在葉子節點上,查詢比較穩定,單一資料查詢平均效能不如b樹,但是資料便利又優點,葉子節點有指標相連,這個特性使得b+樹非常適合做範圍查詢
- 所以沒準是Mysql資料遍歷操作比較多,所以用b+,monnodb單一查詢過多,用b
hashmap的hashcode為什麼一定要重寫?
- 可以理解為hashcode是在定位元素應該分配給陣列的哪個下標裡,如果不重寫,那麼預設hashcode是記憶體地址的id,業務上認為相等,但是地址不等
那為什麼equals也要重寫?
- 如果不重寫,那麼equals就是預設的==,進行地址的判斷,那麼必定不是業務上的同一個物件,所以也要重寫
inputstream/reader的區別
inputstream是位元組流byte,reader是字元流,所以inputstream傳輸中文可能亂碼,但是reader可能不會
位元組和字元的區別是什麼?
位元組通常用來描述大小的,可以理解為byte,而字元,通常我們稱為一個char字元,一個int字元這種,他們分別佔2個位元組,4個位元組大小
MD5是對稱加密,還是非對稱加密?
兩者都不是,MD5無法解密,根本談不上對稱和非對稱
程序間通訊的方式
- 管道(半雙工,如果需要雙方通訊,需要建立兩個管道)
- 有名管道
- 共享記憶體(需要自定義)
- 訊號
- 訊號量
- 訊息佇列
- 套接字
執行緒間通訊的方式
- 鎖機制:互斥鎖,條件變數,讀寫鎖
- 訊號量機制Semaphore
- 訊號機制Signal
list和set區別
- list不允許重複元素的存在,set允許重複元素存在,list是有序集合保持插入順序,set是無序集合,list可以通過下標訪問,set不能
解決雜湊衝突的常用方法
- 開放定址法(線性探測)
- 鏈地址法(拉鍊法)
- 再雜湊法(衝突就再hash一遍)
- 建立公共溢位區