




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、JAVA筆試題目1、說出數(shù)據(jù)庫連接池的工作機制是什么?2、多線程有幾種實現(xiàn)方法,都是什么?同步有幾種實現(xiàn)方法,都是什么?3、JAVA語言如何進行異常處理,關(guān)鍵字:throws,throw,try,catch,finally分別代表什么意義?在try塊中可以拋出異常嗎?4、靜態(tài)變量和實例變量的區(qū)別?5、說出一些常用的類,包,接口,請各舉5個6、請簡單描述HashMap的特點及與HashTable的區(qū)別7、請簡單描述servlet與CGI的區(qū)別8、請簡單說明Spring IOC及AOP原理9、請說明Hibernate中的懶加載機制及Open Session In View原理10、請編寫一個體現(xiàn)S
2、ingleton模式的程序11、請編寫程序,根據(jù)String str=“aaaa”,得到一個有10000個“a”的字符串12、String 是最基本的數(shù)據(jù)類型嗎?13、當(dāng)一個對象被當(dāng)作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞? 14、String 和StringBuffer 的區(qū)別? 15、Overload 和Override 的區(qū)別。Overloaded 的方法是否可以改變返回值的類型? 16、char 型變量中能不能存貯一個中文漢字?為什么?17、GC 是什么? 為什么要有GC?18、編程題: 寫一個Singleton 出來1
3、9、Java 中常用的設(shè)計模式?說明工廠模式?20、什么是事務(wù),JDBC和Hibernate如何實現(xiàn)事務(wù)21、JSP和Servlet有什么區(qū)別,有什么聯(lián)系22、數(shù)據(jù)庫中的CBO和RBO是什么23、列舉你所了解的web框架,并比較之間的優(yōu)缺點?24、在java.Until下哪些接口是安全的25、怎么將一個字符編碼為iso8859-1的字符串,變成UTF-8的26、面向?qū)ο蟮奶卣饔心男┓矫?7、作用域public,private,protected,以及不寫時的區(qū)別28、談?wù)刦inal, finally, finalize的區(qū)別29、Overload和Override的區(qū)別。Overloaded的
4、方法是否可以改變返回值的類型?30、HashMap和Hashtable的區(qū)別31、Collection 和 Collections的區(qū)別32、short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?33、多線程有幾種實現(xiàn)方法,都是什么?同步有幾種實現(xiàn)方法,都是什么?34、當(dāng)一個線程進入一個對象的一個synchronized方法后,其他線程是否可進入此對象的其他方法?35、sleep() 和 wait() 有什么區(qū)別?36、String s = new String(xyz);創(chuàng)建了幾個String Object?37、error和e
5、xception有什么區(qū)別38、GC是什么? 為什么要有GC?39、最有效的方法算出2乘以16等于幾?40、Math.round(11.5)等於多少? Math.round(-11.5)等于多少?41、使用Java語言寫出一個簡單的Singleton出來,同時簡單談?wù)勗O(shè)計模式42、設(shè)計4個線程,其中兩個線程每次對j增加1,另外兩個線程對j每次減少1。寫出程序43、 下列不是Java語言關(guān)鍵字的是( )A、byte,B、const,C、else,D、null44、 下列語句中錯誤的是( )A、char ch1=abc; B、char ch2=n;C、char ch3=80; D、char ch4
6、=u0050;45、 程序如下:int i=0,s=0;while( (1) )s+=i;System.out.println(”s=”+s);如果程序的運行結(jié)果為s=10,那么(1)處應(yīng)該填入( )A、i=10,B、i5,C、i+5,D、+i546、 設(shè)有對象x具有屬性a則訪問該屬性的方法為( )A、a.x,B、a.x(), C、x.a,D、x.a()47、 在繼承中,關(guān)于構(gòu)造方法的說明,下列說法錯誤的是( )A、子類無條件的繼承父類的無參構(gòu)造方法,B、子類可以引用父類中的有參構(gòu)造方法,使用super關(guān)鍵字,C、如果子類沒有構(gòu)造方法,則父類無參構(gòu)造方法作為自已的構(gòu)造方法,D、如果子類有無參構(gòu)
7、造方法,而父類的無參構(gòu)造方法則被覆蓋。48、程序如下:public class zcsoft (1) Runnablepublic void run()System.out.println(“wait”);public void kk()System.out.println(“out”);程序正確運行,程序(1)處應(yīng)該填入( )A、implements B、interface C、extends D、static49、 下列程序的運行結(jié)果為:( )public class exam2007 public static void main(String args) String s=”t2”sw
8、itch(s) case ”java”:System.out.print(”t1”);case ”language”:System.out.print (”t2”);case ”text”:System.out.print (”t3”);break;A、t1t2t3,B、t2t3,C、t2,D、編譯出錯50、 在Thread類中能運行線程體的方法是( )A、start(),B、resume(),C、init(),D、run()51、 關(guān)于抽象類與接口,下列說法正確的是( )A、接口就是抽象類,二者沒有區(qū)別。B、抽象類可以被聲明使用,接口不可以被聲明使用。C、抽象類和接口都不能被實例化。D、以上
9、說法都不對。52、 關(guān)于抽象類與最終類,下列說法錯誤的是( )A、抽象類只能被繼承,最終類只能被實例化。B、抽象類和最終類都可以被聲明使用。C、抽象類中可以沒有抽象方法,最終類中可以沒有最終方法。D、抽象類和最終類被繼承時,方法可以被子類覆蓋。53、請列舉幾種你在java編程過程中遇到的Exception,出現(xiàn)這種Exception的原因,以及你在什么情況下遇到這種Exception。請分析wait()和sleep()方法的不同之處。請談?wù)刦inal, finally, finalize的區(qū)別。請列舉幾種你使用過的設(shè)計模式,并結(jié)合實際說明基于何種原因采取了這種模式。請把“手機”抽象為一個類,定
10、義其成員變量及方法,并添加注釋來解釋這些成員變量及方法。請用java實現(xiàn)一個生產(chǎn)者-消費者問題。59、ArrayList和LinkedList的區(qū)別60、怎么比較兩個New Data()對象的先后?61、怎么將3.1415926保留三位小數(shù)輸出,而且要四舍五入62、Java.lang.Class有什么作用?63、Spring聲明式事務(wù)中,PROPAGATION_REQUIRED的作用64、Unix中ps和tar命令作用?65、以下為 Windows NT 下的 32 位 C+程序,請計算 sizeof 的值charstr = “Hello” ;char*p = str ; int n = 10
11、;void Func ( char str100)void *p = malloc( 100 );sizeof (str ) =sizeof ( p ) =sizeof ( n ) =sizeof (str ) =sizeof ( p ) =66、 1 1 2 3 5 8 13 寫遞歸67、Jsp和servlet的區(qū)別和相似68、樂觀鎖和悲觀鎖的思想原理69、 數(shù)據(jù)庫事務(wù)的理解,jdbc和hibernate如何對事務(wù)進行處理70、strtus1和struts2的標(biāo)簽71、現(xiàn)有一個商店的數(shù)據(jù)庫,記錄顧客及其購物情況,有下面三個表組成: 商品(商品號, 商品名, 單價, 商品類別, 供應(yīng)商); 顧
12、客(顧客號, 姓名, 住址);購買(顧客號, 商品號, 購物數(shù)量);表如下:Goods商品號(MNo)商品名(MName)單價(MPrice)類別(MType)供應(yīng)商(MSupply)M01佳潔士8.00牙膏寶潔M02高露潔6.50牙膏高露潔M03潔諾5.00牙膏聯(lián)合利華M04舒膚佳3.00香皂寶潔M05夏士蓮5.00香皂聯(lián)合利華M06雕牌2.50洗衣粉納愛斯M07中華3.50牙膏聯(lián)合利華M08汰漬3.00洗衣粉寶潔M09碧浪4.00洗衣粉寶潔Customers顧客號(CNo)姓名(CName)住址(CAddress)C01Dennis海淀C02John朝陽C03Tom東城C04Jenny東城
13、C05Rick西城Buy顧客號(CNo)商品號(MNo)購物數(shù)量(PayNumber)C01M013C01M052C01M082C02M025C02M064C03M011C03M051C03M063C03M081C04M037C04M043C05M062C05M078請用 SQL 語句實現(xiàn)下列功能:求購買了供應(yīng)商“寶潔”的產(chǎn)品的所有顧客姓名:(2%)求購買了“Dennis”所購買商品中的至少一個商品的顧客姓名:(3%)請列出每個商品的商品號及其賣出數(shù)量:(2%)將所有的牙膏商品單價增加 10%;( 2%)刪除從未被購買的商品記錄;(3%)請寫出商品表的建表 SQL 文,并設(shè)置商品號為主鍵;(3
14、%)8判斷下列程序是否有錯,并說明為什么abstract class Nameprivate String name;public abstract Boolean isStupidName(String name) class Somethingfinal int i;public void doSomething() System.out.println(“i = “ + i );72、設(shè)計 4 個線程,其中兩個線程每次對 j 增加 1,另外兩個線程每次 j 減少 1, 寫出程序73、 filter的配置和作用74、索引的優(yōu)點和缺點一、CoreJava 部分:(共 95 題:基礎(chǔ) 91 道
15、,中等難度 4 道)基礎(chǔ)及語法部分:(共 61 題:基礎(chǔ) 60 道、中等難度 1 道)1、面向?qū)ο蟮奶卣饔心男┓矫? 【基礎(chǔ)】答:面向?qū)ο蟮奶卣髦饕幸韵聨讉€方面:1)抽象:抽象就是忽略一個主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節(jié)。抽象包括兩個方面,一是過程抽象,二是數(shù)據(jù)抽象。2)繼承:繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現(xiàn)有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基
16、類(父類)派生類可以從它的基類那里繼承方法和實例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。3)封裝: 封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的訪問只能通過已定義的界面。面向?qū)ο笥嬎闶加谶@個基本概念,即現(xiàn)實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。4)多態(tài)性:多態(tài)性是指允許不同類的對象對同一消息作出響應(yīng)。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多態(tài)性語言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢,很好的解決了應(yīng)用程序函數(shù)同名問題。2、作用域 public,private,protected,以及不寫時的區(qū)別?【基礎(chǔ)】答:區(qū)別如下: 作用域 當(dāng)前類
17、同包 子孫類 其他 public protected default private 不寫時默認為 default。3、String 是最基本的數(shù)據(jù)類型嗎? 【基礎(chǔ)】答:不是。4、float 型 float f=3.4是否正確? 【基礎(chǔ)】答:不正確;精度不準(zhǔn)確,應(yīng)該用強制類型轉(zhuǎn)換,如下所示: float f=(float)3.4 。5、語句 float f=1.3;編譯能否通過?【基礎(chǔ)】答:不能;應(yīng)該用強制類型轉(zhuǎn)換,如下所示:float f=(float)1.3; 。6、short s1 = 1; s1 = s1 + 1;有什么錯?short s1 = 1; s1 += 1;有什么錯? 【基礎(chǔ)
18、】答:short s1 = 1; s1 = s1 + 1;s1+1運算結(jié)果是 int 型,需要強制轉(zhuǎn)換類型; short s1 = 1; s1 += 1;可以正確編譯,自動類型提升。7、Java 有沒有 goto? 【基礎(chǔ)】答:goto 是 java 中的保留字,現(xiàn)在沒有在 java 中使用。8、int 和 Integer 有什么區(qū)別? 【基礎(chǔ)】答:Java 提供兩種不同的類型:引用類型和原始類型(或內(nèi)置類型);int 是 java 的原始數(shù)據(jù)類型,Integer 是 java 為 int 提供的封裝類。Java 為每個原始類型提供了封裝類: 原始類型: boolean,char,byte,s
19、hort,int,long,float,double 封裝類型:Boolean,Character,Byte,Short, Integer, Long, Float,Double 引用類型和原始類型的行為完全不同,并且它們具有不同的語義。引用類型和原始類型具有不同的特征和用法,它們包括:大小和速度問題,這種類型以哪種類型的數(shù)據(jù)結(jié)構(gòu)存儲,當(dāng)引用類型和原始類型用作某個類的實例數(shù)據(jù)時所指定的缺省值。對象引用實例變量的缺省值為 null,而原始類型實例變量的缺省值與它們的類型有關(guān)。9、&和&的區(qū)別?【基礎(chǔ)】答:&是位運算符,表示按位與運算,&是邏輯運算符,表示邏輯與(and)。10、簡述邏輯操作(&,
20、|,)與條件操作(&,|)的區(qū)別?【基礎(chǔ)】答:區(qū)別主要有兩點:1)條件操作只能操作布爾型的,而邏輯操作不僅可以操作布爾型,而且可以操作數(shù)值型。 2)邏輯操作不會產(chǎn)生短路。11、heap 和 stack 有什么區(qū)別?【基礎(chǔ)】答:棧是一種線形集合,其添加和刪除元素的操作應(yīng)在同一段完成,棧按照后進先出的方式進行處理;堆是棧的一個組成元素。12、Math.round(11.5) 等于多少? Math.round(-11.5)等于多少? 【基礎(chǔ)】答:Math.round(11.5)=12 Math.round(-11.5)=-11 round 方法返回與參數(shù)最接近的長整數(shù),參數(shù)加 1/2 后求其 flo
21、or。13、swtich 是否能作用在byte上,是否能作用在long上,是否能作用在 String上? 【基礎(chǔ)】答: switch(expr1) 中, expr1 是一個整數(shù)表達式。因此傳遞給 switch 和 case語句的參數(shù)應(yīng)該是 int、 short、 char 或者 byte。long,string 都不能作用于 swtich。14、編程題: 用最有效率的方法算出 2 乘以 8 等於幾? 【基礎(chǔ)】答: 2 3。15、有沒有 length()這個方法? String 有沒有 length()這個方法?【基礎(chǔ)】答:數(shù)組沒有 length()這個方法,有 length 的屬性。Strin
22、g 有 length()這個方法。16、在 JAVA 中,如何跳出當(dāng)前的多重嵌套循環(huán)?【基礎(chǔ)】答: 在最外層循環(huán)前加 label 標(biāo)識,然后用 break:label 方法即可跳出多重循環(huán)。17、構(gòu)造器 Constructor 是否可被 override? 【基礎(chǔ)】答:構(gòu)造器 Constructor 不能被繼承,因此不能重寫 Overriding,但可以被重載 Overloading。18、兩個對象值相同(x.equals(y) = true),但卻可有不同的 hash code,這句話對不對? 【基礎(chǔ)】答:不對,有相同的 hash code。19、是否可以繼承 String 類? 【基礎(chǔ)】答
23、:String 類是 final 類,故不可以繼承。20、以下二條語句返回值為 true 的有:A:“beijing”=“beijing”;B:“beijing”.equalsIgnoreCase(new String(“beijing”); )【基礎(chǔ)】答:A 和 B 。21、當(dāng)一個對象被當(dāng)作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞? 【基礎(chǔ)】答:是值傳遞。Java 編程語言只有值傳遞參數(shù)。當(dāng)一個對象實例作為一個參數(shù)被傳遞到方法中時,參數(shù)的值就是對該對象的引用。對象的內(nèi)容可以在被調(diào)用的方法中改變,但對象的引用是永遠不會改變的。22
24、、我們在 web 應(yīng)用開發(fā)過程中經(jīng)常遇到輸出某種編碼的字符,如 iso8859-1等,如何輸出一個某種編碼的字符串?【基礎(chǔ)】答:public String translate(String str) String tempStr = ; try tempStr = new String(str.getBytes(ISO-8859-1), GBK); tempStr = tempStr.trim(); catch (Exception e) System.err.println(e.getMessage(); return tempStr; 23、String 和 StringBuffer 的區(qū)
25、別? 【基礎(chǔ)】答:JAVA 平臺提供了兩個類:String 和 StringBuffer,它們可以儲存和操作字符串,即包含多個字符的字符數(shù)據(jù)。這個 String 類提供了數(shù)值不可改變的字符串。而這個 StringBuffer 類提供的字符串進行修改。當(dāng)你知道字符數(shù)據(jù)要改變的時候你就可以使用 StringBuffer。典型地,你可以StringBuffers 來動態(tài)構(gòu)造字符數(shù)據(jù)。24、String, StringBuffer StringBuilder的區(qū)別。【基礎(chǔ)】答:String的長度是不可變的;StringBuffer的長度是可變的,如果你對字符串中的內(nèi)容經(jīng)常進行操作,特別是內(nèi)容要修改時,
26、那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法;線程安全;StringBuilder是從 JDK 5 開始,為StringBuffer該類補充了一個單個線程使用的等價類;通常應(yīng)該優(yōu)先使用 StringBuilder 類,因為它支持所有相同的操作,但由于它不執(zhí)行同步,所以速度更快。25、Overload 和 Override 的區(qū)別。Overloaded 的方法是否可以改變返回值的類型? 【基礎(chǔ)】答:方法的重寫 Overriding 和重載 Overloading 是 Java 多態(tài)性的不同表現(xiàn)。重寫 Overriding
27、是父類與子類之間多態(tài)性的一種表現(xiàn),重載 Overloading 是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被“屏蔽”了。如果在一個類中定義了多個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded 的方法是可以改變返回值的類型。26、定義類 A 和類 B 如下:【基礎(chǔ)】 class A int a=1; double d=2.0; void show() tln(Class A
28、: a=+a +td=+d); class B extends A float a=3.0f; String d=Java program.; void show() super.show( );ln(Class B: a=+a +td=+d); (1) 若在應(yīng)用程序的 main 方法中有以下語句: A a=new A(); a.show(); 則輸出的結(jié)果如何? (2) 若在應(yīng)用程序的 main 方法中定義類 B 的對象 b: A b=new B(); b.show(); 則輸出的結(jié)果如何?答:輸出結(jié)果為: 1)Class A: a=1 d=2.0 ; 2)Class A: a=1 d=2.
29、0 Class B: a=3.0 d=Java program。27、描述一下 JVM 加載 class 文件的原理機制? 【基礎(chǔ)】答:JVM 中類的裝載是由 ClassLoader 和它的子類來實現(xiàn)的,Java ClassLoader是一個重要的 Java 運行時系統(tǒng)組件。它負責(zé)在運行時查找和裝入類文件的類。28、char 型變量中能不能存貯一個中文漢字?為什么? 【基礎(chǔ)】答:能夠定義成為一個中文的,因為 java 中以 unicode 編碼,一個 char 占 16個字節(jié),所以放一個中文是沒問題的。29、abstract class 和 interface 有什么區(qū)別? 【基礎(chǔ)】答:聲明方
30、法的存在而不去實現(xiàn)它的類被叫做抽象類(abstract class),它用于要創(chuàng)建一個體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實現(xiàn)該類的情況。不能創(chuàng)建 abstract 類的實例。然而可以創(chuàng)建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現(xiàn),否則它們也是抽象類為。取而代之,在子類中實現(xiàn)該方法。知道其行為的其它類可以在類中實現(xiàn)這些方法。接口(interface)是抽象類的變體。新型多繼承性可通過實現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,所有成員變量都是 publicst
31、atic final 的。一個類可以實現(xiàn)多個接口,當(dāng)類實現(xiàn)特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實現(xiàn)了該接口的類的任何對象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof 運算符可以用來決定某對象的類是否實現(xiàn)了接口。30、Static Nested Class 和 Inner Class 的不同?【基礎(chǔ)】答:Static Nested Class 是被聲明為靜態(tài)(static)的內(nèi)部類,它可以不依賴于外部類實例被實例 化。而通常的內(nèi)部類需要在外部類實例化后才能實
32、例化。31、java 中會存在內(nèi)存泄漏嗎,請簡單描述。【基礎(chǔ)】答:會;存在無用但可達的對象,這些對象不能被 GC 回收,導(dǎo)致耗費內(nèi)存資源。32、abstract的method 是否可同時是static,是否可同時是 native,是否可同時是synchronized?答:都不能。【基礎(chǔ)】33、靜態(tài)變量和實例變量的區(qū)別?【基礎(chǔ)】答:靜態(tài)變量也稱為類變量,歸全類共有,它不依賴于某個對象,可通過類名直接訪問;而實例變量必須依存于某一實例,只能通過對象才能訪問到它。34、是否可以從一個 static 方法內(nèi)部發(fā)出對非 static 方法的調(diào)用?【基礎(chǔ)】答:不可以,如果其中包含對象的 method(),
33、不能保證對象初始化。35、寫 clone()方法時,通常都有一行代碼,是什么?【基礎(chǔ)】答:Clone 有缺省行為:super.clone(),他負責(zé)產(chǎn)生正確大小的空間,并逐位復(fù)制。36、GC 是什么? 為什么要有 GC? 【基礎(chǔ)】答:GC 是垃圾收集的意思(Gabage Collection),內(nèi)存處理是編程人員容易出現(xiàn)問題的地方,忘記或者錯誤的內(nèi)存回收會導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java 提供的 GC 功能可以自動監(jiān)測對象是否超過作用域從而達到自動回收內(nèi)存的目的,Java 語言沒有提供釋放已分配內(nèi)存的顯示操作方法。 Java 程序員不用擔(dān)心內(nèi)存管理,因為垃圾收集器會自動進行管理。要請求
34、垃圾收集,可以調(diào)用下面的方法之一:System.gc() 或 Runtime.getRuntime().gc() 。37、垃圾回收的優(yōu)點和原理。并考慮 2 種回收機制。【基礎(chǔ)】答:Java 語言中一個顯著的特點就是引入了垃圾回收機制,使 c+程序員最頭疼的內(nèi)存管理的問題迎刃而解,它使得 Java 程序員在編寫程序的時候不再需要考慮內(nèi)存管理。由于有個垃圾回收機制,Java 中的對象不再有“作用域”的概念,只有對象的引用才有“作用域”。垃圾回收可以有效的防止內(nèi)存泄露,有效的使用可以使用的內(nèi)存。垃圾回收器通常是作為一個單獨的低級別的線程運行,不可預(yù)知的情況下對內(nèi)存堆中已經(jīng)死亡的或者長時間沒有使用的對
35、象進行清楚和回收,程序員不能實時的調(diào)用垃圾回收器對某個對象或所有對象進行垃圾回收。回收機制有分代復(fù)制垃圾回收和標(biāo)記垃圾回收,增量垃圾回收。38、垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法主動通知虛擬機進行垃圾回收?【基礎(chǔ)】答:對于 GC 來說,當(dāng)程序員創(chuàng)建對象時,GC 就開始監(jiān)控這個對象的地址、大小以及使用情況。通常,GC 采用有向圖的方式記錄和管理堆(heap)中的所有對象。通過這種方式確定哪些對象是可達的,哪些對象是不可達的。當(dāng) GC 確定一些對象為不可達時,GC 就有責(zé)任回收這些內(nèi)存空間。可以。程序員可以手動執(zhí)行 System.gc(),通知 GC 運行,但是
36、Java 語言規(guī)范并不保證 GC 一定會執(zhí)行。39、String s=new String(“xyz”);創(chuàng)建了幾個 String Object? 【基礎(chǔ)】答:兩個對象,一個是xyx,一個是指向xyx的引用對象 s。40、接口是否可繼承接口? 抽象類是否可實現(xiàn)(implements)接口? 抽象類是否可繼承實體類(concrete class)? 【基礎(chǔ)】答:接口可以繼承接口。抽象類可以實現(xiàn)(implements)接口,抽象類可繼承實體類,但前提是實體類必須有明確的構(gòu)造函數(shù)。41、Java 的接口和 C+的虛類的相同和不同處。【基礎(chǔ)】答:由于 Java 不支持多繼承,而有可能某個類或?qū)ο笠褂?/p>
37、分別在幾個類或?qū)ο罄锩娴姆椒ɑ驅(qū)傩裕F(xiàn)有的單繼承機制就不能滿足要求。與繼承相比,接口有更高的靈活性,因為接口中沒有任何實現(xiàn)代碼。當(dāng)一個類實現(xiàn)了接口以后,該類要實現(xiàn)接口里面所有的方法和屬性,并且接口里面的屬性在默認狀態(tài)下面都是public static,所有方法默認情況下是 public.一個類可以實現(xiàn)多個接口。42、一個“.java”源文件中是否可以包含多個類(不是內(nèi)部類)?有什么限制?【基礎(chǔ)】答:可以;必須只有一個類名與文件名相同。43、說出一些常用的類,包,接口,請各舉 5 個。【基礎(chǔ)】答:常用的類:BufferedReader BufferedWriter FileReader File
38、Wirter String Integer; 常用的包:java.lang java.awt java.io java.util java.sql; 常用的接口:Remote List Map Document NodeList44、Anonymous Inner Class (匿名內(nèi)部類) 是否可以 extends(繼承)其它類?是否可以 implements(實現(xiàn))interface(接口)? 【基礎(chǔ)】答:可以繼承其他類或?qū)崿F(xiàn)其他接口,在 swing 編程中常用此方式。45、內(nèi)部類可以引用他包含類的成員嗎?有沒有什么限制?【基礎(chǔ)】答:一個內(nèi)部類對象可以訪問創(chuàng)建它的外部類對象的內(nèi)容。46、j
39、ava 中實現(xiàn)多態(tài)的機制是什么?【基礎(chǔ)】答:方法的覆蓋 Overriding 和重載 Overloading 是 java 多態(tài)性的不同表現(xiàn);覆蓋 Overriding 是父類與子類之間多態(tài)性的一種表現(xiàn),重載 Overloading 是一個類中多態(tài)性的一種表現(xiàn)。47、在 java 中一個類被聲明為 final 類型,表示了什么意思?【基礎(chǔ)】答:表示該類不能被繼承,是頂級類。48、下面哪些類可以被繼承? 【基礎(chǔ)】1)java.lang.Thread (T) 2)java.lang.Number (T) 3)java.lang.Double (F)4)java.lang.Math (F) id (
40、F)6)java.lang.Class (F)7)java.lang.ClassLoader (T)答:1、2、7 可以被繼承。49、指出下面程序的運行結(jié)果: 【基礎(chǔ)】class A static System.out.print(1); public A() System.out.print(2); class B extends A static System.out.print(a); public B() System.out.print(b); public class Hello public static void main(String ars) A ab = new B();
41、 /執(zhí)行到此處,結(jié)果: 1a2b ab = new B(); /執(zhí)行到此處,結(jié)果: 1a2b2b 答:輸出結(jié)果為 1a2b2b;類的 static 代碼段,可以看作是類首次加載(虛擬機加載)執(zhí)行的代碼,而對于類加載,首先要執(zhí)行其基類的構(gòu)造,再執(zhí)行其本身的構(gòu)造。50、繼承時候類的執(zhí)行順序問題,一般都是選擇題,問你將會打印出什么? 【基礎(chǔ)】父類:package test;public class FatherClass public FatherClass() System.out.println(FatherClass Create); 子類:package test;import test.F
42、atherClass;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(); 答:輸出結(jié)果為: FatherClass Create FatherClass Create ChildClass Create51、內(nèi)部類的實現(xiàn)方式? 【基
43、礎(chǔ)】答:示例代碼如下: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(); 輸出結(jié)果
44、為:InterClass CreateOuterClass Create52、關(guān)于內(nèi)部類: 【基礎(chǔ)】public class OuterClass private double d1 = 1.0; /insert code here You need to insert an inner class declaration at line 3,Which two innerclass declarations are valid?(Choose two.)A. class InnerOne public static double methoda() return d1; B. public
45、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(); 答:答案為 C、E;說明如下: 1)靜態(tài)內(nèi)部類可以有靜態(tài)成員,而非靜態(tài)內(nèi)部類則不能有靜態(tài)成員;故 A、B錯; 2)靜態(tài)內(nèi)部類的非靜態(tài)成員可以訪問
46、外部類的靜態(tài)變量,而不可訪問外部類的非靜態(tài)變量,故D 錯; 3)非靜態(tài)內(nèi)部類的非靜態(tài)成員可以訪問外部類的非靜態(tài)變量;故 C 正確 。53、數(shù)據(jù)類型之間的轉(zhuǎn)換:1)如何將數(shù)值型字符轉(zhuǎn)換為數(shù)字?2)如何將數(shù)字轉(zhuǎn)換為字符?3)如何取小數(shù)點前兩位并四舍五入? 【基礎(chǔ)】答:1)調(diào)用數(shù)值類型相應(yīng)包裝類中的方法 parse*(String)或 valueOf(String)即可返回相應(yīng)基本類型或包裝類型數(shù)值; 2)將數(shù)字與空字符串相加即可獲得其所對應(yīng)的字符串;另外對于基本類型數(shù)字還可調(diào)用 String 類中的 valueOf()方法返回相應(yīng)字符串,而對于包裝類型數(shù)字則可調(diào)用其 toString()方法獲得相
47、應(yīng)字符串; 3)可用該數(shù)字構(gòu)造一 java.math.BigDecimal 對象,再利用其 round()方法進行四舍五入到保留小數(shù)點后兩位,再將其轉(zhuǎn)換為字符串截取最后兩位。54、字符串操作:如何實現(xiàn)字符串的反轉(zhuǎn)及替換?【基礎(chǔ)】答:可用字符串構(gòu)造一 StringBuffer 對象,然后調(diào)用 StringBuffer 中的 reverse方法即可實現(xiàn)字符串的反轉(zhuǎn),調(diào)用 replace 方法即可實現(xiàn)字符串的替換。55、編碼轉(zhuǎn)換:怎樣將 GB2312 編碼的字符串轉(zhuǎn)換為 ISO-8859-1 編碼的字符串?【基礎(chǔ)】答:示例代碼如下: String s1 = 你好; String s2 = new S
48、tring(s1.getBytes(GB2312), ISO-8859-1);56、寫一個函數(shù),要求輸入一個字符串和一個字符長度,對該字符串進行分隔。【基礎(chǔ)】答:函數(shù)代碼如下: public String split(String str, int chars) int n = (str.length()+ chars - 1)/chars; String ret = new Stringn; for(int i=0; in; i+) if(i n-1) reti = str.substring(i*chars , (i+1)*chars); else reti = str.substring
49、(i*chars); return ret; 57、寫一個函數(shù),2 個參數(shù),1 個字符串,1 個字節(jié)數(shù),返回截取的字符串,要求字符串中的中文不能出現(xiàn)亂碼: (如 “我 ABC” 4), 應(yīng)該截為 “我 AB” 輸入 “我,(ABC 漢 DEF” ,6)應(yīng)該輸出為“我 ABC”而不是“我 ABC+漢的半個” 【基礎(chǔ)】。答:代碼如下: public String subString(String str, int subBytes) int bytes = 0; / 用來存儲字符串的總字節(jié)數(shù) for (int i = 0; i str.length(); i+) if (bytes = subBy
50、tes) return str.substring(0, i); char c = str.charAt(i); if (c 0); / throws an Assertionerror if a = 0 斷言可以有兩種形式: assert Expression1 ; assert Expression1 : Expression2 ; Expression1 應(yīng)該總是產(chǎn)生一個布爾值。 Expression2 可以是得出一個值的任意表達式;這個值用于生成顯示更多調(diào)試信息的 String 消息。 斷言在默認情況下是禁用的, 要在編譯時啟用斷言,需使用 source 1.4 標(biāo)記:javac -s
51、ource 1.4 Test.java 要在運行時啟用斷言,可使用 -enableassertions 或者 -ea 標(biāo)記。 要在運行時選擇禁用斷言,可使用 -da 或者 -disableassertions 標(biāo)記。 要在系統(tǒng)類中啟用斷言,可使用 -esa 或者 -dsa 標(biāo)記。還可以在包的基礎(chǔ)上啟用或者禁用斷言。可以在預(yù)計正常情況下不會到達的任何位置上放置斷言。斷言可以用于驗證傳遞給私有方法的參數(shù)。不過,斷言不應(yīng)該用于驗證傳遞給公有方法的參數(shù),因為不管是否啟用了斷言,公有方法都必須檢查其參數(shù)。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試后置條件。另外,斷言不應(yīng)該以任何方式改變程
52、序的狀態(tài)。異常部分:(共 8 題:基礎(chǔ) 8 道)62、Java 中的異常處理機制的簡單原理和應(yīng)用?【基礎(chǔ)】答:當(dāng) JAVA 程序違反了 JAVA 的語義規(guī)則時,JAVA 虛擬機就會將發(fā)生的錯誤表示為一個異常。違反語義規(guī)則包括 2 種情況。一種是 JAVA 類庫內(nèi)置的語義檢查。例如數(shù)組下標(biāo)越界,會引發(fā) IndexOutOfBoundsException;訪問 null 的對象時會引發(fā) NullPointerException。另一種情況就是 JAVA 允許程序員擴展這種語義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時用 throw 關(guān)鍵字引發(fā)異常。所有的異常都是 java.lang.Thow
53、able 的子類。63、error 和 exception 有什么區(qū)別? 【基礎(chǔ)】答:error 表示系統(tǒng)級的錯誤和程序不必處理的異常,是恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問題;比如內(nèi)存溢出,不可能指望程序能處理這樣的情況;exception 表示需要捕捉或者需要程序進行處理的異常,是一種設(shè)計或?qū)崿F(xiàn)問題;也就是說,它表示如果程序運行正常,從不會發(fā)生的情況。64、 里有一個 return 語句, try那么緊跟在這個 try 后的 finally 里的 code會不會被執(zhí)行,什么時候被執(zhí)行,在 return 前還是后? 【基礎(chǔ)】答:會執(zhí)行,在 return 前執(zhí)行。65、JAVA 語言如何
54、進行異常處理,關(guān)鍵字:throws,throw,try,catch,finally分別代表什么意義?在 try 塊中可以拋出異常嗎?【基礎(chǔ)】答:Java 通過面向?qū)ο蟮姆椒ㄟM行異常處理,把各種不同的異常進行分類,并提供了良好的接口。在 Java 中,每個異常都是一個對象,它是 Throwable 類或其它子類的實例。當(dāng)一個方法出現(xiàn)異常后便拋出一個異常對象,該對象中包含有異常信息,調(diào)用這個對象的方法可以捕獲到這個異常并進行處理。Java 的異常處理是通過 5 個關(guān)鍵詞來實現(xiàn)的:try、catch、throw、throws 和 finally。一般情況下是用 try 來執(zhí)行一段程序,如果出現(xiàn)異常,
55、系統(tǒng)會拋出(throws)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最后(finally)由缺省處理器來處理; try 用來指定一塊預(yù)防所有“異常”的程序; catch 子句緊跟在 try 塊后面,用來指定你想要捕捉的“異常”的類型; throw 語句用來明確地拋出一個“異常”; throws 用來標(biāo)明一個成員函數(shù)可能拋出的各種“異常”; Finally 為確保一段代碼不管發(fā)生什么“異常”都被執(zhí)行一段代碼; 可以在一個成員函數(shù)調(diào)用的外面寫一個 try 語句,在這個成員函數(shù)內(nèi)部寫另一個 try 語句保護其他代碼。每當(dāng)遇到一個 try 語句,“異常”的框架就放到堆棧上面,直到所有
56、的 try 語句都完成。如果下一級的 try 語句沒有對某種“異常”進行處理,堆棧就會展開,直到遇到有處理這種“異常”的 try 語句。66、運行時異常與一般異常有何異同?【基礎(chǔ)】答:異常表示程序運行過程中可能出現(xiàn)的非正常狀態(tài),運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java 編譯器要求方法必須聲明拋出可能發(fā)生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。67、給我一個你最常見到的 runtime exception?【基礎(chǔ)】答:ArithmeticException, ArrayStoreException, BufferOverflowExcep
57、tion,BufferUnderflowException, CannotRedoException, CannotUndoException,ClassCastException, CMMException, ConcurrentModificationException,DOMException, EmptyStackException, IllegalArgumentException,IllegalMonitorStateException, IllegalPathStateException,IllegalStateException, ImagingOpException, Ind
58、exOutOfBoundsException,MissingResourceException, NegativeArraySizeException,NoSuchElementException, NullPointerException, ProfileDataException,ProviderException, RasterFormatException, SecurityException,SystemException, UndeclaredThrowableException,UnmodifiableSetException, UnsupportedOperationExcep
59、tion68、final, finally, finalize 的區(qū)別? 【基礎(chǔ)】答:final:修飾符(關(guān)鍵字);如果一個類被聲明為 final,意味著它不能再派生出新的子類,不能作為父類被繼承,因此一個類不能既被聲明為 abstract的,又被聲明為 final 的;將變量或方法聲明為 final,可以保證它們在使用中不被改變;被聲明為 final 的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改;被聲明為 final 的方法也同樣只能使用,不能重載。finally:再異常處理時提供 finally 塊來執(zhí)行任何清除操作;如果拋出一個異常,那么相匹配的 catch 子句就會執(zhí)
60、行,然后控制就會進入 finally 塊(如果有的話)。 finalize:方法名;Java 技術(shù)允許使用 finalize() 方法在垃圾收集器將對象從內(nèi)存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調(diào)用的。它是Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調(diào)用的。69、類 Example A 繼承 Exception,類 ExampleB 繼承 Example A; 【基礎(chǔ)】有如下代碼片斷:try throw
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年財務(wù)決策能力試題及答案
- 股份轉(zhuǎn)讓合同股權(quán)購買付款協(xié)議
- 空運貨物運輸合同協(xié)議
- 微生物檢驗技術(shù)生命周期的考察試題及答案
- 項目管理根本理論解析及答案
- 項目管理中的反饋文化建設(shè)與重要性試題及答案
- 品牌定位的動態(tài)調(diào)整策略計劃
- 城市供水設(shè)施的智慧化建設(shè)計劃
- 2025年國際金融理財師歷年試題及答案
- 大數(shù)據(jù)地震預(yù)警技術(shù)重點基礎(chǔ)知識點
- 北京市朝陽區(qū)2025屆高三下學(xué)期一模試題 數(shù)學(xué) 含答案
- 運輸公司安全管理制度
- 2025屆吉林省長春市高三下學(xué)期4月三模政治試題(原卷版+解析版)
- 2025屆江蘇省揚州市中考一模語文試題(含答案)
- 2025年河北省唐山市中考一模道德與法治試題(含答案)
- 工程造價咨詢服務(wù)投標(biāo)方案(專家團隊版-)
- 2024年廣東省中考生物+地理試卷(含答案)
- 全尺寸測量報告FAI
- 蘇園六紀(jì)簡介及解說詞
- 陜西房改工作文件匯編
- (含圖紙)啤酒廢水處理工程(UASB-CASS工藝)畢業(yè)設(shè)計_優(yōu)秀完整版
評論
0/150
提交評論