面試常見問題-javaandroid面試題_第1頁
面試常見問題-javaandroid面試題_第2頁
面試常見問題-javaandroid面試題_第3頁
面試常見問題-javaandroid面試題_第4頁
面試常見問題-javaandroid面試題_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

JAVA相關(guān)基礎(chǔ)1、面象的特征有哪些方封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的只能通過已定義的界面。面象計算始于這個的接口其他對象。多態(tài)性基本數(shù)據(jù)類型包括byte、int、char、long、float、double、boolean和shortjava.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。為了提高效率節(jié)省空間,應(yīng)該用StringBuffer類3、intIntegerJava提供兩種不同的類型:類型和原始類型(或內(nèi)置類型。Int是java的原始數(shù)據(jù)類型Integer是java為int提供的封裝類。Java為每個原始類型提供了封裝類。特征和用法,它們包括:大小和速度問題,這種類型以哪種類型的數(shù)據(jù)結(jié)構(gòu),當(dāng)類型和原始類型用作某個類的實例數(shù)據(jù)時所指定的缺省值。對象實例變量的缺省值為null,而原始類型4、StringStringBuffer的區(qū)別JAVA平臺提供了兩個類:String和StringBuffer,它們可以和操作字符串,即包含多個字符的字符數(shù)據(jù)。這個String類提供了數(shù)值不可改變的字符串。而這個StringBuffer類提供的字符串進行修改。當(dāng)你知道字符數(shù)據(jù)要改變的時候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動態(tài)構(gòu)造字符數(shù)據(jù)。是一種常見運行錯誤。java編譯器要求方法必須拋出可能發(fā)生的非運行時異常,但是并不要求必須拋出未獲的運行時異常6Servlet的生命周期,并說出ServletCGIServlet被服務(wù)器實例化后,容器運行其init方法,請求到達時運行其service方法,service 與cgi的區(qū)別在于servlet處于服務(wù)器進程中,它通過多線程方式運行其service方法,一個實例可以務(wù)于多個請求,并且其實例一般不會銷毀,而CGI對每個請求都產(chǎn)生新的進程,服務(wù)完成后就銷毀,所以效率上低于servlet。ArrayList和Vector都是使用數(shù)組方式數(shù)據(jù),此數(shù)組元素數(shù)大于實際的數(shù)據(jù)以便增加和元素,它們都允許直接按序號索引元素,但是元素要涉及數(shù)組元素移動等內(nèi)存操作,所以索引數(shù)據(jù)快而數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使向鏈表實現(xiàn),按序號索引數(shù)據(jù)需要進行前向或后向遍歷,但是數(shù)據(jù)時只需要記錄本項的前后項即可,所以速度較快。8、EJB是基于哪些技術(shù)實現(xiàn)的?并說出SessionBeanEntityBean的區(qū)別,StatefulBeanStaEJB包括SessionBean、EntityBean、MessageDrivenBean,基JNDI、RMI、JAT等技術(shù)實現(xiàn)。SessionBean在J2EE應(yīng)用程序中被用來完成一些服務(wù)器端的業(yè)務(wù)操作,例如數(shù)據(jù)庫、調(diào)用其他EJB組對于客戶機,EntityBean是一種持久性對象,它代表一個在持久性器中的實體的對象視圖,或是SessionBeanStatefulSessionBeanStaessSessionBeanSession都可以將系統(tǒng)邏輯放在method之中執(zhí)行,不同的是StatefulSessionBean可以記錄呼叫者的狀態(tài),因此通來說,一個使用者會有一個相對應(yīng)的StatefulSessionBean的實體。StaessSessionBean雖然也是邏輯組件,但是他卻不負(fù)責(zé)記錄使用者狀態(tài),也就是說當(dāng)使用者呼叫StaessSessionBean的時候,EJB并不會找尋特定的StaessSessionBean的實體來執(zhí)行這個method。換言之,很可能數(shù)個使用者在執(zhí)行某StaessSessionBean的methods時,會是同一個Bean的Instance在執(zhí)行。從內(nèi)存方面來看,StatefulSessionBeanStaessSessionBean比較,StatefulSessionBean會消耗J2EEServer較多的內(nèi)然而StatefulSessionBean9、CollectionCollectionsCollection是集合類的接口,繼承與他的接口主要有Set和Collections是針對集合類的一個幫助類,他提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全11、HashMap和HashtableHashMap允許空(null)鍵值(key),由于非線程安全,效率上可能高于Hashtable。HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Mapinterface的一個實現(xiàn)最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程Hashtable時,不需要自己為它的方法實現(xiàn)同步,而HashMap就必須為之提供外同步。Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會有很大的差異12、finalfinallyfinalizefinal用于屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承finalize是Object類的一個方法,在收集器執(zhí)行的時候會調(diào)用被回收對象的此方法,可以覆蓋此方法提供收集時的其他資源回收,例如關(guān)閉文件等。13、sleep()wait()有什么區(qū)別sleep是線程類(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時間,給執(zhí)行機會給其他線程,但是狀態(tài)依然保持,到時后會自動恢復(fù)。調(diào)用sleep不會對象鎖。wait是Object類的方法,對此對象調(diào)用wait方法導(dǎo)致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法(或notifyAll)后本線程才進入對象鎖定池準(zhǔn)備獲得對象鎖進入運行狀態(tài)。14、Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型方法的重寫Overriding和重載Overloading是Java重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),說該方法被重寫(Overriding)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被""了。如果在一個類中定義了多個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。error表示恢復(fù)不是不可能但很的情況下的一種嚴(yán)重問題。比如說內(nèi)存溢出。不可能指望程序能處理這exception表示一種設(shè)計或?qū)崿F(xiàn)問題。也就是說,它表示如果程序運行正常,從不會發(fā)生的情況如果數(shù)據(jù)將程間共享。例如正在寫的數(shù)據(jù)以后可能被另一個線程讀到,或者正在讀的數(shù)據(jù)可能已經(jīng)被 class和interface有什么區(qū)別 類,并為該類方法,但不能在該類中實現(xiàn)該類的情況。不能創(chuàng)建 得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義staticfinal成員變量。接口的實類,它允許使用接口名作為變量的類型。通常的動態(tài)聯(lián)編將生效??梢赞D(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof運算符可以用來決定某對象的類是否實現(xiàn)了接口。18、heap和stack19、forwardredirectforward是服務(wù)器請求資源,服務(wù)器直接目標(biāo)地址的URL,把那個URL的響應(yīng)內(nèi)容過來,然后把redirect就是服務(wù)端根據(jù)邏輯,發(fā)送一個狀態(tài)碼,告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛才參數(shù)重新請求,所以session,requestJavaBean是可復(fù)用的組件,對JavaBean并沒有嚴(yán)格的規(guī)范,理論上講,任何一個Java類都可以是一Bean通常JavaBean還要實現(xiàn)Serializable接口用于實現(xiàn)Bean的持JavaBean實際上相當(dāng)于微軟COM模型中的本地進程內(nèi)COM組件,它是不能被跨進程的。EnterpriseJavaBean相當(dāng)于DCOM,即分布式組件。它是基于Java的方法所以EJB可以被(跨進程、跨計算機。但EJB必須被布署在諸如Webspere、WebLogic這樣的容EJB客戶從不直接真正的EJB組件,而是通過其容器。EJB容器是EJB組件的,EJB組件由客戶通過容器來真正的EJB組件21、StaticNestedClassInnerClassStaticNestedClass是被為靜態(tài)(static)的類,它可以不依賴于外部類實例被實例化。而通常的類需要在外部類實例化后才能實例化。22、JSP中動態(tài)INCLUDEINCLUDE動態(tài)INCLUDE用jsp:include<jsp:includepage="included.jsp"flush="true"/>它總是會檢查所含文靜態(tài)INCLUDE用include偽碼實現(xiàn),定不會檢查所含文件的變化,適用于包含靜態(tài)頁面<%@includefile="includedhtm"%>23、什么時候用assertassertion一個boolean表達式進boolean表達式的值為true;如果該值為false,說明程序已經(jīng)處于不正確的狀態(tài)下,系統(tǒng)將給出警告或退出在發(fā)布后,assertion檢查通常是關(guān)閉的24、GC是什么?為什么要有GC是收集的意思(GabageCollection),內(nèi)存處理是編程容易出現(xiàn)問題的地方,忘記或者錯誤導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至,Java提供的GC功能可以自動監(jiān)測對象是否超過作用域從而達到自動Java語言沒有提供已分配內(nèi)存的顯示操作方法25、shorts11;s1s11;有什么錯shorts11s11;有什么錯shorts11;s1s11;(s1+1運算結(jié)果是int型,需要強制轉(zhuǎn)換類型shorts11;s11;(可以正確編譯?Mathround(11.5)==12Mathround(-11.5)==-11round方法返回與參數(shù)最接近的長整數(shù),參數(shù)加1/2后求其27、StringsnewString("xyz");創(chuàng)建了幾個String兩284個線程,其中兩個線程每次對j1,另外兩個線程對j1。寫出程序。以下程序使用類實現(xiàn)線程,對j增減的時候沒有考慮順序問題。publicclassThreadTest1{privateintj;publicstaticvoidmain(Stringargs[]){ThreadTest1tt=newThreadTest1();Incinc=ttnewInc();Decdec=tt.newDec();for(inti=0;i<2;i++){Threadt=newThread(inc);t=newThread(dec);}}privatesynchronizedvoidinc(){}privatesynchronizedvoiddec(){}classIncimplementsRunnable{publicvoidrun(){for(inti=0;i<100;i++){}}}classDecimplementsRunnable{publicvoidrun(){for(inti=0;i<100;i++){}}}}29、Javajava中的保留字,現(xiàn)在沒有在java30、啟動一個線程是用run()還是啟動一個線程是調(diào)用start()方法,使線程所代表的虛擬處理機處于可運行狀態(tài),這意味著它可以由JVM調(diào)SessionBean:StaessSessionBean的生命周期是由容器決定的,當(dāng)客戶機發(fā)出請求要建立一個Bean的實EJB容器不一定要創(chuàng)建一個新的Bean的實例供客戶機調(diào)用,而是隨便找一個現(xiàn)有的實例提供給客戶機。當(dāng)客戶機第一次調(diào)用一個StatefulSessionBean時,容器必須立即在服務(wù)器中創(chuàng)建一個新的Bean實例,機調(diào)用StatefulSessionBean的方法時容器會把調(diào)用分派到與此客戶機相關(guān)聯(lián)的Bean實例。而不是按照應(yīng)用程序或者服務(wù)進程來說的。即使EJB容器了,Entitybeans也是存活的EntityBeans生命周期Beans自己管理33、給我一個你最常見到的runtimeexceptionArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException, ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException, UnmodifiableSetException,UnsupportedOperationException34、接口是否可繼承接口?抽象類是否可實現(xiàn)(implements)接口?抽象類是否可繼承實體類(concrete35、ListSetMap是否繼承自Collection接口List,Set是,Map不J2E 的method是否可同時是static,是否可同時是native,是否可同時是38、數(shù)組有沒有l(wèi)ength()這個方法String有沒有l(wèi)ength()數(shù)組沒有l(wèi)ength()這個方法,有l(wèi)ength的屬性。String有有l(wèi)ength()這個方法39Set?是用==equals()?它們有何區(qū)別Set里的元素是不能重復(fù)的,那么用iterator()方法來區(qū)分重復(fù)與否。equals()是判讀兩個Set是否相等equals()和==方法決定值是否指向同一對象equals()在類中被覆蓋,為的是當(dāng)兩個分離的對象的內(nèi)40Constructor是否可被構(gòu)造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading41、是否可以繼承String類Stringfinal42、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上switch(expr1)中,expr1switchcaseintshort、char或者byong,string都不能作用于swtich。43、try{}里有一個return語句,那么緊跟在這個try后的finally{}code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后?會執(zhí)行,在return前執(zhí)行44、編程題:28等於幾2<<45、兩個對象值相同(x.equals(ytrue),但卻可有不同的hashcode,這句話對不對不對,有相同的hashcode那么這里到底是值傳遞還是傳遞?是值傳遞。Java編程語言只有值傳遞參數(shù)。當(dāng)一個對象實例作為一個參數(shù)被傳遞到方法中時,參數(shù)的值就是對該對象的。對象的內(nèi)容可以在被調(diào)用的方法中改變,但對象的是不會改變的。47、當(dāng)一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?不能,一個對象的一個synchronized方法只能由一個線程。48、編程題:SingletonSingleton模式主要作用是保證在Java應(yīng)用程序中,一個類Class只有一個實例存在。一般Singleton模式通常有幾種種形式:第一種形式:privatestaticprivate時實例話,通過一個public的getInstance方法獲取對它的,繼而調(diào)用其中的方法。publicclassSingleton{private//在自己定義自己一個實例,是不是很奇怪//注意這是private只供調(diào)privatestaticSingletoninstance=new//這里提供了一個供外部本class的靜態(tài)方法,可以直接publicstaticSingletongetInstance(){returninstance;}}publicclassSingletonprivatestaticSingletoninstance=publicstaticsynchronizedSingletongetInstance()if(instance==null)instance=newSingleton();returninstance; }定義一個類,它的構(gòu)造函數(shù)為private的,所有方法為static的。由于Java不支持多繼承,而有可能某個類或?qū)ο笠褂梅謩e在幾個類或?qū)ο罄锩娴姆椒ɑ驅(qū)傩裕F(xiàn)有的單static,所有方法默認(rèn)情況下是public.一個類可以實現(xiàn)多個接口。當(dāng)JAVA程序了JAVA的語義規(guī)則時,JAVA虛擬機就會將發(fā)生的錯誤表示為一個異常。語義規(guī)則null的對象時會NullPointerException。另一種情況就是JAVA允許程序員擴展這種語義檢查,程序員可以創(chuàng)建自己的異常并在何時用throw關(guān)鍵字異常所有的異常都是java.lang.Thowable。Java語言中一個顯著的特點就是引入了回收機制,使c++程序員最頭疼的內(nèi)存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候不再需要考慮內(nèi)存管理。由于有個回收機制,Java中的對象不再有"作用域"的概念,只有對象的才有"作用域"回收可以有效的防止內(nèi)存,有效的使用可以使用的內(nèi)存?;厥掌魍ǔJ亲鳛橐粋€單獨的低級別的線程運行,不可預(yù)知的情況下對內(nèi)存堆中已經(jīng)的或者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調(diào)用回收器對某個對象或所有對。進行回收?;厥諜C制有分代回收和標(biāo)記回收,增量回收wait():使一個線程處于等待狀態(tài),并且所持有的對象的locksleep():使一個正在運行的線程處于睡眠狀態(tài),是一個靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException異的線程,而是由JVM確定喚醒哪個線程,而且不是按優(yōu)先級。最常用的集合類是ListMapList的具體實現(xiàn)包括ArrayListVector,它們是可變大小的列表,比較適合構(gòu)建、和操作任何類型對象的元素列表。List適用于按數(shù)值索引元素的情形。Map提供了一個更通用的元素方法。Map集合類用于元素對(稱作"鍵"和"值"),其中每個鍵映54、描述一下JVM加載class文件的原理機制JVM中類的裝載是由ClassLoader和它的子類來實現(xiàn)的,JavaClassLoader是一個重要的Java運行時系統(tǒng)組多線程有兩種實現(xiàn)方法,分別是繼承Thread類與實現(xiàn)Runnable接口同步的實現(xiàn)方面有兩種,分別是synchronized,wait與notifyrequest表示HttpServletRequest對象。它包含了有關(guān)瀏覽器請求的信息,并且提供了幾個用于獲取 header,和session數(shù)據(jù)的有用的方法。response表示HttpServletResponse對象并提供了幾個用于設(shè)置送回瀏覽器的響應(yīng)的方( out對象是javax.jsp.JspWriter的一個實例,并提供了幾個方法使你能用于向瀏覽器回送輸出結(jié)果pageContext表示一個javax.servlet.jsp.PageContext空間servlet相關(guān)的對象的API,并且包裝了通用的servlet相關(guān)功能的方法。session表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯用戶的狀態(tài)信applicaton表示一個javax.servle.ServletContext對象這有助于查找有關(guān)servlet引擎和servlet環(huán)境的息config表示一個javax.servlet.ServletConfig對象。該對象用于存取servlet實例的初始化參數(shù)page表示從該頁面產(chǎn)生的一個servlet實線程指在程序執(zhí)行過程中,能夠執(zhí)行程序代碼的一個執(zhí)行單位,每個程序至少都有一個線程,也就是程59、JSP<%@pagelanguage="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<%@taglibprefix="c"uri="http://60、什么情況下調(diào)用doGet()Jsp頁面中的form里的method屬性為get時調(diào)用doGet(),為post時調(diào)用doPost()。61、servlet的生命周期web容器加載servlet,生命周期開始調(diào)用servlet的init()方法進行servlet過調(diào)用方法實現(xiàn),根據(jù)請求的不同調(diào)用不同的do***()方法。結(jié)束服務(wù),web容器調(diào)用servlet的destroy()62、如何現(xiàn)實servlet<%@pageJSP是Servlet質(zhì)上是Servlet的簡易方式表達JSP編譯后是"類servlet"。ServletJSP最主要的不同點在于,ServletJava文件中,并且完全從表示層中HTML里分離開來。而JSP的情況是Java和HTML可以組一個擴展名為.jsp的文件。JSP側(cè)重于視圖,Servlet會話作用域ServletsJSPpage否是代表與一個頁面相關(guān)的對象和屬性。一個頁面由一個編譯好的Javaservlet類(可以帶有任何的include指令,但是沒有include動作)表示。這既包括servlet又包括被編譯成servlet的JSP頁面request是是代表與Web客戶機發(fā)出的一個請求相關(guān)的對象和屬性。一個請求可能多個頁面,涉及多個Web組件(由于forward指令和include動作的關(guān)系)session是是代表與用于某個Web客戶機的一個用戶體驗相關(guān)的對象和屬性。一個Web會話可以也經(jīng)常會多個客戶機請求application是是代表與整個Web應(yīng)用程序相關(guān)的對象和屬性。這實質(zhì)上是整個Web應(yīng)用程序,包括setAttribute(Stringname,Object):設(shè)置名字為name的requestgetAttribute(Stringname):返回由namegetAttributeNames():返回request對象所有屬性的名字集合,結(jié)果是一個枚舉的實 getContentLength():返回請求的Body的長度getHeader(Stringname):獲得HTTPgetHeaders(Stringname):返回指定名字的requestHeader的所有值,結(jié)果是一個枚舉的實例getHeaderNames():返回所以requestHeader的名字,結(jié)果是一個枚舉的實例getParameter(Stringname):獲得客戶端傳送給服務(wù)器端的有name指定的參數(shù)值getParameterValues(Stringname):獲得有name指定的參數(shù)的所有值getRemoteAddr():獲取客戶端的IP地址getSession([Booleancreate]):返回和請求相關(guān)SessiongetServerPort():獲取服務(wù)器的端removeAttribute(Stringname):刪除請求中的一個屬性67、J2EE是技術(shù)還是是框架J2EE也是一個框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技JNDI:JNDI(JavaNamingandDirectoryInterface)是一個應(yīng)用程序設(shè)計的API,為開發(fā)提供了查找和各種命名和服務(wù)的通用、的接口,類似JDBC都是構(gòu)建在抽象層上。JMS:JMS(JavaMessageService)是企業(yè)消息系統(tǒng)的標(biāo)準(zhǔn)API,它便于消息統(tǒng)中的Java應(yīng)用程序進行消息交換,并且通過提供標(biāo)準(zhǔn)的產(chǎn)生發(fā)送開發(fā)JTA:JTA(JavaTransactionAPI)提供了J2EE中處理事務(wù)的標(biāo)準(zhǔn)接口,它支持事務(wù)的開始、回滾和提可以使用JTAJTS。68、在web應(yīng)用開發(fā)過程中經(jīng)常遇到輸出某種編碼的字符,如iso8859-1等,如何輸出一個某種編碼PublicStringtranslate(Stringstr){StringtempStr="";trytempStr=newString(str.getBytes("ISO-8859-1"),"GBK");tempStr=tempStr.trim();}catch(Exceptione){}return}70、XML文檔定義有幾種形式?它們之間有何本質(zhì)區(qū)別?解析XMLa:兩種形式dtdschema,b:本質(zhì)區(qū)別:schema本身是xml的,可以ML解析器解析(這也是從DTD上發(fā)展schema的根本目的),c:有DOM,SAX,STAX等的內(nèi)存較多,而且DOM必須在解析文件之前把整個文檔裝入內(nèi)存,適合對XML的隨機SAX:不現(xiàn)于DOM,SAX是事件驅(qū)動型的XML解析方式。它順序XML文件,不需要一次全部裝載整個文件。當(dāng)遇到像文件開頭,文檔結(jié)束,或者開頭與結(jié)束時,它會觸發(fā)一個事件,用戶通過在其回調(diào)事件中寫入處理代碼來處理XML文件,適合對XML的順序71、簡述synchronizedjava.util.concurrentlocks.Lock主要相同點:Lock能完成synchronized所實現(xiàn)的所有功能主要不同點:Lock有比synchronized更精確的線程語義和更好的性能synchronized會自動鎖而一定要求程序員手工,并且必須在finally從句中一個完整的基于EJB的分布式計算結(jié)構(gòu)由六個角色組成,這六個角色可以由不同的開發(fā)商提供,每個角色所作的工作必須遵循Sun公司提供的EJB規(guī)范,以保證彼此之間的兼容性。Assembler系統(tǒng)管理員(SystemAdministrator)三個對象是Remoocal)接口、Home(LocalHome)接口,Bean主要提供周期管理、代碼產(chǎn)生、持續(xù)性管理、安全、事務(wù)管理、鎖和并管理等服務(wù)74、EJB規(guī)范規(guī)定EJB中的操作有哪些實現(xiàn)服務(wù)器功能,4.不能對靜態(tài)屬生存取,5.IO操作直接存取文件系統(tǒng),6.不能加載本地庫.,7.不能將this作為變量和返回,8.不能循環(huán)調(diào)用。75、remote接口和homeremote接口定義了業(yè)務(wù)方法,用于EJB客戶端調(diào)用業(yè)務(wù)方法home接口是EJB工廠用于創(chuàng)建和移除查找EJB實76、bean對于StaessSessionBean、EntityBean、MessageDrivenBean一般存在緩沖池管理,而對于EntityBean和StatefullSessionBean存在Cache管理,通常包含創(chuàng)建實例,設(shè)置上下文、創(chuàng)建EJBObject(create)、業(yè)務(wù)方法調(diào)用、remove等過程,對于存在緩沖池管理的Beancreate之后實例并不從內(nèi)存清除,而是采用緩77、EJBStatefulSessionBean為例:其Cache大小決定了內(nèi)存中可以同時存在的Bean實例的數(shù)量,根據(jù)MRUNRUEJB實例業(yè)務(wù)方法時,如果對應(yīng)EJBObject發(fā)現(xiàn)自己沒有綁定對應(yīng)的Bean實例則從其去激活Bean中(通過序列化機制實例)回復(fù)(激活)此實例。狀態(tài)變遷前會調(diào)用對應(yīng)的ejbActive和ejbPassivate方法。78、EJB會話(Session)Bean,實體(Entity)Bean消息驅(qū)動的(Message會話Bean又可分為有狀態(tài)(Stateful)和無狀態(tài)(Staess)實體Bean可分為Bean管理的持續(xù)性(BMP)和容器管理的持續(xù)性(CMP)79、端調(diào)用EJB對象的幾個基本步設(shè)置JNDI服務(wù)JNDI服務(wù)地址系統(tǒng)屬性,查找Home接口Home接口調(diào)用CreateRemote接口,通過Remote接口調(diào)用其業(yè)務(wù)方法在啟動Weblogic的中(位于所在Domian對應(yīng)服務(wù)器 下的startServerName),增加setMEM_ARGS=-Xms32m-Xmx200m,可以調(diào)整最小內(nèi)存為32M,最大200M81、如何設(shè)定的weblogic的熱啟動模式(開發(fā)模式)與產(chǎn)品發(fā)布模式可以在管理控制臺中修改對應(yīng)服務(wù)器的啟動模式為開發(fā)或產(chǎn)品模式之一?;蛘咝薷姆?wù)的啟動文件commenv文件,增加setPRODUCTION_MODE=trueWLS_USER和WLS_PW項。也可以在perties文件中增加加密過的用戶,83weblogic管理制臺中對一個應(yīng)用域(或者說是一個,

保存在 的configxml文件中,它是服務(wù)器的配置文件84weblogic中一個的缺省結(jié)構(gòu)?比如要將一個簡單的oWorld.jsp放入何下,然的在瀏覽器上就可打入http://主機:端//oword.jsp就可以看到運行結(jié)果了?又比如這其中用到了一個自己寫的javaBean該如何辦?服務(wù)器applications,將應(yīng)用放在此下將可以作為應(yīng)用,如果是Web應(yīng)用,應(yīng)用需要滿足Web應(yīng)用要求,jsp文件可以直接放在應(yīng)用中,Javabean需要放在應(yīng)用的WEB-INF的classes中,設(shè)置服務(wù)器的缺省應(yīng)用將可以實現(xiàn)在瀏覽器上無需輸入應(yīng)用名。85weblogic中發(fā)布ejb不同類型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jarxml,weblogic-ejb-jar.xmlCMP實Bean一般還需要weblogic-cmp-rdbms-jar86weblogic中進行sslj2ee(標(biāo)準(zhǔn))進行ssl缺省安裝中使用DemoIdentity.jks和DemoTrust.jksKeyStore實現(xiàn)SSL,需要配置服務(wù)器使用EnableSSL,配置其端口,在產(chǎn)品模式下需要從CA獲取私有密鑰和數(shù)字,創(chuàng)建identity和trustkeystore,裝載獲得的密鑰和數(shù)字??梢耘渲么薙SL連接是單向還是雙向的。87、如何查看在weblogic中已經(jīng)發(fā)布的可以使用管理控制臺,在它的Deployment中可以查看所有已發(fā)布的CORBA標(biāo)準(zhǔn)是公共對象請求結(jié)構(gòu)(CommonObjectRequestBrokerArchitecture),由對象管理組織(ObjectManagementGroup,縮寫為OMG)標(biāo)準(zhǔn)化。它的組成是接口定義語言(IDL),語言綁定(binding:也譯為聯(lián)編)和允許應(yīng)用程序間互操作的協(xié)議。其目的為:用不同的程序設(shè)計語言書寫在不同的進程中運行,89、說說你所熟悉或聽的j2ee中的幾種常用模式?及對設(shè)計模式的一些看SessionFacadePattern:使用SessionBeanEntityBeanMessageFacadePattern:實現(xiàn)異步調(diào)用EJBCommandPattern:使用CommandJavaBeans取代SessionBean,實現(xiàn)輕量級DataTransferObjectFactory:通過DTOFactory簡化EntityBean數(shù)據(jù)提供特性GenericAttributeAccess:通過AttibuteAccess接口簡化EntityBean數(shù)據(jù)提供特性BusinessInterface:通過(本地)接口和Bean類實現(xiàn)相同接口規(guī)范業(yè)務(wù)邏輯一致90weblogic中開發(fā)消息Beanpersistentnon-persistenpersistent方式的MDB可以保證消息傳遞的可靠性,也就是如果EJB容器出現(xiàn)問題而JMS服務(wù)器依然會將消息在此MDB可用的時候發(fā)送過來,而non-persistent方式的消息將被丟棄。publicvoidinit(ServletConfigconfig)publicServletConfiggetServletConfig()publicStringgetServletInfo()publicvoidservice(ServletRequestrequest,ServletResponseresponse)publicvoiddestroy()Java中的23 FactoryMethod(工廠方法模式 Proxy(模式 TemplateMethod(模板方法模式),ChainOfResponsibleity(責(zé)任鏈模式)93、EJB需直接實現(xiàn)它的業(yè)務(wù)接口或Home接口和Home接口不需要直接實現(xiàn),他們的實現(xiàn)代碼是由服務(wù)器產(chǎn)生的,程序運行中對應(yīng)實現(xiàn)類會作使用快速排序方法對a0n1]排從a[0n1]中選擇一個元素作為middle把余下的元素分割為兩段left和right,使得left中的元素right中的元素都大于等遞歸地使用快速排序方法對left進行排序遞歸地使用快速排序方法對right進行排序所得結(jié)果為left+middle+right95、請對以下在J2EE中常用的名詞進行解釋(或簡單描述web容器:給處于其中的應(yīng)用程序組件(JSP,SERVLET)提供一個環(huán)境,使JSP,SERVLET直接更容器中的環(huán)境變量**WEBTOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴(yán)J2EE規(guī)范中WEBAPPLICATION標(biāo)準(zhǔn)。把遵守以上標(biāo)準(zhǔn)的WEB服務(wù)器就叫做J2EE中的WEB容器EJB容器:Enterprisejavabean容器。更具有行業(yè)領(lǐng)域特色。他提供給運行在其中的組件EJB各種管理功能。只要滿足J2EEEJB放入該容器,馬上就會被容器進行高效率的管理。并且可以通過現(xiàn)成的接JNDI:(JavaNaming&DirectoryInterface)JAVA命名 JMS:(JavaMessageService)JAVA消息服務(wù)。主要實現(xiàn)各個應(yīng)用程序之間的通訊。包括點對點和廣播。JAF(Java有一臺計算機上運行一個程序,它提供分析服務(wù),可以在本地計算機上實現(xiàn)對其直接調(diào)用。當(dāng)然這是要通過一定的規(guī)范才能在異構(gòu)的系統(tǒng)之間進行通信。RMI是JAVA特有的。Java通過面象的方法進行異常處理,把各種不同的異常進行分類,并提供了良好的接口。在Java中,每個異常都是一個對象,它是Throwable類或其它子類的實例。當(dāng)一個方法出現(xiàn)異常后便拋出一個異常對象,該對象中包含有異常信息,調(diào)用這個對象的方法可以捕獲到這個異常并進行處理。Java的異常處理是通過5個來實現(xiàn)的:try、catch、throw、throws和finally。一般情況下是用try來執(zhí)行一段程序,如try來指定一塊預(yù)防所有"異常"的程序。緊跟在try程序后面,應(yīng)包含一個catch子句來指定你想要捕捉可以在一個成員函數(shù)調(diào)用的外面寫一個try語句,在這個成員函數(shù)寫另一個try語句保護其他代碼。每當(dāng)遇到一個try語句,"異常"的框架就放到堆棧上面,直到所有的try語句都完成。如果下一級的try語句沒有對某種"異常"進行處理,堆棧就會展開,直到遇到有處理這種"異常"try語句。java面試筆試題大匯總(2)轉(zhuǎn)97、一個".java"源文件中是否可以包括多個類(不是類)?有什么限制?MVC是Model-View-Controller的簡寫"Model"代表的是應(yīng)用的業(yè)務(wù)邏輯(通過JavaBean,EJB組件實現(xiàn))"View"是應(yīng)用的表示面(由JSP頁"99、java中有幾種方法可以實現(xiàn)一個線程?用什么關(guān)鍵字修飾同步方法?stop()suspend()方法為何不推有兩種實現(xiàn)方法,分別是繼承Thread類與實現(xiàn)Runnable接口用synchronized關(guān)鍵字修飾同步方法使用tosspedusen能鎖定的源,除被"掛"的程恢復(fù)行。任何線程來,如果們想恢目標(biāo)線,sspndrad類中入個志,線應(yīng)活還掛。標(biāo)志程該起便用i(命進等狀。若標(biāo)志線程應(yīng)當(dāng)恢復(fù),則用一個notify()重新啟動線程100、java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些字節(jié)流,字符流節(jié)流繼承于InputStreamOutputStream符流繼承于InputStreamReaderOutputStreamWriter。在java.io包中還有許多其他的流,主要是為了提高性能和使用方便。會。如:inti,i2;return(i- 方法的重寫Overriding和重載Overloading是Java重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。對于C來,程員建象,C開始這象地、小及用況通,C(ea)""""。當(dāng)C"C執(zhí)行yt.gC運行,但是JavaCstatici10;常classAa;a.i10;//可105、java序列化,如何實現(xiàn)java序列化序列化的實現(xiàn):將需要被序列化的類實現(xiàn)Serializable接口,該接口沒有需要實現(xiàn)的方法,implementsSerializable只是為了標(biāo)注該對象是可被序列化的,然后使用一個輸出流(如:FileOutputStream)來構(gòu)造一個將參數(shù)為obj的對象寫出(即保存其狀態(tài)),要恢復(fù)的話則用輸入流。106、是否可以從一個static方法發(fā)出對非static方法的調(diào)用?不可以,如果其中包含對象的method();不能保證對象初始化.Clone有缺省行為,super.clone();他負(fù)責(zé)產(chǎn)生正確大小的空間,并逐位用break;return方法。List以特定次序來持有元素,可有重復(fù)元素。Set無法擁有重復(fù)元素,排序。Map保存key-value值value可多值J2EE是Sun公司多層(multi-diered),分布式(distributed),基于組件(component-base)的企業(yè)級應(yīng)用模型(enterprieseapplicationmodel).在這樣的一個應(yīng)用系統(tǒng)中,可按照功能劃分為不同的組件,這些組件又可在并且處于相應(yīng)的層次(tier)中。所屬層次包括客戶層(clietntier)組件,web層和組件,Business層和組件,企業(yè)信標(biāo)準(zhǔn)建模語言UML。用例圖,靜態(tài)圖(包括類圖、對象圖和包圖),行為圖,交互圖(順序圖,合作圖),實現(xiàn)圖常用的類:BufferedReaderBufferedWriterFileReaderFileWirterString常用的包:java.langjava.awtjava.iojava.util常用的接口:RemoteList 每個模式都描述了一個在的環(huán)境中不斷出現(xiàn)的問題,然后描述了該問題的解決方案的。通過這種方式,你可以無數(shù)次地使用那些已有的解決方案,無需在重復(fù)相同的工作。主要用到了MVC的設(shè)計模式。用來開發(fā)JSP/Servlet或者J2EE的相關(guān)應(yīng)用。簡單工廠模式等。JSP共有以6jsp:include:在頁面被請求的時候jsp:useBean:尋找或者實例化JavaBeanjsp:setPropertyJavaBeanjsp:getProperty:輸出某JavaBean的屬性。jspforwardjsp:plugin:根據(jù)瀏覽器類型為Java插件生成OBJECT或EMBED115、AnonymousInnerClass( 類)是否可以extends(繼承)其它類,是否可以implements(實可以繼承其他類或完成其他接口,在swing編程中常用此方式116、應(yīng)用服務(wù)器與WEBSERVER的區(qū)別?WEBSERVER:IISOracle、Sybase、Informix或SQLServer??蛻舳诵枰惭b的客戶端。B/S是Brower/Server的縮寫,客戶機上只要安裝一個瀏覽器(Browser),如NetscNavigator或InternetExplorer,服務(wù)器安裝Oracle、Sybase、InformixSQLServer等數(shù)據(jù)庫。在這種結(jié)構(gòu)下,用戶界面完全通過WWW瀏覽器實現(xiàn),一部分事務(wù)邏輯端實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實現(xiàn)。瀏覽器通過ServerC/SB/S區(qū)別:C/S一般建立在的網(wǎng)絡(luò)上,小范圍里的網(wǎng)絡(luò)環(huán)境,局域網(wǎng)之間再通過專門服務(wù)器提供連接和數(shù)據(jù)B/S建立在廣域網(wǎng)之上的,不必是專門的網(wǎng)絡(luò)硬件環(huán)境,例與上網(wǎng),租用設(shè)備.信息自己管理.有比C/S更強的適應(yīng)范圍,一般只要有操作系統(tǒng)和瀏覽器就行C/S一般面向相對固定的用戶群,對的控制能力很強.一般高度的信息系統(tǒng)采用C/S結(jié)構(gòu)適宜.可以通過B/S發(fā)布部分可.B/S建立在廣域網(wǎng)之上,對安全的控制能力相對弱,可能面向不可知的用戶。C/S程序可以更加注重流程,可以對權(quán)限多層次校驗,對系統(tǒng)運行速度可以較少考慮B/S對安全以及速度的多重的考慮,建立在需要更加優(yōu)化的基礎(chǔ)之上.比C/S有更高的要求B/S結(jié)構(gòu)的程序架構(gòu)是發(fā)展的趨勢,從MS的.Net系列的BizTalk2000Exchange2000等,全面支持網(wǎng)絡(luò)的構(gòu)件搭建的系統(tǒng).SUN和IBMJavaBean構(gòu)件技術(shù)等,使B/S更加成熟.4.重用不C/S程序可以不可避免的整體性考慮,構(gòu)件的重用性不如在B/S要求下的構(gòu)件的重用性好B/S對的多重結(jié)構(gòu),要求構(gòu)件相對獨立的功能.能夠相對較好的重用.就入買來的餐桌可以再利用,而不5.不C/S程序由于整體性,必須整體,處理出現(xiàn)的問題以及系統(tǒng)升級.升級難.可能是再做一個全新系B/S構(gòu)件組成,方面構(gòu)件個別的更換,實現(xiàn)系統(tǒng)的無縫升級.開銷減到最小.用戶從網(wǎng)上自己C/S程序可以處理用戶面固定,并且在相同區(qū)域,安全要求高需求,與操作系統(tǒng)相關(guān).應(yīng)該都系B/S建立在廣域網(wǎng)上,面向不同的用戶群,分散地域,C/S無法作到的.與操作系統(tǒng)平臺關(guān)系最小C/S多是建立的Window平臺上,表現(xiàn)方法有限,對程序員普遍要求較B/S建立在瀏覽器上,有更加豐富和生動的表現(xiàn)方式與用戶交流.并且大部分難度減低,減低開發(fā)成本.C/S程序一般是典型的的機械式處理,交互性相對B/S信息流向可變化B-BB-CB-G等信息、流向的變化,LINUX實現(xiàn)的就是基于輕量級進程的"一對一"線程模型,一個線程實體對應(yīng)一個輕量級進程,而GDI類為圖119、STRUTS的應(yīng)用(如STRUTS架構(gòu)Struts是采用JavaServlet/JavaServerPages技術(shù),開發(fā)Web應(yīng)用程序的開放源碼的framework。采用Struts能開發(fā)出基于MVC(Model-View-Controller)設(shè)計模式的應(yīng)用構(gòu)架。Struts.包含一個controllerservlet,能將用戶的請求發(fā)送到相應(yīng)的Action對象。二.JSPtag庫,并且在controllerservlet中提供關(guān)聯(lián)支持,幫助開發(fā)員創(chuàng)建交互式表單應(yīng)用。三.提供了一系列實用對象:XML處理、通過JavareflectionAPIs自動處理JavaBeans屬性、的提示120、Jdo是什么JDO是Javajavadataobject的簡稱,也是一個用于存取某種數(shù)據(jù)倉庫中的對象的標(biāo)準(zhǔn)化API。JDO提供了透明的對象,因此對開發(fā)來說,數(shù)據(jù)對象完全不需要額外的代碼(如JDBC的使用這些繁瑣的例行工作已經(jīng)轉(zhuǎn)移到JDO產(chǎn)品提供商身上,使開發(fā)解脫出來,從而集中時間和精力在業(yè)務(wù)122、WEBSERVICE。JSWDL開發(fā)包的介紹。JAXP、JAXM的解釋。SOAP、WebServiceWebService是基于網(wǎng)絡(luò)的、分布式的模塊化組件,它執(zhí)行特定的任務(wù),遵守具體的技術(shù)規(guī)范,這些規(guī)范使得WebService能與其他兼容的組件進行互操作。JAXP(JavaAPIforXMLParsing)定義了在Java中使用DOM,SAX,XSLT的通用的接口。這樣在你的程序JAXM(JavaAPIforXMLMessaging)是為SOAP通信提供方法和傳輸機制的APIWSDLXML格式,用于將網(wǎng)絡(luò)服務(wù)描述為一組端點,這些端點對包含面向文檔信息或面向過程信SOAP即簡單對象協(xié)議(SimpleObjectAccessProtocol),它是用于交換XML編碼信息的輕量級協(xié)議UDDI的目的是為電子商務(wù)建立標(biāo)準(zhǔn);UDDI是一套基于WebWebService提供的、信息這個問題的解決方案以及這樣解決問題產(chǎn)生的在解決利用J2EE進行程序開發(fā)中出現(xiàn)的問J2EE問通常說的MVC就是一種架構(gòu)模式,MVC當(dāng)為一種設(shè)計模式J2EE設(shè)計模式在過去幾年中隨著Java開發(fā)經(jīng)驗的不斷成長而發(fā)展。這些設(shè)計模式是針對使用各種J2EE技術(shù)時可能出現(xiàn)的問題它們能夠幫助開發(fā)構(gòu)造出應(yīng)用程序框架的要求。例如,F(xiàn)rontController(前端控件)模式將servlet代碼的開發(fā)轉(zhuǎn)化為在圖形用戶界面下的開發(fā)。但是需要記住J2EE設(shè)計模型解決了那些在J2EE項目中最可能出現(xiàn)的問題。如果你在J2EE遇到的問題很特殊,很有可能沒有相應(yīng)的設(shè)計模型來解決它。占用的系統(tǒng)資源。而另一種是基于Java的設(shè)計模式,這些設(shè)計模式要么是和Java的語言特性結(jié)合得很緊,要么是面象技術(shù)在Java中的深化。不要以為設(shè)計模式相對獨立于J2EE就認(rèn)為它們不重要,通常它們比J2EE設(shè)計模式更重要。這是因為:有些J2EE設(shè)計模式是建立在某些開發(fā)設(shè)計模式之上的開發(fā)模式為J2EE設(shè)計模式提供了堅實的基礎(chǔ)。它的應(yīng)用將影響到整個結(jié)構(gòu)的穩(wěn)定性和創(chuàng)建類型:創(chuàng)建類型的模式都是用于創(chuàng)建類的實例。但是和通過new來創(chuàng)建實例不同,這些類的實例,最簡單的方法是使用new關(guān)鍵字:MyFoo=newMyFoo=new Foo工廠模式(FactoryPattern):根據(jù)工廠模式實現(xiàn)的類可以根據(jù)提供的數(shù)據(jù)生成一組類中某抽象工廠模式(FactoryPattern):抽象工廠模式也可以根據(jù)提供的數(shù)據(jù)生成一構(gòu)造者模式(BuilderPattern):構(gòu)造者模式將一個復(fù)雜對象的構(gòu)造過程和它的表現(xiàn)層分離單例模式(SingletonPattern):根據(jù)單一模式實現(xiàn)的類只允許有一個是類,并且提供了一個全局指針來該實例。橋梁模式(BridgePattern):橋梁模式對客戶端程序提供一個固定的接口,但是允許開發(fā)變化實際的實現(xiàn)類。這樣開發(fā)就可以將接口是具體的實現(xiàn)類分離開來。組合模式(CompositePattern):復(fù)合模式可以將多個對象進行復(fù)合,其中的每個對象可模式(ProxyPattern):模式利用一個簡單的對象替代一個復(fù)雜的對象,當(dāng)復(fù)雜對門面模式(FacadePattern):正面模式將復(fù)雜的類層次結(jié)構(gòu)組織起來,通過一個簡單的接調(diào)停者模式(MediatorPattern):中介模式可以通過一個中間類來控制若干個類之間的通備忘錄模式(MementoPattern):回憶模式可以在不破壞對象封裝性的前提下保存和恢復(fù)對象的狀態(tài)。責(zé)任鏈模式(ChainofResponsibility):職責(zé)鏈模式將請求傳遞給一組對象,只有特定的策略模式(StrategyPattern):策略模式定義了一組算法,將每個算法都封裝起來,并且迭代子模式(IteratorPattern):迭代模式在不知道數(shù)據(jù)的表現(xiàn)形式的前提下,通過標(biāo)J2EE開發(fā)中大量的專業(yè)縮略語很是讓人迷惑,尤其是跟一些高手問題的時候,三分鐘對這種現(xiàn)象的的朋友會會心一笑。persistantobjectbusinessobjectPOPOPO。BOBOPO。這樣處理業(yè)務(wù)邏輯時,就可以針對BO去處理VOvalueobject主要對應(yīng)界面顯示的數(shù)據(jù)對象。對于一個WEBSWT、SWING的一個界面,用VO對象對應(yīng)整個界面的值。DTODataTransferObject比如一張表有100個字段,那么對應(yīng)的PO就有100個屬性。但是界面上只要顯示10個字段,客戶端用WEBservicePO這時就可以用只有這10個屬性的DTO來傳遞結(jié)果到客戶端這樣也不會服務(wù)端表結(jié)構(gòu).到達客戶端以后,如果用這個對象來對應(yīng)界面顯示,那此時它的就轉(zhuǎn)為VOPOJOplainordinaryjavaobjectjava個人感覺POJO是最常見最多變的對象,是一個中間對象,也是最常打交道的對象。POJOPOdataaccessobject數(shù)據(jù)對這個大家最熟悉,和上面幾個O區(qū)別最大,基本沒有互相轉(zhuǎn)化的可能性和必要主要用來封裝對數(shù)據(jù)庫的。通過它可以把POJO持久化為PO,用PO組裝出來VO、對象的也不一樣,而且對象的轉(zhuǎn)化也是很自然的。就像你對老婆來說就是老公,對 輯,讓大家能更好的去用面象的方式處理問題安卓面試1、ANR如何避免它ANRAndroid上,如果你的應(yīng)用程序有一段時間響應(yīng)不夠靈敏,系統(tǒng)會向用戶顯示一個框,這個框稱作應(yīng)用程序無響應(yīng)(ANR:ApplicationNotANR給用戶??紤]上面的ANR定義,讓來研究一下為什么它會在Android應(yīng)用程序里發(fā)生和如何最佳構(gòu)建應(yīng)用程序來避免ANR。Android應(yīng)用程序通常是運行在一個單獨的線程(例如,main)里。這意味著你的應(yīng)用程序所做的事情如果在主線程里占用了太長的時間的話,就會ANR對Intent廣播。因此,運行在主線程里的任何方法都盡可能少做事情。特別是,Activity應(yīng)該在它的關(guān)鍵生命周期方法(onCreate()和onResume())里盡可能少的去做創(chuàng)建操Thread.wait()或是Thread.sleep()。替代的方法是,主線程應(yīng)該為子線程提供Handler,以便完成時能夠提交給主線程。以這種方式設(shè)計你的應(yīng)用程序,5秒輸入事件的超時的ANR框。這種做法應(yīng)該在其它顯示UI的線程里效仿,因為它們都受相同的IntentReceiver執(zhí)行時間的特殊限制意味著它應(yīng)該做:在里做小的、瑣碎的工作如保存設(shè)定或者一個Notification。和在主線程里調(diào)用的其它方法一BroadcastReceiver里做耗時的操作或計算。但不再是在子線程里做這些任務(wù)(BroadcastReceiver的生命周期短,替代的是,如Intent廣播需要執(zhí)行一個耗時的動作的話,應(yīng)用程序應(yīng)該啟動一個ServiceIntentReceiverActivityIntent廣播時需要向用戶展示什么,你應(yīng)該使用NotificationManager來實現(xiàn)。一般來說,在應(yīng)用程序里,100200ms是用戶能感知阻滯的時間閾值。因此,這里有一些額外的技巧來避免ANR,并有助于讓你的應(yīng)用程序看起來有響應(yīng)性。如果你的應(yīng)用程序有一個耗時的初始化過程的話,考慮可以顯示一個SplashScreen或者快速顯示主畫面并異步來填充這些信息。在這兩種情況下,你都應(yīng)該本文來自CSDN博客,請標(biāo)明出處2ForceClose3、Android本身的api并未會拋出異常,則其在運行時有無可能拋出4、簡要解釋一下activityintent、intentfilter、service、Broadcast、Android中,ActivityActivity之中,Activity具有自己的生命周期(由系統(tǒng)控制生命周期,程序無法改變,但可onSaveInstanceState保存其狀態(tài)。=.=,其次就是狀態(tài)的保存和恢復(fù)(onSaveInstanceStateonRestoreInstanceState(intentActivity中常用的函數(shù)有SetContentView() voidonCreate(BundlesavedInstanceState)voidonStart()voidonRestart()voidonResume()voidonPause()voidonStop()voidonDestroy()intent-filter。AndroidIntent機制來協(xié)助應(yīng)用間的交互與通訊,Intent負(fù)責(zé)對應(yīng)用中一次操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進行描述,AndroidIntentIntent傳遞給調(diào)用的組件,并完成組件的調(diào)用。Intent不僅可用于應(yīng)用程序之間,也可用于應(yīng)用程序的Activity/Service之間的交互。因此,Intent在這里起著一個中介的作用,Context.startActivityorActivity.startActivityForResult()啟Activity;Context.startService()Context.bindService()和服務(wù)交互通過廣播方法(比如 dStickyBroadcast())發(fā)broadcastreceivers。SDk中定義了一些標(biāo)準(zhǔn)的動作,包括componentInitiateaphonecall.DisplaydatafortheusertoStartupastheinitialactivityofatask,withnodatainputandnoreturnedoutput.SynchronizedataonaserverwithdataonthemobilebroadcastAwarningthatthebatteryislow.broadcastAheadsethasbeenpluggedintothedevice,orunpluggedfrombroadcastThescreenhasbeenturnedon.broadcastThesettingforthetimezonehas"ect.SHOW_COLORAndroidURI來表示,如在聯(lián)系人應(yīng)用中,一個指向某聯(lián)系URI可能為:content://contacts/1URI數(shù)據(jù)的類型是不同的(type屬性指定特定類型數(shù)據(jù)ACTION_EDITData為文件URI,打為:URI,網(wǎng)絡(luò)為http:URI,而由contentprovider提供的數(shù)據(jù)則為contentURIstype(數(shù)據(jù)類型Intent的數(shù)據(jù)類型(MIMEIntent的category(類別,被執(zhí)行動作的附加信息。例如LAUNCHER_CATEGORY表Intent的接受者應(yīng)該在Launcher中作為頂級應(yīng)用出現(xiàn);而Theactivitycanbesafelyinvokedbythebrowsertodisplaydatareferencedbyalink—forexample,animageoranTheactivitycanbeembeddedinsideofanotheractivitythathostsTheactivitydisplaysthehomescreen,the screentheuserseeswhenthedeviceisturnedonorwhentheHOMEkeyispressed.Theactivitycanbetheinitialactivityofataskandislistedinthetop-levelapplicationlauncher.Theactivityisapreferencecomponent(組件IntentAndroid會Intent中包含的其它屬性的信息,比如action、data/type、category進行component這個屬性有指以后,Intent的其它所有屬性都是可選的。extras里,傳給電子郵件發(fā)送組件。IntentIntentIntent的發(fā)Intent對象時,并不知道也不關(guān)心接收者是誰,有利于降低發(fā)送者和Intent,Android不需要去做解析,因為目標(biāo)組件已經(jīng)很明確,Android需要解析的是那些隱式Intent,通過解析,將Intent給可以處理此IntentActivity、IntentReceiver或Service。Intent解析機制主要是通過查找已在AndroidManifest.xml中的所,AndroidIntentaction、type、category這三個屬性來進行判斷的,Intent指明定了actionIntentFilter的action列表中就action,否則不能匹配;Intenttypedataaction一樣,Intent的數(shù)據(jù)類型,否則不能匹配。:typeIntentscheme(http:mailto:)進行匹配。同上,Intentschemescheme列表中。Intent指定了一個或多個category,這些類別必須全部出現(xiàn)在組建的類Intent中包含了兩個類別:LAUNCHER_CATEGORY和Intent-Filter的定義<data /mpeg"android:scheme="http"...<dataandroid:scheme="http" /*"<activityandroid:name="NotesList"Intent用法實例ActivityIntentit=newIntent(Activity.Main.this,Activity2.class);向下一個Activity傳遞數(shù)據(jù)(BundleIntentit=newIntent(Activity.Main.this,Activity2.class);Bundlebundle=newBundle();bundle.putString("name","ThisisfromMainActivity!"); //it.putExtra(“test”,"shuju”); //startActivityForResultBundlebundle=getIntent().getExtras();String向上一個Activity返回結(jié)果(setResult(it,REQUEST_CODE)Activity)Intentintent=getIntent();Bundlebundle2=newBundle();bundle2.putString("name","ThisisfromShowMsg!");回調(diào)上一個Activity的結(jié)果處理函數(shù)(onActivityResult) protectedvoidonActivityResult(intreqode,intresultCode,Intentdata){//TODOAuto-generatedmethodstubsuper.onActivityResult(reqode,resultCode,data);if(reqode==REQUEST_CODE){elseif(resultCode==RESULT_OK){Stringtemp=null;Bundlebundle=data.getExtras(); }}}下面是來的其他的一些Intent用法實例(轉(zhuǎn)自javaeye)Uriuri= Intentit=newIntent(Intent.ACTION_VIEW,Uriuri=Uri.parse("geo:38.899533,-Intentit=newIntent(Intent.ACTION_VIEW,//geoURIUriuri= Intentit=newIntent(Intent.ACTION_VIEW,//wherestartLat,startLng,endLat,endLngarealongwithdecimalslike:打Uriuri= Intentit=newIntent(Intent.ACTION_DIAL,//直接打出Uriuri=Uri.parse("Intentit=newIntent(Intent.ACTION_CALL,//AndroidManifest.xmlIntentit=newIntent(Intent.ACTION_VIEW,it.putExtra("sms_body","TheSMSUriuri=Intentit=newIntent(Intent.ACTION_SENDTO,it.putExtra("sms_body","TheSMS//Uriuri=Intentit=newit.putExtra("sms_body","some傳送Uriuri= Intentit=newIntent(Intent.ACTION_SENDTO,Intentit=new body Intentit=newString[] String[] body subjectstartActivity(Intent.createChooser(it,"ChooseIntentit=newstartActivity(Intent.createChooser(it,"Choose多Uriuri=Uri.parse("file:///sdcard/song.mp3");Intentit=newIntent(Intent.ACTION_VIEW,uri);Uriuri=(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,"1");Intentit=newIntent(Intent.ACTION_VIEW,uri);MarketUriuri=//wherepkg_nameisthefullpackagepathforanUriuri=//whereapp_idistheapplicationID,findthe//byclickingonyourapplicationonMarket//pageandnoticetheIDfromtheaddressbarUninstall應(yīng)用程序Uriuri=Uri.fromParts("package",strPackageName,Intentit=newIntent(Intent.ACTION_DELETE,中歌曲。在一個器程序中,大概要有一個或多個活動(activity),因為用戶希望他導(dǎo)航到其他界面時音樂繼續(xù)。這種情況下,器活動(activity)要用Context.startService()啟動一個服務(wù)來在運行保持音BroadcastBroadcaseReceiverAndroidBroadcastReceiver簡介AndroidActivityServiceBroadcast活動(Activity)-服務(wù)(Service)-相當(dāng)于運行的廣播(Broadcast)-廣播(BroadcastReceiver)-用于接收廣Intent-BroadcastReceiverBroadcast進行過濾接受并響應(yīng)的一類Broa

溫馨提示

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

最新文檔

評論

0/150

提交評論