1. 程式人生 > >java相關技術問答(一)

java相關技術問答(一)

tcp與udp 隱藏 equal 成了 引用 代碼 做的 管理 一個

網上一些沒有標準答案的面試題,我自己做的解答總結,有任何異議可以提出來~^_^,不斷更新中...

Springboot除了自動配置與傳統的spring還有哪些不同

  1. 傳統的springweb項目需要部署在tomcat這樣的容器才能運行,springboot集成了tomcat容器,可以直接通過他提供的main方法直接運行,或者打成jar包或war包直接運行
  2. springboot提供了很多第三方打包的插件,可以很方便的引用pom,通過簡單配置來集成第三方插件,像redis,jpa等

hashmap線程不安全的出現場景

  1. 在多線程環境下,同時put一個全局的hashmap,此時若hashmap剛好進行擴容,進入rehash方法,線程1執行了一部分然後掛起,被線程2搶走cpu繼續運行,可能導致鏈表的循環引用,當下次get這個key值時,會造成死循環

Object中hashcode方法重寫了,equals方法要不要改;equals方法重寫了,hashcode方法要不要改?

  1. 首先從原理上將,hashcode存在是為了快速的定位像在hashmap中鍵值得位置,當hashcode重寫,僅僅影響的是不同的鍵值hashcode值變了,並不影響鍵值得存取和判重
  2. 但是如果equals方法變了,影響的是值,要判斷值是否相同,不止需要equals相同,hashcode也要相同,所以equals變了,hashcode方法也要變

線上服務cpu很高怎麽辦?可以采取哪些措施?

  1. 首先,top一下,判斷哪個進程占用cpu很高
  2. 然後top -Hp pid判斷該進行哪個線程最占用cpu,目的是找到哪個方法棧最占用cpu
  3. 找到線程pid後,進行16進制轉換
  4. 然後用jstack 進程id | grep 線程id 來打印棧信息,可以找到哪個類或方法占用了最高cpu,就可以去查程序代碼的原因

TCP與UDP有什麽不同?TCP是如何保證可靠傳輸的?

  1. TPC是面向連接的,UDP是無連接的
  2. TPC是可靠服務,保證數據完整不丟失,不重復,有序,無差錯。UDP不保證數據完整性
  3. TPC是一對一連接,UDP可以有一對一,一對多,多對一,多對多

  4. TCP提供了丟包重試機制,應答機制,有序接收機制保證數據可靠性

網關能夠為後端服務帶來哪些好處?

  1. 首先是隱藏後端ip地址
  2. 方便進行負載均衡
  3. 提供統一的地址管理,調用監控,安全過濾

java相關技術問答(一)