<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Feng.Li's Java See

    抓緊時間,大步向前。
    隨筆 - 95, 文章 - 4, 評論 - 58, 引用 - 0
    數據加載中……

    Java筆試題集

    Java部分

    1.求兩個數的最大公約數

    解答:

    歐幾理德原理:輾轉相除法

             public static int zdgys(int a,int b){

                       int x = a%b;

                       if(x==0) return b;

                   else return zdgys(b,x);

             }

    2.  關于java垃圾回收器的認識

    解答:

    對于GC來說,當程序員創建對象時,GC就開始監控這個對象的地址、大小以及使用情況。通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對象。通過這種方式確定哪些對象是"可達的",哪些對象是"不可達的"。當GC確定一些對象為"不可達"時,GC就有責任回收這些內存空間??梢浴3绦騿T可以手動執行System.gc(),通知GC運行,但是Java語言規范并不保證GC一定會執行。

    3.  請問如何設計一個類,使其只能被初始化為一個實例。

    解答:

    Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。

    第一種形式: 定義一個類,它的構造函數為private的,它有一個staticprivate的該類變量,在類初始化時實例話,通過一個publicgetInstance方法獲取對它的引用,繼而調用其中的方法。

    附件:

    package parent.career.blest;

     

    class Singleton {

             private Singleton(){}//在外部用new關鍵字會報錯,只供內部使用

             //注意這是private 只供內部調用

             private static Singleton instance = new Singleton();

             //這里提供了一個供外部訪問本class的靜態方法,可以直接訪問  

            public static Singleton getInstance() {

                    return instance;

          }

          public void say(String str){

                    System.out.println(str);

          }

    }

     

    class commonClass{

             public commonClass(){

                       System.out.println("這是一個普通類");

             }      

    }

    public class mySingleton{

             public static void main(String args[])

             {

                       Singleton sl = Singleton.getInstance();

                       Singleton sl2 = Singleton.getInstance();

                       sl.say("hello,world!");

                       sl2.say("hello,world again!");

                       System.out.println(sl==sl2);//輸出true,說明sl,sl2指向同一個實例

                      

                       commonClass cC = new commonClass();

                       commonClass cC2 = new commonClass();

                       System.out.println(cC==cC2);//輸出false,說明cC,cC2分別指向不同的實例

                      

             }

    }

    4.有一個1001個元素的數組a[n],每個元素都在11000這些整數中取值,其中有一個數值重復了,現在要設計一個算法找出這個數字,且每個元素只能被訪問一次。不能用輔助的存儲容器。

    解答:

    This number = (a[0]+a[1]+a[3]+……a[1000])-(1+2+3+……+1000)

    servlet生命周期以及servlet基本構架

    解答:

    servlet有良好的生存期的定義,包括加載和實例化、初始化、處理請求以及服務結束。這個生存期由javax.servlet.Servlet接口的init,servicedestroy方法表達。

    Servlet的基本架構:
    public class ServletName extends HttpServlet {
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws
             ServletException, IOException {
        }
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws
             ServletException, IOException {
        }
    }

    5.  死鎖的四個必要條件

    解答:

    >互斥條件:某段時間內某資源只能由一個進程使用。

    >請求和保持:進程因請求資源而阻塞時,對已分配給它的資源保持不放。

    >不剝奪條件:資源在未使用完前,不能被剝奪,由使用進程釋放。

    >環路條件:發生死鎖時,有向圖必構成一環路。

    7EJB是基于哪些技術實現的?并說出SessionBeanEntityBean的區別,StatefulBeanStatelessBean的區別。

    解答:

    EJB包括Session BeanEntity Bean、Message Driven Bean,基于JNDI、RMIJAT等技術實現。

    SessionBeanJ2EE應用程序中被用來完成一些服務器端的業務操作,例如訪問數據庫、調用其他EJB組件。EntityBean被用來代表應用系統中用到的數據。

    對于客戶機,SessionBean是一種非持久性對象,它實現某些在服務器上運行的業務邏輯。

    對于客戶機,EntityBean是一種持久性對象,它代表一個存儲在持久性存儲器中的實體的對象視圖,或是一個由現有企業應用程序實現的實體。

    Session Bean 還可以再細分為 Stateful Session Bean Stateless Session Bean ,這兩種的 Session Bean都可以將系統邏輯放在 method之中執行,不同的是 Stateful Session Bean 可以記錄呼叫者的狀態,因此通常來說,一個使用者會有一個相對應的 Stateful Session Bean 的實體。Stateless Session Bean 雖然也是邏輯組件,但是他卻不負責記錄使用者狀態,也就是說當使用者呼叫 Stateless Session Bean 的時候,EJB Container 并不會找尋特定的 Stateless Session Bean 的實體來執行這個 method。換言之,很可能數個使用者在執行某個 Stateless Session Bean methods 時,會是同一個 Bean Instance 在執行。從內存方面來看, Stateful Session Bean Stateless Session Bean 比較, Stateful Session Bean 會消耗 J2EE Server 較多的內存,然而 Stateful Session Bean 的優勢卻在于他可以維持使用者的狀態。

    8sleep() wait() 有什么區別?

    解答:

    sleep是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時后會自動恢復。調用sleep不會釋放對象鎖。

    waitObject類的方法,對此對象調用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發出notify方法(或notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態。

    9forward redirect的區別

    解答:

    forward是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,然后把這些內容再發給瀏覽器,瀏覽器根本不知道服務器發送的內容是從哪兒來的,所以它的地址欄中還是原來的地址。

    redirect就是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛才請求的所有參數重新請求,所以session,request參數都可以獲取。

    10.冒泡排序算法

    解答:

    package parent.career.blest;

     

    /**

     * 冒泡排序算法演示:從小到大排列數組元素

     * 原理:第一個元素和后面的一個元素比較,比較結果再和后面一個元素比較,依次類推

     *       接著,第二個和后面元素比較,依次類推

     */

    public class Maopao{

             public static int[] mppx(int[] array){

                       for(int i =0;i<array.length; i++){

                                for(int j=i; j<array.length; j++){

                                         int temp;

                                         if(array[i]>array[j]){

                                                   temp = array[i];

                                                   array[i] = array[j];     

                                                   array[j] = temp;

                                         }

                                }      

                       }

                       return array;

             }

             public static void main(String args[]){

                       //測試

                       int[] ar ={12,23,1,23,45,11,42,9,45,2,16,77,86,56,43};    

                       ar = mppx(ar);

                       for(int i = 0;i<ar.length;i++){

                                System.out.print(ar[i]+"  ");

                       }      

             }      

    }

    11.從鍵盤接收一個整數,并用遞歸求其階乘。

    解答:

    package parent.career.blest;

    import java.io.*;

    /**

     * 用遞歸求階乘算法

     * 從鍵盤接收一個整數,然后求其階乘

     */

     public class DG_JC{

            public static int DG(int n){

                      if(n==1) return 1;

                      else return n*DG(n-1);

            }

            public static void main(String args[]){

                      int n = 0;

                      System.out.print("請輸入一個整數:");

                      try{

                               BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

                               n = Integer.parseInt(br.readLine());

                               br.close();

                      }catch(IOException e){

                               e.printStackTrace();                    

                      }

                      System.out.println("階乘"+n+"! = "+DG(n));

            }

     }

    12.什么時候使用assert?

    解答:斷言是一個包含布爾表達式的語句,在執行這個語句時假定該表達式為 true。如果表達式計算為 false,那么系統會報告一個 Assertionerror。它用于調試目的:

     

      assert(a > 0); // throws an Assertionerror if a <= 0

    斷言可以有兩種形式:
    assert Expression1 ;
    assert Expression1 : Expression2 ;
    Expression1
    應該總是產生一個布爾值。
    Expression2
    可以是得出一個值的任意表達式。這個值用于生成顯示更多調試信息的 String 消息。
    斷言在默認情況下是禁用的。要在編譯時啟用斷言,需要使用 source 1.4 標記:
    javac -source 1.4 Test.java
    要在運行時啟用斷言,可使用 -enableassertions 或者 -ea 標記。
    要在運行時選擇禁用斷言,可使用 -da 或者 -disableassertions 標記。
    要系統類中啟用斷言,可使用 -esa 或者 -dsa 標記。還可以在包的基礎上啟用或者禁用斷言。

    13談談final, finally, finalize的區別。

    解答:

    final—修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。

    finally—再異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那么相匹配的 catch 子句就會執行,然后控制就會進入 finally 塊(如果有的話)。

    finalize—方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。

    14 Collection Collections的區別。

    解答:

    Collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。
    Collection
    是個java.util下的接口,它是各種集合結構的父接口。

    15.說出ArrayList,Vector, LinkedList的存儲性能和特性
    解答:

    ArrayListVector都是使用數組方式存儲數據,此數組元素數大于實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據快而插入數據慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現存儲,按序號索引數據需要進行前向或后向遍歷,但是插入數據時只需要記錄本項的前后項即可,所以插入速度較快。

    16ArrayListVector的區別,HashMapHashtable的區別
    解答:就ArrayListVector主要從二方面來說:
    .同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程不安全的,不是同步的
    .數據增長:當需要增長時,Vector默認增長為原來一培,而ArrayList卻是原來的一半
    HashMapHashTable主要從三方面來說:
    .歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMapJava 1.2引進的Map接口的一個實現
    .同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的
    .值:只有HashMap可以讓你將空值作為一個表的條目的keyvalue
    17
    不用字符串處理函數,怎么實現以單詞為單位的逆序

    例如:從控制臺輸入 hello word **
         
    輸出:** word hello

    解答:

    public  class hello{
    public static void main(String[] args) throws IOException {
        for (int i = args.length - 1; i >= 0; i--) {
        System.out.print(args[i] + " ");
    }

    }//執行時,跟數組元素,如:java hello wei gui ping (現在args[]={wei,gui,ping})

    18構造一個類來描述屏幕上的一個點,該類的構成包括點的xy兩個坐標,以及一些對點進行的操作,包括:取得點的坐標值,對點的坐標進行賦值,編寫應用程序生成該類的對象并對其進行操作。

    解答:

    Class Point{

             Private float x;

             Private float y;

             Public Point(){

                       This.x = 0;

                       This.y = 0;

             }

             Public Point(float x, float y){

                       This.x = x;

                       This.y = y;

    }

    Public void move(float m,float n ){

                       //將點移動向x方向移動m,y方向移動n

                       This.x += m;

                       This.y += n;

    }

    Public void show(){

                       //顯示坐標位置

                       System.out.println(“坐標為(”+this.getX()+”,”+this.getY()+””);

    }

    //getter/setter方法

    Public void setX(float x){

                       This.x = x;

    }

    Public float getX(){

                       Return this.x;

    }

    Public void setY(float y){

                       This.y = y;

    }

    Public float getY(){

                       Return this.y;

    }

    }

    19寫出下列算法的時間復雜度。
    (1)
    冒泡排序 O(n*n)
    (2)
    選擇排序 O(n*n)
    (3)
    插入排序 O(n*n)
    (4)
    快速排序 O(n*log n)
    (5)
    堆排序 O(n*log n)
    (6)
    歸并排序 O(n*log n)

    20 EJBJAVA BEAN的區別以及EJB的基本架構?
    :Java Bean 是可復用的組件,對Java Bean并沒有嚴格的規范,理論上講,任何一個Java類都可以是一個Bean。但通常情況下,由于Java Bean是被容器所創建(如Tomcat)的,所以Java Bean應具有一個無參的構造器,另外,通常Java Bean還要實現Serializable接口用于實現Bean的持久性。Java Bean實際上相當于微軟COM模型中的本地進程內COM組件,它是不能被跨進程訪問的。Enterprise Java Bean 相當于DCOM,即分布式組件。它是基于Java的遠程方法調用(RMI)技術的,所以EJB可以被遠程訪問(跨進程、跨計算機)。但EJB必須被布署在諸如WebspereWebLogic這樣的容器中,EJB客戶從不直接訪問真正的EJB組件,而是通過其容器訪問。EJB容器是EJB組件的代理,EJB組件由容器所創建和管理??蛻敉ㄟ^容器來訪問真正的EJB組件。
    EJB
    的基本架構
    :一個EJB包括三個部分:
    Remote Interface 接口的代碼
    package Beans;
    import javax.ejb.EJBObject;
    import java.rmi.RemoteException;
    public interface Add extends EJBObject
    {
    //some method declare
    }
    Home Interface 接口的代碼
    package Beans;
    import java.rmi.RemoteException;
    import jaax.ejb.CreateException;
    import javax.ejb.EJBHome;
    public interface AddHome extends EJBHome
    {
    //some method declare
    }
    EJB類的代碼
    package Beans;
    import java.rmi.RemoteException;
    import javax.ejb.SessionBean;
    import javx.ejb.SessionContext;
    public class AddBean Implements SessionBean
    {
    //some method declare
    }
    21.Java中的Reflection作什么用?

    解答:

    自省是軟件分析自己的能力。這個功能由Class類中的java.lang.reflect包和元素所提供。自省是一個重要的功能,當我們使用被稱為Java Beans的組件時將用到它。它允許你在運行時而不是在編譯時分析一個軟件組件并且動態的描述它的功能。例如,通過使用自省,你能決定一個類支持哪些方法、構造函數和成員屬性。

    22Java中的序列化(serialization?

    解答:

    序列化(serialization)是把一個對象的狀態寫入一個字節流的過程。當你想要把你的程序狀態存在一個固定的存儲區域例如文件時,它是很管用的。稍后,你就可以運用序列化過程存儲這些對象。

    Serializable接口:只有一個實現Serializable接口的對象可以被序列化工具存儲和恢復。Serializable接口沒有定義任何成員沒,它只用來表示一個類可以被序列化。如果一個類可以序列化,它的所有子類都可以序列化。

             聲明成transient的變量不被序列化工具存儲。同樣,static變量也不被存儲。

     

    23.客服端調用EJB對象的幾個基本步驟
    解答:

    設置JNDI服務工廠以及JNDI服務地址系統屬性,查找Home接口,從Home接口調用Create方法創建Remote接口,通過Remote接口調用其業務方法。

     

    24.請對以下在J2EE中常用的名詞進行解釋(或簡單描述)
    web
    容器:給處于其中的應用程序組件(JSP,SERVLET)提供一個環境,使JSP,SERVLET直接更容器中的環境變量接**互,不必關注其它系統問題。主要有WEB服務器來實現。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴格遵守J2EE規范中的WEB APPLICATION 標準。我們把遵守以上標準的WEB服務器就叫做J2EE中的WEB容器。
    EJB
    容器:Enterprise java bean 容器。更具有行業領域特色。他提供給運行在其中的組件EJB各種管理功能。只要滿足J2EE規范的EJB放入該容器,馬上就會被容器進行高效率的管理。并且可以通過現成的接口來獲得系統級別的服務。例如郵件服務、事務管理。
    JNDI
    Java Naming & Directory InterfaceJAVA命名目錄服務。主要提供的功能是:提供一個目錄系統,讓其它各地的應用程序在其上面留下自己的索引,從而滿足快速查找和定位分布式應用程序的功能。
    JMS
    Java Message ServiceJAVA消息服務。主要實現各個應用程序之間的通訊。包括點對點和廣播。
    JTA
    Java Transaction APIJAVA事務服務。提供各種分布式事務服務。應用程序只需調用其提供的接口即可。
    JAF
    Java Action FrameWorkJAVA安全認證框架。提供一些安全控制方面的框架。讓開發者通過各種部署和自定義實現自己的個性安全控制策略。
    RMI/IIOP:
    Remote Method Invocation /internet對象請求中介協議)他們主要用于通過遠程調用服務。例如,遠程有一臺計算機上運行一個程序,它提供股票分析服務,我們可以在本地計算機上實現對其直接調用。當然這是要通過一定的規范才能在異構的系統之間進行通信。RMIJAVA特有的。

     

    25MVC的各個部分都有那些技術來實現?如何實現?
    解答:

    MVCModelViewController的簡寫。"Model" 代表的是應用的業務邏輯(通過JavaBeanEJB組件實現), "View" 是應用的表示面(由JSP頁面產生),"Controller" 是提供應用的處理過程控制(一般是一個Servlet),通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的組件實現。這些組件可以進行交互和重用。

     

    26STRUTS的應用(STRUTS架構)
    解答:

    Struts是采用Java Servlet/JavaServer Pages技術,開發Web應用程序的開放源碼的framework 采用Struts能開發出基于MVC(Model-View-Controller)設計模式的應用構架。 Struts有如下的主要功能: .包含一個controller servlet,能將用戶的請求發送到相應的Action對象。 .JSP自由tag庫,并且在controller servlet中提供關聯支持,幫助開發員創建交互式表單應用。 .提供了一系列實用對象:XML處理、通過Java reflection APIs自動處理JavaBeans屬性、國際化的提示和消息。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    數據庫部分

    1.設有關系EMPENOENAME,SALARYDNO),其中各屬性的含義依次為職工號、姓名、工資和所在部門號,以及關系DEPTDNODNAME,MANAGER),其中各屬性含義依次為部門號、部門名稱、部門經理的職工號。(回答下列題目)

    (1). 列出各部門中工資不低于600元的職工的平均工資。

    解答:

    SELECT AVG(月工資) FROM EMP GROUP BY 部門號
    WHERE SALARY >=600
    (2). 請用SQL語句將銷售部的那些工資數額低于600的職工的工資上調10%。
    解答:

    CREAT VIEW V AT職工表
    WHERE
    (部門號==銷售部AND 工資<600);
    UPDATA V
    SET
    工資=工資*1.1

    posted on 2007-08-30 09:51 小鋒 閱讀(615) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 13一14周岁毛片免费| 亚洲成人一级电影| 蜜桃精品免费久久久久影院| 国产情侣久久久久aⅴ免费 | 久草视频在线免费| 波多野结衣免费一区视频| 猫咪免费人成网站在线观看入口| 亚洲嫩草影院在线观看| 亚洲av丰满熟妇在线播放| 久久亚洲国产精品五月天婷| 在线看片无码永久免费aⅴ| 99精品国产免费久久久久久下载| 18级成人毛片免费观看| 国产成人AV片无码免费| 国产美女亚洲精品久久久综合| 四虎永久在线精品免费观看地址| 成人免费a级毛片无码网站入口| 亚洲国产精品免费在线观看| 特级无码毛片免费视频尤物| 免费视频精品一区二区三区| 青青操视频在线免费观看| 国产精品偷伦视频免费观看了 | 全部免费a级毛片| 免费看大黄高清网站视频在线| 永久免费AV无码国产网站 | 亚洲 欧洲 视频 伦小说| 亚洲国产模特在线播放| 亚洲理论片在线观看| 亚洲午夜久久久精品电影院| 亚洲校园春色小说| 亚洲国产成a人v在线| 精品久久亚洲中文无码| 亚洲精品第一综合99久久| 亚洲熟女乱色一区二区三区 | 成年女人免费视频播放77777| 歪歪漫画在线观看官网免费阅读| 麻豆成人精品国产免费| 国产精品免费_区二区三区观看| 亚洲成人高清在线| 国产成人A亚洲精V品无码 | 亚洲黄色免费网址|