java面試題整理(2)

2021-09-25 01:34:17 字數 1888 閱讀 3571

一、註冊中心你了解了哪些?

答: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 ...