【文章內(nèi)容簡(jiǎn)介】
4java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承,請(qǐng)說出他們分別是哪些類? 答:字節(jié)流,字符流。字節(jié)流繼承于InputStream OutputStream,字符流繼承于InputStreamReader OutputStreamWriter。,主要是為了提高性能和使用方便。 50、java中會(huì)存在內(nèi)存泄漏嗎,請(qǐng)簡(jiǎn)單描述。 答:會(huì)。自己實(shí)現(xiàn)堆載的數(shù)據(jù)結(jié)構(gòu)時(shí)有可能會(huì)出現(xiàn)內(nèi)存泄露,可參看effective java. 5java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么? 答:方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。 5垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法主動(dòng)通知虛擬機(jī)進(jìn)行垃圾回收 答:對(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)存空間??梢浴?),通知GC運(yùn)行,但是Java語言規(guī)范并不保證GC一定會(huì)執(zhí)行。 5靜態(tài)變量和實(shí)例變量的區(qū)別? 答:static i = 10。 //常量 class A a。 =10。//可變 5什么是java序列化,如何實(shí)現(xiàn)java序列化? 答:序列化就是一種用來處理對(duì)象流的機(jī)制,所謂對(duì)象流也就是將對(duì)象的內(nèi)容進(jìn)行流化。可以對(duì)流化后的對(duì)象進(jìn)行讀寫操作,也可將流化后的對(duì)象傳輸于網(wǎng)絡(luò)之間。序列化是為了解決在對(duì)對(duì)象流進(jìn)行讀寫操作時(shí)所引發(fā)的問題。 序列化的實(shí)現(xiàn):將需要被序列化的類實(shí)現(xiàn)Serializable接口,該接口沒有需要實(shí)現(xiàn)的方法,implements Serializable只是為了標(biāo)注該對(duì)象是可被序列化的,然后使用一個(gè)輸出流(如:FileOutputStream)來構(gòu)造一個(gè)ObjectOutputStream(對(duì)象流)對(duì)象,接著,使用ObjectOutputStream對(duì)象的writeObject(Object obj)方法就可以將參數(shù)為obj的對(duì)象寫出(即保存其狀態(tài)),要恢復(fù)的話則用輸入流。 5是否可以從一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用? 答:不可以,如果其中包含對(duì)象的method();不能保證對(duì)象初始化. 5寫clone()方法時(shí),通常都有一行代碼,是什么? 答:Clone 有缺省行為,()。他負(fù)責(zé)產(chǎn)生正確大小的空間,并逐位復(fù)制。 5在JAVA中,如何跳出當(dāng)前的多重嵌套循環(huán)? 答:用break。 return 方法。 5List、Map、Set三個(gè)接口,存取元素時(shí),各有什么特點(diǎn)? 答:List 以特定次序來持有元素,可有重復(fù)元素。Set 無法擁有重復(fù)元素,內(nèi)部排序。Map 保存keyvalue值,value可多值。 5說出一些常用的類,包,接口,請(qǐng)各舉5個(gè) 答:常用的類:BufferedReader BufferedWriter FileReader FileWirter String Integer 常用的包: 常用的接口:Remote List Map Document NodeList Java基礎(chǔ)方面—線程編程方面java中有幾種方法可以實(shí)現(xiàn)一個(gè)線程?用什么關(guān)鍵字修飾同步方法?stop()和suspend()方法為何不推薦使用?答:有兩種實(shí)現(xiàn)方法,分別是繼承Thread類與實(shí)現(xiàn)Runnable接口用synchronized關(guān)鍵字修飾同步方法反對(duì)使用stop(),是因?yàn)樗话踩K鼤?huì)解除由線程獲取的所有鎖定,而且如果對(duì)象處于一種不連貫狀態(tài),那么其他線程能在那種狀態(tài)下檢查和修改它們。結(jié)果很難檢查出真正的問題所在。suspend()方法容易發(fā)生死鎖。調(diào)用suspend()的時(shí)候,目標(biāo)線程會(huì)停下來,但卻仍然持有在這之前獲得的鎖定。此時(shí),其他任何線程都不能訪問鎖定的資源,除非被掛起的線程恢復(fù)運(yùn)行。對(duì)任何線程來說,如果它們想恢復(fù)目標(biāo)線程,同時(shí)又試圖使用任何一個(gè)鎖定的資源,就會(huì)造成死鎖。所以不應(yīng)該使用suspend(),而應(yīng)在自己的Thread類中置入一個(gè)標(biāo)志,指出線程應(yīng)該活動(dòng)還是掛起。若標(biāo)志指出線程應(yīng)該掛起,便用wait()命其進(jìn)入等待狀態(tài)。若標(biāo)志指出線程應(yīng)當(dāng)恢復(fù),則用一個(gè)notify()重新啟動(dòng)線程。sleep()和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)。同步和異步有何異同,在什么情況下分別使用他們?舉例說明。答:如果數(shù)據(jù)將在線程間共享。例如正在寫的數(shù)據(jù)以后可能被另一個(gè)線程讀到,或者正在讀的數(shù)據(jù)可能已經(jīng)被另一個(gè)線程寫過了,那么這些數(shù)據(jù)就是共享數(shù)據(jù),必須進(jìn)行同步存取。當(dāng)應(yīng)用程序在對(duì)象上調(diào)用了一個(gè)需要花費(fèi)很長(zhǎng)時(shí)間來執(zhí)行的方法,并且不希望讓程序等待方法的返回時(shí),就應(yīng)該使用異步編程,在很多情況下采用異步途徑往往更有效率。啟動(dòng)一個(gè)線程是用run()還是start()?答:?jiǎn)?dòng)一個(gè)線程是調(diào)用start()方法,使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會(huì)立即運(yùn)行。run()方法可以產(chǎn)生必須退出的標(biāo)志來停止一個(gè)線程。當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法?答:不能,一個(gè)對(duì)象的一個(gè)synchronized方法只能由一個(gè)線程訪問。請(qǐng)說出你所知道的線程同步的方法。答:wait():使一個(gè)線程處于等待狀態(tài),并且釋放所持有的對(duì)象的lock。sleep():使一個(gè)正在運(yùn)行的線程處于睡眠狀態(tài),是一個(gè)靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException異常。notify():喚醒一個(gè)處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時(shí)候,并不能確切的喚醒某一個(gè)等待狀態(tài)的線程,而是由JVM確定喚醒哪個(gè)線程,而且不是按優(yōu)先級(jí)。Allnotity():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個(gè)對(duì)象的鎖,而是讓它們競(jìng)爭(zhēng)。多線程有幾種實(shí)現(xiàn)方法,都是什么?同步有幾種實(shí)現(xiàn)方法,都是什么?答:多線程有兩種實(shí)現(xiàn)方法,分別是繼承Thread類與實(shí)現(xiàn)Runnable接口同步的實(shí)現(xiàn)方面有兩種,分別是synchronized,wait與notify線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之間的關(guān)系答:線程指在程序執(zhí)行過程中,能夠執(zhí)行程序代碼的一個(gè)執(zhí)行單位,每個(gè)程序至少都有一個(gè)線程,也就是程序本身。Java中的線程有四種狀態(tài)分別是:運(yùn)行、就緒、掛起、結(jié)束?答:主要相同點(diǎn):Lock能完成synchronized所實(shí)現(xiàn)的所有功能主要不同點(diǎn):Lock有比synchronized更精確的線程語義和更好的性能。synchronized會(huì)自動(dòng)釋放鎖,而Lock一定要求程序員手工釋放,并且必須在finally從句中釋放。 Java基礎(chǔ)方面—編程華為篇第一部分:選擇題 QUESTION NO: 1 public class Test { public static void changeStr(String str){ str=wele?! public static void main(String[] args) { String str=1234?! hangeStr(str)?! ?str)?! } Please write the output result : QUESTION NO:2 1. public class Test { 2. static boolean foo(char c) { 3. (c)?! ?. return true?! ?. } 6. public static void main( String[] argv ) { 7. int i =0?! ?. for ( foo(39。A39。)。 foo(39。B39。)amp。amp。(i2)。 foo(39。C39。)){ 9. i++ ?! ?0. foo(39。D39。)?! ?2. } 13. } 14. } What is the result? A. ABDCBDCB B. ABCDABCD C. Compilation fails. D. An exception is thrown at runtime. QUESTION NO: 3 1. class A { 2. protected int method1(int a, int b) { return 0。 } 3. } Which two are valid in a class that extends class A? (Choose two) A. public int method1(int a, int b) { return 0。 } B. private int method1(int a, int b) { return 0。 } C. private int method1(int a, long b) { return 0。 } D. public short method1(int a, int b) { return 0。 } E. static protected int method1(int a, int b) { return 0。 } QUESTION NO: 4 1. public class Outer{ 2. public void someOuterMethod() { 3. // Line 3 4. } 5. public class Inner{} 6. public static void main( String[]argv ) { 7. Outer o = new Outer()?! ?. // Line 8 9. } 10. } Which instantiates an instance of Inner? A. new Inner()。 // At line 3 B. new Inner()。 // At line 8 C. new ()。 // At line 8 D. new ()。 // At line 8//new Outer().new Inner() QUESTION NO: 5 Which method is used by a servlet to place its session ID in a URL that is written to the servlet’s response output stream? A. The encodeURL method of the HttpServletRequest interface. B. The encodeURL method of the HttpServletResponse interface. C. The rewriteURL method of the HttpServletRequest interface. D. The rewriteURL method of the HttpServletResponse interface. QUESTION NO: 6 Which two are equivalent? (Choose two) A. %= % B. %= ()% C. %= (size)% D. E. F. G. QUESTION NO: 7 Which of the following statements regarding the lifecycle of a session bean are correct? 1. is thrown if () is invoked when a stateful session bean instance is passivated. 2. () does not throw an exception when a session bean with beanmanaged transaction demarcation is activated. 3. An exception is not thrown when () is called in the afterBegin method of a bean with containermanaged transactions. 4. JNDI access to java:p/env is permitted in all the SessionSynchronization methods of a stateful session bean with containermanaged transaction demarcation. 5. Accessing resource managers in the method of a stateful session bean with beanmanaged transaction does not throw an exception. 第二部分:概念題 1. 描述Struts體系結(jié)構(gòu)?對(duì)應(yīng)各個(gè)部分的開發(fā)工作主要包括哪些? 3. JSP有哪些內(nèi)置對(duì)象和動(dòng)作?它們的作用分別是什么? SQL問答題 SELECT * FROM TABLE 和 SELECT * FROM TABLE WHERE NAME LIKE 39。%%39。 AND ADDR LIKE 39。%%39。 AND (1_ADDR LIKE 39。%%39。 OR 2_ADDR LIKE 39。%%39?! R 3_ADDR LIKE 39。%%39。 OR 4_ADDR LIKE 39。%%39。 ) 的檢索結(jié)果為何不同? SQL問答題 表結(jié)構(gòu): 表名:g_cardapply 字段(字段名/類型/長(zhǎng)度): g_applyno varchar 8。//申請(qǐng)單號(hào)(關(guān)鍵字) g_applydate bigint 8。//申請(qǐng)日期 g_state varchar 2。//申請(qǐng)狀態(tài) 表名:g_cardapplydetail 字段(字段名/類型/長(zhǎng)度): g_applyno varchar 8。//申請(qǐng)單號(hào)(關(guān)鍵字) g_name varchar 30。//申請(qǐng)人姓名 g_idcard varchar 18。//申請(qǐng)人身份證號(hào) g_state varchar 2。//申請(qǐng)狀態(tài) 其中,兩個(gè)表的關(guān)聯(lián)字段為申請(qǐng)單號(hào)。 題目: 查詢身份證號(hào)碼為440401430103082的申請(qǐng)日期 查詢同一個(gè)身份證號(hào)碼有兩條以上記錄的身份證號(hào)碼及記錄個(gè)數(shù) 將身份證號(hào)碼為440401430103082的記錄在兩個(gè)表中的申請(qǐng)狀態(tài)均改為07 刪除g_cardapplydetail表中所有姓李的記錄)。