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

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

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

    蘋果的成長日記

    我還是個青蘋果呀!

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      57 隨筆 :: 0 文章 :: 74 評論 :: 0 Trackbacks
       這個還是早點準備好!
     回答不一定完全正確,但題目還是有些參考意義。故轉貼
    原文: http://www.java-cn.com/bbs-jsp/show.jsp?id=1055&forum=tian_cookie
    Regards
    Zerol

    =======

    前段時間因為要參加一個筆試,在準備期間在網上找到了兩條關于筆試題目的文章,其中一篇為<<有感:應聘Java筆試時可能出現問題>>,還有一篇忘了名字,讀后深受啟發。
    在尋找這些答案的過程中,我將相關答案記錄下來,就形成了以下這些東西。需要說明的是以下答案肯定有很多不完整甚至錯誤的地方,需要各位來更正與完善它,千萬不要扔我的雞蛋啊。
    希望本文能夠給即將奔赴筆試考場的同仁些許幫助,更希望更多的人加入到收集整理筆試題與完善答案的這些工作中來,為大家更好的獲得工作機會做一點貢獻。
    在此感謝前面兩文的作者的對筆試題目的收集與整理。
    如有任何意見與建議請通過QQ:6045306,Mail:huijunzi@21cn.com與我聯系。
    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
    再一個例題:
    public class OuterClass {
    private double d1 = 1.0;
    //insert code here
    }
    You need to insert an inner class declaration at line 3. Which two inner class declarations are

    valid?(Choose two.)
    A. class InnerOne{
    public static double methoda() {return d1;}
    }
    B. public class InnerOne{
    static double methoda() {return d1;}
    }
    C. private class InnerOne{
    double methoda() {return d1;}
    }
    D. static class InnerOne{
    protected double methoda() {return d1;}
    }
    E. abstract class InnerOne{
    public abstract double methoda();
    }
    說明如下:
    一.靜態內部類可以有靜態成員,而非靜態內部類則不能有靜態成員。 故 A、B 錯
    二.靜態內部類的非靜態成員可以訪問外部類的靜態變量,而不可訪問外部類的非靜態變量;return d1 出錯。

    故 D 錯
    三.非靜態內部類的非靜態成員可以訪問外部類的非靜態變量。 故 C 正確
    四.答案為C、E

    7、垃圾回收機制,如何優化程序?
    希望大家補上,謝謝

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

    9、介紹JAVA中的Collection FrameWork(包括如何寫自己的數據結構)?
    答:Collection FrameWork如下:
    Collection
    ├List
    │├LinkedList
    │├ArrayList
    │└Vector
    │ └Stack
    └Set
    Map
    ├Hashtable
    ├HashMap
    └WeakHashMap
    Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements)
    Map提供key到value的映射

    10、Java中異常處理機制,事件機制?

    11、JAVA中的多形與繼承?
    希望大家補上,謝謝

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

    13、Java 的通信編程,編程題(或問答),用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();
    }
    };

    14、用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 接口

    15、編程:編寫一個截取字符串的函數,輸入為一個字符串和字節數,輸出為按字節截取的字符串。 但是要保證漢字不被截半個,如“我ABC”4,應該截為“我AB”,輸入“我ABC漢DEF”,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();
    }
    }

    16、JAVA多線程編程。 用JAVA寫一個多線程程序,如寫四個線程,二個加1,二個對一個變量減一,輸出。
    希望大家補上,謝謝

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

    Jsp方面

    1、jsp有哪些內置對象?作用分別是什么?
    答:JSP共有以下9種基本內置組件(可與ASP的6種內部組件相對應):
     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插件生成OBJECT或EMBED標記

    3、JSP中動態INCLUDE與靜態INCLUDE的區別?
    答:動態INCLUDE用jsp:include動作實現
    <jsp:include page="included.jsp" flush="true" />它總是會檢查所含文件中的變化,適合用于包含動態頁面,并且可以帶參數
    靜態INCLUDE用include偽碼實現,定不會檢查所含文件的變化,適用于包含靜態頁面
    <%@ 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,service和destroy方法表達。

    2、Servlet版本間(忘了問的是哪兩個版本了)的不同?
    希望大家補上,謝謝

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

    4、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 {
    }
    }

    Jdbc、Jdo方面

    1、可能會讓你寫一段Jdbc連Oracle的程序,并實現數據查詢.
    答:程序如下:
    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();
    }
    }
    }

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

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

    4、在ORACLE大數據量下的分頁解決方法。一般用截取ID方法,還有是三層嵌套方法。
    答:一種分頁方法
    <%
    int i=1;
    int numPages=14;
    String pages = request.getParameter("page") ;
    int currentPage = 1;
    currentPage=(pages==null)?(1):{Integer.parseInt(pages)}
    sql = "select count(*) from tables";
    ResultSet rs = DBLink.executeQuery(sql) ;
    while(rs.next()) i = rs.getInt(1) ;
    int intPageCount=1;
    intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1);
    int nextPage ;
    int upPage;
    nextPage = currentPage+1;
    if (nextPage>=intPageCount) nextPage=intPageCount;
    upPage = currentPage-1;
    if (upPage<=1) upPage=1;
    rs.close();
    sql="select * from tables";
    rs=DBLink.executeQuery(sql);
    i=0;
    while((i<numPages*(currentPage-1))&&rs.next()){i++;}
    %>
    //輸出內容
    //輸出翻頁連接
    合計:<%=currentPage%>/<%=intPageCount%><a href="List.jsp?page=1">第一頁</a><a

    href="List.jsp?page=<%=upPage%>">上一頁</a>
    <%
    for(int j=1;j<=intPageCount;j++){
    if(currentPage!=j){
    %>
    <a href="list.jsp?page=<%=j%>">[<%=j%>]</a>
    <%
    }else{
    out.println(j);
    }
    }
    %>
    <a href="List.jsp?page=<%=nextPage%>">下一頁</a><a href="List.jsp?page=<%=intPageCount%>">最后頁

    </a>

    Xml方面

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

    2、你在項目中用到了xml技術的哪些方面?如何實現的?
    答:用到了數據存貯,信息配置兩方面。在做數據交換平臺時,將不能數據源的數據組裝成XML文件,然后將XML文件壓縮打包加密后通過網絡傳送給接收者,接收解密與解壓縮后再同XML文件中還原相關信息進行處理。在做軟件配置時,利用XML可以很方便的進行,軟件的各種配置參數都存貯在XML文件中。

    3、用jdom解析xml文件時如何解決中文問題?如何解析?
    答:看如下代碼,用編碼方式加以解決
    package test;
    import java.io.*;
    public class DOMTest
    {
    private String inFile = "c:\\people.xml";
    private String outFile = "c:\\people.xml";
    public static void main(String args[])
    {
    new DOMTest();
    }
    public DOMTest()
    {
    try
    {
    javax.xml.parsers.DocumentBuilder builder =

    javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();
    org.w3c.dom.Document doc = builder.newDocument();
    org.w3c.dom.Element root = doc.createElement("老師");
    org.w3c.dom.Element wang = doc.createElement("王");
    org.w3c.dom.Element liu = doc.createElement("劉");
    wang.appendChild(doc.createTextNode("我是王老師"));
    root.appendChild(wang);
    doc.appendChild(root);
    javax.xml.transform.Transformer transformer =
    javax.xml.transform.TransformerFactory.newInstance().newTransformer();
    transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "gb2312");
    transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");

    transformer.transform(new javax.xml.transform.dom.DOMSource(doc),
    new

    javax.xml.transform.stream.StreamResult(outFile));
    }
    catch (Exception e)
    {
    System.out.println (e.getMessage());
    }
    }
    }

    4、編程用JAVA解析XML的方式.
    答:用SAX方式解析XML,XML文件如下:
    <?xml version="1.0" encoding="gb2312"?>
    <person>
    <name>王小明</name>
    <college>信息學院</college>
    <telephone>6258113</telephone>
    <notes>男,1955年生,博士,95年調入海南大學</notes>
    </person>
    事件回調類SAXHandler.java
    import java.io.*;
    import java.util.Hashtable;
    import org.xml.sax.*;
    public class SAXHandler extends HandlerBase
    {
    private Hashtable table = new Hashtable();
    private String currentElement = null;
    private String currentValue = null;
    public void setTable(Hashtable table)
    {
    this.table = table;
    }
    public Hashtable getTable()
    {
    return table;
    }
    public void startElement(String tag, AttributeList attrs)
    throws SAXException
    {
    currentElement = tag;
    }
    public void characters(char[] ch, int start, int length)
    throws SAXException
    {
    currentValue = new String(ch, start, length);
    }
    public void endElement(String name) throws SAXException
    {
    if (currentElement.equals(name))
    table.put(currentElement, currentValue);
    }
    }
    JSP內容顯示源碼,SaxXml.jsp:
    <HTML>
    <HEAD>
    <TITLE>剖析XML文件people.xml</TITLE>
    </HEAD>
    <BODY>
    <%@ page errorPage="ErrPage.jsp"
    contentType="text/html;charset=GB2312" %>
    <%@ page import="java.io.*" %>
    <%@ page import="java.util.Hashtable" %>
    <%@ page import="org.w3c.dom.*" %>
    <%@ page import="org.xml.sax.*" %>
    <%@ page import="javax.xml.parsers.SAXParserFactory" %>
    <%@ page import="javax.xml.parsers.SAXParser" %>
    <%@ page import="SAXHandler" %>
    <%
    File file = new File("c:\\people.xml");
    FileReader reader = new FileReader(file);
    Parser parser;
    SAXParserFactory spf = SAXParserFactory.newInstance();
    SAXParser sp = spf.newSAXParser();
    SAXHandler handler = new SAXHandler();
    sp.parse(new InputSource(reader), handler);
    Hashtable hashTable = handler.getTable();
    out.println("<TABLE BORDER=2><CAPTION>教師信息表</CAPTION>");
    out.println("<TR><TD>姓名</TD>" + "<TD>" +
    (String)hashTable.get(new String("name")) + "</TD></TR>");
    out.println("<TR><TD>學院</TD>" + "<TD>" +
    (String)hashTable.get(new String("college"))+"</TD></TR>");
    out.println("<TR><TD>電話</TD>" + "<TD>" +
    (String)hashTable.get(new String("telephone")) + "</TD></TR>");
    out.println("<TR><TD>備注</TD>" + "<TD>" +
    (String)hashTable.get(new String("notes")) + "</TD></TR>");
    out.println("</TABLE>");
    %>
    </BODY>
    </HTML>

    EJB方面

    1、EJB2.0有哪些內容?分別用在什么場合? EJB2.0和EJB1.1的區別?
    答:規范內容包括Bean提供者,應用程序裝配者,EJB容器,EJB配置工具,EJB服務提供者,系統管理員。這里面,EJB容器是EJB之所以能夠運行的核心。EJB容器管理著EJB的創建,撤消,激活,去活,與數據庫的連接等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS.....

    2、EJB與JAVA 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必須被布署在諸如Webspere、WebLogic這樣的容器中,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的各個部分都有那些技術來實現?如何實現?
    答:MVC是Model-View-Controller的簡寫。"Model" 代表的是應用的業務邏輯(通過JavaBean,EJB組件實現), "View" 是應用的表示面(由JSP頁面產生),"Controller" 是提供應用的處理過程控制(一般是一個Servlet),通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的組件實現。這些組件可以進行交互和重用。

    2、應用服務器與WEB SERVER的區別?
    希望大家補上,謝謝

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

    4、WEB SERVICE名詞解釋。JSWDL開發包的介紹。JAXP、JAXM的解釋。SOAP、UDDI,WSDL解釋。
    答:Web Service描述語言WSDL
    SOAP即簡單對象訪問協議(Simple Object Access Protocol),它是用于交換XML編碼信息的輕量級協議。
    UDDI 的目的是為電子商務建立標準;UDDI是一套基于Web的、分布式的、為Web Service提供的、信息注冊中心的實現標準規范,同時也包含一組使企業能將自身提供的Web Service注冊,以使別的企業能夠發現的訪問協議的實現標準。

    5、BS與CS的聯系與區別。
    希望大家補上,謝謝

    6、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屬性、國際化的提示和消息。

    設計模式方面

    1、開發中都用到了那些設計模式?用在什么場合?
    答:每個模式都描述了一個在我們的環境中不斷出現的問題,然后描述了該問題的解決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需在重復相同的工作。主要用到了MVC的設計模式。用來開發JSP/Servlet或者J2EE的相關應用。簡單工廠模式等。

    2、UML方面
    答:標準建模語言UML。用例圖,靜態圖(包括類圖、對象圖和包圖),行為圖,交互圖(順序圖,合作圖),實現圖,

    JavaScript方面

    1、如何校驗數字型?
    var re=/^\d{1,8}$|\.\d{1,2}$/;
    var str=document.form1.all(i).value;
    var r=str.match(re);
    if (r==null)
    {
    sign=-4;
    break;
    }
    else{
    document.form1.all(i).value=parseFloat(str);
    }

    CORBA方面

    1、CORBA是什么?用途是什么?
    答:CORBA 標準是公共對象請求代理結構(Common Object Request Broker Architecture),由對象管理組織 (Object Management Group,縮寫為 OMG)標準化。它的組成是接口定義語言(IDL), 語言綁定(binding:也譯為聯編)和允許應用程序間互操作的協議。 其目的為:
    用不同的程序設計語言書寫
    在不同的進程中運行
    為不同的操作系統開發

    LINUX方面

    1、LINUX下線程,GDI類的解釋。
    答:LINUX實現的就是基于核心輕量級進程的"一對一"線程模型,一個線程實體對應一個核心輕量級進程,而線程之間的管理在核外函數庫中實現。
    GDI類為圖像設備編程接口類庫。
    posted on 2005-06-16 11:03 蘋果 閱讀(11416) 評論(5)  編輯  收藏 所屬分類: J2EE/JAVA學習

    評論

    # re: 【Java面試題集錦系列一】 2005-06-16 13:34 蘋果
    下面是我自己的一些注釋:
    1.private 只有本類內的方法才具有訪問權。
    protected 只有本類內的方法、子類以及同一包內的其他類才具有訪問權。
    public 公開訪問
    final 一個常量或者一個不能被重載的類或方法
    finally 一個try塊中總會被執行的部分  回復  更多評論
      

    # re: 【Java面試題集錦系列一】 2005-06-23 20:52 蘋果
    2.HashMap和Hashtable基本相同,只是HashMap是非同步的,并且允許空值。
    ArrayList和Vector的區別也是ArrayList是非同步的(unsyncronized). Hashtable和HashMap的區別: 1.Hashtable是Dictionary的子類,HashMap是Map接口的一個實現類; 2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情況下是非同步的。即是說,在多線程應用程序中,不用專門的操作就安全地可以使用Hashtable了;而對于HashMap,則需要額外的同步機制。但HashMap的同步問題可通過Collections的一個靜態方法得到解決: Map Collections.synchronizedMap(Map m) 這個方法返回一個同步的Map,這個Map封裝了底層的HashMap的所有方法,使得底層的HashMap即使是在多線程的環境中也是安全的。 3.在HashMap中,null可以作為鍵,這樣的鍵只有一個;可以有一個或多個鍵所對應的值為null。當get()方法返回null值時,即可以表示HashMap中沒有該鍵,也可以表示該鍵所對應的值為null。因此,在HashMap中不能由get()方法來判斷HashMap中是否存在某個鍵,而應該用containsKey()方法來判斷。 Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會有很大的差異。  回復  更多評論
      

    # re: 【Java面試題集錦系列一】 2005-06-23 21:48 蘋果
    內部類
    內部類的主要優點之一是內部類實例與外部類實例共享一種“特殊關系”。這種特殊關系為內部類中的代碼提供對封裝(外部)類成員的訪問,就好象內部類是外部類的一部分。不僅是“一部分”,而且是外部類一個羽翼豐滿、帶著卡片的成員。內部類實例可以訪問外部類的所有成員,甚至哪些被標識為private的成員。  回復  更多評論
      

    # re: 【Java面試題集錦系列一】 2005-06-23 21:49 蘋果
    Java線程及同步(synchronized)樣例代碼

    --------------------------------------------------------------------------------

    Java線程及同步(synchronized)樣例代碼


    import java.io.*;
    import java.util.*;
    import java.text.SimpleDateFormat;

    public class TestThread extends Thread
    {
    private static Integer threadCounterLock; //用于同步,防止數據被寫亂
    private static int threadCount; //本類的線程計數器

    static
    {
    threadCount = 0;
    threadCounterLock = new Integer(0);
    }

    public TestThread()
    {
    super();
    }

    public synchronized static void incThreadCount()
    {
    threadCount++;
    System.out.println("thread count after enter: " + threadCount);
    }

    public synchronized static void decThreadCount()
    {
    threadCount--;
    System.out.println("thread count after leave: " + threadCount);
    }

    public void run()
    {
    synchronized(threadCounterLock) //同步
    {
    threadCount++;
    System.out.println("thread count after enter: " + threadCount);
    }

    //incThreadCount(); //和上面的語句塊是等價的

    final long nSleepMilliSecs = 1000; //循環中的休眠時間

    long nCurrentTime = System.currentTimeMillis();
    long nEndTime = nCurrentTime + 30000; //運行截止時間
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    try
    {
    while (nCurrentTime < nEndTime)
    {
    nCurrentTime = System.currentTimeMillis();
    System.out.println("Thread " + this.hashCode() + ", current time: " + simpleDateFormat.format(new Date(nCurrentTime)));

    try
    {
    sleep(nSleepMilliSecs);
    }
    catch(InterruptedException ex)
    {
    ex.printStackTrace();
    }
    }
    }
    finally
    {
    synchronized(threadCounterLock) //同步
    {
    threadCount--;
    System.out.println("thread count after leave: " + threadCount);
    }

    //decThreadCount(); //和上面的語句塊是等價的
    }
    }

    public static void main(String[] args)
    {
    TestThread[] testThread = new TestThread[2];
    for (int i=0; i {
    testThread[i] = new TestThread();
    testThread[i].start();
    }
    }
    }

    同步就是簡單的說我用的時候你不能用,大家用的要是一樣的就這樣!
    比如說有只蘋果很好吃,我拉起來咬一口,放下,你再拉起咬一口,這就同步了,要是大家一起咬,呵呵,那就結婚吧,婚禮上常能看到這個,也不怕咬著嘴,嘻嘻嘻!

    舉個例子,現在有個類,類中有一個私有成員一個蘋果,兩個方法一個看,一個吃。
    現在不同步,我一“看”,哈哈一個蘋果,我“吃”四分之一了
    你一“看”,哈哈一個蘋果,也“吃”四分之一了。
    可能的情況就是都是看到一個蘋果但我的吃方法用在你的之前,所以可能你只能吃到3/4的1/4也就是3/16個而不是1/4個蘋果了。
    現在加入同步鎖,我在吃的時候你看被鎖,等吃完了,你再看,啊3/4個蘋果,吃1/3好了了,就這樣!  回復  更多評論
      

    # re: 【Java面試題集錦系列一】 2005-06-24 15:11 蘋果
    垃圾收集器
    java的垃圾收集器為內存管理提供了一種自動解決方案。在多數情況下,它把你從必須為應用程序添加所有內存管理中解脫出來。自動垃圾收集的缺點是不能完全控制它什么時候執行以及什么時候不執行。
    堆是java對象所在的內存部分,它是垃圾收集處理所涉及的一塊也是唯一的一塊內存。所有的垃圾收集考慮的是要確保堆有盡可能多的自由空間。問題的核心就是要刪除運行的java程序不能再到達的任何對象。當垃圾收集器運行時,其目的時查找和刪除不能被訪問的對象,如果把java程序看作是處于一個這樣的固定循環中:創建它所需的對象(這要占用堆上的空間),之后當不再需要他們時廢棄它們,創建新的對象,再廢棄它們,如此循環,這個問題中缺少的一部分是垃圾收集器。當它運行時,它從內存中查找那些被廢棄的對象,并刪除它們,這樣使使用內存和釋放內存的循環能夠繼續。
    1。垃圾收集器什么時候運行?
    垃圾收集器受JVM控制,JVM決定什么時候運行垃圾收集器。從Java程序內可以請求JVM運行垃圾收集器,但是,在任何情況下都無法保障JVM會答應你的請求。JVM通常會在它感到內存減少時運行垃圾收集器。經驗告訴我們:當java程序請求進行垃圾收集時,JVM通常會在短期內響應請求,但這沒有任何保障。剛好在你認為可以依靠它時,JVM可能會忽略你的請求。
    2.GC怎樣工作?
    什么時候對象變得符合垃圾收集條件?每個java程序有一個或多個線程,每個線程都有其自己的小執行棧。通常,在一個java程序中至少要運行一個線程,即棧底部main()方法的線程。出了有其自己的小執行棧外,每個線程都有其自己的生命周期。線程可以是死的或活的,當沒有任何活線程能夠訪問一個對象時,該對象就符合垃圾收集條件。
    根據這一定義,GC做一些不可思議的未知操作,當它發現一個對象不能被任何活線程訪問時,它將認為該對象符合刪除條件,它可能在某時刪除它(它也可能不刪除它)。所謂到達一個對象,實際上是有一個可到達的引用變量引用所討論的對象。如果我們的java程序有一個引用變量引用一個對象,并且該引用變量可用于一個活線程,則該對象被認為是可到達的。
    注意:一個java程序能夠耗盡內存。垃圾收集系統嘗試在對象不被使用時把它們從內存中刪除。然而,如果保持太多活對象(被其他活對象引用的對象),系統則會耗盡內存。垃圾收集不能保證有足夠的內存,它只能保證可以使用的內存將盡可能被有效地管理。
    3.編寫代碼明確使對象符合搜集條件
    怎樣使對象符合垃圾收集條件,怎樣在必要時強制執行垃圾收集,怎樣執行額外地清理?
    1)空引用 把引用該對象的引用變量設置為null,使沒有對它的可到達引用
    public class GarbageTruck {
    public static void main(String[] args) {
    StringBuffer sb = new StringBuffer("hello");
    System.out.println(sb);
    //The StringBuffer object is not eligible for collection
    sb = null;
    //Now the StringBuffer object is eligible for collection
    }
    }
    2)重新為引用變量賦值
    可以通過設置引用變量引用另一個對象來解除該引用變量與一個對象間的引用關系。
    class GarbageTruck {
    public static void main(String [] args) {
    StringBuffer s1= new StringBuffer("hello");
    StringBuffer s2= new StringBuffer(goodbye");
    System.out.println(s1);
    //At this point the StringBuffer "hello" is not eligible
    s1=s2;//Redirects s1 to refer to the "goodbye" object
    //Now the StringBuffer "hello" is eligible for collection
    在方法內創建對象也要考慮一下。當調用方法時,所創建的任何局部變量只在該方法期間存在。一旦該方法返回,在這個方法那創建的對象就符合垃圾收集條件。然而,有一種明顯的例外情況,如果一個對象從一個方法被返回,其引用可能在調用它的方法內被賦予一個引用變量,因此它不符合搜集條件。請看下面代碼:
    import java.util.Date;
    public class GarbageFactory {
    public static void main(String[] args) {
    Date d = getDate();
    doComplicatedStuff();
    System.out.println("d = "+d);
    }
    public static getDate() {
    Date d2 = new Date();
    String now = d2.toString();
    System.out.println(now);
    return d2;
    }
    }
    在方法getDate()中,創建了兩個對象,一個Date對象和一個包含日期信息的String對象。因為該方法返回Date對象,所以它將不符合搜集條件,即使在該方法完成之后。然而String對象將符合條件,即使沒有明確把now變量設置為null。
    3.隔離引用  回復  更多評論
      

    主站蜘蛛池模板: 国产在线a不卡免费视频| 亚洲国产精品人久久电影| 精品亚洲永久免费精品| 久久精品国产亚洲夜色AV网站| 日日操夜夜操免费视频| 毛片视频免费观看| 久久www免费人成看片| 搡女人免费视频大全| 全免费a级毛片免费看不卡| 国产亚洲福利一区二区免费看| 免费看污成人午夜网站| 亚色九九九全国免费视频| 日韩精品视频免费观看| 亚洲精品国产精品乱码不卡| 国产成人亚洲综合无码精品| 亚洲一区二区三区深夜天堂| 爱爱帝国亚洲一区二区三区| 成人A毛片免费观看网站| caoporm超免费公开视频| 91青青国产在线观看免费| 亚洲黄色片免费看| 91av在线免费视频| 日韩免费毛片视频| 亚洲AV永久纯肉无码精品动漫| 亚洲 欧洲 日韩 综合在线| j8又粗又长又硬又爽免费视频| 18禁止看的免费污网站| 又粗又黄又猛又爽大片免费| 亚洲an天堂an在线观看| 亚洲欧美黑人猛交群| 国产成人高清亚洲一区久久| 一区二区免费国产在线观看 | yellow视频免费看| 亚洲成年人免费网站| www国产亚洲精品久久久| 国产免费av片在线播放| 久久精品国产96精品亚洲 | 青青草a免费线观a| 中文字幕在线亚洲精品| 亚洲欧美精品午睡沙发| 四虎影视成人永久免费观看视频|