java算法.doc_第1頁
java算法.doc_第2頁
java算法.doc_第3頁
java算法.doc_第4頁
java算法.doc_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Java算法Java部分1求兩個(gè)數(shù)的最大公約數(shù)解答:歐幾理德原理:輾轉(zhuǎn)相除法public static int zdgys(int a,int b)int x = a%b;if(x=0) return b; else return zdgys(b,x);關(guān)于java垃圾回收器的認(rèn)識(shí)解答:對(duì)于GC來說,當(dāng)程序員創(chuàng)建對(duì)象時(shí),GC就開始監(jiān)控這個(gè)對(duì)象的地址、大小以及使用情況。通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對(duì)象。通過這種方式確定哪些對(duì)象是可達(dá)的,哪些對(duì)象是不可達(dá)的。當(dāng)GC確定一些對(duì)象為不可達(dá)時(shí),GC就有責(zé)任回收這些內(nèi)存空間??梢浴3绦騿T可以手動(dòng)執(zhí)行System.gc(),通知GC運(yùn)行,但是Java語言規(guī)范并不保證GC一定會(huì)執(zhí)行。請問如何設(shè)計(jì)一個(gè)類,使其只能被初始化為一個(gè)實(shí)例。解答:Singleton模式主要作用是保證在Java應(yīng)用程序中,一個(gè)類Class只有一個(gè)實(shí)例存在。第一種形式: 定義一個(gè)類,它的構(gòu)造函數(shù)為private的,它有一個(gè)static的private的該類變量,在類初始化時(shí)實(shí)例話,通過一個(gè)public的getInstance方法獲取對(duì)它的引用,繼而調(diào)用其中的方法。附件:package parent.career.blest;class Singleton private Singleton()/在外部用new關(guān)鍵字會(huì)報(bào)錯(cuò),只供內(nèi)部使用/注意這是private 只供內(nèi)部調(diào)用private static Singleton instance = new Singleton();/這里提供了一個(gè)供外部訪問本class的靜態(tài)方法,可以直接訪問 public static Singleton getInstance() return instance; public void say(String str) System.out.println(str); class commonClasspublic commonClass()System.out.println(這是一個(gè)普通類);public class mySingletonpublic 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指向同一個(gè)實(shí)例commonClass cC = new commonClass();commonClass cC2 = new commonClass();System.out.println(cC=cC2);/輸出false,說明cC,cC2分別指向不同的實(shí)例4有一個(gè)1001個(gè)元素的數(shù)組an,每個(gè)元素都在1到1000這些整數(shù)中取值,其中有一個(gè)數(shù)值重復(fù)了,現(xiàn)在要設(shè)計(jì)一個(gè)算法找出這個(gè)數(shù)字,且每個(gè)元素只能被訪問一次。不能用輔助的存儲(chǔ)容器。解答:This number = (a0+a1+a3+a1000)-(1+2+3+1000)servlet生命周期以及servlet基本構(gòu)架解答:servlet有良好的生存期的定義,包括加載和實(shí)例化、初始化、處理請求以及服務(wù)結(jié)束。這個(gè)生存期由javax.servlet.Servlet接口的init,service和destroy方法表達(dá)。 Servlet的基本架構(gòu):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 死鎖的四個(gè)必要條件解答:互斥條件:某段時(shí)間內(nèi)某資源只能由一個(gè)進(jìn)程使用。請求和保持:進(jìn)程因請求資源而阻塞時(shí),對(duì)已分配給它的資源保持不放。不剝奪條件:資源在未使用完前,不能被剝奪,由使用進(jìn)程釋放。環(huán)路條件:發(fā)生死鎖時(shí),有向圖必構(gòu)成一環(huán)路。7EJB是基于哪些技術(shù)實(shí)現(xiàn)的?并說出SessionBean和EntityBean的區(qū)別,StatefulBean和StatelessBean的區(qū)別。解答:EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技術(shù)實(shí)現(xiàn)。SessionBean在J2EE應(yīng)用程序中被用來完成一些服務(wù)器端的業(yè)務(wù)操作,例如訪問數(shù)據(jù)庫、調(diào)用其他EJB組件。EntityBean被用來代表應(yīng)用系統(tǒng)中用到的數(shù)據(jù)。對(duì)于客戶機(jī),SessionBean是一種非持久性對(duì)象,它實(shí)現(xiàn)某些在服務(wù)器上運(yùn)行的業(yè)務(wù)邏輯。對(duì)于客戶機(jī),EntityBean是一種持久性對(duì)象,它代表一個(gè)存儲(chǔ)在持久性存儲(chǔ)器中的實(shí)體的對(duì)象視圖,或是一個(gè)由現(xiàn)有企業(yè)應(yīng)用程序?qū)崿F(xiàn)的實(shí)體。Session Bean 還可以再細(xì)分為 Stateful Session Bean 與 Stateless Session Bean ,這兩種的 Session Bean都可以將系統(tǒng)邏輯放在 method之中執(zhí)行,不同的是 Stateful Session Bean 可以記錄呼叫者的狀態(tài),因此通常來說,一個(gè)使用者會(huì)有一個(gè)相對(duì)應(yīng)的 Stateful Session Bean 的實(shí)體。Stateless Session Bean 雖然也是邏輯組件,但是他卻不負(fù)責(zé)記錄使用者狀態(tài),也就是說當(dāng)使用者呼叫 Stateless Session Bean 的時(shí)候,EJB Container 并不會(huì)找尋特定的 Stateless Session Bean 的實(shí)體來執(zhí)行這個(gè) method。換言之,很可能數(shù)個(gè)使用者在執(zhí)行某個(gè) Stateless Session Bean 的 methods 時(shí),會(huì)是同一個(gè) Bean 的 Instance 在執(zhí)行。從內(nèi)存方面來看, Stateful Session Bean 與 Stateless Session Bean 比較, Stateful Session Bean 會(huì)消耗 J2EE Server 較多的內(nèi)存,然而 Stateful Session Bean 的優(yōu)勢卻在于他可以維持使用者的狀態(tài)。8sleep() 和 wait() 有什么區(qū)別?解答:sleep是線程類(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間,給執(zhí)行機(jī)會(huì)給其他線程,但是監(jiān)控狀態(tài)依然保持,到時(shí)后會(huì)自動(dòng)恢復(fù)。調(diào)用sleep不會(huì)釋放對(duì)象鎖。wait是Object類的方法,對(duì)此對(duì)象調(diào)用wait方法導(dǎo)致本線程放棄對(duì)象鎖,進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)此對(duì)象發(fā)出notify方法(或notifyAll)后本線程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲得對(duì)象鎖進(jìn)入運(yùn)行狀態(tài)。9forward 和redirect的區(qū)別解答:forward是服務(wù)器請求資源,服務(wù)器直接訪問目標(biāo)地址的URL,把那個(gè)URL的響應(yīng)內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器,瀏覽器根本不知道服務(wù)器發(fā)送的內(nèi)容是從哪兒來的,所以它的地址欄中還是原來的地址。redirect就是服務(wù)端根據(jù)邏輯,發(fā)送一個(gè)狀態(tài)碼,告訴瀏覽器重新去請求那個(gè)地址,一般來說瀏覽器會(huì)用剛才請求的所有參數(shù)重新請求,所以session,request參數(shù)都可以獲取。10冒泡排序算法解答:package parent.career.blest;/* * 冒泡排序算法演示:從小到大排列數(shù)組元素 * 原理:第一個(gè)元素和后面的一個(gè)元素比較,比較結(jié)果再和后面一個(gè)元素比較,依次類推 * 接著,第二個(gè)和后面元素比較,依次類推 */ public class Maopaopublic static int mppx(int array)for(int i =0;iarray.length; i+)for(int j=i; jarrayj)temp = arrayi;arrayi = arrayj;arrayj = 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= 0; i-) System.out.print(argsi + );/執(zhí)行時(shí),跟數(shù)組元素,如:java hello wei gui ping (現(xiàn)在args=wei,gui,ping)18構(gòu)造一個(gè)類來描述屏幕上的一個(gè)點(diǎn),該類的構(gòu)成包括點(diǎn)的x和y兩個(gè)坐標(biāo),以及一些對(duì)點(diǎn)進(jìn)行的操作,包括:取得點(diǎn)的坐標(biāo)值,對(duì)點(diǎn)的坐標(biāo)進(jìn)行賦值,編寫應(yīng)用程序生成該類的對(duì)象并對(duì)其進(jìn)行操作。解答:Class PointPrivate 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 )/將點(diǎn)移動(dòng)向x方向移動(dòng)m,向y方向移動(dòng)nThis.x += m;This.y += n; Public void show()/顯示坐標(biāo)位置System.out.println(“坐標(biāo)為(”+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寫出下列算法的時(shí)間復(fù)雜度。 (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 EJB與JAVA BEAN的區(qū)別以及EJB的基本架構(gòu)? 答:Java Bean 是可復(fù)用的組件,對(duì)Java Bean并沒有嚴(yán)格的規(guī)范,理論上講,任何一個(gè)Java類都可以是一個(gè)Bean。但通常情況下,由于Java Bean是被容器所創(chuàng)建(如Tomcat)的,所以Java Bean應(yīng)具有一個(gè)無參的構(gòu)造器,另外,通常Java Bean還要實(shí)現(xiàn)Serializable接口用于實(shí)現(xiàn)Bean的持久性。Java Bean實(shí)際上相當(dāng)于微軟COM模型中的本地進(jìn)程內(nèi)COM組件,它是不能被跨進(jìn)程訪問的。Enterprise Java Bean 相當(dāng)于DCOM,即分布式組件。它是基于Java的遠(yuǎn)程方法調(diào)用(RMI)技術(shù)的,所以EJB可以被遠(yuǎn)程訪問(跨進(jìn)程、跨計(jì)算機(jī))。但EJB必須被布署在諸如Webspere、WebLogic這樣的容器中,EJB客戶從不直接訪問真正的EJB組件,而是通過其容器訪問。EJB容器是EJB組件的代理,EJB組件由容器所創(chuàng)建和管理??蛻敉ㄟ^容器來訪問真正的EJB組件。 EJB的基本架構(gòu) 答:一個(gè)EJB包括三個(gè)部分: 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作什么用?解答:自省是軟件分析自己的能力。這個(gè)功能由Class類中的java.lang.reflect包和元素所提供。自省是一個(gè)重要的功能,當(dāng)我們使用被稱為Java Beans的組件時(shí)將用到它。它允許你在運(yùn)行時(shí)而不是在編譯時(shí)分析一個(gè)軟件組件并且動(dòng)態(tài)的描述它的功能。例如,通過使用自省,你能決定一個(gè)類支持哪些方法、構(gòu)造函數(shù)和成員屬性。22Java中的序列化(serialization)?解答:序列化(serialization)是把一個(gè)對(duì)象的狀態(tài)寫入一個(gè)字節(jié)流的過程。當(dāng)你想要把你的程序狀態(tài)存在一個(gè)固定的存儲(chǔ)區(qū)域例如文件時(shí),它是很管用的。稍后,你就可以運(yùn)用序列化過程存儲(chǔ)這些對(duì)象。Serializable接口:只有一個(gè)實(shí)現(xiàn)Serializable接口的對(duì)象可以被序列化工具存儲(chǔ)和恢復(fù)。Serializable接口沒有定義任何成員沒,它只用來表示一個(gè)類可以被序列化。如果一個(gè)類可以序列化,它的所有子類都可以序列化。聲明成transient的變量不被序列化工具存儲(chǔ)。同樣,static變量也不被存儲(chǔ)。23客服端調(diào)用EJB對(duì)象的幾個(gè)基本步驟解答:設(shè)置JNDI服務(wù)工廠以及JNDI服務(wù)地址系統(tǒng)屬性,查找Home接口,從Home接口調(diào)用Create方法創(chuàng)建Remote接口,通過Remote接口調(diào)用其業(yè)務(wù)方法。24請對(duì)以下在J2EE中常用的名詞進(jìn)行解釋(或簡單描述)web容器:給處于其中的應(yīng)用程序組件(JSP,SERVLET)提供一個(gè)環(huán)境,使JSP,SERVLET直接更容器中的環(huán)境變量接*互,不必關(guān)注其它系統(tǒng)問題。主要有WEB服務(wù)器來實(shí)現(xiàn)。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴(yán)格遵守J2EE規(guī)范中的WEB APPLICATION 標(biāo)準(zhǔn)。我們把遵守以上標(biāo)準(zhǔn)的WEB服務(wù)器就叫做J2EE中的WEB容器。EJB容器:Enterprise java bean 容器。更具有行業(yè)領(lǐng)域特色。他提供給運(yùn)行在其中的組件EJB各種管理功能。只要滿足J2EE規(guī)范的EJB放入該容器,馬上就會(huì)被容器進(jìn)行高效率的管理。并且可以通過現(xiàn)成的接口來獲得系統(tǒng)級(jí)別的服務(wù)。例如郵件服務(wù)、事務(wù)管理。JNDI:(Java Naming & Directory Interface)JAVA命名目錄服務(wù)。主要提供的功能是:提供一個(gè)目錄系統(tǒng),讓其它各地的應(yīng)用程序在其上面留下自己的索引,從而滿足快速查找和定位分布式應(yīng)用程序的功能。JMS:(Java Message Service)JAVA消息服務(wù)。主要實(shí)現(xiàn)各個(gè)應(yīng)用程序之間的通訊。包括點(diǎn)對(duì)點(diǎn)和廣播。JTA:(Java Transaction API)JAVA事務(wù)服務(wù)。提供各種分布式事務(wù)服務(wù)。應(yīng)用程序只需調(diào)用其提供的接口即可。JAF:(Java Action FrameWork)JAVA安全認(rèn)證框架。提供一些安全控制方面的框架。讓開發(fā)者通過各種部署和自定義實(shí)現(xiàn)自己的個(gè)性安全控制策略。RMI/IIOP:(Remote Method Invocation /internet對(duì)象請求中介協(xié)議)他們主要用于通過遠(yuǎn)程調(diào)用服務(wù)。例如,遠(yuǎn)程有一臺(tái)計(jì)算機(jī)上運(yùn)行一個(gè)程序,它提供股票分析服務(wù),我們可以在本地計(jì)算機(jī)上實(shí)現(xiàn)對(duì)其直接調(diào)用。當(dāng)然這是要通過一定的規(guī)范才能在異構(gòu)的系統(tǒng)之間進(jìn)行通信。RMI是JAVA特有的。25MVC的各個(gè)部分都有那些技術(shù)來實(shí)現(xiàn)?如何實(shí)現(xiàn)? 解答:MVC是ModelViewController的簡寫。Model 代表的是應(yīng)用的業(yè)務(wù)邏輯(通過JavaBean,EJB組件實(shí)現(xiàn)),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論