posts - 4, comments - 5, trackbacks - 0, articles - 10

          java面試題3

          Posted on 2005-12-29 10:53 勇敢的心 閱讀(371) 評論(0)  編輯  收藏 所屬分類: Java
          簡答題:
          1、什么是數(shù)據(jù)庫的事務(wù)?事務(wù)的原子性?有幾種方法可以實現(xiàn)事務(wù)的原子性?
          2、DOM是什么?SAX Parser和DOM Parser有何區(qū)別?
          3、同一機(jī)器中不同java虛擬機(jī)的程序有幾種通訊方式?不同機(jī)器的呢?
          4、如何起一個線程?如何結(jié)束一個線程?如何安全地結(jié)束一個線程?
          以下為寫具體代碼題:
          5、用java實現(xiàn)一個動態(tài)增長的堆棧。
          6、寫一個讀寫鎖,可以同時多人讀,一個人寫,并用這個讀寫鎖實現(xiàn)生產(chǎn)者-消費(fèi)者同步。
          7、寫一個單例實現(xiàn),并考慮當(dāng)它實現(xiàn)可序列化接口的實現(xiàn)。
          8、寫任意一種排序方法,并說明如何將這個排序算法應(yīng)用到Java Collection中。
          9、寫一個程序判斷一字節(jié)byte中有多少bit被置為1?
          思考題:
          10、有一個單向鏈表,不知道它的頭,有個指針P指向該鏈表中的節(jié)點N,如何將節(jié)點N刪除?


          [基礎(chǔ)問答]
          1.下面哪些類可以被繼承?
          java.lang.Thread (T)
          java.lang.Number (T)
          java.lang.Double (F)
          java.lang.Math  (F)
          java.lang.Void  (F)
          java.lang.Class  (F)
          java.lang.ClassLoader (T)

          2.抽象類和接口的區(qū)別
          (1)接口可以被多重implements,抽象類只能被單一extends
          (2)接口只有定義,抽象類可以有定義和實現(xiàn)
          (3)接口的字段定義默認(rèn)為:public static final, 抽象類字段默認(rèn)是"friendly"(本包可見)

          3.Hashtable的原理,并說出HashMap與Hashtable的區(qū)別
          HashTable的原理:通過節(jié)點的關(guān)鍵碼確定節(jié)點的存儲位置,即給定節(jié)點的關(guān)鍵碼k,通過一定的函數(shù)關(guān)系H(散列函數(shù)),得到函數(shù)值H(k),將此值解釋為該節(jié)點的存儲地址.
          HashMap 與Hashtable很相似,但HashMap 是非同步(unsynchronizded)和可以以null為關(guān)鍵碼的.

          4.forward和redirect的區(qū)別
          forward: an internal transfer in servlet
          redirect: 重定向,有2次request,第2次request將丟失第一次的attributs/parameters等

          5.什么是Web容器?
          實現(xiàn)J2EE規(guī)范中web協(xié)議的應(yīng)用.該協(xié)議定義了web程序的運(yùn)行時環(huán)境,包括:并發(fā)性,安全性,生命周期管理等等.

          6.解釋下面關(guān)于J2EE的名詞
          (1)JNDI:Java Naming & Directory Interface,JAVA命名目錄服務(wù).主要提供的功能是:提供一個目錄系統(tǒng),讓其它各地的應(yīng)用程序在其上面留下自己的索引,從而滿足快速查找和定位分布式應(yīng)用程序的功能.
          (2)JMS:Java Message Service,JAVA消息服務(wù).主要實現(xiàn)各個應(yīng)用程序之間的通訊.包括點對點和廣播.
          (3)JTA:Java Transaction API,JAVA事務(wù)服務(wù).提供各種分布式事務(wù)服務(wù).應(yīng)用程序只需調(diào)用其提供的接口即可.
          (4)JAF: Java Action FrameWork,JAVA安全認(rèn)證框架.提供一些安全控制方面的框架.讓開發(fā)者通過各種部署和自定義實現(xiàn)自己的個性安全控制策略.
          (5)RMI:Remote Method Interface,遠(yuǎn)程方法調(diào)用

          7.EJB是基于哪些技術(shù)實現(xiàn)的?并說 出SessionBean和EntityBean的區(qū)別,StatefulBean和StatelessBean的區(qū)別.
          EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技術(shù)實現(xiàn).
          SessionBean在J2EE應(yīng)用程序中被用來完成一些服務(wù)器端的業(yè)務(wù)操作,例如訪問數(shù)據(jù)庫、調(diào)用其他EJB組件.EntityBean被用來代表應(yīng)用系統(tǒng)中用到的數(shù)據(jù).對于客戶機(jī),SessionBean是一種非持久性對象,它實現(xiàn)某些在服務(wù)器上運(yùn)行的業(yè)務(wù)邏輯;EntityBean是一種持久性對象,它代表一個存儲在持久性存儲器中的實體的對象視圖,或是一個由現(xiàn)有企業(yè)應(yīng)用程序?qū)崿F(xiàn)的實體.
          Session Bean 還可以再細(xì)分為 Stateful Session Bean 與 Stateless Session Bean .這兩種的 Session Bean都可以將系統(tǒng)邏輯放在 method之中執(zhí)行,不同的是 Stateful Session Bean 可以記錄呼叫者的狀態(tài),因此通常來說,一個使用者會有一個相對應(yīng)的 Stateful Session Bean 的實體.Stateless Session Bean 雖然也是邏輯組件,但是他卻不負(fù)責(zé)記錄使用者狀態(tài),也就是說當(dāng)使用者呼叫 Stateless Session Bean 的時候,EJB Container 并不會找尋特定的 Stateless Session Bean 的實體來執(zhí)行這個 method.換言之,很可能數(shù)個使用者在執(zhí)行某個 Stateless Session Bean 的 methods 時,會是同一個 Bean 的 Instance 在執(zhí)行.從內(nèi)存方面來看, Stateful Session Bean 與 Stateless Session Bean 比較, Stateful Session Bean 會消耗 J2EE Server 較多的內(nèi)存,然而 Stateful Session Bean 的優(yōu)勢卻在于他可以維持使用者的狀態(tài).

          8.XML的解析方法
          Sax,DOM,JDOM

          9.什么是Web Service?
          Web Service就是為了使原來各孤立的站點之間的信息能夠相互通信、共享而提出的一種接口。
          Web Service所使用的是Internet上統(tǒng)一、開放的標(biāo)準(zhǔn),如HTTP、XML、SOAP(簡單對象訪問協(xié)議)、WSDL等,所以Web Service可以在任何支持這些標(biāo)準(zhǔn)的環(huán)境(Windows,Linux)中使用。
          注:SOAP協(xié)議(Simple Object Access Protocal,簡單對象訪問協(xié)議),它是一個用于分散和分布式環(huán)境下網(wǎng)絡(luò)信息交換的基于XML的通訊協(xié)議。在此協(xié)議下,軟件組件或應(yīng)用程序能夠通過標(biāo)準(zhǔn)的HTTP協(xié)議進(jìn)行通訊。它的設(shè)計目標(biāo)就是簡單性和擴(kuò)展性,這有助于大量異構(gòu)程序和平臺之間的互操作性,從而使存在的應(yīng)用程序能夠被廣泛的用戶訪問。

          優(yōu)勢:
          (1).跨平臺;
          (2).SOAP協(xié)議是基于XML和HTTP這些業(yè)界的標(biāo)準(zhǔn)的,得到了所有的重要公司的支持。
          (3).由于使用了SOAP,數(shù)據(jù)是以ASCII文本的方式而非二進(jìn)制傳輸,調(diào)試很方便;并且由于這樣,它的數(shù)據(jù)容易通過防火墻,不需要防火墻為了程序而單獨(dú)開一個“漏洞”。
          (4).此外,WebService實現(xiàn)的技術(shù)難度要比CORBA和DCOM小得多。
          (5).要實現(xiàn)B2B集成,EDI比較完善與比較復(fù)雜;而用WebService則可以低成本的實現(xiàn),小公司也可以用上。
          (6).在C/S的程序中,WebService可以實現(xiàn)網(wǎng)頁無整體刷新的與服務(wù)器打交道并取數(shù)。
          缺點:
          (1).WebService使用了XML對數(shù)據(jù)封裝,會造成大量的數(shù)據(jù)要在網(wǎng)絡(luò)中傳輸。
          (2).WebService規(guī)范沒有規(guī)定任何與實現(xiàn)相關(guān)的細(xì)節(jié),包括對象模型、編程語言,這一點,它不如CORBA。

          10.多線程有幾種實現(xiàn)方法,都是什么?同步有幾種實現(xiàn)方法,都是什么?
          答:多線程有兩種實現(xiàn)方法,分別是繼承Thread類與實現(xiàn)Runnable接口
          同步的實現(xiàn)方面有兩種,分別是synchronized,wait與notify

          11.JSP中動態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別? 
          動態(tài)INCLUDE用jsp:include動作實現(xiàn)
          <jsp:include page="included.jsp" flush="true"/>
          它總是會檢查所含文件中的變化,適合用于包含動態(tài)頁面,并且可以帶參數(shù)
          靜態(tài)INCLUDE用include偽碼實現(xiàn),定不會檢查所含文件的變化,適用于包含靜態(tài)頁面
          <%@ include file="included.htm" %>
           


          [Java編程與程序運(yùn)行結(jié)果]
          1.Java編程,打印昨天的當(dāng)前時刻
          public class YesterdayCurrent{
            public void main(String[] args){
              Calendar cal = Calendar.getInstance();
              cal.add(Calendar.DATE, -1);
              System.out.println(cal.getTime());
            }
          }

          2.文件讀寫,實現(xiàn)一個計數(shù)器
            public int getNum(){
                  int i = -1;
                  try{
                      String stri="";
                      BufferedReader in = new BufferedReader(new FileReader(f));
                      while((stri=in.readLine())!=null){
                          i = Integer.parseInt(stri.trim());
                      }
                      in.close();
                  }catch(Exception e){
                      e.printStackTrace();
                  }
                  return i;
              }
              public void setNum(){
                  int i = getNum();
                  i++;        
                  try{
                      PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter(f,false)));  
                      out.write(String.valueOf(i));            //可能是編碼的原因,如果直接寫入int的話,將出現(xiàn)java編碼和windows編碼的混亂,因此此處寫入的是String
                      out.close() ;
                  }catch(Exception e){
                      e.printStackTrace();
                  }
              }
          3. 指出下面程序的運(yùn)行結(jié)果:
          class A{
              static{
                  System.out.print("1");
              }
              public A(){
                  System.out.print("2");
              }
          }
          class B extends A{
              static{
                  System.out.print("a");
              }
              public B(){
                  System.out.print("b");
              }   
          }
          public class Hello{
              public static void main(String[] ars){
                  A ab = new B(); //執(zhí)行到此處,結(jié)果: 1a2b
           ab = new B(); //執(zhí)行到此處,結(jié)果: 1a2bab
              }
          }
          注:類的static 代碼段,可以看作是類首次加載(被虛擬機(jī)加載)執(zhí)行的代碼,而對于類的加載,首先要執(zhí)行其基類的構(gòu)造,再執(zhí)行其本身的構(gòu)造
          4.寫一個Singleton模式的例子
          public class Singleton{
           private static Singleton single = new Singleton();
           private Singleton(){}
           public Singleton getInstance(){
            return single;
           }
          }

          [數(shù)據(jù)庫]
          1.刪除表的重復(fù)記錄
          如果記錄完全相同才算重復(fù)記錄,那么:  (sql server2000下測試通過)
          select distinct * into #tmpp from tid
          delete from tid     
          insert into tid select * from #tmpp
          drop table #tmpp
          如果有id主鍵(數(shù)字,自增1的那種),那么:(sql server2000下測試通過)
          delete from tableA where id not in
          (select id = min(id) from tableA group by name)

          2.delete from tablea & truncate table tablea的區(qū)別
          truncate 語句執(zhí)行速度快,占資源少,并且只記錄頁刪除的日志;
          delete 對每條記錄的刪除均需要記錄日志
          主站蜘蛛池模板: 苍溪县| 阜宁县| 吉水县| 澄江县| 益阳市| 大港区| 西充县| 吴桥县| 津市市| 长泰县| 封开县| 荣昌县| 延长县| 南溪县| 博爱县| 突泉县| 准格尔旗| 天峻县| 巴楚县| 丰都县| 砀山县| 张家口市| 航空| 石渠县| 勃利县| 崇文区| 景德镇市| 阳城县| 岑巩县| 五台县| 西华县| 道真| 太湖县| 揭阳市| 克什克腾旗| 偏关县| 永济市| 策勒县| 西城区| 南开区| 江阴市|