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

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

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

    天涯【鈍】刀客

    設計模式/uml/隨想/雜談...
    posts - 1, comments - 2, trackbacks - 0, articles - 5

    java面試題之二(非原創)

    Posted on 2008-03-18 10:20 天涯【鈍】刀客 閱讀(108) 評論(0)  編輯  收藏 所屬分類: java技術
    1、作用域public,private,protected,以及不寫時的區別
    答:區別如下:
    作用域           當前類       同一package  子孫類       其他package
    public            √                     √                  √              √
    protected        √                    √                  √               ×
    friendly          √                    √                   ×             ×
    private           √                     ×                   ×             ×
    不寫時默認為friendly

    2、ArrayList和Vector的區別,HashMap和Hashtable的區別
    答:就ArrayList與Vector主要從二方面來說.
    一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的
    二.數據增長:當需要增長時,Vector默認增長為原來一培,而ArrayList卻是原來的一半
    就HashMap與HashTable主要從三方面來說。
    一.歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一個實現
    二.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的
    三.值:只有HashMap可以讓你將空值作為一個表的條目的key或value

    3、char型變量中能不能存貯一個中文漢字?為什么?
    答:是能夠定義成為一個中文的,因為java中以unicode編碼,一個char占16個字節,所以放一個中文是沒問題的

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

    5、繼承時候類的執行順序問題,一般都是選擇題,問你將會打印出什么?
    答:如下:父類:
    package test;
    public class  FatherClass
    {
        
    public FatherClass()
     
    {
      System.out.println(
    "FatherClass Create");
     }

    }

    子類:
    package test;
    import test.FatherClass;
    public class  ChildClass extends FatherClass
    {
     
    public ChildClass()
     
    {
      System.out.println(
    "ChildClass Create");
     }

     
    public static void main(String[] args) 
     
    {
      FatherClass fc 
    = new FatherClass();
      ChildClass cc 
    = new ChildClass();
     }

    }

    輸出結果:
    C:">java test.ChildClass
    FatherClass Create
    FatherClass Create
    ChildClass Create

    6、內部類的實現方式?
    答:示例代碼如下:
    package test;
    public class  OuterClass
    {
     
    private class InterClass
     
    {
      
    public InterClass()
      
    {
       System.out.println(
    "InterClass Create");
      }

     }

     
    public OuterClass()
     
    {
      InterClass ic 
    = new InterClass();
      System.out.println(
    "OuterClass Create");
     }

     
    public static void main(String[] args) 
     
    {
      OuterClass oc 
    = new OuterClass();
     }

    }

    輸出結果:
    C:">java test/OuterClass
    InterClass Create
    OuterClass Create

    7floatfloat f=3.4是否正確?
    :不正確。精度不準確,應該用強制類型轉換,如下所示:float f=(float)3.4

    8
    、介紹JAVA中的Collection FrameWork(包括如何寫自己的數據結構)? 
    答:Collection FrameWork如下:
    Collection
    ├List
    │├LinkedList
    │├ArrayList
    │└Vector
     └Stack
    └Set
    Map
    ├Hashtable
    ├HashMap
    └WeakHashMap

    9、抽象類與接口?
    答:抽象類與接口都用于抽象,但是抽象類(JAVA)可以有自己的部分實現,而接口則完全是一個標識(同時有多重繼承的功能)

    10Java 的通信編程,編程題(或問答),用JAVA SOCKET編程,讀服務器幾個字符,再寫入本地顯示? 
    :Server端程序:

    package test;
    import java.net.*;
    import java.io.*;

    public class Server
    {
     
    private ServerSocket ss;
     
    private Socket socket;
     
    private BufferedReader in;
     
    private PrintWriter out;
     
    public Server()
     
    {
      
    try
      
    {
       ss
    =new ServerSocket(10000);
       
    while(true)
       
    {
        socket 
    = ss.accept();
        String RemoteIP 
    = socket.getInetAddress().getHostAddress();
        String RemotePort 
    = ":"+socket.getLocalPort();
        System.out.println(
    "A client come in!IP:"+RemoteIP+RemotePort);
        in 
    = new BufferedReader(new 

    InputStreamReader(socket.getInputStream()));
        String line 
    = in.readLine();
        System.out.println(
    "Cleint send is :" + line);
        out 
    = new PrintWriter(socket.getOutputStream(),true);
        out.println(
    "Your Message Received!");
        out.close();
        in.close();
        socket.close();
       }

      }
    catch (IOException e)
      
    {
       out.println(
    "wrong");
      }

     }

     
    public static void main(String[] args)
     
    {
      
    new Server();
     }

    }
    ;
    Client端程序:
    package test;
    import java.io.*;
    import java.net.*;

    public class Client
    {
     Socket socket;
     BufferedReader in;
     PrintWriter out;
     
    public Client()
     
    {
      
    try
      
    {
       System.out.println(
    "Try to Connect to 127.0.0.1:10000");
       socket 
    = new Socket("127.0.0.1",10000);
       System.out.println(
    "The Server Connected!");
       System.out.println(
    "Please enter some Character:");
       BufferedReader line 
    = new BufferedReader(new 

    InputStreamReader(System.in));
       out 
    = new PrintWriter(socket.getOutputStream(),true);
       out.println(line.readLine());
       in 
    = new BufferedReader(new InputStreamReader(socket.getInputStream()));
       System.out.println(in.readLine());
       out.close();
       in.close();
       socket.close();
      }
    catch(IOException e)
      
    {
       out.println(
    "Wrong");
      }

     }

     
    public static void main(String[] args)
     
    {
      
    new Client();
     }

    }
    ;

    11、用JAVA實現一種排序,JAVA類實現序列化的方法(二種) 如在COLLECTION框架中,實現比較要實現什么樣的接口?
    :用插入法進行排序代碼如下:
    package test;
    import java.util.*;
    class  InsertSort
    {
     ArrayList al;
     
    public InsertSort(int num,int mod)
     
    {
      al 
    = new ArrayList(num);
      Random rand 
    = new Random();
      System.out.println(
    "The ArrayList Sort Before:");
      
    for (int i=0;i<num ;i++ )
      
    {
       al.add(
    new Integer(Math.abs(rand.nextInt()) % mod + 1));
       System.out.println(
    "al["+i+"]="+al.get(i));
      }

     }

     
    public void SortIt()
     
    {
      Integer tempInt;
      
    int MaxSize=1;
      
    for(int i=1;i<al.size();i++)
      
    {
           tempInt 
    = (Integer)al.remove(i);
        
    if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())
        
    {
         al.add(MaxSize,tempInt);
         MaxSize
    ++;
         System.out.println(al.toString());
        }
     else {
         
    for (int j=0;j<MaxSize ;j++ )
         
    {
          
    if 

    (((Integer)al.get(j)).intValue()
    >=tempInt.intValue())
          
    {
           al.add(j,tempInt);
           MaxSize
    ++;
           System.out.println(al.toString());
           
    break;
          }

         }

        }

      }

      System.out.println(
    "The ArrayList Sort After:");
      
    for(int i=0;i<al.size();i++)
      
    {
       System.out.println(
    "al["+i+"]="+al.get(i));
      }

     }

     
    public static void main(String[] args) 
     
    {
      InsertSort is 
    = new InsertSort(10,100);
      is.SortIt();
     }

    }

    JAVA類實現序例化的方法是實現java.io.Serializable接口
    Collection
    框架中實現比較要實現Comparable 接口和 Comparator 接口

    12、編程:編寫一個截取字符串的函數,輸入為一個字符串和字節數,輸出為按字節截取的字符串。 但是要保證漢字不被截半個,如ABC”4,應該截為AB”,輸入ABCDEF”6,應該輸出為ABC”而不是ABC+漢的半個 
    答:代碼如下:
    package test;

    class  SplitString
    {
     String SplitStr;
     
    int SplitByte;
     
    public SplitString(String str,int bytes)
     
    {
      SplitStr
    =str;
      SplitByte
    =bytes;
      System.out.println(
    "The String is:'"+SplitStr+"';SplitBytes="+SplitByte);
     }

     
    public void SplitIt()
     
    {
      
    int loopCount;
      

    loopCount
    =(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split

    Byte
    +1);
      System.out.println(
    "Will Split into "+loopCount);
      
    for (int i=1;i<=loopCount ;i++ )
      
    {
       
    if (i==loopCount){
        

    System.out.println(SplitStr.substring((i
    -1)*SplitByte,SplitStr.length()));
       }
     else {
        

    System.out.println(SplitStr.substring((i
    -1)*SplitByte,(i*SplitByte)));
       }

      }

     }

     
    public static void main(String[] args) 
     
    {
      SplitString ss 
    = new SplitString("test中dd文dsaf中男大3443n中國43中國人

    0ewldfls
    =103",4);
      ss.SplitIt();
     }

    }


    13STRINGSTRINGBUFFER的區別。 
    答:STRING的長度是不可變的,STRINGBUFFER的長度是可變的。如果你對字符串中的內容經常進行操作,特別是內容要修改時,那么使用StringBuffer,如果最后需要String,那么使用StringBuffertoString()方法

    Jsp方面

    1
    jsp有哪些內置對象?作用分別是什么?
    :JSP共有以下9種基本內置組件(可與ASP6種內部組件相對應): 
     request 用戶端請求,此請求會包含來自GET/POST請求的參數 
       response 
    網頁傳回用戶端的回應 
       pageContext 
    網頁的屬性是在這里管理 
       session 
    與請求有關的會話期 
       application servlet 
    正在執行的內容 
       out 
    用來傳送回應的輸出
       config servlet
    的構架部件 
       page JSP
    網頁本身 
       exception 
    針對錯誤網頁,未捕捉的例外 

    2
    jsp有哪些動作?作用分別是什么?
    :JSP共有以下6種基本動作
       jsp:include
    :在頁面被請求的時候引入一個文件。 
       jsp:useBean
    :尋找或者實例化一個JavaBean 
       jsp:setProperty
    :設置JavaBean的屬性。 
       jsp:getProperty
    :輸出某個JavaBean的屬性。 
       jsp:forward
    :把請求轉到一個新的頁面。 
       jsp:plugin
    :根據瀏覽器類型為Java插件生成OBJECTEMBED標記

    3
    JSP中動態INCLUDE與靜態INCLUDE的區別? 
    答:動態INCLUDEjsp:include動作實現
       <jsp:include page="included.jsp" flush="true" />
    它總是會檢查所含文件中的變化,適合用于包含動態頁面,并且可以帶參數
       
    靜態INCLUDEinclude偽碼實現,定不會檢查所含文件的變化,適用于包含靜態頁面
       <%@ include file="included.htm" %>

    4
    、兩種跳轉方式分別是什么?有什么區別?
    答:有兩種,分別為:
      <jsp:include page="included.jsp" flush="true">
      <jsp:forward page= "nextpage.jsp"/>
      
    前者頁面不會轉向include所指的頁面,只是顯示該頁的結果,主頁面還是原來的頁面。執行完后還會回來,相當于函數調用。并且可以帶參數.后者完全轉向新頁面,不會再回來。相當于go to 語句。

    Servlet
    方面

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

    2
    JAVA SERVLET APIforward() redirect()的區別?
    :前者僅是容器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向后的地址;后者則是完全的跳轉,瀏覽器將會得到跳轉的地址,并重新發送請求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時,盡量使用forward()方法,并且,這樣也有助于隱藏實際的鏈接。在有些情況下,比如,需要跳轉到一個其它服務器上的資源,則必須使用sendRedirect()方法。 

    3
    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  
    {
          }

    }


    JdbcJdo方面

    1
    、可能會讓你寫一段JdbcOracle的程序,并實現數據查詢.
    :程序如下:
    package hello.ant;
    import java.sql.*;
    public class  jdbc
    {
     String dbUrl
    ="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
     String theUser
    ="admin";
     String thePw
    ="manager";
     Connection c
    =null;
     Statement conn;
     ResultSet rs
    =null;
     
    public jdbc() 
     
    {
      
    try{
        Class.forName(
    "oracle.jdbc.driver.OracleDriver").newInstance(); 
              c 
    = DriverManager.getConnection(dbUrl,theUser,thePw);
        conn
    =c.createStatement();
      }
    catch(Exception e){
       e.printStackTrace();
      }

     }

     
    public boolean executeUpdate(String sql)
     
    {
       
    try
       
    {
         conn.executeUpdate(sql);
         
    return true;
       }

       
    catch (SQLException e)
       
    {
         e.printStackTrace();
         
    return false;
       }

     }

     
    public ResultSet executeQuery(String sql)
     
    {
       rs
    =null;
       
    try
       
    {
         rs
    =conn.executeQuery(sql);
       }

       
    catch (SQLException e)
       
    {
         e.printStackTrace();
       }

       
    return rs;
     }

     
    public void close()
     
    {
       
    try
       
    {
         conn.close();
         c.close();
       }

       
    catch (Exception e)
       
    {
         e.printStackTrace();
       }

     }

     
    public static void main(String[] args)
     
    {
      ResultSet rs;
      jdbc conn 
    = new jdbc();
      rs
    =conn.executeQuery("select * from test");
      
    try{
      
    while (rs.next())
      
    {
       System.out.println(rs.getString(
    "id"));
       System.out.println(rs.getString(
    "name"));
      }

      }
    catch(Exception e)
      
    {
       e.printStackTrace();
      }

     }

    }


    2Class.forName的作用?為什么要用?
    答:調用該訪問返回一個以字符串指定類名的類的對象。

    3
    JDO是什么?
    :JDOJava對象持久化的新的規范,為java data object的簡稱,也是一個用于存取某種數據倉庫中的對象的標準化APIJDO提供了透明的對象存儲,因此對開發人員來說,存儲數據對象完全不需要額外的代碼(如JDBC API的使用)。這些繁瑣的例行工作已經轉移到JDO產品提供商身上,使開發人員解脫出來,從而集中時間和精力在業務邏輯上。另外,JDO很靈活,因為它可以在任何數據底層上運行。JDBC只是面向關系數據庫(RDBMS)JDO更通用,提供到任何數據底層的存儲功能,比如關系數據庫、文件、XML以及對象數據庫(ODBMS)等等,使得應用可移植性更強。

    xml,EJB方面:
    1
    xml有哪些解析技術?區別是什么?
    :DOM,SAX,STAX
    DOM:
    處理大型文件時其性能下降的非常厲害。這個問題是由DOM的樹結構所造成的,這種結構占用的內存較多,而且DOM必須在解析文件之前把整個文檔裝入內存,適合對XML的隨機訪問SAX:不現于DOM,SAX是事件驅動型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個文件。當遇到像文件開頭,文檔結束,或者標簽開頭與標簽結束時,它會觸發一個事件,用戶通過在其回調事件中寫入處理代碼來處理XML文件,適合對XML的順序訪問

    2.EJBJAVA BEAN的區別? 
    :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組件。

    3
    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
      }  

    J2EE,MVC
    方面

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

    2.J2EE是什么? 
    :Je22Sun公司提出的多層(multi-diered),分布式(distributed),基于組件(component-base)的企業級應用模型(enterpriese application model).在這樣的一個應用系統中,可按照功能劃分為不同的組件,這些組件又可在不同計算機上,并且處于相應的層次(tier)中。所屬層次包括客戶層(clietn tier)組件,web層和組件,Business層和組件,企業信息系統(EIS)層。

    3.STRUTS的應用(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屬性、國際化的提示和消息

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


    網站導航:
     
    主站蜘蛛池模板: 国产精品冒白浆免费视频| 一区二区三区免费视频网站| 久久国产精品成人片免费| 亚洲日韩欧洲无码av夜夜摸| 丰满妇女做a级毛片免费观看| 国产亚洲国产bv网站在线| 精品国产无限资源免费观看| wwwxxx亚洲| 亚洲今日精彩视频| 57pao国产成永久免费视频| 色老板亚洲视频免在线观| 亚洲人成影院在线| 亚洲精品国产美女久久久| 免费A级毛片无码无遮挡内射| 久久久久久亚洲精品无码| 亚洲国产成人久久综合碰| 在线看片免费人成视频福利| 老司机亚洲精品影院| 搡女人真爽免费视频大全| 老司机午夜精品视频在线观看免费| 亚洲乱码国产一区网址| 99精品视频在线视频免费观看 | 亚洲高清免费视频| 亚洲美女视频一区| 四虎AV永久在线精品免费观看| 中文字幕无码一区二区免费| 一级做受视频免费是看美女| 免费一级做a爰片久久毛片潮| 亚洲成人高清在线观看| 亚洲精品无码久久久| 成人亚洲网站www在线观看| 中文字幕免费在线观看| 99久热只有精品视频免费观看17| 在线人成免费视频69国产| 特级无码毛片免费视频尤物| 亚洲精品无码不卡在线播放| 亚洲免费人成在线视频观看| 国产AV无码专区亚洲AVJULIA| 成人午夜大片免费7777| 黄网址在线永久免费观看 | 日本免费观看网站|