Vincent.Chan‘s Blog

          常用鏈接

          統計

          積分與排名

          網站

          最新評論

          java面試的一些常見問題總結

          Java基礎方面:

          1,作用域public,protected,private,以及不寫時的區別

          2,ArrayList和Vector的區別,HashMap和Hashtable的區別

          3,char型變量能不能定義為一個中文?為什么?

          4,多線程有幾種表示方法,都是什么?同步有幾種實現方法,都是什么?

          5,繼承時候類的執行順序問題,一般都是選擇題,問你將會打印出什么?

          6,內部類的實現方式?

          7,垃圾回收機制,如何優化程序?

          8,float型float f=3.4是否正確?

          Jsp方面

          1,jsp有哪些內置對象?作用分別是什么?

          2,jsp有哪些動作?作用分別是什么?

          3,include的兩種實現方式的區別?

          4,兩種跳轉方式分別是什么?有什么區別?

          Servlet方面

          1,說一說Servlet的生命周期?

          2,Servlet版本間(忘了問的是哪兩個版本了)的不同?

          Jdbc,Jdo方面

          1,可能會讓你寫一段Jdbc連Oracle的程序.

          2,Class.forName的作用?為什么要用?

          3,Jdo是什么?

          Xml方面

          1,xml有哪些解析技術?區別是什么?

          2,你在項目中用到了xml技術的哪些方面?如何實現的?

          3,用jdom解析xml文件時如何解決中文問題?如何解析?

          EJB方面

          1,EJB2.0有哪些內容?分別用在什么場合? EJB2.0和EJB1.1的區別?

          MVC方面

          1,MVC的各個部分都有那些技術來實現?如何實現?

          設計模式方面:

          1,開發中都用到了那些設計模式?用在什么場合?

          JavaScript方面

                1,如何校驗數字型?

          CORBA

                1,CORBA是什么?用途是什么?


          誰來做出解答阿!
          -------------------------------------------------------------
          回答一部分。
          1,作用域public,protected,private,以及不寫時的區別
          public 在其他的包中的類也可以引用,protected只限于同一個包內的類,private只有自己可以使用。不寫的時候和protected一樣。
          2,ArrayList和Vector的區別,HashMap和Hashtable的區別
          ArrayList需要預先定義大小,Vector不用。HashMap和Hashtable的默認初始化容量(default initial capacity)不同 HashMap是16,Hashtable為11。
          3,char型變量能不能定義為一個中文?為什么?
          可以定義。因為中文也是16bit的。
          4,多線程有幾種表示方法,都是什么?同步有幾種實現方法,都是什么?
          查看jdk文檔。
          5,繼承時候類的執行順序問題,一般都是選擇題,問你將會打印出什么?
          這個具體的去看。
          6,內部類的實現方式?
          內部類”是在另一個類的內部聲明的類。從Java 1.1開始,你可在一個類中聲明另一個類,這與聲明字段和方法非常相似。
          7,垃圾回收機制,如何優化程序?
          在變量不使用的時候將其賦值為null。
          8,float型float f=3.4是否正確?
          不行。類型不匹配。改為float f=3.4f。

          Servlet方面

          1,說一說Servlet的生命周期?
          Servlet的生命周期是當服務器裝載運行servlets,接收來自客戶端的多個請求并且返回數據給客戶端,然后再刪除移開servlets的時間。
          2,Servlet版本間(忘了問的是哪兩個版本了)的不同?
          我個人認為這個問題沒有什么實際意義。
          Jdbc,Jdo方面

          1,可能會讓你寫一段Jdbc連Oracle的程序.
          有通式。Connection conn = null;
                  String driver = "oracle.jdbc.driver.OracleDriver";
                  String url = "jdbc:oracle:thin:@xxx:1521:xxx";
                  String user = "xxx";
                  String password = "xxx";
                  try
                  {
                      Class.forName("oracle.jdbc.driver.OracleDriver");
                      conn = DriverManager.getConnection(url, user, password);
                  }
                  catch (ClassNotFoundException e)
                  {
                      System.err.print("ClassNotFoundException: Load jdbc-driver failure!");
                      System.err.println(e.getMessage());
                  }
                  catch (SQLException e)
                  {
                      e.printStackTrace();
                      try
                      {
                          if (conn != null)
                          {
                              conn.close();
                              conn = null;
                          }
                      }
                      catch (SQLException se)
                      {
                      }
                  }
          2,Class.forName的作用?為什么要用?
          返回一個指定名稱的class對象。用它是為了load你指定名稱的class。
          3,Jdo是什么?
          全稱Java Data Objects。提供了在事務處理數據庫中Java對象模型的明顯的持久性,直接支持了Java類的實例,應用程序不用處理任何其它的數據模型。

          Xml方面

          1,xml有哪些解析技術?區別是什么?
          1) CSS是Cascading Style Sheet的縮寫,即“層疊樣式表”,在1997年W3C頒布HTML4標準的同時也公布了有關樣式單的第一個標準CSS1。
          2)XSL(eXtensible Style Language,可擴展的樣式語言)是最強大和靈活的樣式語言,是特別為應用XML而設計的,它完全遵循XML規則,進一步完善了XML本身。
          3)Data-Island。還有幾個,但是主要是第二個,其他的我認為不是主流。
          2,你在項目中用到了xml技術的哪些方面?如何實現的?
          xslt,fo,html解析,xml數據封裝和解析。使用第三方軟件包實現。
          3,用jdom解析xml文件時如何解決中文問題?如何解析?
          沒用過,不太清楚。我使用的castor。(jbuilder9中有)

          JavaScript方面

                1,如何校驗數字型?
          isNaN(parseFloat(xxx))如果為true,則不是數字。
          ---
          做點力所能及的補充:
            (1)Vector的方法都是同步的(Synchronized),是線程安全的(thread-safe),而
          ArrayList的方法不是,由于線程的同步必然要影響性能,因此,ArrayList的性能比
          Vector好。
            (2)當Vector或ArrayList中的元素超過它的初始大小時,Vector會將它的容量翻倍,而
          ArrayList只增加50%的大小,這樣,ArrayList就有利于節約內存空間。
            (3)Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一
          個實現。
            (4)性能方面的比較類似 Vector和ArrayList,比如Hashtable的方法是同步的,而
          HashMap的不是。
          (5)只有HashMap可以讓你將空值作為一個表的條目的key或value
          ---
          1,xml有哪些解析技術?區別是什么?

          有兩種:DOM和SAX.

          DOM:可以得到一個包含文檔中所有元素的樹結構.
          SAX:在文檔的不同治點產生事件,應用程序可以決定如何處理這些事件以從解析器中得到信息.
          ---
          Java基礎方面:(未寫的是已經有人回答或我自己也未知或不確定)

          4,多線程有幾種表示方法,都是什么?同步有幾種實現方法,都是什么?
            :::
            我所知道的有兩種實現方法:
              一種是將方法同步:public synchronized methodName(...){....}
              另一種是將對象同步(此對象不能是null值): synchronized (object) { ..... }

          5,繼承時候類的執行順序問題,一般都是選擇題,問你將會打印出什么?
            繼承時候類的執行順序是:
              父類中被static關鍵字定義的部分是按所定義的順序而最先被初始化的;
              父類構造函數(按調用順序);

              子類中被static關鍵字定義的部分是按所定義的順序而最先被初始化的;
              子類構造函數(按調用順序);
              其他則按方法的調用順序.

          6,內部類的實現方式?
            public class XXXXX{ // 只有一個public類

              ...
           
              class YYYYY{ // 可以有的訪問類型是[ protected | private | 無 ]
                ...
              }

            }

          8,float型float f=3.4是否正確?
            我也不知道是否正確.
            我一般是這樣:float f=3.4F; 或 float f=3.4f;// 后面跟一個英文大寫或小寫字母F
          ---
          JavaScript方面

                1,如何校驗數字型?
                  var v = document.all.Telephone.value;
                  if(isNan(v)){
                    alert("全是數字");
                  }
          ---
          yangtaylor的解釋有一半以上是錯誤的,大家不要作標準答案背哦
          noisysilence的解釋很不錯,說明你已經是高手了,不過說明一點,Vector的精妙設置是在于第二個參數的設置,其余的都基本正確。

          關于“作用域public,protected,private,以及不寫時的區別”的說明---
          前三個常用,就不用說了,關于不寫時的情況我來說明一下:
          JAVA的作用域其實有5種,除了上面的3種外還有:private protected,default
          public--------------不說了
          protected-----------除了所有的子類可訪問外,同包的非子類也可以訪問
          private-------------也不說了
          private protected---只有子類可以訪問(這才是我們理解意義上的protected)
          default-------------只有同包的類可以訪問,即使是子類但不同包仍不能訪問

          我也是看了很多參考書才最終得到的結果,在此獻給大家了。
          ---
          ArrayList和Vector的區別上面已說,我說說它們會帶來得影響吧。
          同為對象集合,ArrayList可由編譯器檢查而Vector則不會,所以如果用Vector返回對象集合,編譯器是無法查錯得,只有在運行時才能才能發現。例如:
          ********采用Vector*************
          server side:
          public Vector getCustomDataSet(int num)
          {
             Vector v = new Vector();
             for(int i=0; i<num; i++)
             {
                CustomData customData = new CustomData(i);
                v.add(customData)  //此處加入自定義的數據結構CustomData
             }
             return v;
          }
          client side:
           
            Vector v = getCustomDataSet(5);
            for(int i=0; i<v.size(); i++)
            {
               OtherData data = (OtherData)v.get(i);//此處取出的是customData卻轉換為OtherData,編譯器通過   
            }

          ********采用ArrayList*************
          server side:
          public CustomData[] getCustomDataSet(int num)
          {
             CustomData[] customData = new CustomData[5];
             for(int i=0; i<num; i++)
             {
                customData[i] = new CustomData(i);
             }
             return customData;
          }
          client side:
           
            CustomData[] datas = getCustomDataSet(5);
            for(int i=0; i<datas.length; i++)
            {
               OtherData data = datas[i];//編譯不通過,類型不匹配
            }

          ---
          下邊是以前我找的關于Hashtable和HashMap的不同之處。


          Hashtable和HashMap
          Hashtable和HashMap類有三個重要的不同之處。第一個不同主要是歷史原因。Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一個實現。
          也 許最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。這就意味著,雖然你可以不用采取任何特殊的行為就可以在一個多線程的應 用程序中用一個Hashtable,但你必須同樣地為一個HashMap提供外同步。一個方便的方法就是利用Collections類的靜態的 synchronizedMap()方法,它創建一個線程安全的Map對象,并把它作為一個封裝的對象來返回。這個對象的方法可以讓你同步訪問潛在的 HashMap。這么做的結果就是當你不需要同步時,你不能切斷Hashtable中的同步(比如在一個單線程的應用程序中),而且同步增加了很多處理費 用。
          第三點不同是,只有HashMap可以讓你將空值作為一個表的條目的key或value。HashMap中只有一條記錄可以是一個空的 key,但任意數量的條目可以是空的value。這就是說,如果在表中沒有發現搜索鍵,或者如果發現了搜索鍵,但它是一個空的值,那么get()將返回 null。如果有必要,用containKey()方法來區別這兩種情況。
          一些資料建議,當需要同步時,用Hashtable,反之用 HashMap。但是,因為在需要時,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基于一個陳舊的類的, 所以有人認為,在各種情況下,HashMap都優先于Hashtable。
          ---
          XML 的編程接口:  DOM    SAX   JDOM   JAXP

          文檔對象模型(通常稱為 DOM)為 XML 文檔的已解析版本定義了一組接口。解析器讀入整個文檔,然后構建一個駐留內存的樹結構,然后您的代碼就可以使用 DOM 接口來操作這個樹結構。您可以遍歷樹以了解原始文檔包含了什么,您可以刪除樹的幾個部分,還可以重新排列樹和添加新的分支
          DOM 提供了一組豐富的功能,您可以用這些功能來解釋和操作 XML 文檔,但使用它們是有代價的。
          DOM 構建整個文檔駐留內存的樹。如果文檔很大,就會要求有極大的內存。
          DOM 創建表示原始文檔中每個東西的對象,包括元素、文本、屬性和空格。如果您只需關注原始文檔的一小部分,那么創建那些永遠不被使用的對象是極其浪費的。
          DOM 解析器必須在您的代碼取得控制權之前讀取整個文檔。對于非常大的文檔,這會引起顯著的延遲


          為了解決 DOM 問題,XML-DEV 參與者們(由 David Megginson 領導)創建了 SAX 接口。SAX 的幾個特征解決了 DOM 的問題:

          SAX 解析器向您的代碼發送事件。當解析器發現元素開始、元素結束、文本、文檔的開始或結束等時,它會告訴您。您可以決定什么事件對您重要,而且可以決定要創建什么類型的數據結構以保存來自這些事件的數據。如果您沒有顯式地保存來自某個事件的數據,它就被丟棄。
          SAX 解析器根本不創建任何對象,它只是將事件傳遞給您的應用程序。如果希望基于那些事件創建對象,這將由您來完成。
          SAX 解析器在解析開始的時候就開始發送事件。當解析器發現文檔開始、元素開始和文本等時,代碼會收到一個事件。您的應用程序可以立即開始生成結果;您不必一直 等到整個文檔被解析完畢。更妙的是,如果您只查找文檔中某些內容,代碼一旦找到所要找的東西就可以拋出一個異常。該異常會停止 SAX 解析器,然后代碼用它找到的數據做它需要做的任何事。
          SAX 解析器也有些問題引人關注:

          SAX 事件是無狀態的。當 SAX 解析器在 XML 文檔中發現文本時,它就向您的代碼發送一個事件。該事件僅僅給您發現的文本;它不告訴您什么元素包含那個文本。如果您想知道這一點,則必須自己編寫狀態管理代碼。
          SAX 事件不是持久的。如果應用程序需要一個數據結構來對 XML 文檔建模,則必須自己編寫那樣的代碼。如果您需要從 SAX 事件訪問數據,并且沒有把那個數據存儲在代碼中,那么您不得不再次解析該文檔。

          JDOM 是基于 Java 技術的開放源碼項目,它試圖遵循 80/20 規則:用 DOM 和 SAX 20% 的功能來滿足 80% 的用戶需求。JDOM 使用 SAX 和 DOM 解析器,因此它是作為一組相對較小的 Java 類被實現的。

          JDOM 的主要特性是它極大地減少了您必須編寫的代碼數量。盡管本篇介紹性教程并不深入討論編程主題,但 JDOM 應用程序的長度通常是 DOM 應用程序的三分之一,大約是 SAX 應用程序的一半。(當然,堅持使用 DOM 的純粹主義者會建議說:從長遠來看,學習和使用 DOM 終會有所回報)。JDOM 并不做所有的事,但對于大多數您要做的解析,它可能正好適合您。

          盡管 DOM、SAX 和 JDOM 為大多數常見任務提供了標準接口,但仍有些事情是它們不能解決的。例如,在 Java 程序中創建 DOMParser 對象的過程因 DOM 解析器的不同而不同。為了修正這個問題,Sun 發布了 JAXP(用于 XML 解析的 Java API,Java API for XML Parsing)。該 API 為使用 DOM、SAX 和 XSLT 處理 XML 文檔提供了公共接口。

          JAXP 提供的諸如 DocumentBuilderFactory 和 DocumentBuilder 之類的接口為不同的解析器提供了一個標準接口。還有一些方法可以允許您控制底層的解析器是否可以識別名稱空間以及是否使用 DTD 或模式來驗證 XML 文檔。
          為了確定哪種接口適合您,您需要理解所有接口的設計要點,而且需要理解應用程序用您將要處理的 XML 文檔來做什么。考慮下面的問題將有助于您找到正確的方法。

          要用 Java 編寫應用程序嗎?JAXP 使用 DOM、SAX 和 JDOM;如果您用 Java 編寫代碼,那么您應使用 JAXP 將您的代碼與各種解析器實現的細節隔離。
          應用程序將如何部署?如果您的應用程序將要作為 Java applet 部署,那么您會希望使要下載的代碼數量最小,別忘了 SAX 解析器比 DOM 解析器小。還要知道使用 JDOM 時,除了 SAX 或 DOM 解析器之外還要求編寫少量的代碼。
          一 旦解析了 XML 文檔,還需要多次訪問那些數據嗎?如果您需要回過頭來訪問 XML 文件的已解析版本,DOM 可能是正確的選擇。而 SAX 事件被觸發時,如果您以后需要它,則由您(開發人員)自己決定以某種方式保存它。如果您需要訪問不曾保存的事件,則必須再次解析該文件。而 DOM 自動保存所有的數據。
          只需要 XML 源文件的少量內容嗎?如果您只需要 XML 源文件的少量內容,那么 SAX 可能是正確的選擇。SAX 不會為源文件中的每個東西創建對象;您要確定什么是重要的。使用 SAX,您要檢查每個事件以了解它是否與您的需要有關,然后相應地處理它。更妙的是,一旦找到您正在尋找的東西,您的代碼就會拋出一個異常來完全停止 SAX 解析器。
          您正在一臺內存很少的機器上工作嗎?若是的話,不管您可能考慮到的其它因素是什么,SAX 是您的最佳選擇。

          posted on 2006-02-19 14:34 Vincent.Chen 閱讀(225) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 开化县| 延吉市| 明星| 远安县| 福鼎市| 酉阳| 宁晋县| 郑州市| 奇台县| 潞城市| 漳浦县| 阜阳市| 昭平县| 武宣县| 乌恰县| 靖远县| 江都市| 克山县| 宁晋县| 馆陶县| 宜兰县| 九龙县| 新兴县| 丽水市| 象山县| 彭阳县| 宜兰县| 家居| 政和县| 吉木萨尔县| 无棣县| 西乌珠穆沁旗| 鄂尔多斯市| 淳化县| 常州市| 息烽县| 峨山| 合肥市| 中方县| 措美县| 大庆市|