java實習面試

ahesihua發表於2011-10-21

在去實習的時候面試考試的幾道java題總結:

1、j=j++;//在這個過程中j的值是不會發生變化的

    j+=1;//在這個過程中j的值會發生變化,會增一。

2、Math中除了有sin cos等方法外,還有一個static 常量,PI。

3、java中byte型別

      int佔4個位元組,byte是1個位元組,每個位元組8位。
     所以2進位制的話,int最多可以表示正負一共2的32次方個數,byte則是2的8次方。
4、用最簡單的方法實現2乘以16

     2<<4

5、抽象類和介面

  區別一、

     介面是一種和類相似的結構,只包含常量和抽象方法,而且抽象方法只能是public的。

     抽象類和常規類很像,但是不能用new操作符建立它的例項。抽象類中可以有普通成員方法和普通成員變數。

區別二、

   介面需要實現,要用implements;抽象類需要繼承,要用extends。

   一個類可以實現多個介面,而一個類只能繼承一個抽象類

  介面著重強調特定功能的實現,抽象類強調所屬關係

 

 

    介面在許多方面與抽象類相似,但是它的目的是指明多個物件的共同行為    

 

6、wait和sleep的區別

     雖然wait 和sleep都是用來進行執行緒控制,但是它們還是有很大的區別

  (1)、sleep()不釋放同步鎖,wait()釋放同步鎖

  (2)、sleep()和wait()的喚醒方法:

          sleep()可以用時間指定來自動喚醒,如果時間不到可以用interrupt()強行打斷來喚醒;

          wait()可以用notify()方法來直接喚醒。

 

上面是我的總結,下面是在別人的文章中摘抄的一些:

sleep()、suspend()、resume()方法不推薦使用,推薦使用wait()、notify()、notifyAll()。

1.sleep()方法介紹

  sleep()方法是使執行緒停止一段時間的方法。在sleep 時間間隔期滿後,執行緒不一定立即恢復執行。這是因為在那個時刻,其它執行緒可能正在執行而且沒有被排程為放棄執行,除非

(a)醒來的執行緒具有更高的優先順序。  
(b)正在執行的執行緒因為其它原因而阻塞。
  
2.wait()方法介紹

   wait()是執行緒互動時,如果執行緒對一個同步物件x 發出一個wait()呼叫,該執行緒會暫停執行,被調物件進入等待狀態,直到被喚醒或等待時間到。 當呼叫wait()後,執行緒會釋放掉它所佔有的鎖標誌,從而使執行緒所在物件中的其它synchronized資料可被別的執行緒使用。

3.waite()和notify()的區別

   waite()和notify()因為會對物件的&ldquo;鎖標誌&rdquo;進行操作,所以它們必須在synchronized函式或synchronized block中進行呼叫。如果在non-synchronized函式或non-synchronized block中進行呼叫,雖然能編譯通過,但在執行時會發生IllegalMonitorStateException的異常。

相關文章