Java 一些面試題(未完待續)

計算機網絡

面試基礎知識之計算機網絡java

基礎知識

集合框架

多線程

  1. Thread類的sleep()方法和對象的wait()方法均可以讓線程暫停執行,它們有什麼區別?
  • leep()方法(休眠)是線程類(Thread)的靜態方法,調用此方法會讓當前線程暫停執行指定的時間,
    將執行機會(CPU)讓給其餘線程,可是對象的鎖依然保持,所以休眠時間結束後會自動恢復(線程回到就緒狀態)。
  • wait()是Object類的方法,調用對象的wait()方法致使當前線程放棄對象的鎖(線程暫停執行),進入對象的等待池(wait pool),只有調用對象的notify()方法(或notifyAll()方法)時才能喚醒等待池中的線程進入等鎖池(lockpool),若是線程從新得到對象的鎖就能夠進入就緒狀態
  1. 線程的sleep()方法和yield()方法有什麼區別?
  • ① sleep()方法給其餘線程運行機會時不考慮線程的優先級,所以會給低優先級的線程以運行的機會;yield()方法只會給相同優先級或更高優先級的線程以運行的機會;
  • ② 線程執行sleep()方法後轉入阻塞(blocked)狀態,而執行yield()方法後轉入就緒(ready)狀態;
  • ③ sleep()方法聲明拋出InterruptedException,而yield()方法沒有聲明任何異常;
  • ④ sleep()方法比yield()方法(跟操做系統CPU調度相關)具備更好的可移植性。
  1. 談談對java的見解面試

  2. HashMap
    拆分紅 Hash 和 Map
    Hash: 散列值 -> 將一個任意長度經過某種算法(hash函數算法)轉換成一個固定值。
    Map: 鍵值對<k,v>存儲
    總結:經過Hash出來的值,而後經過這個Hash值定位到這個map而後將value存儲到map中。算法

相關文章
相關標籤/搜索