




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1、 有關(guān)數(shù)據(jù)庫mysql分頁:select * from tableName limit 0,5;(從0開始,這個語句查詢第 1,2,3,4,5條記錄。第一個參數(shù)是指從那條開始,0表示從第一條開始,相當(dāng)于數(shù)組中的下標(biāo)。第二個參數(shù)指最多查詢多少條記錄)。oracle分頁:select x.* from (select z.*,rownum numbers from(select * from tableName where xxx order by yyy) z where rownum<=currentPage*pageSize) x where x.numbers>=(curr
2、entPage-1)*pageSize+1;或者 select * from (select z.*,rownum numbers from(select * from tableName where xxx order by yyy) z where rownum<=currentPage*pageSize) where numbers >=(currentPage-1)*pageSize+1;jdbc工具類:public class JdbcUtils private static JdbcUtils jdbcUtils=null;public JdbcUtils getIns
3、tance()if(null=jdbcUtils)jdbcUtils=new JdbcUtils();return jdbcUtils;static tryClass.forName("");catch(Exception e)e.printStackTrace();private String url=""private String user=""private String password=""public Connection getConnection()Connection connection=nu
4、ll;tryconnection =DriverManager.getConnection(url, user, password);catch(Exception e)e.printStackTrace();return connection;public void closeConnection(ResultSet rs,Statement st,Connection connection)tryif(null!=rs)tryrs.close();catch(Exception e)e.printStackTrace();catch(Exception e)e.printStackTrac
5、e();finallyif(null!=st)tryst.close();catch(Exception e)e.printStackTrace();finallyif(null!=connection)tryconnection.close();catch(Exception e)e.printStackTrace();public class XxxDaoImpprivate JdbcUtils jdbcUtils=JdbcUtils.getInstance();public List list(String sql)Connection conn=jdbcUtils.getConnect
6、ion();/Statement st=null;PreparedStatement pst=null;ResultSet rs=null;List list=null;try/st=conn.createStatement();/rs=st.executeQuery(sql);pst=conn.prepareStatement(sql);pst.setString(0, "XXX");rs=pst.executeQuery();list =new ArrayList();while(rs.next()User user=new User();user.setId(Long
7、.valueOf(rs.getLong("id");user.setName(rs.getString("name");list.add(user);catch(Exception e)e.printStackTrace();finallyjdbcUtils.closeConnection(rs, pst, conn);return list;2、 有關(guān)集合List接口和Set接口都繼承自Collection接口,Map接口沒有繼承自Collection接口。Map 主要用于存儲鍵(key)值(value)對,根據(jù)鍵得到值,因此鍵不允許鍵重復(fù),但允許值重
8、復(fù)。HashMap最多只允許一條記錄的鍵為Null;允許多條記錄的值為Null;HashMap不支持線程的同步,即任一時刻可以有多個線程同時寫HashMap;可能會導(dǎo)致數(shù)據(jù)的不一致。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。LinkedHashMap LinkedHashMap也是一個HashMap,但是內(nèi)部維持了一個雙向鏈表,可以保持put順序。TreeMap,默認(rèn)按鍵升序排序,但是它可以排序需要實現(xiàn)comparator接口,這樣你可以自定義排序規(guī)則。ArrayList和Vector底層都是由數(shù)組實現(xiàn)的,Vector是線程安
9、全的,所以性能不如ArrayList。Collections是針對集合類的一個幫助類,他提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全化(例如synchronizedMap)等操作。Set里的元素是不能重復(fù)的, 用iterator()方法來區(qū)分重復(fù)與否,內(nèi)部用equals方法來判斷兩個元素是否相同。List、Map、Set三個接口,存取元素時,各有什么特點?注意此題不是問ArrayList和LinkedList存取特點。List,可以有重復(fù)元素,順序以add順序為順序。Set不能有重復(fù)元素,Map存放鍵值對,key不能重復(fù),但是value可以重復(fù)。3、數(shù)據(jù)結(jié)構(gòu)相關(guān):從數(shù)據(jù)結(jié)構(gòu)層次理解,
10、棧是一種先進(jìn)后出的線性表,只要符合先進(jìn)后出的原則的線性表都是棧。至于采用的存儲方式(實現(xiàn)方式)是順序存儲(順序棧)還是鏈?zhǔn)酱鎯Γㄦ準(zhǔn)綏#┦菦]有關(guān)系的。堆則是二叉樹的一種,有最大堆最小堆。從系統(tǒng)層次理解,我們在談到內(nèi)存管理的時候也有堆和棧的說法,例如Object o=new Object(),我們說變量o在棧中分配內(nèi)存空間,而對象在堆上分配內(nèi)存空間。棧區(qū)由編譯器自動分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。堆區(qū)在c+中一般由程序員分配釋放, 若程序員不釋放,程序結(jié)束時可能由OS回收 ,在java中有系統(tǒng)分配,由gc回收。注意這里的堆與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分
11、配方式倒是類似于鏈表。4、有關(guān)抽象類、接口接口是否可繼承接口? 抽象類是否可實現(xiàn)(implements)接口? 抽象類是否可繼承實體類? 接口可以繼承接口。抽象類可以實現(xiàn)(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構(gòu)造函數(shù)。紅色字體怎么理解:這里牽扯到兩個基礎(chǔ)知識A: 所有的class都必須有一個構(gòu)造方法,如果你沒有在代碼里聲明構(gòu)造方法,系統(tǒng)會自動給你生成一個公有無參的構(gòu)造方法。而只要你自己聲明了一個構(gòu)造方法,無論有參無參,私有公有,系統(tǒng)就不再幫你生成默認(rèn)無參構(gòu)造器了。B: 所有的子類構(gòu)造器都要求在第一行代碼中調(diào)用父類構(gòu)造器,如果不寫,系統(tǒng)默認(rèn)去調(diào)用父類的無
12、參構(gòu)造器。好了現(xiàn)在進(jìn)入正題,什么是必須有明確的構(gòu)造函數(shù)?意思是類必須能提供一個可供子類調(diào)用的構(gòu)造器。假設(shè)父類你定義了一個私有的構(gòu)造器,而且沒有提供其他構(gòu)造器,那么系統(tǒng)就不會給父類提供一個默認(rèn)無參構(gòu)造器(因為它已擁有了一個構(gòu)造器),這時子類,根據(jù)B規(guī)則是要調(diào)用父類的構(gòu)造器,顯然父類是無法給子類提供構(gòu)造器的。我們發(fā)現(xiàn)不僅抽象類繼承實體類時需要實體類提供明確的構(gòu)造函數(shù),而且子類繼承父類時,父類也必須能夠提供明確的構(gòu)造函數(shù)我們都知道,有抽象方法的類是抽象類,反過來說,抽象類都有抽象方法嗎? 不見的。也就說抽象類可以沒有抽象方法。抽象類可以實例化嗎?不可以。Static Nested Clas
13、s 和 Inner Class的不同:前者是靜態(tài)內(nèi)部類,后者是內(nèi)部類,靜態(tài)內(nèi)部類不以外部類的實例化而實例化,而后者必須是外部類實例化后方能實例化。abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?不能。為甚呢?abstract,是抽象的,只有聲明而沒有實現(xiàn),實現(xiàn)要放入到子類中來實現(xiàn)。 static是靜態(tài)的,是一種屬于類而不屬于對象的方法或者屬性。native 本地方法,這種方法和抽象方法及其類似,它也只有方法聲明,沒有方法實現(xiàn),但是它與抽象方法不同的是,它把具體實現(xiàn)移交給了本地系統(tǒng)的函數(shù)庫,而沒有通過虛擬機,可以說是java
14、與其它語言通訊的一種機制。synchronized 是同步,然而同步是需要有具體操作才能同步的,如果像abstract只有方法聲明,那同步一些什么東西就會成為一個問題了一個類不能既被聲明為 abstract的,又被聲明為final的。c+虛類相當(dāng)與java里面的抽象類,與接口的不同之處如下(相當(dāng)于抽象類和接口的區(qū)別):相同點:都不能實例化。不同點:接口中的所有方法都是抽象的,抽象類沒有此要求(甚至可以全部是非抽象的方法)。接口不可以有構(gòu)造方法,而抽象類可以有。一個類可以實現(xiàn)多個接口,但只能繼承一個抽象類。接口一定是public的,但抽象類就不一定了。接口的方法可以使pulic和default,
15、抽象類的方法的防衛(wèi)權(quán)限不確定。接口的成員是static and final的,而抽象類可以任意。這個是規(guī)定的。接口成員可以不定義成靜態(tài)常量 但是效果和靜態(tài)常量一樣。的成員為什么只能是static and final的?而抽象類可以是任何類型5、有關(guān)equals = hashcode兩個對象值相同(x.equals(y) = true),但卻可有不同的hash code,這句話對不對?對的。equals()和hashCode()都來自java.lang.Object. 當(dāng)然你可以復(fù)寫他們.這兩個方法之間是沒有任何關(guān)系的。比如a.equals(b).僅當(dāng)a、b這兩個變量的棧內(nèi)存中的值
16、相等(放的對象堆內(nèi)存塊的首地址),才返回true.當(dāng)然如String等類已經(jīng)對這個方法進(jìn)行了重寫,比較的就不再是堆內(nèi)存地址了.而是對內(nèi)存中的值!hashCode()的值與內(nèi)存地址有著密切的關(guān)系,他們之間的關(guān)系是一一映射。所以對于沒有復(fù)寫Object類equals方法的類,如果equals返回true,那么hashCode一定相等,而對于復(fù)寫了equals方法的類,如果eqals方法返回true,則無法確定hashCode是否相等變量分兩種:基本類型變量和對象類型變量。對于對象類型的變量,例如Object o=new Object();這里牽扯到兩個內(nèi)存塊,變量o占用了一個棧內(nèi)存塊,對象new
17、Object()占用了一個堆內(nèi)存塊,此時變量o中存放的是new Object()對象的首地址,此時如果你要比較變量的值即棧內(nèi)存塊中的值是否相等,請使用用=號。那么equals方法呢?這取決于你比較的對象所歸屬的類是否重寫了equals方法,如果沒有,則equals方法和=意義完全相同,這是因為Object類的equals方法等同于=號決定的,如果你重寫了equals方法,比如String 類,String類通過equals方法來比較兩個字符串值是否相等,這時equals方法比較的就是堆內(nèi)存塊的值。某些人說=比較的是地址(正確),而equals比較的內(nèi)容(比較的是那個的內(nèi)容,是棧?還是堆?是棧,
18、對于String顯然是錯誤的;是堆,對于沒有重寫equals方法的User類,顯然也是錯誤的)同步和異步b/s是同步,而ajax則是異步同步:客戶端發(fā)送請求,瀏覽器等待服務(wù)器處理(此時瀏覽器什么也不能干,只能等待),處理完畢后返回。異步:客戶端發(fā)送請求,服務(wù)器處理請求(此時瀏覽器可以干其他事情),處理后返回。6、有關(guān)異常運行時異常與一般異常有何異同?運行期的異常不需要你去捕獲,也無需聲明(方法后thows)。直接交由系統(tǒng)處理;而非運行期的異常最終(你可以繼續(xù)聲明,但最終還是要被捕捉以進(jìn)行處理)是需要程序員去捕獲處理的。 error,exception:error 錯誤,對于這種問題,程序無能為
19、力,只能退出別無選擇,例如內(nèi)存溢出。exception 異常,由于設(shè)計的瑕疵導(dǎo)致的問題,可以向上拋出(最終還是要被捕捉進(jìn)行處理),或者捕捉進(jìn)行解決。try 里有一個return語句,那么緊跟在這個try后的finally 里的code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后? 會執(zhí)行,在return前執(zhí)行。當(dāng)一個線程進(jìn)入一個對象的一個synchronized方法后,其它線程是否可進(jìn)入此對象的其它方法? 不能,一個對象的一個synchronized方法只能由一個線程訪問。Java中的異常處理機制的簡單原理和應(yīng)用:當(dāng)JAVA 程序違反了JAVA的語義規(guī)則時,JAVA虛擬機就會將發(fā)生的錯
20、誤表示為一個異常. 違反語義規(guī)則包括2種情況。一種是JAVA類庫內(nèi)置的語義檢查(運行期異常)。例如數(shù)組下標(biāo)越界,會引發(fā)IndexOutOfBoundsException;訪問null的對象時會引發(fā)NullPointerException。另一種情況就是JAVA允許程序員擴(kuò)展這種語義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時用throw關(guān)鍵字引發(fā)異常。所有的異常都是 java.lang.Thowable的子類。throw和throws區(qū)別:thow和trycatchfinally或者throws配套使用,無法單獨使用;throws可以單獨使用;thow位于代碼中,后接異常對象;thwos位
21、于方法后,thows后接異常類型,多個異常用逗號隔開;JAVA語言如何進(jìn)行異常處理,關(guān)鍵字:throws,throw,try,catch,finally分別代表什么意義?一般情況下是用try來執(zhí)行一段程序,如果出現(xiàn)異常,程序會拋出(throw)一個異常,這時候你可以通過它的類型來catch它,最后你可以使用finally來執(zhí)行無論是否拋出異常都執(zhí)行的代碼。throw語句用來明確地拋出一個"異常"。throws用來標(biāo)明一個成員函數(shù)可能拋出的各種"異常"。finally為確保一段代碼不管發(fā)生什么"異常"都被執(zhí)行一段代碼。給我一個常見的運行
22、期異常,NullpointerException, ClassCastException,Hibernate異常都是運行期異常。當(dāng)一個對象被當(dāng)作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞? 是值傳遞。Java 編程語言只有值傳遞參數(shù)。當(dāng)一個對象實例作為一個參數(shù)被傳遞到方法中時,參數(shù)的值就是對該對象的引用。對象的內(nèi)容可以在被調(diào)用的方法中改變,但對象的引用是永遠(yuǎn)不會改變的。Anonymous Inner Class (匿名內(nèi)部類) 是否可以extends(繼承)其它類,是否可以implements(實現(xiàn))interface(接口)? 可
23、以繼承其他類或?qū)崿F(xiàn)其他接口,在swing編程中常用此方式。 7、有關(guān)線程:sleep() 和 wait() 有什么區(qū)別:sleep是線程類(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時間,給執(zhí)行機會給其他線程,但是監(jiān)控狀態(tài)依然保持,到時后會自動恢復(fù)。調(diào)用sleep不會釋放對象鎖;wait是Object類的方法,對此對象調(diào)用wait方法導(dǎo)致本線程放棄對象鎖,進(jìn)入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法(或notifyAll)后本線程才進(jìn)入對象鎖定池準(zhǔn)備獲得對象鎖進(jìn)入運行狀態(tài);sleep到時后,和針對此對象發(fā)出了notify或notifyAll通知,線程可能會進(jìn)入運行狀態(tài),但不
24、一定進(jìn)入運行狀態(tài)。請說出你所知道的線程同步的方法。wait():使一個線程處于等待狀態(tài),并且釋放所持有的對象的lock; notify():喚醒一個處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時候,并不能確切的喚醒某一個等待狀態(tài)的線程,而是由JVM確定喚醒哪個線程,而且不是按優(yōu)先級。notifyAll喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。多線程有幾種實現(xiàn)方法,都是什么? 分別是繼承Thread類與實現(xiàn)Runnable接口;多線程同步有幾種實現(xiàn)方法,都是什么? 分別是synchronized,wait與notify線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之
25、間的關(guān)系:線程指在程序執(zhí)行過程中,能夠執(zhí)行程序代碼的一個最小執(zhí)行單位,每個程序至少都有一個線程,也就是程序本身。Java中的線程有四種狀態(tài)分別是:(新建)、運行、就緒、掛起、結(jié)束。 啟動一個線程是用run()還是start()?啟動一個線程是調(diào)用start()方法,使線程所代表的虛擬處理機處于可運行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會立即運行。run()方法可以產(chǎn)生必須退出的標(biāo)志來停止一個線程。 簡述synchronized和java.util.concurrent.locks.Lock的異同?主要相同點:Lock能完成synchronized所實現(xiàn)的所有功能;主要不同
26、點:Lock有比synchronized更精確的線程語義和更好的性能。synchronized會自動釋放鎖,而Lock一定要求程序員手工釋放,并且必須在finally句中釋放。8、有關(guān)gc垃圾回收的優(yōu)點和原理:Java語言中一個顯著的特點就是引入了垃圾回收機制,使c+程序員最頭疼的內(nèi)存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候不再需要考慮內(nèi)存管理。由于有個垃圾回收機制, Java中的對象不再有"作用域"的概念,只有對象的引用才有"作用域"。垃圾回收可以有效的防止內(nèi)存泄露,有效的使用可以使用的內(nèi)存。垃圾回收器通常是作為一個單獨的低級別的線程運
27、行,不可預(yù)知的情況下對內(nèi)存堆中已經(jīng)死亡的或者長時間沒有使用的對象進(jìn)行清楚和回收?;厥諜C制有分代復(fù)制垃圾回收和標(biāo)記垃圾回收,增量垃圾回收。Gc的特點:只回收堆上的內(nèi)存;無法精確控制,它會在適當(dāng)?shù)臅r候(例如內(nèi)存不夠用了)進(jìn)行回收,回收哪些不再被變量引用的對象;在回收之前一定調(diào)用finnalize方法。System.gc();/建議jvm進(jìn)行垃圾回收,此時jvm可能進(jìn)行回收,也可能不進(jìn)行回收,但是如果進(jìn)行回收一定會調(diào)用finalize方法。請注意finnalize方法是Object的對象。也就是說jvm是一個一個對象進(jìn)行回收的!垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內(nèi)存嗎(不可以)?有什
28、么辦法主動通知虛擬機進(jìn)行垃圾回收?對于GC來說,當(dāng)程序員創(chuàng)建對象時,GC就開始監(jiān)控這個對象的地址、大小以及使用情況。通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對象。通過這種方式確定哪些對象是"可達(dá)的",哪些對象是"不可達(dá)的"。當(dāng)GC確定一些對象為"不可達(dá)"時,GC就有責(zé)任回收這些內(nèi)存空間??梢?。程序員可以手動執(zhí)行System.gc(),通知GC運行,但是Java語言規(guī)范并不保證GC一定會執(zhí)行。8、 javase其他瑣碎點面向?qū)ο笳Z言的幾個特點:封裝、繼承、多臺、抽象。一個".java"源文件中是否可
29、以包括多個類(不是內(nèi)部類)?有什么限制?可以。必須只有一個類名與文件名相同。String是final型的類,因此無法繼承它,臨外它存放不可變的字符串。可以直接用=號進(jìn)行賦值。StringBuffer是非finnal型的類,因此他可以被繼承,臨外它存放的是可變的字符串,我們不能用=號進(jìn)行賦值,賦值的話用其方法append!另外StringBuffer能節(jié)省空間(參見String s = new String("xyz");創(chuàng)建了幾個String Object?)。switch:byte、char、short、int四種基本類型以及它們的包裝類(需要Java5.0/1.5以上版
30、本支持)都可以用于switch語句。 long、float、double、boolean四種基本類型以及它們的包裝類(在Java所有版本中)都不能用于switch語句。 enum類型,即枚舉類型可以用于switch語句,但是要在Java5.0(1.5)版本以上才支持。 所有類型的對象(包括String類,但在Java5.0/1.5以上版本中,該項要排除byte、char、short、int四種基本類型對應(yīng)的包裝類)都不能用于switch語句。簡述邏輯操作(&,|,)與條件操作(&&,|)的區(qū)別:.條件操作只能操作布爾型的,而邏輯操作不僅可以操作布爾型,而且可以操作數(shù)值型
31、;邏輯操作不會產(chǎn)生短路char型變量中能不能存貯一個中文漢字?為什么? :能夠定義成為一個中文的,因為java中以unicode編碼,一個char占16個字節(jié),所以放一個中文是沒問題的。String s = new String("xyz");創(chuàng)建了幾個String Object? :兩個Math.round(11.5)等於多少? Math.round(-11.5)等於多少? Math.round(11.5)=12; Math.round(-11.5)=-11;總結(jié):round方法返回與參數(shù)最接近的長整數(shù),參數(shù)加1/2后求其floor.short s1 = 1; s1 =
32、s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯? short s1 = 1; s1 = s1 + 1; (s1+1運算結(jié)果是int型,需要強制轉(zhuǎn)換類型(大類型變小類型);short s1 = 1; s1 += 1;(可以正確編譯)因為它是自加操作。int 和 Integer 有什么區(qū)別:引用類型和原始類型的行為完全不同,并且它們具有不同的語義。引用類型和原始類型具有不同的特征和用法,它們包括:大小和速度問題,這種類型以哪種類型的數(shù)據(jù)結(jié)構(gòu)存儲,當(dāng)引用類型和原始類型用作某個類的實例數(shù)據(jù)時所指定的缺省值。對象引用實例變量的缺省值為 null,而原始類型實例變量的缺省值
33、與它們的類型有關(guān)。Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型? 方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù)(包括順序)和相同的返回值,總之完全相同,我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。如果在一個類中定義了多個同名的方法,它們或有不
34、同的參數(shù)個數(shù)或有不同的參數(shù)類型或參數(shù)屬性不同,或返回值不同,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。java中實現(xiàn)多態(tài)的機制是什么?重載和重寫。構(gòu)造器Constructor是否可被override? 構(gòu)造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。String類是final類故不可以繼承。數(shù)組有沒有l(wèi)ength()這個方法? String有沒有l(wèi)ength()這個方法?數(shù)組沒有l(wèi)ength()這個方法,有l(wèi)ength的屬性。String有有l(wèi)ength()這個方法。 final,
35、 finally, finalize的區(qū)別:final 用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承;finally是異常處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行; finalize是Object類的一個方法,在垃圾收集器執(zhí)行的時候會調(diào)用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關(guān)閉文件等。是否可以從一個static方法內(nèi)部發(fā)出對非static方法的調(diào)用?不可以,如果其中包含對象的method();不能保證對象初始化.靜態(tài)變量和實例變量的區(qū)別?前者從屬于一個類,你可以使用類名.變量名調(diào)用也可以使用實例引用名.變量名調(diào)用,而后者從屬于類某一實例,你只能
36、使用實例變量名.變量名調(diào)用。java中會存在內(nèi)存泄漏嗎,請簡單描述。會。如:int i,i2; return (i-i2); /when i為足夠大的正數(shù),i2為足夠大的負(fù)數(shù)。結(jié)果會造成溢位,導(dǎo)致錯誤。什么是java序列化,如何實現(xiàn)java序列化?序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內(nèi)容進(jìn)行流化??梢詫α骰蟮膶ο筮M(jìn)行讀寫操作,也可將流化后的對象傳輸于網(wǎng)絡(luò)之間。序列化是為了解決在對對象流進(jìn)行讀寫操作時所引發(fā)的問題;序列化的實現(xiàn):將需要被序列化的類實現(xiàn)Serializable接口,該接口沒有需要實現(xiàn)的方法,implements Serializable只是為了標(biāo)注該對象是
37、可被序列化的,然后使用一個輸出流(如:FileOutputStream)來構(gòu)造一個 ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數(shù)為obj的對象寫出(即保存其狀態(tài)),要恢復(fù)的話則用輸入流。使用clone()方法時,通常都有一行代碼,是什么?Clone 有缺省行為,super.clone();他負(fù)責(zé)產(chǎn)生正確大小的空間,并逐位復(fù)制。在JAVA中,如何跳出當(dāng)前的多重嵌套循環(huán)?用break; return 方法。常用的類:BufferedReader BufferedWriter F
38、ileReader FileWirter String Integer常用的包:java.lang java.awt java.io java.util java.sql常用的接口:Remote List Map Document NodeList Java有沒有g(shù)oto? 有,它是java中的保留字,現(xiàn)在沒有在java中使用。我們在web應(yīng)用開發(fā)過程中經(jīng)常遇到輸出某種編碼的字符,如iso8859-1等,如何輸出一個某種編碼的字符串?tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");j2ee常
39、用的設(shè)計模式?說明工廠模式: Factory(工廠模式),Singleton(單例模式),Proxy(代理模式)、Adapter(適配器模式)等。根據(jù)工廠模式實現(xiàn)的類可以根據(jù)提供的數(shù)據(jù)生成一組類中某一個類的實例,通常這一組類有一個公共的抽象父類。當(dāng)?shù)玫阶宇惖膶嵗?,開發(fā)人員可以調(diào)用基類中的方法而不必考慮到底返回的是哪一個子類的實例。排序都有哪幾種方法?請列舉。用JAVA實現(xiàn)一個快速排序。排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸并排序,分配排序(箱排序、基數(shù)排序)描述一下JVM加載class文件的原理機制:JVM中類的
40、裝載是由ClassLoader和它的子類來實現(xiàn)的.要經(jīng)過三個步驟來完成:裝載、鏈接和初始化,其中鏈接又可以分成校驗、準(zhǔn)備、解析.裝載:查找和導(dǎo)入類或接口的二進(jìn)制數(shù)據(jù); 鏈接:執(zhí)行下面的校驗、準(zhǔn)備和解析步驟,其中解析步驟是可以選擇的; 校驗:檢查導(dǎo)入類或接口的二進(jìn)制數(shù)據(jù)的正確性; 準(zhǔn)備:給類的靜態(tài)變量分配并初始化存儲空間; 解析:將符號引用轉(zhuǎn)成直接引用;初始化:激活類的靜態(tài)變量,初始化Java代碼和靜態(tài)Java代碼塊幾乎所有的類都不能定義成為 靜態(tài)的(static),但有一個例外就是內(nèi)部類,把內(nèi)部類定義成靜態(tài)的話,如果能得到它的外部類的實例那么就不需要用new來實例化內(nèi)部類。9、jsp、serv
41、letservlect的工作流程:a、加載配置文件和實例化servlect,b、一個請求到達(dá)server,server根據(jù)請求初始化請求對象和響應(yīng)對象,并激活servlet的service方法,傳遞請求對象和響應(yīng)對象,service方法根據(jù)請求方式調(diào)用相應(yīng)的方法,如doget、dopost方法等。在這些方法中,會根據(jù)請求對象,獲得一些特定信息,還可能訪問一些其他的資源,然后進(jìn)行一些邏輯處理,如保存數(shù)據(jù)到數(shù)據(jù)庫等。最后,方法會使用響應(yīng)對象的方法,將響應(yīng)返回server,最終到達(dá)客戶端。c、當(dāng)容器不再需要servlet時,就調(diào)用servlet的destroy方法銷毀servlet!Servlet只
42、會被初始化一次,也就是它以多線程的方法處理多個相同的請求。初始化不同于實例化,這里不再敘述,初始化有容器來保證,容器保證在請求之前完成初始化。什么時候?qū)嵗痵ervlet?分三種情況:loadOnStartup < 0 即負(fù)數(shù)的情況下,web容器啟動的時候不做實例化處理,servlet首次被調(diào)用時做實例化loadOnStartup > 0 web容器啟動的時候做實例化處理,順序是由小到大,正整數(shù)小的先被實例化loadOnStartup = 0 web容器啟動的時候做實例化處理,相當(dāng)于是最大整數(shù),因此web容器啟動時,最后被實例化Servlet和
43、CGI的區(qū)別: servlet處于服務(wù)器進(jìn)程中,它通過多線程方式運行其service方法,一個實例可以服務(wù)于多個相同的請求,并且其實例一般不會銷毀,而CGI對每個請求都產(chǎn)生新的進(jìn)程,服務(wù)完成后就銷毀,所以效率上低于servlet。Jsp和servlet的區(qū)別:Jsp是html和java代碼的結(jié)合體,它在mvc充當(dāng)view層,但最終還是會被編譯為servlet,servlet在mvc充當(dāng)control層,主要完成頁面轉(zhuǎn)向,業(yè)務(wù)邏輯的調(diào)用等操作。forward和rederect的區(qū)別forward是服務(wù)器端跳轉(zhuǎn),地址欄不會發(fā)生變化,有服務(wù)器端完成轉(zhuǎn)向。rederect是客戶端跳轉(zhuǎn),地址欄會發(fā)生變化
44、,由服務(wù)器端向客戶端發(fā)送一條狀態(tài)碼,客戶端重新發(fā)起請求。這時上次請求的參數(shù)會丟失。get、post的區(qū)別:get提交的數(shù)據(jù)一般在1kb一下,post理論上長度不受限制;get方式發(fā)送請求,參數(shù)顯示在地址欄上,post方式,所有參數(shù)保存到消息體中,因此post提交方式比get方式安全。post提交表單數(shù)據(jù)時,必須把請求的Content_Type消息頭設(shè)置為application/x-www-form-urlencoded,把Content-Length消息頭設(shè)置為消息體的長度Jsp動態(tài)包含和靜態(tài)包含區(qū)別:靜態(tài)包含:<% include file=”%>,將所包含文件與主文件融為一體進(jìn)
45、行編譯,因此應(yīng)慎用一些標(biāo)簽如<html>并注意jsp標(biāo)簽不能重復(fù)例如使用<%!%>聲明了相同變量相同的方法和<%>聲明的相同的局部變量。動態(tài)包含:<jsp:include page=”%>,是服務(wù)器跳轉(zhuǎn),包含文件與主文件分開編譯。它會時時的檢查所包含文件的變化。<jsp:include page=”>和<jsp:forward page=”>區(qū)別相同點:都是服務(wù)器跳轉(zhuǎn)、都可以傳遞參數(shù)不同點:前者還會返回主頁面,后者跳走后不會返回。服務(wù)器跳轉(zhuǎn)兩種方式:使用標(biāo)簽<jsp:forward>、request.getDi
46、spatcher(xxx頁面).forward(request,response)jsp內(nèi)置對象有哪些:request是javax.servlet.http.HttpServeletRequest實例;response是javax.servlet.http.HttpServeletResponse實例:response.sendRedirect,session是javax.servlet.http.HttpServeletSession實例application是javax.servlet.ServletContext實例config是javax.servlet.ServletConfig實例
47、out是javax.servlet.jsp.JspWriter實例pageContext是javax.servlet.jsp.PageContext實例exception是java.lang.Exception實例page是java.lang.Object實例request常見的方法有: getAttribute、setAttribute、getSession、getParameter、getparameterValues、setCharacterEncoder(“utf-8”)、request.getDespatcher(“目標(biāo)地址“).forward(request,response)。r
48、esponse常見的方法有:setContentType("text/xml")、getAttribute、setAttribute、sendRedirect、getWriter(是PrintWriter實例)、setCharacterEncoding("UTF-8")session常見的方法有:getAttribute、setAttribute、getServletContextapplication常見的方法有:getInitParameter(返回的時字符串)。其他內(nèi)置對象的方法都不常用。如何現(xiàn)實servlet的單線程模式:<% page i
49、sThreadSafe="false"%>。頁面間對象傳遞的方法:request,session,application,cookie等jsp常用的指令:<%page language="java" contenType="text/html;charset=gb2312" session="true" buffer="64kb" autoFlush="true" isThreadSafe="true" info="text"
50、; errorPage="error.jsp" isErrorPage="true" isELIgnored="true" pageEncoding="gb2312" import="java.sql.*"%>;<%include file="filename"%>;%taglib prefix="c"uri="http:/."%;isErrorPage(是否能使用exception內(nèi)置對象) 、isELIgnored
51、(是否忽略表達(dá)式)。Servlet監(jiān)聽器接口:ServletContextListener監(jiān)聽?wèi)?yīng)用程序啟動事件,就是我們通常的剛剛打開tomcat加載站點時的事件接口:ContextAttributeListener: 監(jiān)聽WEB應(yīng)用增加屬性的事件即:監(jiān)聽ServletContext.setAttribute(String key,String object)被調(diào)用、以及監(jiān)聽銷毀。接口:HttpSessionListener:監(jiān)聽Session被創(chuàng)建和銷毀Servlet過濾器,主要應(yīng)用在,編碼設(shè)置,權(quán)限設(shè)置等。過濾器就是用戶訪問servlet的時候劫持某些servlet,在根據(jù)判斷條件是否重定
52、向,或者響應(yīng)該請求。jsp四種會話跟蹤技術(shù)Cookie:服務(wù)器在一個應(yīng)答首部傳遞給瀏覽器的名稱/值對。瀏覽器保存的時間由cookie的過期時間屬性來指定。當(dāng)瀏覽器向某個服務(wù)器發(fā)送一個請求時,它會檢查其保存的cookie,并在請求首部中包含從同一臺服務(wù)器上接收到的所有cookie。 Session tracking:在瀏覽器和服務(wù)器之間不直接傳送所有的狀態(tài)信息,而只是傳遞表示符(session ID)。瀏覽器發(fā)送sessionID,服務(wù)器跟蹤與該會話相關(guān)聯(lián)的所有信息。傳遞sessionID可以通過cookie和URL復(fù)寫技術(shù),大部分容器都支持這兩種技術(shù)。服務(wù)器無法分辨用戶是否關(guān)閉了瀏覽器,因此關(guān)
53、閉瀏覽器意味著與先前的會話關(guān)聯(lián)的所有會話數(shù)據(jù)都保留在服務(wù)器上,直到會話超時,服務(wù)器銷毀會話對像。®跟蹤同一會話中的請求的會話ID可以有多種方法,主要有cookie和url復(fù)寫。URL復(fù)寫:把會話ID編碼在URL中。 例:counter.jjsp;jsessionnid=be8d697876787876befdbde898789098980這樣,即使瀏覽器不支持cookie,也能夠?qū)崿F(xiàn)會話跟蹤。對于URL復(fù)寫,服務(wù)器從請求的URI中提取出會話ID,并把該請求與相應(yīng)的會話關(guān)聯(lián)起來,然后在訪問
54、會話數(shù)據(jù)的時候,JSP頁面所進(jìn)行的處理方式就和使用cookie跟蹤會話id時所使用的方式完全相同。所以sesssion的實現(xiàn)要依靠cookie或URL復(fù)寫技術(shù)。如果想為不支持cookie的瀏覽器提供會話跟蹤,就必須使用<c:url>行為對應(yīng)用程序中的所有URL進(jìn)行復(fù)寫。這意味著應(yīng)用程序中的所有頁面(至少是那些帶有對其他頁面引用的頁面)都必須是JSP頁面,這樣頁面引用才能以動態(tài)方式進(jìn)行編碼,如果遺漏了一個ur,那么服務(wù)就會失去對會話的跟蹤。隱藏表單域:隱藏表單域是將會話ID添加到HTML的隱藏表單中(類型為hidden的input)。重定向和轉(zhuǎn)發(fā)可以使用兩種方法來調(diào)用另一個頁面,重定
55、向和轉(zhuǎn)發(fā)。i) 轉(zhuǎn)發(fā):<jsp:forward page=”userInfo.jsp”/>轉(zhuǎn)發(fā),JSP容器將使用一個內(nèi)部方法來調(diào)用目標(biāo)頁面,新的頁面繼續(xù)處理同一個請求,而瀏覽器不會知道這個過程涉及到了多個頁面。瀏覽器URL會保持不變。ii)
56、 重定向:<c:redirect url=”userInfo.jsp”/>重定向與轉(zhuǎn)發(fā)不同,重定向時,第一個頁面會通知瀏覽器發(fā)送一個新的目標(biāo)頁面的請求。瀏覽器所顯示的URL會變成新頁面的URL。重定向的速度比轉(zhuǎn)發(fā)要慢,因為瀏覽器得發(fā)出一個新的請求。同時,由于重定向產(chǎn)生了一個新的請求,所以經(jīng)過一次重定向之后請求作用域內(nèi)的對象將無法再使用了。連接池的機制:當(dāng)服務(wù)器啟動的時候,連接池創(chuàng)建一定數(shù)量的連接,當(dāng)客戶程序需要一個連接時便提供一個連接,并標(biāo)記為忙,當(dāng)池中沒有可用的連接就創(chuàng)建一定數(shù)量的連接,客戶程序完成操作后,把連接返回池中重新標(biāo)記為空閑。寫程序:兩種方式單例
57、、冒泡、生產(chǎn)者和消費者、設(shè)計4個線程,其中兩個線程每次對j增加1,另外兩個線程對j每次減少1。面試高級部分:10、hibernate相關(guān)Hibernate查詢方式有那些?導(dǎo)航對象圖查詢(查詢管理對象,例如employee.getDepartment()、OID查詢(get、load)、hql、qbc、本地sql。load()和get()的區(qū)別a:如果數(shù)據(jù)庫中沒有數(shù)據(jù),get返回null,而load返回則返回代理,如果此時后續(xù)代碼調(diào)用代理對象的屬性(除過id)則拋出org.hibernate.ObjectNotFoundException。b: get不支持延遲加載,load支持延遲加載。Hibernate工作原理a:讀取hbm和fcg文件配置文件b:創(chuàng)建sessionfactoryc:創(chuàng)建session,d:打開事物e:持久化操作f:如果出現(xiàn)異?;貪L事物,如果沒有異常則提交事物g:關(guān)閉session和sessionfactory。為什么要用hibernatea:對jdbc訪問數(shù)據(jù)庫的代碼進(jìn)行了封裝,大大簡化了數(shù)據(jù)庫訪問層繁瑣的重復(fù)性代碼。為什么這樣說,我們之前采用jdbc操作時,在保存、更新時需要先從對象中取出數(shù)據(jù)拼成sql;當(dāng)查詢時需要
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- ??糃PSM考點試題及答案
- 2025-2030中國水泥攪拌車行業(yè)市場發(fā)展現(xiàn)狀及商業(yè)模式與投融資戰(zhàn)略研究報告
- 2025-2030中國水暖閥門行業(yè)創(chuàng)新現(xiàn)狀及未來應(yīng)用領(lǐng)域建議研究報告
- 2025-2030中國水性丙烯酸磁漆行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030中國氯氣探測器行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030中國氨基胍碳酸鹽行業(yè)投資現(xiàn)狀及前景經(jīng)營模式研究報告
- 2024年大學(xué)語文主題表達(dá)練習(xí)試題及答案
- 2025-2030中國武術(shù)培訓(xùn)行業(yè)現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 2025年安徽財貿(mào)職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫1套
- 2025-2030中國椰子油市場發(fā)展分析及市場趨勢與投資方向研究報告
- 機組式柔性版印刷設(shè)備安全操作規(guī)程
- 2025版新冠肺炎護(hù)理:全方位護(hù)理要點解讀
- 《光電對抗原理與應(yīng)用》課件第6章
- 2025山東能源集團(tuán)中級人才庫選拔高頻重點提升(共500題)附帶答案詳解
- 技術(shù)-浙江省2024年12月五校(杭州二中、溫州中學(xué)、金華一中、紹興一中、衢州二中)高三第一次聯(lián)考試題和答案
- 2024年浙江省中考社會(開卷)真題卷及答案解析
- focus-pdca改善案例-提高護(hù)士對糖尿病患者胰島素注射部位正確輪換執(zhí)行率
- 建筑工程竣工驗收消防設(shè)計質(zhì)量檢查報告(表格填寫模板)
- 《ipf診治共識》課件
- 項目施工-三級動火許可證(范本)
- 2024年遼寧省第二屆職業(yè)技能大賽(信息網(wǎng)絡(luò)布線賽項)理論參考試題庫(含答案)
評論
0/150
提交評論