java 學習心得體會(二)

66.  EJB容器提供的服務html

        主要提供聲明週期管理、代碼產生、持續性管理、安全、事務管理、鎖和併發行管理等服務。java

67.  EJB規範規定EJB中禁止的操做有哪些? c++

        1.不能操做線程和線程API(線程API指非線程對象的方法如notify,wait等),2.不能操做awt,3.不能實現服務器功能,4.不能對靜 態屬生存取,5.不能使用IO操做直接存取文件系統,6.不能加載本地庫.,7.不能將this做爲變量和返回,8.不能循環調用。程序員

68.  remote接口和home接口主要做用web

        remote接口定義了業務方法,用於EJB客戶端調用業務方法。算法

        home接口是EJB工廠用於建立和移除查找EJB實例sql

69.  bean 實例的生命週期數據庫

        對於Stateless Session Bean、Entity Bean、Message Driven Bean通常存在緩衝池管理,而對於Entity Bean和Statefull Session Bean存在Cache管理,一般包含建立實例,設置上下文、建立EJB Object(create)、業務方法調用、remove等過程,對於存在緩衝池管理的Bean,在create以後實例並不從內存清除,而是採用緩衝 池調度機制不斷重用實例,而對於存在Cache管理的Bean則經過激活和去激活機制保持Bean的狀態並限制內存中實例數量。編程

70.  EJB的激活機制設計模式

        以Stateful Session Bean 爲例:其Cache大小決定了內存中能夠同時存在的Bean實例的數量,根據MRU或NRU算法,實例在激活和去激活狀態之間遷移,激活機制是當客戶端調 用某個EJB實例業務方法時,若是對應EJB Object發現本身沒有綁定對應的Bean實例則從其去激活Bean存儲中(經過序列化機制存儲實例)回覆(激活)此實例。狀態變遷前會調用對應的 ejbActive和ejbPassivate方法。

71.  EJB的幾種類型

        會話(Session)Bean ,實體(Entity)Bean 消息驅動的(Message Driven)Bean

        會話Bean又可分爲有狀態(Stateful)和無狀態(Stateless)兩種

        實體Bean可分爲Bean管理的持續性(BMP)和容器管理的持續性(CMP)兩種

72.  客服端調用EJB對象的幾個基本步驟

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

73.  客服端調用EJB對象的幾個基本步驟

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

74.  EJB包括(SessionBean,EntityBean)說出他們的生命週期,及如何管理事務的?

        SessionBean:Stateless Session Bean 的生命週期是由容器決定的,當客戶機發出請求要創建一個Bean的實例時,EJB容器不必定要建立一個新的Bean的實例供客戶機調用,而是隨便找一個現 有的實例提供給客戶機。當客戶機第一次調用一個Stateful Session Bean 時,容器必須當即在服務器中建立一個新的Bean實例,並關聯到客戶機上,之後此客戶機調用Stateful Session Bean 的方法時容器會把調用分派到與此客戶機相關聯的Bean實例。

        EntityBean:Entity Beans能存活相對較長的時間,而且狀態是持續的。只要數據庫中的數據存在,Entity beans就一直存活。而不是按照應用程序或者服務進程來講的。即便EJB容器崩潰了,Entity beans也是存活的。Entity Beans生命週期可以被容器或者 Beans本身管理。

        EJB經過如下技術管理實務:對象管理組織(OMG)的對象實務服務(OTS),Sun Microsystems的Transaction Service(JTS)、Java Transaction API(JTA),開發組(X/Open)的XA接口。

75.  EJB需直接實現它的業務接口或Home接口嗎,請簡述理由。

        遠程接口和Home接口不須要直接實現,他們的實現代碼是由服務器產生的,程序運行中對應實現類會做爲對應接口類型的實例被使用。

76.  Overload和Override的區別。Overloaded的方法是否能夠改變返回值的類型?

        方法的重寫Overriding和重載Overloading是Java多態性的不一樣表現。重寫Overriding是父類與子類之間多態性的一種表現, 重載Overloading是一個類中多態性的一種表現。若是在子類中定義某方法與其父類有相同的名稱和參數,咱們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。若是在一個類中定義了多個同名的方 法,它們或有不一樣的參數個數或有不一樣的參數類型,則稱爲方法的重載(Overloading)。Overloaded的方法是能夠改變返回值的類型。

77.  構造器Constructor是否可被override?

        構造器Constructor不能被繼承,所以不能重寫Overriding,但能夠被重載Overloading。

78.java中實現多態的機制是什麼?

        方法的重寫Overriding和重載Overloading是Java多態性的不一樣表現。重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。

79.  同步和異步有何異同,在什麼狀況下分別使用他們?舉例說明。

        若是數據將在線程間共享。例如正在寫的數據之後可能被另外一個線程讀到,或者正在讀的數據可能已經被另外一個線程寫過了,那麼這些數據就是共享數據,必須進行同步存取。

        當應用程序在對象上調用了一個須要花費很長時間來執行的方法,而且不但願讓程序等待方法的返回時,就應該使用異步編程,在不少狀況下采用異步途徑每每更有效率。

80.heap和stack有什麼區別。

        棧是一種線形集合,其添加和刪除元素的操做應在同一段完成。棧按照後進先出的方式進行處理。

        堆是棧的一個組成元素

81.  forward 和redirect的區別

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

        redirect就是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器從新去請求那個地址,通常來講瀏覽器會用剛纔請求的全部參數從新請求,因此session,request參數均可以獲取。

82.  何時用assert。

        assertion(斷言)在軟件開發中是一種經常使用的調試方式,不少開發語言中都支持這種機制。在實現中,assertion就是 在程序中的一條語句,它對一個boolean表達式進行檢查,一個正確程序必須保證這個boolean表達式的值爲true;若是該值爲false,說明 程序已經處於不正確的狀態下,系統將給出警告或退出。通常來講,assertion用於保證程序最基本、關鍵的正確性。assertion檢查一般在開發 和測試時開啓。爲了提升性能,在軟件發佈後,assertion檢查一般是關閉的。

83.  GC是什麼? 爲何要有GC?

GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會致使程序或系統的不穩定甚至崩潰,Java提供的GC功能能夠 自動監測對象是否超過做用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操做方法。

84.  垃圾回收器的基本原理是什麼?垃圾回收器能夠立刻回收內存嗎?有什麼辦法主動通知虛擬機進行垃圾回收?

        對於GC來講,當程序員建立對象時,GC就開始監控這個對象的地址、大小以及使用狀況。一般,GC採用有向圖的方式記錄和管理堆(heap)中的全部對 象。經過這種方式肯定哪些對象是"可達的",哪些對象是"不可達的"。當GC肯定一些對象爲"不可達"時,GC就有責任回收這些內存空間。能夠。程序員可 以手動執行System.gc(),通知GC運行,可是Java語言規範並不保證GC必定會執行。

85.  垃圾回收的優勢和原理。並考慮2種回收機制。

        Java語言中一個顯著的特色就是引入了垃圾回收機制,使c++程序員最頭疼的內存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候再也不須要考 慮內存管理。因爲有個垃圾回收機制,Java中的對象再也不有"做用域"的概念,只有對象的引用纔有"做用域"。垃圾回收能夠有效的防止內存泄露,有效的使 用可使用的內存。垃圾回收器一般是做爲一個單獨的低級別的線程運行,不可預知的狀況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清楚和回收,程 序員不能實時的調用垃圾回收器對某個對象或全部對象進行垃圾回收。回收機制有分代複製垃圾回收和標記垃圾回收,增量垃圾回收。

86.  應用服務器有那些?

        BEA WebLogic Server,IBM WebSphere Application Server,Oracle9i Application Server,jBoss,Tomcat

87.  應用服務器與WEB SERVER的區別?

        應用服務器:Weblogic、Tomcat、Jboss

        WEB SERVER:IIS、 Apache

88.  說出數據鏈接池的工做機制是什麼?

        J2EE服務器啓動時會創建必定數量的池鏈接,並一直維持很多於此數目的池鏈接。客戶端程序須要鏈接時,池驅動程序會返回一個未使用的池鏈接並將其表記爲 忙。若是當前沒有空閒鏈接,池驅動程序就新建必定數量的鏈接,新建鏈接的數量有配置參數決定。當使用的池鏈接調用完成後,池驅動程序將此鏈接表記爲空閒, 其餘調用就可使用這個鏈接。

89.  swtich是否能做用在byte上,是否能做用在long上,是否能做用在String上?

        switch(expr1)中,expr1是一個整數表達式。所以傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 byte。long,string 都不能做用於swtich。

90.Java的接口和C++的虛類的相同和不一樣處。

        因爲Java不支持多繼承,而有可能某個類或對象要使用分別在幾個類或對象裏面的方法或屬性,現有的單繼承機制就不能知足要求。與繼承相比,接口有更高的 靈活性,由於接口中沒有任何實現代碼。當一個類實現了接口之後,該類要實現接口裏面全部的方法和屬性,而且接口裏面的屬性在默認狀態下面都是public static,全部方法默認狀況下是public.一個類能夠實現多個接口。

91.請說出你所知道的線程同步的方法。

        wait():使一個線程處於等待狀態,而且釋放所持有的對象的lock。

        sleep():使一個正在運行的線程處於睡眠狀態,是一個靜態方法,調用此方法要捕捉InterruptedException異常。

        notify():喚醒一個處於等待狀態的線程,注意的是在調用此方法的時候,並不能確切的喚醒某一個等待狀態的線程,而是由JVM肯定喚醒哪一個線程,並且不是按優先級。

        Allnotity():喚醒全部處入等待狀態的線程,注意並非給全部喚醒線程一個對象的鎖,而是讓它們競爭。

        Map 提供了一個更通用的元素存儲方法。 Map 集合類用於存儲元素對(稱做"鍵"和"值"),其中每一個鍵映射到一個值。

92.  描述一下JVM加載class文件的原理機制?

        JVM中類的裝載是由ClassLoader和它的子類來實現的,Java ClassLoader 是一個重要的Java運行時系統組件。它負責在運行時查找和裝入類文件的類。

93.  char型變量中能不能存貯一箇中文漢字?爲何?

        可以定義成爲一箇中文的,由於java中以unicode編碼,一個char佔16個字節,因此放一箇中文是沒問題的

94.  JSP的經常使用指令

<%@page language="java" contenType="text/html;charset=gb2312" session="true" buffer="64kb" autoFlush="true" isThreadSafe="true" info="text" errorPage="error.jsp" isErrorPage="true" isELIgnored="true" pageEncoding="gb2312" import="java.sql.*"%>

isErrorPage(是否能使用Exception對象),isELIgnored(是否忽略表達式)

<%@include file="filename"%>

<%@taglib prefix="c"uri="http://......"%>

95.  什麼狀況下調用doGet()和doPost()?

        Jsp頁面中的form標籤裏的method屬性爲get時調用doGet(),爲post時調用doPost()。

96.  頁面間對象傳遞的方法

        request,session,application,cookie等

97.  JSP和Servlet有哪些相同點和不一樣點,他們之間的聯繫是什麼?

        JSP是Servlet技術的擴展,本質上是Servlet的簡易方式,更強調應用的外表表達。JSP編譯後是"類servlet"。Servlet和 JSP最主要的不一樣點在於,Servlet的應用邏輯是在Java文件中,而且徹底從表示層中的HTML裏分離開來。而JSP的狀況是Java和HTML 能夠組合成一個擴展名爲.jsp的文件。JSP側重於視圖,Servlet主要用於控制邏輯。

98.  四種會話跟蹤技術

        會話做用域ServletsJSP 頁面描述

        page否是表明與一個頁面相關的對象和屬性。一個頁面由一個編譯好的 Java servlet 類(能夠帶有任何的 include 指令,可是沒有 include 動做)表示。這既包括 servlet 又包括被編譯成 servlet 的 JSP 頁面

        request是是表明與 Web 客戶機發出的一個請求相關的對象和屬性。一個請求可能跨越多個頁面,涉及多個 Web 組件(因爲 forward 指令和 include 動做的關係)

       session是是表明與用於某個 Web 客戶機的一個用戶體驗相關的對象和屬性。一個 Web 會話能夠也常常會跨越多個客戶機請求

        application是是表明與整個 Web 應用程序相關的對象和屬性。這實質上是跨越整個 Web 應用程序,包括多個頁面、請求和會話的一個全局做用域

99.  Request對象的主要方法:

        setAttribute(String name,Object):設置名字爲name的request的參數值

        getAttribute(String name):返回由name指定的屬性值

        getAttributeNames():返回request對象全部屬性的名字集合,結果是一個枚舉的實例

        getCookies():返回客戶端的全部Cookie對象,結果是一個Cookie數組

        getCharacterEncoding():返回請求中的字符編碼方式

        getContentLength():返回請求的Body的長度

        getHeader(String name):得到HTTP協議定義的文件頭信息

        getHeaders(String name):返回指定名字的request Header的全部值,結果是一個枚舉的實例

        getHeaderNames():返回因此request Header的名字,結果是一個枚舉的實例

        getInputStream():返回請求的輸入流,用於得到請求中的數據

        getMethod():得到客戶端向服務器端傳送數據的方法

        getParameter(String name):得到客戶端傳送給服務器端的有name指定的參數值

        getParameterNames():得到客戶端傳送給服務器端的全部參數的名字,結果是一個枚舉的實例

        getParameterValues(String name):得到有name指定的參數的全部值

        getProtocol():獲取客戶端向服務器端傳送數據所依據的協議名稱

        getQueryString():得到查詢字符串

        getRequestURI():獲取發出請求字符串的客戶端地址

        getRemoteAddr():獲取客戶端的IP地址

        getRemoteHost():獲取客戶端的名字

        getSession([Boolean create]):返回和請求相關Session

        getServerName():獲取服務器的名字

        getServletPath():獲取客戶端所請求的腳本文件的路徑

        getServerPort():獲取服務器的端口號

        removeAttribute(String name):刪除請求中的一個屬性

100.  J2EE是技術仍是平臺仍是框架?

         J2EE自己是一個標準,一個爲企業分佈式應用的開發提供的標準平臺。

        J2EE也是一個框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技術。

101.  簡述邏輯操做(&,|,^)與條件操做(&&,||)的區別。

        區別主要答兩點:a.條件操做只能操做布爾型的,而邏輯操做不只能夠操做布爾型,並且能夠操做數值型    b.邏輯操做不會產生短路

102.  XML文檔定義有幾種形式?它們之間有何本質區別?解析XML文檔有哪幾種方式?

        a: 兩種形式 dtd  schema,

        b: 本質區別:schema自己是xml的,能夠被XML解析器解析(這也是從DTD上發展schema的根本目的),

        c:有DOM,SAX,STAX等

        DOM:處理大型文件時其性能降低的很是厲害。這個問題是由DOM的樹結構所形成的,這種結構佔用的內存較多,並且DOM必須在解析文件以前把整個文檔裝入內存,適合對XML的隨機訪問

        SAX:不現於DOM,SAX是事件驅動型的XML解析方式。它順序讀取XML文件,不須要一次所有裝載整個文件。當遇到像文件開頭,文檔結束,或者標籤 開頭與標籤結束時,它會觸發一個事件,用戶經過在其回調事件中寫入處理代碼來處理XML文件,適合對XML的順序訪問

        STAX:Streaming API for XML (StAX)

103.  如何給weblogic指定大小的內存?

        在啓動Weblogic的腳本中(位於所在Domian對應服務器目錄下的startServerName),增長set MEM_ARGS=-Xms32m -Xmx200m,能夠調整最小內存爲32M,最大200M

104.  如何設定的weblogic的熱啓動模式(開發模式)與產品發佈模式?

        能夠在管理控制檯中修改對應服務器的啓動模式爲開發或產品模式之一。或者修改服務的啓動文件或者commenv文件,增長set PRODUCTION_MODE=true。

105.  在weblogic管理制臺中對一個應用域(或者說是一個網站,Domain)進行jms及ejb或鏈接池等相關信息進行配置後,實際保存在什麼文件中?

        保存在此Domain的config.xml文件中,它是服務器的核心配置文件。

106.  說說weblogic中一個Domain的缺省目錄結構?好比要將一個簡單的helloWorld.jsp放入何目錄下,然的在瀏覽器上就可打入 http://主機:端口號//helloword.jsp就能夠看到運行結果了? 又好比這其中用到了一個本身寫的javaBean該如何辦?

        Domain目錄\服務器目錄\applications,將應用目錄放在此目錄下將能夠做爲應用訪問,若是是Web應用,應用目錄須要知足Web應用目 錄要求,jsp文件能夠直接放在應用目錄中,Javabean須要放在應用目錄的WEB-INF目錄的classes目錄中,設置服務器的缺省應用將能夠 實如今瀏覽器上無需輸入應用名。

107.  在weblogic中發佈ejb需涉及到哪些配置文件

        不一樣類型的EJB涉及的配置文件不一樣,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP實體Bean通常還須要weblogic-cmp-rdbms-jar.xml

108.  如何在weblogic中進行ssl配置與客戶端的認證配置或說說j2ee(標準)進行ssl的配置

        缺省安裝中使用DemoIdentity.jks和DemoTrust.jks  KeyStore實現SSL,須要配置服務器使用Enable SSL,配置其端口,在產品模式下須要從CA獲取私有密鑰和數字證書,建立identity和trust keystore,裝載得到的密鑰和數字證書。能夠配置此SSL鏈接是單向仍是雙向的。

109.  如何查看在weblogic中已經發布的EJB?

        可使用管理控制檯,在它的Deployment中能夠查看全部已發佈的EJB

110.  說說在weblogic中開發消息Bean時的persistent與non-persisten的差異

        persistent方式的MDB能夠保證消息傳遞的可靠性,也就是若是EJB容器出現問題而JMS服務器依然會將消息在此MDB可用的時候發送過來,而non-persistent方式的消息將被丟棄。

111.請對如下在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 Interface)JAVA命名目錄服務。主要提供的功能是:提供一個目錄系統,讓其它各地的應用程序在其上面留下本身的索引,從而知足快速查找和定位分佈式應用程序的功能。

        JMS:(Java Message Service)JAVA消息服務。主要實現各個應用程序之間的通信。包括點對點和廣播。

        JTA:(Java Transaction API)JAVA事務服務。提供各類分佈式事務服務。應用程序只需調用其提供的接口便可。

        JAF:(Java Action FrameWork)JAVA安全認證框架。提供一些安全控制方面的框架。讓開發者經過各類部署和自定義實現本身的個性安全控制策略。

        RMI/IIOP:(Remote Method Invocation /internet對象請求中介協議)他們主要用於經過遠程調用服務。例如,遠程有一臺計算機上運行一個程序,它提供股票分析服務,咱們能夠在本地計算機 上實現對其直接調用。固然這是要經過必定的規範才能在異構的系統之間進行通訊。RMI是JAVA特有的。

112.  如何啓動時不需輸入用戶名與密碼?

        修改服務啓動文件,增長 WLS_USER和WLS_PW項。也能夠在boot.properties文件中增長加密過的用戶名和密碼.

113.  CORBA是什麼?用途是什麼?

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

114.說說你所熟悉或據說過的j2ee中的幾種經常使用模式?及對設計模式的一些見解

        Session Facade Pattern:使用SessionBean訪問EntityBean

        Message Facade Pattern:實現異步調用

        EJB Command Pattern:使用Command JavaBeans取代SessionBean,實現輕量級訪問

        Data Transfer Object Factory:經過DTO Factory簡化EntityBean數據提供特性

        Generic Attribute Access:經過AttibuteAccess接口簡化EntityBean數據提供特性

        Business Interface:經過遠程(本地)接口和Bean類實現相同接口規範業務邏輯一致性

        EJB架構的設計好壞將直接影響系統的性能、可擴展性、可維護性、組件可重用性及開發效率。項目越複雜,項目隊伍越龐大則越能體現良好設計的重要性。

115.j2ee經常使用的設計模式?說明工廠模式。

Java中的23種設計模式:

Factory(工廠模式),      Builder(建造模式),       Factory Method(工廠方法模式),

Prototype(原始模型模式),Singleton(單例模式),    Facade(門面模式),

Adapter(適配器模式),    Bridge(橋樑模式),        Composite(合成模式),

Decorator(裝飾模式),    Flyweight(享元模式),     Proxy(代理模式),

Command(命令模式),      Interpreter(解釋器模式), Visitor(訪問者模式),

Iterator(迭代子模式),   Mediator(調停者模式),    Memento(備忘錄模式),

Observer(觀察者模式),   State(狀態模式),         Strategy(策略模式),

Template Method(模板方法模式), Chain Of Responsibleity(責任鏈模式)

        工廠模式:工廠模式是一種常常被使用到的模式,根據工廠模式實現的類能夠根據提供的數據生成一組類中某一個類的實例,一般這一組類有一個公共的抽象父類並 且實現了相同的方法,可是這些方法針對不一樣的數據進行了不一樣的操做。首先須要定義一個基類,該類的子類經過不一樣的方法實現了基類中的方法。而後須要定義一 個工廠類,工廠類能夠根據條件生成不一樣的子類實例。當獲得子類的實例後,開發人員能夠調用基類中的方法而沒必要考慮到底返回的是哪個子類的實例。

116.  J2EE是什麼?

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

117.  開發中都用到了那些設計模式?用在什麼場合?

        每一個模式都描述了一個在咱們的環境中不斷出現的問題,而後描述了該問題的解決方案的核心。經過這種方式,你能夠無數次地使用那些已有的解決方案,無需在重 復相同的工做。主要用到了MVC的設計模式。用來開發JSP/Servlet或者J2EE的相關應用。簡單工廠模式等。

118.  Servlet執行時通常實現哪幾個方法?

public void init(ServletConfig config)

public ServletConfig getServletConfig()

public String getServletInfo()

public void service(ServletRequest request,ServletResponse response)

public void destroy()

119.  如何現實servlet的單線程模式

<%@ page isThreadSafe="false"%>

120.  排序都有哪幾種方法?請列舉。用JAVA實現一個快速排序。

        排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸併排序,分配排序(箱排序、基數排序)

        快速排序的僞代碼。

        / /使用快速排序方法對a[ 0 :n- 1 ]排序

        從a[ 0 :n- 1 ]中選擇一個元素做爲m i d d l e,該元素爲支點

        把餘下的元素分割爲兩段left 和r i g h t,使得l e f t中的元素都小於等於支點,而right 中的元素都大於等於支點

        遞歸地使用快速排序方法對left 進行排序

        遞歸地使用快速排序方法對right 進行排序

        所得結果爲l e f t + m i d d l e + r i g h t

121.  java中有幾種方法能夠實現一個線程?用什麼關鍵字修飾同步方法? stop()和suspend()方法爲什麼不推薦使用?

        有兩種實現方法,分別是繼承Thread類與實現Runnable接口

        用synchronized關鍵字修飾同步方法

        反對使用stop(),是由於它不安全。它會解除由線程獲取的全部鎖定,並且若是對象處於一種不連貫狀態,那麼其餘線程能在那種狀態下檢查和修改它們。結 果很難檢查出真正的問題所在。suspend()方法容易發生死鎖。調用suspend()的時候,目標線程會停下來,但卻仍然持有在這以前得到的鎖定。 此時,其餘任何線程都不能訪問鎖定的資源,除非被"掛起"的線程恢復運行。對任何線程來講,若是它們想恢復目標線程,同時又試圖使用任何一個鎖定的資源, 就會形成死鎖。因此不該該使用suspend(),而應在本身的Thread類中置入一個標誌,指出線程應該活動仍是掛起。若標誌指出線程應該掛起,便用 wait()命其進入等待狀態。若標誌指出線程應當恢復,則用一個notify()從新啓動線程。

122.  java中會存在內存泄漏嗎,請簡單描述。

        會。如:int i,i2;  return (i-i2);   //when i爲足夠大的正數,i2爲足夠大的負數。結果會形成溢位,致使錯誤。

123.  什麼是java序列化,如何實現java序列化?

        序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。能夠對流化後的對象進行讀寫操做,也可將流化後的對象傳輸於網絡之間。序列化是爲了解決在對對象流進行讀寫操做時所引起的問題。

        序列化的實現:將須要被序列化的類實現Serializable接口,該接口沒有須要實現的方法,implements Serializable只是爲了標註該對象是可被序列化的,而後使用一個輸出流(如:FileOutputStream)來構造一個 ObjectOutputStream(對象流)對象,接着,使用ObjectOutputStream對象的writeObject(Object obj)方法就能夠將參數爲obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。

124.Java中的異常處理機制的簡單原理和應用。

        當JAVA程序違反了JAVA的語義規則時,JAVA虛擬機就會將發生的錯誤表示爲一個異常。違反語義規則包括2種狀況。一種是JAVA類庫內置的語義檢 查。例如數組下標越界,會引起IndexOutOfBoundsException;訪問null的對象時會引起 NullPointerException。另外一種狀況就是JAVA容許程序員擴展這種語義檢查,程序員能夠建立本身的異常,並自由選擇在什麼時候用 throw關鍵字引起異常。全部的異常都是java.lang.Thowable的子類。

125.  是否能夠從一個static方法內部發出對非static方法的調用?

        不能夠,若是其中包含對象的method();不能保證對象初始化.

126.  寫clone()方法時,一般都有一行代碼,是什麼?

        Clone 有缺省行爲,super.clone();他負責產生正確大小的空間,並逐位複製。

127.  在JAVA中,如何跳出當前的多重嵌套循環?

        用break; return 方法。

128.  List、Map、Set三個接口,存取元素時,各有什麼特色?

        List 以特定次序來持有元素,可有重複元素。Set 沒法擁有重複元素,內部排序。Map 保存key-value值,value可多值。

130.  UML方面

        標準建模語言UML。用例圖,靜態圖(包括類圖、對象圖和包圖),行爲圖,交互圖(順序圖,合做圖),實現圖。

131.  說出一些經常使用的類,包,接口,請各舉5個

        經常使用的類:BufferedReader  BufferedWriter  FileReader  FileWirter  String  Integer

        經常使用的包:java.lang  java.awt  java.io  java.util  java.sql

        經常使用的接口:Remote  List  Map  Document  NodeList

132.  jsp有哪些動做?做用分別是什麼?

        JSP共有如下6種基本動做 jsp:include:在頁面被請求的時候引入一個文件。 jsp:useBean:尋找或者實例化一個JavaBean。 jsp:setProperty:設置JavaBean的屬性。 jsp:getProperty:輸出某個JavaBean的屬性。 jsp:forward:把請求轉到一個新的頁面。 jsp:plugin:根據瀏覽器類型爲Java插件生成OBJECT或EMBED標記。

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

134.  Jdo是什麼?

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

135.  C/S 與 B/S 區別:

1)硬件環境不一樣:

C/S 通常創建在專用的網絡上, 小範圍裏的網絡環境, 局域網之間再經過專門服務器提供鏈接和數據交換服務.

B/S 創建在廣域網之上的, 沒必要是專門的網絡硬件環境,例與電話上網, 租用設備. 信息本身管理. 有比C/S更強的適應範圍, 通常只要有操做系統和瀏覽器就行

2)對安全要求不一樣

C/S 通常面向相對固定的用戶羣, 對信息安全的控制能力很強. 通常高度機密的信息系統採用C/S 結構適宜. 能夠經過B/S發佈部分可公開信息.

B/S 創建在廣域網之上, 對安全的控制能力相對弱, 可能面向不可知的用戶。

3)對程序架構不一樣

C/S 程序能夠更加註重流程, 能夠對權限多層次校驗, 對系統運行速度能夠較少考慮.

B/S 對安全以及訪問速度的多重的考慮, 創建在須要更加優化的基礎之上. 比C/S有更高的要求 B/S結構的程序架構是發展的趨勢, 從MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持網絡的構件搭建的系統. SUN 和IBM推的JavaBean 構件技術等,使 B/S更加成熟.

4)軟件重用不一樣

C/S 程序能夠不可避免的總體性考慮, 構件的重用性不如在B/S要求下的構件的重用性好.

B/S 對的多重結構,要求構件相對獨立的功能. 可以相對較好的重用.就入買來的餐桌能夠再利用,而不是作在牆上的石頭桌子

5)系統維護不一樣 

C/S 程序因爲總體性, 必須總體考察, 處理出現的問題以及系統升級. 升級難. 多是再作一個全新的系統

B/S 構件組成,方面構件個別的更換,實現系統的無縫升級. 系統維護開銷減到最小.用戶從網上本身下載安裝就能夠實現升級.

6)處理問題不一樣

C/S 程序能夠處理用戶面固定, 而且在相同區域, 安全要求高需求, 與操做系統相關. 應該都是相同的系統

B/S 創建在廣域網上, 面向不一樣的用戶羣, 分散地域, 這是C/S沒法做到的. 與操做系統平臺關係最小.

7)用戶接口不一樣

C/S 可能是創建的Window平臺上,表現方法有限,對程序員廣泛要求較高

B/S 創建在瀏覽器上, 有更加豐富和生動的表現方式與用戶交流. 而且大部分難度減低,減低開發成本.

8)信息流不一樣

C/S 程序通常是典型的中央集權的機械式處理, 交互性相對低

B/S 信息流向可變化, B-B B-C B-G等信息、流向的變化, 更像交易中心。

相關文章
相關標籤/搜索