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

                  1.Java中堆和棧的區別

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

                  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設計模式的版塊,可以學習到很多東西。  

                  
          posted on 2010-04-16 10:08 landon 閱讀(1893) 評論(0)  編輯  收藏 所屬分類: Program
          主站蜘蛛池模板: 特克斯县| 鱼台县| 曲麻莱县| 酉阳| 曲沃县| 卓资县| 肃宁县| 观塘区| 永安市| 西和县| 广丰县| 德安县| 仁怀市| 遵义市| 乐清市| 囊谦县| 克拉玛依市| 台东县| 沙河市| 滕州市| 郓城县| 铜山县| 莱阳市| 锦州市| 金寨县| 东阿县| 杨浦区| 神池县| 达尔| 德安县| 武清区| 尼木县| 休宁县| 盖州市| 阿瓦提县| 博兴县| 陕西省| 鹤岗市| 定安县| 洪泽县| 南昌市|