棲息地

          家園

          java 面試題三(轉)

          3.1  Static Nested Class 和 Inner Class的不同。

              Static Nested Class是被聲明為靜態(static)的內部類,它可以不依賴于外部類實例被實例化。而通常的內部類需要在外部類實例化后才能實例化。

              3.2  JSP中動態INCLUDE與靜態INCLUDE的區別?

              動態INCLUDE用jsp:include動作實現 <jsp:include page="included.jsp" flush="true" />它總是會檢查所含文件中的變化,適合用于包含動態頁面,并且可以帶參數。

              靜態INCLUDE用include偽碼實現,定不會檢查所含文件的變化,適用于包含靜態頁面<%@ include file="included.htm" %>

              3.3  什么時候用assert.

              assertion(斷言)在軟件開發中是一種常用的調試方式,很多開發語言中都支持這種機制。在實現中,assertion就是在程序中的一條語句,它對一個boolean表達式進行檢查,一個正確程序必須保證這個boolean表達式的值為true;如果該值為false,說明程序已經處于不正確的狀態下,系統將給出警告或退出。一般來說,assertion用于保證程序最基本、關鍵的正確性。assertion檢查通常在開發和測試時開啟。為了提高性能,在軟件發布后,assertion檢查通常是關閉的。

              3.4  GC是什么? 為什么要有GC?

              GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會導致程序或系統的不穩定甚至崩潰,Java提供的GC功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操作方法。

              3.5  short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?

              short s1 = 1; s1 = s1 + 1; (s1+1運算結果是int型,需要強制轉換類型)

              short s1 = 1; s1 += 1;(可以正確編譯)

              3.6  Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

              Math.round(11.5)==12

              Math.round(-11.5)==-11

              round方法返回與參數最接近的長整數,參數加1/2后求其floor.

              3.7  String s = new String("xyz");創建了幾個String Object?

              兩個

              3.8  設計4個線程,其中兩個線程每次對j增加1,另外兩個線程對j每次減少1.寫出程序。

              以下程序使用內部類實現線程,對j增減的時候沒有考慮順序問題。

          package test;

          public class ThreadTest1 {

                   private int j;

                   public static void main(String args[]) {

                             ThreadTest1 tt = new ThreadTest1();

                             Inc inc = tt.new Inc();

                             Dec dec = tt.new Dec();

                             for (int i = 0; i < 2; i++) {

                                      Thread t = new Thread(inc);

                                      t.start();

                                      t = new Thread(dec);

                                      t.start();

                             }

                   }

                   private synchronized void inc() {

                             j++;

                             System.out.println(Thread.currentThread().getName() + "-inc:" + j);

                   }

                   private synchronized void dec() {

                             j--;

                             System.out.println(Thread.currentThread().getName() + "-dec:" + j);

                   }

                   class Inc implements Runnable {

                             public void run() {

                                      for (int i = 0; i < 3; i++) {

                                               inc();

                                      }

                             }

                   }

                   class Dec implements Runnable {

                             public void run() {

                                      for (int i = 0; i < 3; i++) {

                                               dec();

                                      }

                             }

                   }

          }

              3.9  Java有沒有goto?

              Java中的保留字,現在沒有在Java中使用。

              3.10  啟動一個線程是用run()還是start()?

              啟動一個線程是調用start()方法,使線程所代表的虛擬處理機處于可運行狀態,這意味著它可以由JVM調度并執行。這并不意味著線程就會立即運行。run()方法可以產生必須退出的標志來停止一個線程。

          posted on 2010-03-25 21:38 drecry 閱讀(181) 評論(0)  編輯  收藏 所屬分類: java中有關的問題

          主站蜘蛛池模板: 泾阳县| 太谷县| 金坛市| 金沙县| 姜堰市| 民丰县| 河曲县| 永康市| 晋宁县| 比如县| 奎屯市| 绥中县| 罗源县| 河东区| 高雄县| 工布江达县| 德格县| 冷水江市| 上思县| 随州市| 岱山县| 东丽区| 聂荣县| 巢湖市| 彭阳县| 泸溪县| 巴彦淖尔市| 临西县| 荔波县| 高密市| 长宁区| 扶风县| 辽中县| 华蓥市| 民和| 崇明县| 广丰县| 越西县| 五家渠市| 将乐县| 济阳县|