一、註冊中心你了解了哪些?
答:consul 、eureka、zookeeper
二、jdk 中有哪幾個執行緒池?
答:juc提供了排程器物件executors來建立執行緒池,可建立的執行緒池有四種
1、newfixedthreadpool建立乙個指定工作執行緒數量的執行緒池。每當提交乙個任務就建立乙個工作執行緒,如果工作執行緒數量達到執行緒池初始的最大數,則將提交的任務存入到池佇列中。
2、newcachedthreadpool建立乙個可快取的執行緒池。這種型別的執行緒池特點是:
1).工作執行緒的建立數量幾乎沒有限制(其實也有限制的,數目為interger. max_value), 這樣可靈活的往執行緒池中新增執行緒。
2).如果長時間沒有往執行緒池中提交任務,即如果工作執行緒空閒了指定的時間(預設為1分鐘),則該工作執行緒將自動終止。終止後,如果你又提交了新的任務,則執行緒池重新建立乙個工作執行緒。
3、newsinglethreadexecutor建立乙個單執行緒化的executor,即只建立唯一的工作者執行緒來執行任務,如果這個執行緒異常結束,會有另乙個取代它,保證順序執行(我覺得這點是它的特色)。單工作執行緒最大的特點是可保證順序地執行各個任務,並且在任意給定的時間不會有多個執行緒是活動的。
4、newschedulethreadpool建立乙個定長的執行緒池,而且支援定時的以及週期性的任務執行,類似於timer。
三、object 的 hashcode 方法重寫了,equals 方法要不要改?
答:不需要,ojbect類中有兩個方法equals、hashcode,這兩個方法都是用來比較兩個物件是否相等的,如果兩個物件相等(equal),那麼必須擁有相同 的雜湊碼(hash code)。
即使兩個物件有相同的雜湊值(hash code),他們不一定相等
重寫equals()方法就必須重寫hashcode(),但重寫hashcode方法不一定要重寫equals方法
四、sql 優化的常見方法有哪些
答:查詢條件減少使用函式,避免全表掃瞄
減少不必要的表連線
有些資料操作的業務邏輯可以放到應用層進行實現
可以使用with as
盡量避免使用游標,因為游標的效率較差
不要把sql語句寫得太複雜
不能迴圈執行查詢
用 exists 代替 in
表關聯關係不要太糾結
查詢多用索引列去查,用char index或者like[0-9]來代替%%
inner關聯的表可以先查出來,再去關聯left join的表
可以進行表關聯資料拆分,即先查出核心資料,再通過核心資料查其他資料,這樣會快得多
參考sql執行順序進行優化
表關聯時取別名,也能提高效率
使用檢視,給檢視建立索引進行優化
使用資料倉儲的形式,建立單獨的表儲存資料,根據時間戳定期更新資料。將多表關聯的資料集中抽取存入一張表中,查詢時單錶查詢,提高了查詢效率
對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引
應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如:
select id from t where num is null
可以在num上設定預設值0,確保表中num列沒有null值,然後這樣查詢:
select id from t where num=0
應盡量避免在 where 子句中使用!=或<>操作符,否則引擎將放棄使用索引而進行全表掃瞄
五、專案中的監控:監控指標常見的有哪些?六、spring boot除了自動配置,相比傳統的 spring 有什麼其他的區別?
java集合面試題整理
可能會導致死迴圈和更新丟失問題。死迴圈的成因涉及到四個方法,最初的起因是呼叫put 方法,跟著方法走一遍 put 方法原始碼 只給出核心部分 public v put k key,v value modcount 該key不存在,需要增加乙個結點 addentry hash,key,value,i ...
java面試題整理(1)
一 請你談談對mq的理解?以及你們在專案中是怎麼用的?答 mq 訊息佇列 是一種應用程式對應用程式的通訊方法,由於在高併發環境下,由於來不及同步處理,請求往往發生堵塞,通過訊息佇列,我們可以非同步處理請求,緩解系統壓力 mq message queue 即訊息佇列是在訊息的傳輸過程中儲存訊息的容器。...
個人的java面試題整理
1 string a 1 與string b new string 1 由於new是在堆上新建了乙個區域,兩個a。b的指向位址不同,所以,為false,而equal為true 2 堆 棧和堆疊的區別 速度 cpu 棧 堆 棧 int b 棧 char s abc 棧 char p2 棧 堆 new ...