關於Java的幾個問題

來源:互聯網
上載者:User
文章目錄
  • 1.Java中堆和棧的區別
  • 2.Java中sleep和wait的區別
  • 3.你聽過的Java的設計模式

最近面試了很多公司,一些筆試和面試的問題讓我深有感觸。雖然說自己對Java已經很熟悉了,不過當面對一些細節的時候,自己確實有點無從下手。下面簡單的列舉幾個例子:

1.Java中堆和棧的區別

        其實,這個問題並不是很難。不過也許很多程式員往往忽略了這一點,尤其是在記憶體回收的時候。大家可能習慣了Java的GC機制,其實如果能仔細理解GC,我們完全可以提高執行程式的效率。那麼堆和棧就是最基本的東西。
        堆和棧都是Java用來在記憶體存放資料的地方。
        簡單的來說,用new建立的對象,即運行時動態分配記憶體,存在堆中。堆是由記憶體回收來負責的,堆的優勢是可以動態地分配記憶體大小,Java的垃圾收集器會自動收走這些不再使用的資料。
為了提高程式的效率,當我們不需要使用這個對象時,只要簡單停止對它的引用即可,即把這個對象賦值為NULL,而不是等記憶體回收站慢慢的回收。
        而Java的一些基礎資料型別 (Elementary Data Type)和引用一般存在棧中。棧的存取速度很快而且棧中的資料可以共用。

2.Java中sleep和wait的區別

如果你沒有用過線程或很少用到線程,這個問題還真的不好回答,而且很容易混淆。
        首先,二者都是使線程暫時停止執行的方法。但是二者卻又很大的不同。
        最基礎的一點就是sleep是Thread中的方法,而wait是Object中的方法。
sleep是使當前線程暫時睡眠,可以放在任何位置。而wait是使當前線程暫時放棄對象的使用權進行等待,必須放在同步方法或同步塊裡。sleep使用的時候,線程並不會放棄對象的使用權,即不會釋放對象鎖,所以在同步方法或同步塊中使用sleep,一個線程訪問時,其他的線程也是無法訪問的。而wait是會釋放對象鎖的,就是當前線程放棄對象的使用權,讓其他的線程可以訪問。線程執行wait方法時,需要另一個線程調用 notify進行喚醒。而sleep只是暫時休眠一定時間,時間到了之後,自動回復運行,不需另外的線程喚醒。
        簡單的來說,sleep只是暫時休眠而已。而wait則通常用與線程同步,經常與notify和notifyAll使用。

3.你聽過的Java的設計模式

如果不是寫過多年的代碼,這個問題可能真的不好回答。也許很多初學者會說Java Web開發中的MVC算不算?其實,我以前聽過的設計模式也不是很多。最多的可能就是工廠(Factory)模式,單態(Singleton)模式等。關於設計模式,我向大家推薦《Java Design Patterns》,一定會讓你獲益匪淺。
        另外    http://www.jdon.com/designpatterns/
                    http://www4.it168.com/jtzt/shenlan/tech/javadesignpatern/index.html
                    http://www.ibm.com/developerworks/cn/java/design/      
                    http://www.cn-java.com/www1/?action-category-catid-101
上述四個網站都是關於Java設計模式的版塊,可以學習到很多東西。 

來源:http://www.blogjava.net/landon/archive/2010/04/16/318476.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.