【文章內容簡介】
4java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類? 答:字節(jié)流,字符流。字節(jié)流繼承于InputStream OutputStream,字符流繼承于InputStreamReader OutputStreamWriter。,主要是為了提高性能和使用方便。 50、java中會存在內存泄漏嗎,請簡單描述。 答:會。自己實現(xiàn)堆載的數(shù)據(jù)結構時有可能會出現(xiàn)內存泄露,可參看effective java. 5java中實現(xiàn)多態(tài)的機制是什么? 答:方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。 5垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內存嗎?有什么辦法主動通知虛擬機進行垃圾回收 答:對于GC來說,當程序員創(chuàng)建對象時,GC就開始監(jiān)控這個對象的地址、大小以及使用情況。通常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對象。通過這種方式確定哪些對象是可達的,哪些對象是不可達的。當GC確定一些對象為不可達時,GC就有責任回收這些內存空間??梢?。(),通知GC運行,但是Java語言規(guī)范并不保證GC一定會執(zhí)行。 5靜態(tài)變量和實例變量的區(qū)別? 答:static i = 10。 //常量 class A a。 =10。//可變 5什么是java序列化,如何實現(xiàn)java序列化? 答:序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化??梢詫α骰蟮膶ο筮M行讀寫操作,也可將流化后的對象傳輸于網(wǎng)絡之間。序列化是為了解決在對對象流進行讀寫操作時所引發(fā)的問題。 序列化的實現(xiàn):將需要被序列化的類實現(xiàn)Serializable接口,該接口沒有需要實現(xiàn)的方法,implements Serializable只是為了標注該對象是可被序列化的,然后使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數(shù)為obj的對象寫出(即保存其狀態(tài)),要恢復的話則用輸入流。 5是否可以從一個static方法內部發(fā)出對非static方法的調用? 答:不可以,如果其中包含對象的method();不能保證對象初始化. 5寫clone()方法時,通常都有一行代碼,是什么? 答:Clone 有缺省行為,()。他負責產(chǎn)生正確大小的空間,并逐位復制。 5在JAVA中,如何跳出當前的多重嵌套循環(huán)? 答:用break。 return 方法。 5List、Map、Set三個接口,存取元素時,各有什么特點? 答:List 以特定次序來持有元素,可有重復元素。Set 無法擁有重復元素,內部排序。Map 保存keyvalue值,value可多值。 5說出一些常用的類,包,接口,請各舉5個 答:常用的類:BufferedReader BufferedWriter FileReader FileWirter String Integer 常用的包: 常用的接口:Remote List Map Document NodeList Java基礎方面—線程編程方面java中有幾種方法可以實現(xiàn)一個線程?用什么關鍵字修飾同步方法?stop()和suspend()方法為何不推薦使用?答:有兩種實現(xiàn)方法,分別是繼承Thread類與實現(xiàn)Runnable接口用synchronized關鍵字修飾同步方法反對使用stop(),是因為它不安全。它會解除由線程獲取的所有鎖定,而且如果對象處于一種不連貫狀態(tài),那么其他線程能在那種狀態(tài)下檢查和修改它們。結果很難檢查出真正的問題所在。suspend()方法容易發(fā)生死鎖。調用suspend()的時候,目標線程會停下來,但卻仍然持有在這之前獲得的鎖定。此時,其他任何線程都不能訪問鎖定的資源,除非被掛起的線程恢復運行。對任何線程來說,如果它們想恢復目標線程,同時又試圖使用任何一個鎖定的資源,就會造成死鎖。所以不應該使用suspend(),而應在自己的Thread類中置入一個標志,指出線程應該活動還是掛起。若標志指出線程應該掛起,便用wait()命其進入等待狀態(tài)。若標志指出線程應當恢復,則用一個notify()重新啟動線程。sleep()和wait()有什么區(qū)別?答:sleep是線程類(Thread)的方法,導致此線程暫停執(zhí)行指定時間,給執(zhí)行機會給其他線程,但是監(jiān)控狀態(tài)依然保持,到時后會自動恢復。調用sleep不會釋放對象鎖。wait是Object類的方法,對此對象調用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法(或notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態(tài)。同步和異步有何異同,在什么情況下分別使用他們?舉例說明。答:如果數(shù)據(jù)將在線程間共享。例如正在寫的數(shù)據(jù)以后可能被另一個線程讀到,或者正在讀的數(shù)據(jù)可能已經(jīng)被另一個線程寫過了,那么這些數(shù)據(jù)就是共享數(shù)據(jù),必須進行同步存取。當應用程序在對象上調用了一個需要花費很長時間來執(zhí)行的方法,并且不希望讓程序等待方法的返回時,就應該使用異步編程,在很多情況下采用異步途徑往往更有效率。啟動一個線程是用run()還是start()?答:啟動一個線程是調用start()方法,使線程所代表的虛擬處理機處于可運行狀態(tài),這意味著它可以由JVM調度并執(zhí)行。這并不意味著線程就會立即運行。run()方法可以產(chǎn)生必須退出的標志來停止一個線程。當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?答:不能,一個對象的一個synchronized方法只能由一個線程訪問。請說出你所知道的線程同步的方法。答:wait():使一個線程處于等待狀態(tài),并且釋放所持有的對象的lock。sleep():使一個正在運行的線程處于睡眠狀態(tài),是一個靜態(tài)方法,調用此方法要捕捉InterruptedException異常。notify():喚醒一個處于等待狀態(tài)的線程,注意的是在調用此方法的時候,并不能確切的喚醒某一個等待狀態(tài)的線程,而是由JVM確定喚醒哪個線程,而且不是按優(yōu)先級。Allnotity():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。多線程有幾種實現(xiàn)方法,都是什么?同步有幾種實現(xiàn)方法,都是什么?答:多線程有兩種實現(xiàn)方法,分別是繼承Thread類與實現(xiàn)Runnable接口同步的實現(xiàn)方面有兩種,分別是synchronized,wait與notify線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之間的關系答:線程指在程序執(zhí)行過程中,能夠執(zhí)行程序代碼的一個執(zhí)行單位,每個程序至少都有一個線程,也就是程序本身。Java中的線程有四種狀態(tài)分別是:運行、就緒、掛起、結束?答:主要相同點:Lock能完成synchronized所實現(xiàn)的所有功能主要不同點:Lock有比synchronized更精確的線程語義和更好的性能。synchronized會自動釋放鎖,而Lock一定要求程序員手工釋放,并且必須在finally從句中釋放。 Java基礎方面—編程華為篇第一部分:選擇題 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)。 4. return true。 5. } 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體系結構?對應各個部分的開發(fā)工作主要包括哪些? 3. JSP有哪些內置對象和動作?它們的作用分別是什么? SQL問答題 SELECT * FROM TABLE 和 SELECT * FROM TABLE WHERE NAME LIKE 39。%%39。 AND ADDR LIKE 39。%%39?! ND (1_ADDR LIKE 39。%%39。 OR 2_ADDR LIKE 39。%%39?! R 3_ADDR LIKE 39。%%39。 OR 4_ADDR LIKE 39。%%39。 ) 的檢索結果為何不同? SQL問答題 表結構: 表名:g_cardapply 字段(字段名/類型/長度): g_applyno varchar 8。//申請單號(關鍵字) g_applydate bigint 8。//申請日期 g_state varchar 2。//申請狀態(tài) 表名:g_cardapplydetail 字段(字段名/類型/長度): g_applyno varchar 8。//申請單號(關鍵字) g_name varchar 30。//申請人姓名 g_idcard varchar 18。//申請人身份證號 g_state varchar 2。//申請狀態(tài) 其中,兩個表的關聯(lián)字段為申請單號?! ☆}目: 查詢身份證號碼為440401430103082的申請日期 查詢同一個身份證號碼有兩條以上記錄的身份證號碼及記錄個數(shù) 將身份證號碼為440401430103082的記錄在兩個表中的申請狀態(tài)均改為07 刪除g_cardapplydetail表中所有姓李的記錄)。