NO IMAGE

 

 面試時候經常會問的一些問題(不斷補充中)

面試必備基礎題目(雖然不一定常用, 僅用於面試, 面試就是把人搞的都不會然後砍價, 當然您可以講我可以查資料完成, 但是面試的時候就是沒道理的, 起碼我是經常看到這些題).

如何把一段逗號分割的字串轉換成一個陣列?
request.getAttribute() 和 request.getParameter() 有何區別?
response.sendRedirect() 和 forward() 區別?
<%@include file="xxx.jsp"%>
和 <jsp:include> 區別?
List 和 Map 區別?
Struts 和 Spring 自動填充表單引數到 Bean 的大致原理?
說一下你用的 Spring + Hibernate 的方框圖? 您都用到了哪些部分? 

請用英文簡單介紹一下自己.

請把 http://tomcat.apache.org/ 首頁的這一段話用中文翻譯一下?

 

Apache Tomcat is the servlet container that is used in the official Reference Implementation for the Java Servlet and JavaServer Pages technologies. The Java Servlet and JavaServer Pages specifications are developed by Sun under the Java Community Process

Apache Tomcat is developed in an open and participatory environment and released under the Apache Software License. Apache Tomcat is intended to be a collaboration of the best-of-breed developers from around the world. We invite you to participate in this open development project. To learn more about getting involved, click here

Apache Tomcat powers numerous large-scale, mission-critical web applications across a diverse range of industries and organizations. Some of these users and their stories are listed on the PoweredBy wiki page.

 

try {
Connection conn = …;
Statement stmt = …;

ResultSet rs = stmt.executeQuery("select * from table1");

while(rs.next()) {

}
} catch(Exception ex) {

這段程式碼有什麼不足之處? 

HTML 的 form 提交之前如何驗證數值不為空? 為空的話提示使用者並終止提交? 

為什麼要用 ORM?  和 JDBC 有何不一樣? 

Weblogic 的 Server, Machine, Node, Domain 都有何區別? 

簡要講一下 EJB 的 7 個 Transaction Level? 

最常見的: 用 JDBC 查詢學生成績單, 把主要程式碼寫出來. 

Tomcat 5 用 query.jsp?name=中文, 怎麼把這個變數無亂碼的取出來? 

finally語句一定會執行麼? 

前幾天有一個朋友去面試,被問到這樣一個問題,如下 

 1 public class  smallT
 2 {
 3 public static void  main(String args[])
 4 {
 5         smallT t  = new  smallT();
 6 int  b  =  t.get();
 7         System.out.println(b);
 8     }
 9 public int  get()
10 {
11 try
12 {
13 return 2 ;
14         }
15 catch (Exception e)
16 {
17 return 3 ;
18         }
19 finally
20 {
21 return 4 ;
22         }
23     }
24 }
25 

輸出:
4
我記得學習的時候說有返回值的方法,執行完return語句後就會停止了;另一方面我還記得在try……catch語句中finally語句也是一定要執行的。於是在這裡就產生了麻煩。試了一下,發現果然是執行了finally中的值。正好這兩天公司在培訓,我便把這個問題提給java很厲害的一個講師,他用斷點測試了一下,說是兩個值都返回了……
我又改了一小下,在get方法中逐個添上了輸出資訊到控制檯的語句,發現居然能執行。如下 

 1public class test
 2{
 3 public static void main(String args[])
 4{
 5        test t = new test();
 6 int b = t.get();
 7        System.out.println("Third: a = "+b);
 8    }
 9 public int get()
10{
11 try
12{
13         System.out.println("First: a = "+2);
14 return 2;
15        }
16 catch(Exception e)
17{
18         System.out.println(3);
19        }
20 finally
21{
22            System.out.println("Second: a = "+4);
23 return 4;
24        }
25    }
26}
27

輸出:
First: a = 2
Second: a = 4
Third: a = 4
可這明明是一個需要返回一個int整數的方法啊。 

一道面試題目 

一個整數,大於0,不用迴圈和本地變數,按照n,2n,4n,8n的順序遞增,當值大於5000時,把值按照指定順序輸出來。
例:n=1237
則輸出為:
1237,
2474,
4948,
9896,
9896,
4948,
2474,
1237, 

美資軟體公司JAVA工程師電話面試題目 

1. Talk about overriding, overloading.
2. Talk about JAVA design patterns you known.
3. Talk about the difference between LinkList, ArrayList and Victor.
4. Talk about the difference between an Abstract class and an Interface.
5. Class a = new Class(); Class b = new Class();
 if(a == b) returns true or false, why?
6. Why we use StringBuffer when concatenating strings?
7. Try to explain Singleton to us? Is it thread safe? If no, how to make it thread safe?
8. Try to explain Ioc?
9. How to set many-to-many relationship in Hibernate?
10. Talk about the difference between INNER JOIN and LFET JOIN.
11. Why we use index in database? How many indexes is the maximum in one table as your suggestion?
12. When ‘Final’ is used in class, method and property, what dose it mean?
13. Do you have any experience on XML? Talk about any XML tool you used ,e.g. JAXB, JAXG.
14. Do you have any experience on Linux?
15. In OOD what is the reason when you create a Sequence diagram? 

補一個內部培訓用的 PPT:  SQL Tuning in Sybase.zip 17KB, 英文, Sybase 調優, 大部分道理是通用的.

資料庫三正規化是什麼? 別看問題簡單, 我也經常答不上來被面試的人寫上資料庫不行.

還有就是 Sun Java 認證時候會考的一些英文選擇題, 填空題, 模擬題也成.

赴港JAVA開發工程師的面試題目 

 

也是上個星期五的上午,按照與獵頭的約定,接受了香港某軟體供應商的面試。工作是分析程式設計師,需赴港工作,以下是面試過程以及題目(大概記下了90%),記下來與大家分享。
第一部分:例行公事的英文自我介紹;
以下部分必須以粵語回答,本人非廣東人,粵語會講,但是不標準。
第二部分:專案經驗介紹,著重介紹專案背景,開發流程以及本人在專案開發過程中的角色;
第三部分:面試官根據簡歷提問:
(1)說出Abstract class與interface的不同?
(2)Oracle中如何進行錯誤處理?如果使用者反應速度慢,你如何著手解決問題?
(3)圖畫板上列了兩個table,問查詢結果,主要是考inner join與left join的。
(4)union和union all有什麼不同?
(5)你用什麼軟體做設計?
(6)是否用過Websphere?
(7)iBatis與Hibernate有什麼不同?
(8)談談Struts中的Action servlet。
(9)是否開發過IBM portal專案。
(10)是否介意加班?
(11)如果你去香港工作,你認為你最大的困難是什麼?
第四部分:筆試,三個英文考試題目選一個作答,內容都是寫一份email。
出來後問了獵頭,他說最遲一個星期內就有結果。
結果,晚上就接到電話說通過了,並收到了合同和赴港申請的電子檔案。工作地點是九龍,月薪18K(中等偏低),合同期一年。獵頭催我儘快籤合同,然後他們馬上就去辦工作簽證。
猶豫ing。

每個JAVA初學者應該知道的問題 

對於這個系列裡的問題,每個學Java的人都應該搞懂。當然,如果只是學Java玩玩就無所謂了。如果你認為自己已經超越初學者了,卻不很懂這些問題,請將你自己重歸初學者行列。內容均來自於CSDN的經典老貼。
問題一:我宣告瞭什麼!
String s = "Hello world!";
許多人都做過這樣的事情,但是,我們到底宣告瞭什麼?回答通常是:一個String,內容是“Hello world!”。這樣模糊的回答通常是概念不清的根源。如果要準確的回答,一半的人大概會回答錯誤。
這個語句宣告的是一個指向物件的引用,名為“s”,可以指向型別為String的任何物件,目前指向"Hello world!"這個String型別的物件。這就是真正發生的事情。我們並沒有宣告一個String物件,我們只是宣告瞭一個只能指向String物件的引用變數。所以,如果在剛才那句語句後面,如果再執行一句:
String string = s;
我們是宣告瞭另外一個只能指向String物件的引用,名為string,並沒有第二個物件產生,string還是指向原來那個物件,也就是,和s指向同一個物件。
問題二:"=="和equals方法究竟有什麼區別?
==操作符專門用來比較變數的值是否相等。比較好理解的一點是:
int a=10;
int b=10;
則a==b將是true。
但不好理解的地方是:
String a=new String("foo");
String b=new String("foo");
則a==b將返回false。
根據前一帖說過,物件變數其實是一個引用,它們的值是指向物件所在的記憶體地址,而不是物件本身。a和b都使用了new操作符,意味著將在記憶體中產生兩個內容為"foo"的字串,既然是“兩個”,它們自然位於不同的記憶體地址。a和b的值其實是兩個不同的記憶體地址的值,所以使用"=="操作符,結果會是 false。誠然,a和b所指的物件,它們的內容都是"foo",應該是“相等”,但是==操作符並不涉及到物件內容的比較。
物件內容的比較,正是equals方法做的事。
看一下Object物件的equals方法是如何實現的:
boolean equals(Object o){
return this==o;
}
Object 物件預設使用了==操作符。所以如果你自創的類沒有覆蓋equals方法,那你的類使用equals和使用==會得到同樣的結果。同樣也可以看出, Object的equals方法沒有達到equals方法應該達到的目標:比較兩個物件內容是否相等。因為答案應該由類的建立者決定,所以Object把這個任務留給了類的建立者。
看一下一個極端的類:
Class Monster{
private String content;

boolean equals(Object another){ return true;}
}
我覆蓋了equals方法。這個實現會導致無論Monster例項內容如何,它們之間的比較永遠返回true。
所以當你是用equals方法判斷物件的內容是否相等,請不要想當然。因為可能你認為相等,而這個類的作者不這樣認為,而類的equals方法的實現是由他掌握的。如果你需要使用equals方法,或者使用任何基於雜湊碼的集合(HashSet,HashMap,HashTable),請察看一下 java doc以確認這個類的equals邏輯是如何實現的。
問題三:String到底變了沒有?
沒有。因為String被設計成不可變(immutable)類,所以它的所有物件都是不可變物件。請看下列程式碼:
String s = "Hello";
s = s + " world!";
s 所指向的物件是否改變了呢?從本系列第一篇的結論很容易匯出這個結論。我們來看看發生了什麼事情。在這段程式碼中,s原先指向一個String物件,內容是 "Hello",然後我們對s進行了+操作,那麼s所指向的那個物件是否發生了改變呢?答案是沒有。這時,s不指向原來那個物件了,而指向了另一個 String物件,內容為"Hello world!",原來那個物件還存在於記憶體之中,只是s這個引用變數不再指向它了。
通過上面的說明,我們很容易匯出另一個結論,如果經常對字串進行各種各樣的修改,或者說,不可預見的修改,那麼使用String來代表字串的話會引起很大的記憶體開銷。因為 String物件建立之後不能再改變,所以對於每一個不同的字串,都需要一個String物件來表示。這時,應該考慮使用StringBuffer類,它允許修改,而不是每個不同的字串都要生成一個新的物件。並且,這兩種類的物件轉換十分容易。
同時,我們還可以知道,如果要使用內容相同的字串,不必每次都new一個String。例如我們要在構造器中對一個名叫s的String引用變數進行初始化,把它設定為初始值,應當這樣做:
public class Demo {
private String s;

public Demo {
s = "Initial Value";
}

}
而非
s = new String("Initial Value");
後者每次都會呼叫構造器,生成新物件,效能低下且記憶體開銷大,並且沒有意義,因為String物件不可改變,所以對於內容相同的字串,只要一個String物件來表示就可以了。也就說,多次呼叫上面的構造器建立多個物件,他們的String型別屬性s都指向同一個物件。
上面的結論還基於這樣一個事實:對於字串常量,如果內容相同,Java認為它們代表同一個String物件。而用關鍵字new呼叫構造器,總是會建立一個新的物件,無論內容是否相同。
至於為什麼要把String類設計成不可變類,是它的用途決定的。其實不只String,很多Java標準類庫中的類都是不可變的。在開發一個系統的時候,我們有時候也需要設計不可變類,來傳遞一組相關的值,這也是物件導向思想的體現。不可變類有一些優點,比如因為它的物件是隻讀的,所以多執行緒併發訪問也不會有任何問題。當然也有一些缺點,比如每個不同的狀態都要一個物件來代表,可能會造成效能上的問題。所以Java標準類庫還提供了一個可變版本,即 StringBuffer。
問題四:final關鍵字到底修飾了什麼?
final使得被修飾的變數"不變",但是由於物件型變數的本質是“引用”,使得“不變”也有了兩種含義:引用本身的不變,和引用指向的物件不變。
引用本身的不變:
final StringBuffer a=new StringBuffer("immutable");
final StringBuffer b=new StringBuffer("not immutable");
a=b;//編譯期錯誤
引用指向的物件不變:
final StringBuffer a=new StringBuffer("immutable");
a.append(" broken!"); //編譯通過
可見,final只對引用的“值”(也即它所指向的那個物件的記憶體地址)有效,它迫使引用只能指向初始指向的那個物件,改變它的指向會導致編譯期錯誤。至於它所指向的物件的變化,final是不負責的。這很類似==操作符:==操作符只負責引用的“值”相等,至於這個地址所指向的物件內容是否相等,==操作符是不管的。
理解final問題有很重要的含義。許多程式漏洞都基於此—-final只能保證引用永遠指向固定物件,不能保證那個物件的狀態不變。在多執行緒的操作中,一個物件會被多個執行緒共享或修改,一個執行緒對物件無意識的修改可能會導致另一個使用此物件的執行緒崩潰。一個錯誤的解決方法就是在此物件新建的時候把它宣告為final,意圖使得它“永遠不變”。其實那是徒勞的。
問題五:到底要怎麼樣初始化!
本問題討論變數的初始化,所以先來看一下Java中有哪些種類的變數。
1. 類的屬性,或者叫值域
2. 方法裡的區域性變數
3. 方法的引數
對於第一種變數,Java虛擬機器會自動進行初始化。如果給出了初始值,則初始化為該初始值。如果沒有給出,則把它初始化為該型別變數的預設初始值。
int型別變數預設初始值為0
float型別變數預設初始值為0.0f
double型別變數預設初始值為0.0
boolean型別變數預設初始值為false
char型別變數預設初始值為0(ASCII碼)
long型別變數預設初始值為0
所有物件引用型別變數預設初始值為null,即不指向任何物件。注意陣列本身也是物件,所以沒有初始化的陣列引用在自動初始化後其值也是null。
對於兩種不同的類屬性,static屬性與instance屬性,初始化的時機是不同的。instance屬性在建立例項的時候初始化,static屬性在類載入,也就是第一次用到這個類的時候初始化,對於後來的例項的建立,不再次進行初始化。這個問題會在以後的系列中進行詳細討論。
對於第二種變數,必須明確地進行初始化。如果再沒有初始化之前就試圖使用它,編譯器會抗議。如果初始化的語句在try塊中或if塊中,也必須要讓它在第一次使用前一定能夠得到賦值。也就是說,把初始化語句放在只有if塊的條件判斷語句中編譯器也會抗議,因為執行的時候可能不符合if後面的判斷條件,如此一來初始化語句就不會被執行了,這就違反了區域性變數使用前必須初始化的規定。但如果在else塊中也有初始化語句,就可以通過編譯,因為無論如何,總有至少一條初始化語句會被執行,不會發生使用前未被初始化的事情。對於try-catch也是一樣,如果只有在try塊裡才有初始化語句,編譯部通過。如果在 catch或finally裡也有,則可以通過編譯。總之,要保證區域性變數在使用之前一定被初始化了。所以,一個好的做法是在宣告他們的時候就初始化他們,如果不知道要出事化成什麼值好,就用上面的預設值吧!
其實第三種變數和第二種本質上是一樣的,都是方法中的區域性變數。只不過作為引數,肯定是被初始化過的,傳入的值就是初始值,所以不需要初始化。
問題六:instanceof是什麼東東?
instanceof是Java的一個二元操作符,和==,>,<是同一類東東。由於它是由字母組成的,所以也是Java的保留關鍵字。它的作用是測試它左邊的物件是否是它右邊的類的例項,返回boolean型別的資料。舉個例子:
String s = "I AM an Object!";
boolean isObject = s instanceof Object;
我們宣告瞭一個String物件引用,指向一個String物件,然後用instancof來測試它所指向的物件是否是Object類的一個例項,顯然,這是真的,所以返回true,也就是isObject的值為True。
instanceof有一些用處。比如我們寫了一個處理賬單的系統,其中有這樣三個類:
public class Bill {//省略細節}
public class PhoneBill extends Bill {//省略細節}
public class GasBill extends Bill {//省略細節}
在處理程式裡有一個方法,接受一個Bill型別的物件,計算金額。假設兩種賬單計算方法不同,而傳入的Bill物件可能是兩種中的任何一種,所以要用instanceof來判斷:
public double calculate(Bill bill) {
if (bill instanceof PhoneBill) {
//計算電話賬單
}
if (bill instanceof GasBill) {
//計算燃氣賬單
}

}
這樣就可以用一個方法處理兩種子類。
然而,這種做法通常被認為是沒有好好利用物件導向中的多型性。其實上面的功能要求用方法過載完全可以實現,這是物件導向變成應有的做法,避免回到結構化程式設計模式。只要提供兩個名字和返回值都相同,接受引數型別不同的方法就可以了:
public double calculate(PhoneBill bill) {
//計算電話賬單
}
public double calculate(GasBill bill) {
//計算燃氣賬單
}
所以,使用instanceof在絕大多數情況下並不是推薦的做法,應當好好利用多型。

BeanSoft 參加過的一次面試:

 

2004年8月18日 星期三 〖農曆 甲申 猴年 七月初三〗 

筆試題目
1. 寫出常用的 Linux 命令
a) 列出當前目錄
b) 列出所有系統變數
c) 重新命名檔案
d) etc… 記不住了. 

2. Write a Java application use the Singleton pattern, it should have one instance per class. It should have two integer variable, one is count, on is inita. There should be two methods in this class, and the method should be thread safely in multi-thread environment.
a) a count() method, after each call the count should be added on by 1;
b) a reset() method, after each call the count should be set to the value of inita. 

3. Write a JavaBean and a JSP file. The page should output a date string in this pattern "今天是2004年8月15日上午10:00", the value is taken from the bean. 

4. 以下三個題目, 任選其一或多個:
1) 忘了…, 是關於 Java 的.
2) 寫一個應用程式, 讀出 STUDENT 表中的資料並列印出所有名稱. 資料庫系統任選.
3) 寫一個 Servlet, 讀取名為 url 的引數, 並連線到此字串指定的地址上, 讀取所有內容後顯示給客戶. 

5. 6. 7. 都是關於 SQL 的, 例如 SELECT, UPDATE, DELETE 之類的, 還有的有子查詢. 資料庫系統沒有限制. 

8. Write a html file, it shoud has follow functions:
1) check whether the user’s name is empty;
2) the email address should has a ‘@’;
3) telephone number must be ‘1’-‘9’, ‘-‘, ‘ ‘(space).
Page picture:
Please input your name:
[____________________] [Check input]
Please input your address:
[[email protected]________________] [Check input]
Please input your telephone number:
[____123a____________] [Check input] 

Java 面試題及其答案 

前段時間因為要參加一個筆試,在準備期間在網上找到了兩條關於筆試題目的文章,其中一篇為<<有感:應聘Java筆試時可能出現問題>>,還有一篇忘了名字,讀後深受啟發。 
在尋找這些答案的過程中,我將相關答案記錄下來,就形成了以下這些東西。需要說明的是以下答案肯定有很多不完整甚至錯誤的地方,需要各位來更正與完善它,千萬不要扔我的雞蛋啊。 
希望本文能夠給即將奔赴筆試考場的同仁些許幫助,更希望更多的人加入到收集整理筆試題與完善答案的這些工作中來,為大家更好的獲得工作機會做一點貢獻。 
在此感謝前面兩文的作者的對筆試題目的收集與整理。 
如有任何意見與建議請通過QQ:6045306,Mail:[email protected]與我聯絡。 
Java基礎方面: 

1、作用域public,private,protected,以及不寫時的區別 
答:區別如下: 
作用域 當前類 同一package 子孫類 其他package 
public √ √ √ √ 
protected √ √ √ × 
friendly √ √ × × 
private √ × × × 
不寫時預設為friendly 

2、ArrayList和Vector的區別,HashMap和Hashtable的區別 
答:就ArrayList與Vector主要從二方面來說. 
一.同步性:Vector是執行緒安全的,也就是說是同步的,而ArrayList是執行緒序不安全的,不是同步的 
二.資料增長:當需要增長時,Vector預設增長為原來一培,而ArrayList卻是原來的一半 
就HashMap與HashTable主要從三方面來說。 
一.歷史原因:Hashtable是基於陳舊的Dictionary類的,HashMap是Java 1.2引進的Map介面的一個實現 
二.同步性:Hashtable是執行緒安全的,也就是說是同步的,而HashMap是執行緒序不安全的,不是同步的 
三.值:只有HashMap可以讓你將空值作為一個表的條目的key或value 

3、char型變數中能不能存貯一箇中文漢字?為什麼? 
答:是能夠定義成為一箇中文的,因為java中以unicode編碼,一個char佔16個位元組,所以放一箇中文是沒問題的 

4、多執行緒有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼? 
答:多執行緒有兩種實現方法,分別是繼承Thread類與實現Runnable介面 
同步的實現方面有兩種,分別是synchronized,wait與notify 

5、繼承時候類的執行順序問題,一般都是選擇題,問你將會列印出什麼? 
答:父類: 
package test; 
public class FatherClass 

public FatherClass() 

System.out.println("FatherClass Create"); 


子類: 
package test; 
import test.FatherClass; 
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(); 


輸出結果: 
C:\>java test.ChildClass 
FatherClass Create 
FatherClass Create 
ChildClass Create 

6、內部類的實現方式? 
答:示例程式碼如下: 
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(); 


輸出結果: 
C:\>java test/OuterClass 
InterClass Create 
OuterClass Create 
再一個例題: 
public class OuterClass { 
private double d1 = 1.0; 
//insert code here 

You need to insert an inner class declaration at line 3. Which two inner class declarations are 

valid?(Choose two.) 
A. class InnerOne{ 
public static double methoda() {return d1;} 

B. public 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(); 

說明如下: 
一.靜態內部類可以有靜態成員,而非靜態內部類則不能有靜態成員。 故 A、B 錯 
二.靜態內部類的非靜態成員可以訪問外部類的靜態變數,而不可訪問外部類的非靜態變數;return d1 出錯。 

故 D 錯 
三.非靜態內部類的非靜態成員可以訪問外部類的非靜態變數。 故 C 正確 
四.答案為C、E 

7、垃圾回收機制,如何優化程式? 
希望大家補上,謝謝 

8、float型float f=3.4是否正確? 
答:不正確。精度不準確,應該用強制型別轉換,如下所示:float f=(float)3.4 

9、介紹JAVA中的Collection FrameWork(包括如何寫自己的資料結構)? 
答:Collection FrameWork如下: 
Collection 
├List 
│├LinkedList 
│├ArrayList 
│└Vector 
│ └Stack 
└Set 
Map 
├Hashtable 
├HashMap 
└WeakHashMap 
Collection是最基本的集合介面,一個Collection代表一組Object,即Collection的元素(Elements) 
Map提供key到value的對映 

10、Java中異常處理機制,事件機制? 

11、JAVA中的多形與繼承? 
希望大家補上,謝謝 

12、抽象類與介面? 
答:抽象類與介面都用於抽象,但是抽象類(JAVA中)可以有自己的部分實現,而介面則完全是一個標識(同時有多重繼承的功能)。 

13、Java 的通訊程式設計,程式設計題(或問答),用JAVA SOCKET程式設計,讀伺服器幾個字元,再寫入本地顯示? 
答:Server端程式: 
package test; 
import java.net.*; 
import java.io.*; 

public class Server 

private ServerSocket ss; 
private Socket socket; 
private BufferedReader in; 
private PrintWriter out; 
public Server() 

try 

ss=new ServerSocket(10000); 
while(true) 

socket = ss.accept(); 
String RemoteIP = socket.getInetAddress().getHostAddress(); 
String RemotePort = ":"+socket.getLocalPort(); 
System.out.println("A client come in!IP:"+RemoteIP+RemotePort); 
in = new BufferedReader(new 

InputStreamReader(socket.getInputStream())); 
String line = in.readLine(); 
System.out.println("Cleint send is :" + line); 
out = new PrintWriter(socket.getOutputStream(),true); 
out.println("Your Message Received!"); 
out.close(); 
in.close(); 
socket.close(); 

}catch (IOException e) 

out.println("wrong"); 


public static void main(String[] args) 

new Server(); 

}; 
Client端程式: 
package test; 
import java.io.*; 
import java.net.*; 

public class Client 

Socket socket; 
BufferedReader in; 
PrintWriter out; 
public Client() 

try 

System.out.println("Try to Connect to 127.0.0.1:10000"); 
socket = new Socket("127.0.0.1",10000); 
System.out.println("The Server Connected!"); 
System.out.println("Please enter some Character:"); 
BufferedReader line = new BufferedReader(new 

InputStreamReader(System.in)); 
out = new PrintWriter(socket.getOutputStream(),true); 
out.println(line.readLine()); 
in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
System.out.println(in.readLine()); 
out.close(); 
in.close(); 
socket.close(); 
}catch(IOException e) 

out.println("Wrong"); 


public static void main(String[] args) 

new Client(); 

}; 

14、用JAVA實現一種排序,JAVA類實現序列化的方法(二種)? 如在COLLECTION框架中,實現比較要實現什麼樣的介面? 
答:用插入法進行排序程式碼如下 
package test; 
import java.util.*; 
class InsertSort 

ArrayList al; 
public InsertSort(int num,int mod) 

al = new ArrayList(num); 
Random rand = new Random(); 
System.out.println("The ArrayList Sort Before:"); 
for (int i=0;i<num ;i++ ) 

al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1)); 
System.out.println("al["+i+"]="+al.get(i)); 


public void SortIt() 

Integer tempInt; 
int MaxSize=1; 
for(int i=1;i<al.size();i++) 

tempInt = (Integer)al.remove(i); 
if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue()) 

al.add(MaxSize,tempInt); 
MaxSize++; 
System.out.println(al.toString()); 
} else { 
for (int j=0;j<MaxSize ;j++ ) 

if 

(((Integer)al.get(j)).intValue()>=tempInt.intValue()) 

al.add(j,tempInt); 
MaxSize++; 
System.out.println(al.toString()); 
break; 




System.out.println("The ArrayList Sort After:"); 
for(int i=0;i<al.size();i++) 

System.out.println("al["+i+"]="+al.get(i)); 


public static void main(String[] args) 

InsertSort is = new InsertSort(10,100); 
is.SortIt(); 


JAVA類實現序例化的方法是實現java.io.Serializable介面 
Collection框架中實現比較要實現Comparable 介面和 Comparator 介面 

15、程式設計:編寫一個擷取字串的函式,輸入為一個字串和位元組數,輸出為按位元組擷取的字串。 但是要保證漢字不被截半個,如“我ABC”4,應該截為“我AB”,輸入“我ABC漢DEF”,6,應該輸出為“我ABC”而不是“我ABC+漢的半個”。 
答:程式碼如下: 
package test; 

class SplitString 

String SplitStr; 
int SplitByte; 
public SplitString(String str,int bytes) 

SplitStr=str; 
SplitByte=bytes; 
System.out.println("The String is:′"+SplitStr+"′SplitBytes="+SplitByte); 

public void SplitIt() 

int loopCount; 

loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split 

Byte+1); 
System.out.println("Will Split into "+loopCount); 
for (int i=1;i<=loopCount ;i++ ) 

if (i==loopCount){ 

System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length())); 
} else { 

System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte))); 



public static void main(String[] args) 

SplitString ss = new SplitString("test中dd文dsaf中男大3443n中國43中國人 

0ewldfls=103",4); 
ss.SplitIt(); 

16、JAVA多執行緒程式設計。 用JAVA寫一個多執行緒程式,如寫四個執行緒,二個加1,二個對一個變數減一,輸出。 
希望大家補上,謝謝 

17、STRING與STRINGBUFFER的區別。 
答:STRING的長度是不可變的,STRINGBUFFER的長度是可變的。如果你對字串中的內容經常進行操作,特別是內容要修改時,那麼使用StringBuffer,如果最後需要String,那麼使用StringBuffer的toString()方法 

Jsp方面 

1、jsp有哪些內建物件?作用分別是什麼? 
答:JSP共有以下9種基本內建元件(可與ASP的6種內部元件相對應): 
 request 使用者端請求,此請求會包含來自GET/POST請求的引數 
response 網頁傳回使用者端的迴應 
pageContext 網頁的屬性是在這裡管理 
session 與請求有關的會話期 
application servlet 正在執行的內容 
out 用來傳送回應的輸出 
config servlet的構架部件 
page JSP網頁本身 
exception 針對錯誤網頁,未捕捉的例外 

2、jsp有哪些動作?作用分別是什麼? 
答:JSP共有以下6種基本動作 
jsp:include:在頁面被請求的時候引入一個檔案。 
jsp:useBean:尋找或者例項化一個JavaBean。 
jsp:setProperty:設定JavaBean的屬性。 
jsp:getProperty:輸出某個JavaBean的屬性。 
jsp:forward:把請求轉到一個新的頁面。 
jsp:plugin:根據瀏覽器型別為Java外掛生成OBJECT或EMBED標記 

3、JSP中動態INCLUDE與靜態INCLUDE的區別? 
答:動態INCLUDE用jsp:include動作實現 
<jsp:include page="included.jsp" flush="true" />它總是會檢查所含檔案中的變化,適合用於包含動態頁面,並且可以帶引數 
靜態INCLUDE用include偽碼實現,定不會檢查所含檔案的變化,適用於包含靜態頁面 
<%@ include file="included.htm" %> 

4、兩種跳轉方式分別是什麼?有什麼區別? 
答:有兩種,分別為: 
<jsp:include page="included.jsp" flush="true"> 
<jsp:forward page= "nextpage.jsp"/> 
前者頁面不會轉向include所指的頁面,只是顯示該頁的結果,主頁面還是原來的頁面。執行完後還會回來,相當於函式呼叫。並且可以帶引數.後者完全轉向新頁面,不會再回來。相當於go to 語句。 

Servlet方面 

1、說一說Servlet的生命週期? 
答:servlet有良好的生存期的定義,包括載入和例項化、初始化、處理請求以及服務結束。這個生存期由javax.servlet.Servlet介面的init,service和destroy方法表達。 

2、Servlet版本間(忘了問的是哪兩個版本了)的不同? 
希望大家補上,謝謝 

3、JAVA SERVLET API中forward() 與redirect()的區別? 
答:前者僅是容器中控制權的轉向,在客戶端瀏覽器位址列中不會顯示出轉向後的地址;後者則是完全的跳轉,瀏覽器將會得到跳轉的地址,並重新傳送請求連結。這樣,從瀏覽器的位址列中可以看到跳轉後的連結地址。所以,前者更加高效,在前者可以滿足需要時,儘量使用forward()方法,並且,這樣也有助於隱藏實際的連結。在有些情況下,比如,需要跳轉到一個其它伺服器上的資源,則必須使用sendRedirect()方法。 

4、Servlet的基本架構 
public class ServletName extends HttpServlet { 
public void doPost(HttpServletRequest request, HttpServletResponse response) throws 
ServletException, IOException { 

public void doGet(HttpServletRequest request, HttpServletResponse response) throws 
ServletException, IOException { 

Jdbc、Jdo方面 

1、可能會讓你寫一段Jdbc連Oracle的程式,並實現資料查詢. 
答:程式如下: 
package hello.ant; 
import java.sql.*; 
public class jdbc 

String dbUrl="jdbc:oracle:thin:@127.0.0.1:1521:orcl" 
String theUser="admin" 
String thePw="manager" 
Connection c=null; 
Statement conn; 
ResultSet rs=null; 
public jdbc() 

try{ 
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 
c = DriverManager.getConnection(dbUrl,theUser,thePw); 
conn=c.createStatement(); 
}catch(Exception e){ 
e.printStackTrace(); 


public boolean executeUpdate(String sql) 

try 

conn.executeUpdate(sql); 
return true; 

catch (SQLException e) 

e.printStackTrace(); 
return false; 


public ResultSet executeQuery(String sql) 

rs=null; 
try 

rs=conn.executeQuery(sql); 

catch (SQLException e) 

e.printStackTrace(); 

return rs; 

public void close() 

try 

conn.close(); 
c.close(); 

catch (Exception e) 

e.printStackTrace(); 


public static void main(String[] args) 

ResultSet rs; 
jdbc conn = new jdbc(); 
rs=conn.executeQuery("select * from test"); 
try{ 
while (rs.next()) 

System.out.println(rs.getString("id")); 
System.out.println(rs.getString("name")); 

}catch(Exception e) 

e.printStackTrace(); 


2、Class.forName的作用?為什麼要用? 
答:呼叫該訪問返回一個以字串指定類名的類的物件。 

3、Jdo是什麼? 
答:JDO是Java物件持久化的新的規範,為java data object的簡稱,也是一個用於存取某種資料倉儲中的物件的標準化API。JDO提供了透明的物件儲存,因此對開發人員來說,儲存資料物件完全不需要額外的程式碼(如JDBC API的使用)。這些繁瑣的例行工作已經轉移到JDO產品提供商身上,使開發人員解脫出來,從而集中時間和精力在業務邏輯上。另外,JDO很靈活,因為它可以在任何資料底層上執行。JDBC只是面向關聯式資料庫(RDBMS)JDO更通用,提供到任何資料底層的儲存功能,比如關聯式資料庫、檔案、XML以及物件資料庫(ODBMS)等等,使得應用可移植性更強。 

4、在ORACLE大資料量下的分頁解決方法。一般用擷取ID方法,還有是三層巢狀方法。 
答:一種分頁方法 
<% 
int i=1; 
int numPages=14; 
String pages = request.getParameter("page") ; 
int currentPage = 1; 
currentPage=(pages==null)?(1):{Integer.parseInt(pages)} 
sql = "select count(*) from tables" 
ResultSet rs = DBLink.executeQuery(sql) ; 
while(rs.next()) i = rs.getInt(1) ; 
int intPageCount=1; 
intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1); 
int nextPage ; 
int upPage; 
nextPage = currentPage+1; 
if (nextPage>=intPageCount) nextPage=intPageCount; 
upPage = currentPage-1; 
if (upPage<=1) upPage=1; 
rs.close(); 
sql="select * from tables" 
rs=DBLink.executeQuery(sql); 
i=0; 
while((i<numPages*(currentPage-1))&&rs.next()){i++;} 
%> 
//輸出內容 
//輸出翻頁連線 
合計:<%=currentPage%>/<%=intPageCount%><a href="List.jsp?page=1" temp_href="List.jsp?page=1">第一頁</a><a 

href="List.jsp?page=<%=upPage%>" temp_href="List.jsp?page=<%=upPage%>">上一頁</a> 
<% 
for(int j=1;j<=intPageCount;j++){ 
if(currentPage!=j){ 
%> 
<a href="list.jsp?page=<%=j%>" temp_href="list.jsp?page=<%=j%>">[<%=j%>]</a> 
<% 
}else{ 
out.println(j); 


%> 
<a href="List.jsp?page=<%=nextPage%>" temp_href="List.jsp?page=<%=nextPage%>">下一頁</a><a href="List.jsp?page=<%=intPageCount%>" temp_href="List.jsp?page=<%=intPageCount%>">最後頁 

</a> 

Xml方面 

1、xml有哪些解析技術?區別是什麼? 
答:有DOM,SAX,STAX等 
DOM:處理大型檔案時其效能下降的非常厲害。這個問題是由DOM的樹結構所造成的,這種結構佔用的記憶體較多,而且DOM必須在解析檔案之前把整個文件裝入記憶體,適合對XML的隨機訪問SAX:不現於DOM,SAX是事件驅動型的XML解析方式。它順序讀取XML檔案,不需要一次全部裝載整個檔案。當遇到像檔案開頭,文件結束,或者標籤開頭與標籤結束時,它會觸發一個事件,使用者通過在其回撥事件中寫入處理程式碼來處理XML檔案,適合對XML的順序訪問 
STAX:Streaming API for XML (StAX) 

2、你在專案中用到了xml技術的哪些方面?如何實現的? 
答:用到了資料存貯,資訊配置兩方面。在做資料交換平臺時,將不能資料來源的資料組裝成XML檔案,然後將XML檔案壓縮打包加密後通過網路傳送給接收者,接收解密與解壓縮後再同XML檔案中還原相關資訊進行處理。在做軟體配置時,利用XML可以很方便的進行,軟體的各種配置引數都存貯在XML檔案中。 

3、用jdom解析xml檔案時如何解決中文問題?如何解析? 
答:看如下程式碼,用編碼方式加以解決 
package test; 
import java.io.*; 
public class DOMTest 

private String inFile = "c:\\people.xml" 
private String outFile = "c:\\people.xml" 
public static void main(String args[]) 

new DOMTest(); 

public DOMTest() 

try 

javax.xml.parsers.DocumentBuilder builder = 

javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
org.w3c.dom.Document doc = builder.newDocument(); 
org.w3c.dom.Element root = doc.createElement("老師"); 
org.w3c.dom.Element wang = doc.createElement("王"); 
org.w3c.dom.Element liu = doc.createElement("劉"); 
wang.appendChild(doc.createTextNode("我是王老師")); 
root.appendChild(wang); 
doc.appendChild(root); 
javax.xml.transform.Transformer transformer = 
javax.xml.transform.TransformerFactory.newInstance().newTransformer(); 
transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "gb2312"); 
transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes"); 

transformer.transform(new javax.xml.transform.dom.DOMSource(doc), 
new 

javax.xml.transform.stream.StreamResult(outFile)); 

catch (Exception e) 

System.out.println (e.getMessage()); 


4、程式設計用JAVA解析XML的方式. 
答:用SAX方式解析XML,XML檔案如下: 
<?xml version="1.0" encoding="gb2312"?> 
<person> 
<name>王小明</name> 
<college>資訊學院</college> 
<telephone>6258113</telephone> 
<notes>男,1955年生,博士,95年調入海南大學</notes> 
</person> 
事件回撥類SAXHandler.java 
import java.io.*; 
import java.util.Hashtable; 
import org.xml.sax.*; 
public class SAXHandler extends HandlerBase 

private Hashtable table = new Hashtable(); 
private String currentElement = null; 
private String currentValue = null; 
public void setTable(Hashtable table) 

this.table = table; 

public Hashtable getTable() 

return table; 

public void startElement(String tag, AttributeList attrs) 
throws SAXException 

currentElement = tag; 

public void characters(char[] ch, int start, int length) 
throws SAXException 

currentValue = new String(ch, start, length); 

public void endElement(String name) throws SAXException 

if (currentElement.equals(name)) 
table.put(currentElement, currentValue); 


JSP內容顯示原始碼,SaxXml.jsp: 
<HTML> 
<HEAD> 
<TITLE>剖析XML檔案people.xml</TITLE> 
</HEAD> 
<BODY> 
<%@ page errorPage="ErrPage.jsp" 
contentType="text/html;charset=GB2312" %> 
<%@ page import="java.io.*" %> 
<%@ page import="java.util.Hashtable" %> 
<%@ page import="org.w3c.dom.*" %> 
<%@ page import="org.xml.sax.*" %> 
<%@ page import="javax.xml.parsers.SAXParserFactory" %> 
<%@ page import="javax.xml.parsers.SAXParser" %> 
<%@ page import="SAXHandler" %> 
<% 
File file = new File("c:\\people.xml"); 
FileReader reader = new FileReader(file); 
Parser parser; 
SAXParserFactory spf = SAXParserFactory.newInstance(); 
SAXParser sp = spf.newSAXParser(); 
SAXHandler handler = new SAXHandler(); 
sp.parse(new InputSource(reader), handler); 
Hashtable hashTable = handler.getTable(); 
out.println("<TABLE BORDER=2><CAPTION>教師資訊表</CAPTION>"); 
out.println("<TR><TD>姓名</TD>" + "<TD>" + 
(String)hashTable.get(new String("name")) + "</TD></TR>"); 
out.println("<TR><TD>學院</TD>" + "<TD>" + 
(String)hashTable.get(new String("college"))+"</TD></TR>"); 
out.println("<TR><TD>電話</TD>" + "<TD>" + 
(String)hashTable.get(new String("telephone")) + "</TD></TR>"); 
out.println("<TR><TD>備註</TD>" + "<TD>" + 
(String)hashTable.get(new String("notes")) + "</TD></TR>"); 
out.println("</TABLE>"); 
%> 
</BODY> 
</HTML> 

EJB方面 

1、EJB2.0有哪些內容?分別用在什麼場合? EJB2.0和EJB1.1的區別? 
答:規範內容包括Bean提供者,應用程式裝配者,EJB容器,EJB配置工具,EJB服務提供者,系統管理員。這裡面,EJB容器是EJB之所以能夠執行的核心。EJB容器管理著EJB的建立,撤消,啟用,去活,與資料庫的連線等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS….. 

2、EJB與JAVA BEAN的區別? 
答:Java Bean 是可複用的元件,對Java Bean並沒有嚴格的規範,理論上講,任何一個Java類都可以是一個Bean。但通常情況下,由於Java Bean是被容器所建立(如Tomcat)的,所以Java Bean應具有一個無參的構造器,另外,通常Java Bean還要實現Serializable介面用於實現Bean的永續性。Java Bean實際上相當於微軟COM模型中的本地程序內COM元件,它是不能被跨程序訪問的。Enterprise Java Bean 相當於DCOM,即分散式元件。它是基於Java的遠端方法呼叫(RMI)技術的,所以EJB可以被遠端訪問(跨程序、跨計算機)。但EJB必須被佈署在諸如Webspere、WebLogic這樣的容器中,EJB客戶從不直接訪問真正的EJB元件,而是通過其容器訪問。EJB容器是EJB元件的代理,EJB元件由容器所建立和管理。客戶通過容器來訪問真正的EJB元件。 

3、EJB的基本架構 
答:一個EJB包括三個部分: 
Remote Interface 介面的程式碼 
package Beans; 
import javax.ejb.EJBObject; 
import java.rmi.RemoteException; 
public interface Add extends EJBObject 

//some method declare 

Home Interface 介面的程式碼 
package Beans; 
import java.rmi.RemoteException; 
import jaax.ejb.CreateException; 
import javax.ejb.EJBHome; 
public interface AddHome extends EJBHome 

//some method declare 

EJB類的程式碼 
package Beans; 
import java.rmi.RemoteException; 
import javax.ejb.SessionBean; 
import javx.ejb.SessionContext; 
public class AddBean Implements SessionBean 

//some method declare 

J2EE,MVC方面 

1、MVC的各個部分都有那些技術來實現?如何實現? 
答:MVC是Model-View-Controller的簡寫。"Model" 代表的是應用的業務邏輯(通過JavaBean,EJB元件實現), "View" 是應用的表示面(由JSP頁面產生),"Controller" 是提供應用的處理過程控制(一般是一個Servlet),通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的元件實現。這些元件可以進行互動和重用。 

2、應用伺服器與WEB SERVER的區別? 
希望大家補上,謝謝 

3、J2EE是什麼? 
答:Je22是Sun公司提出的多層(multi-diered),分散式(distributed),基於元件(component-base)的企業級應用模型(enterpriese application model).在這樣的一個應用系統中,可按照功能劃分為不同的元件,這些元件又可在不同計算機上,並且處於相應的層次(tier)中。所屬層次包括客戶層(clietn tier)元件,web層和元件,Business層和元件,企業資訊系統(EIS)層。 

4、WEB SERVICE名詞解釋。JSWDL開發包的介紹。JAXP、JAXM的解釋。SOAP、UDDI,WSDL解釋。 
答:Web Service描述語言WSDL 
SOAP即簡單物件訪問協議(Simple Object Access Protocol),它是用於交換XML編碼資訊的輕量級協議。 
UDDI 的目的是為電子商務建立標準;UDDI是一套基於Web的、分散式的、為Web Service提供的、資訊註冊中心的實現標準規範,同時也包含一組使企業能將自身提供的Web Service註冊,以使別的企業能夠發現的訪問協議的實現標準。 

5、BS與CS的聯絡與區別。 
希望大家補上,謝謝 

6、STRUTS的應用(如STRUTS架構) 
答:Struts是採用Java Servlet/JavaServer Pages技術,開發Web應用程式的開放原始碼的framework。 採用Struts能開發出基於MVC(Model-View-Controller)設計模式的應用構架。 Struts有如下的主要功能: 
一.包含一個controller servlet,能將使用者的請求傳送到相應的Action物件。 
二.JSP自由tag庫,並且在controller servlet中提供關聯支援,幫助開發員建立互動式表單應用。 
三.提供了一系列實用物件:XML處理、通過Java reflection APIs自動處理JavaBeans屬性、國際化的提示和訊息。 

設計模式方面 

1、開發中都用到了那些設計模式?用在什麼場合? 
答:每個模式都描述了一個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需在重複相同的工作。主要用到了MVC的設計模式。用來開發JSP/Servlet或者J2EE的相關應用。簡單工廠模式等。 

2、UML方面 
答:標準建模語言UML。用例圖,靜態圖(包括類圖、物件圖和包圖),行為圖,互動圖(順序圖,合作圖),實現圖, 

JavaScript方面 

1、如何校驗數字型? 
var re=/^\d{1,8}$|\.\d{1,2}$/; 
var str=document.form1.all(i).value; 
var r=str.match(re); 
if (r==null) 

sign=-4; 
break; 

else{ 
document.form1.all(i).value=parseFloat(str); 

CORBA方面 

1、CORBA是什麼?用途是什麼? 
答:CORBA 標準是公共物件請求代理結構(Common Object Request Broker Architecture),由物件管理組織 (Object Management Group,縮寫為 OMG)標準化。它的組成是介面定義語言(IDL), 語言繫結(binding:也譯為聯編)和允許應用程式間互操作的協議。 其目的為: 
用不同的程式設計語言書寫 
在不同的程序中執行 
為不同的作業系統開發 

LINUX方面 

1、LINUX下執行緒,GDI類的解釋。 
答:LINUX實現的就是基於核心輕量級程序的"一對一"執行緒模型,一個執行緒實體對應一個核心輕量級程序,而執行緒之間的管理在核外函式庫中實現。 
GDI類為影象裝置程式設計介面類庫。

Hibernate: 簡述 Hibernate 和 JDBC 的優缺點? 如何書寫一個 one to many 配置檔案.

Spring 的依賴注入是什麼意思? 給一個 Bean 的 message 屬性, 字串型別, 注入值為 "Hello" 的 XML 配置檔案該怎麼寫?

SCJP 模擬題200道附答案

Q1 Which of the following statements are valid, given the following variable declarations: boolean a; boolean b; int c; 
1) (a | b) 
2)(a || a) 
3)(a ^ b) | c 
4)(a & c) 
5)(a && c) 

Q2 Which of the following can be applied to constructors: 
1) final 
2) static 
3) synchronized 
4) native 
5) None of these. 

Q3 Which of the following retain their preferred size (width and height) when added (individually) to the North section of a container with a BorderLayout (assume that no other components or containers are present in the North section). 
1) TextArea 
2) Button 
3) TextField 
4) Checkbox 
5) None. All of these mentioned components will only retain their preferred height. 

Q4 Which of the following are legal names for variables. 
1) _int 
2) %large 
3) $fred 
4) Integer 
5) 2much 

Q5 Which of the following are correct ways to create a font. 
1) Font f = new Font("Serif", Font.BOLD, 24); 
2) Font f = new Font(Font.SERIF, "Bold", 24); 
3) Font f = new Font("Serif", "Bold", 24); 
4) Font f = new Font(Font.SERIF, Font.BOLD, 24); 

Q6 Select the correct statements regarding the following piece of code. 
File f = new File("c:\\large.txt"); 
1) On execution, a file called "large.txt" will be created on the local harddisk. 
2) The code fails to compile on a UNIX machine, because the directory separator is not correct. 
3) A file is NOT created on the harddisk when this code is executed. 
4) An exception is thrown at runtime if the file "large.txt" already exists. 
5) The code fails to compile, since this is not a valid constructor for the File class. 

Q7 Which of the following statements are correct regarding the RandomAccessFile class? 
1) An IOException is thrown if the specified file doesn’t exist when created using the "r" mode. 
2) This class has a method which allows a file to be deleted from the harddisk. 
3) It is possible to use this class in conjunction with the DataInputStream class. 
4) When used with the "rw" mode, the specified file is created on a diskdrive, if it doesn’t already exist. 
5) There are methods to read and write primatives (eg, readInt(), writeInt(), etc). 

Q8 Consider the following piece of code and select the correct statement from the following. 
1.String s = new String("abcdefgh"); 
2.s.replace(‘d’, ‘q’); 
3.System.out.println(s); 

1) The code fails to compile, reporting an error at line 2. Strings are immutable, and therefore a replace() method is meaningless. 
2) The code compiles correctly, and displays the text "abcqefgh". 
3) The code compiles correctly, and displays the text "abcdefgh". 
4) The code compiles, but an exception is thrown when line 2 is executed. 
5) The code compiles, but an exception is thrown at line 3. 

Q9 Which of the following keywords can be applied to the variables or methods of an interface. 
1) static 
2) private 
3) synchronised 
4) protected 
5) public 

Q10 True or False. 
Only Frames can contain menu bars or pull-down menus. 
1) True 
2) False. 

Q11 Consider the following piece of code and select the correct statement(s): 
1. class A{ 
2. protected int method(){ 
3. } 
4. } 
5. 
6. class B extends A{ 
7. int method(){ 
8. } 
9. } 
1) The code fails to compile, because you can’t override a method to be more private than its parent. 
2) The code fails to compile, because method() is declared as protected, and is therefore not available to any subclass. 
3) The code compiles correctly, but throws a NullPointerException at runtime. 
4) The code fails to compile. However, it can be made to compile correctly by prefixing line 7 with the access qualifier "public". 
5) The code fails to compile. However, it can be made to compile correctly by prefixing line 7 with the access qualifier "protected". 

Q12 True or False. 

The Throwable class is the superclass of all exceptions in the Java language. 
1) True 
2) False 

Q13 Consider the following piece of code (assume the Graphics context g is defined correctly): 
g.setBackground(Color.red); 
g.setForeground(Color.white); 
g.drawLine(10, 10, 50, 10); 
g.setForeground(Color.blue); 
g.drawRect(100, 100, 50, 50); 

What is displayed when this code is executed. 
1) A blue line from (10,10) to (50,10) and a blue rectangle with upper left corner at (100,100). 
2) A white line from (10,10) to (50,10) and a blue square with top left corner at (100,100). 
3) A white line from (10,10) to (10,50) and a blue square with lower left corner at (100,100). 
4) A red line from (10, 10) to (50,10) and a red square with upper left corner at (100,100). 
5) Nothing is displayed. You must first issue a repaint() command. 

Q14 Consider the following piece of code. 
class Test{ 
public static void main(String [] args){ 
System.out.println(args[3]); 


When the following is typed at the command line, what is displayed: 
java Test Metallica Justice For All 
1) All 
2) For 
3) Justice 
4) Nothing. 
5) Nothing. An ArrayIndexOutOfBoundsException is thrown 

Q15 Consider the following piece of code. 
1. String s = "abcd"; 
2. Integer x = new Integer(3); 
3. String s2 = s + 4; 
4. s2 = null; 
5. s = null; 

Following the execution of which line above, is the object referenced by s2 available for garbage collection. 
1) Line 5 
2) It is not possible to say when an object is available for garbage collection. 
3) Line 4 
4) The objects are not available until the executing thread is ended. 

Q16 What is displayed when the following piece of code is compiled and executed: 
class Test{ 
public static void main(String [] args){ 
Base b = new Subclass(); 
System.out.println(b.x); 
System.out.println(b.method()); 

class Base{ 
int x = 2; 
int method(){ 
return x; 

class Subclass extends Base{ 
int x = 3; 
int method(){ 
return x; 

1) Nothing. The code fails to compile because the object b is not created in a valid way. 
2) 2 

3) 2 

4) 3 

5) 3 

Q17 What is displayed when the following is executed: 
String s1 = "aaa"; 
s1.concat("bbb"); 
System.out.println(s1); 
1) The string "aaa". 
2) The string "aaabbb". 
3) Nothing. concat() is not a valid method in the String class. 
4) The string "bbbaaa". 
5) The string "bbb". 

Q18 True or False. 
The following is a valid way to construct a StringBuffer. 
StringBuffer sb1 = "abcd"; 
1) True 
2) False 

Q19 What is the output of the following piece of code: 
1. int x = 6; 
2. double d = 7.7; 
3. 
4. System.out.println((x > d) ? 99.9 : 9); 

1) 9 
2) 9.0 
3) 99.9 
4) Nothing. An ArithmeticException is thrown at line 4. 
5) 6 

Q20 Which of the following can be put in applet tags? (select all the correct answers) 
1) CODE 
2) WIDTH 
3) HEIGHT 
4) PARAM 
5) ARCHIVE 

Q21 What is printed out following the execution of the code below: 
1. class Test{ 
2. static String s; 
3. public static void main(String []args){ 
4. int x = 4; 
5. if (x < 4) 
6. System.out.println("Val = " + x); 
7. else 
8. System.out.println(s); 
9. } 
10. } 
Nothing. The code fails to compile because the String s isn’t declared correctly. 
1) The text "Val = null" is displayed. 
2) The string "Val = " is displayed. 
3) The text "null" is displayed. 
4) A blank line of text is printed. 

Q22 True or False. 
The StringBuffer class does not have a concat() method. 
1) True 
2) False 

Q23 What is displayed when the following piece of code is executed (assume the graphics context, g, is correctly set up): 
g.drawString("abc", 10, 10); 
1) The text "abc" with the lower left part of "a" located at x = 10, y = 10. 
2) The text "abc" with the upper left part of "a" located at x = 10, y = 10. 
3) Nothing. This is not a valid method. 

Q24 True or False. 
Anonymous classes cannot have constructors. 
1) True 
2) False 

Q25 To reference a JAR from a web page, which of the following keywords are used: 
1) jar 
2) class 
3) zip 
4) archive 
5) package 

Q26 

Analyse the following 2 classes and select the correct statements. 
class A{ 
private int x = 0; 
static int y = 1; 
protected int q = 2; 

class B extends A{ 
void method(){ 
System.out.println(x); 
System.out.println(y); 
System.out.println(q); 

1) The code fails to compile because the variable x is not available to class B. 
2) The code compiles correctly, and the following is displayed: 0 1 2 
3) The code fails to compile because you can’t subclass a class with private variables. 
4) Removing the line "System.out.println(x)" will allow the code to compile correctly. 
5) The compiler will complain that the variable x in class B is undefined. 

Q27 Which of the following interfaces can be used to manage a collection of elements, with no duplication. 
1) List 
2) Vector 
3) Set 

Q28 Which of the following statements are true regarding inner classes. 
1) Variables defined inside inner classes cannot be static. 
2) Variables defined inside inner classes cannot be static unless the inner class itself is static. 
3) Non-static inner classes (which are not defined in a method) have access to all class and instance variables, regardless of the access qualifier of those variables. 
4) An inner class can actually be a subclass of the outer class 
5) Inner classes can be declared as private. Top level, outer classes cannot. 

Q29 Which of the following are valid ways to define an abstract method. 
1) abstract void Test(); 
2) abstract void Test() {} 
3) static abstract void Test(); 
4) final abstract void Test(); 
5) Methods cannot be defined as abstract, only variables can be abstract. 

Q30 Consider the following: 
class A extends Integer{ 
int x = 0; 

Select all valid statements. 
1) The code will compile correctly. 
2) The code will not compile because Integer is final and cannot be subclassed. 
3) The code will not compile because class A has no methods or constructor. 
4) The code will compile correctly, but will throw an ArithmeticException at runtime. 

Q31 Consider the following and select the correct statement(s): 
interface A{ 
int x = 0; 
A(){ 
x= 5; 

A(int s){ 
x = s; 


1) This is a valid piece of code and it compiles correctly. 
2) The default constructor is not required since the compiler will create one for you. 
3) The code fails to compile because interfaces cannot have more than 1 constructor. 
4) The code fails to compile because an interface cannot have any constructors. 
5) The code fails to compile, because a class must have more than 1 character in it’s name. 

Q32 True or False. 
A try block always needs a catch or a finally block (either or both, but not none). 
1) True 
2) False

Q33 Which of the following are valid ways to declare the main() method which is used to start a Java program. 
1) public static void main(String [] args) 
2) static public void main(String [] args) 
3) public void main(String args []) 
4) public static void main(String args[]) 
5) public static void main(String args) 

Q34 Consider the following piece of code: 
boolean b = true; 
System.out.println(b); 
What is displayed when this code is executed? 
1) The text "true" is displayed. 
2) The text "1" is displayed 
3) The code fails to compile, because conversion string conversion in ths System.out.println() method only applies to integers. 
4) The code compiles but nothing is displayed upon execution. 
5) The code fails to compile. However, changing the first line to "boolean b = TRUE;" will correctly declare a boolean, and the code will compile and display "TRUE". 

Q35 Which of the following pieces of code compiles without any errors? 
1) StringBuffer sb1 = "abcd"; 
2) Boolean b = new Boolean("abcd"); 
3) byte b = 255; 
4) int x = 0x1234; 
5) float fl = 1.2; 

Q36 Which of the following are valid statements regarding the following piece of code? 
1. String s1 = "abcd"; 
2. StringBuffer sb1 = new StringBuffer("abcd"); 
3. int val = 6; 
4. System.out.println(s1 + val); 
5. System.out.println(sb1 + val); 

1) The text "abcd6" is displayed followed by "abcd6". 
2) The code fails to compile because String conversion does not apply to StringBuffer. 
3) The code compiles but upon execution, throws a NullPointerException at line 5. 
4) The code fails to compile at line 2, because this is not a valid way to create a StringBuffer. 
5) The code fails to compile at line 1, because this is not a valid way to create a String. 

Q37 True or False. 
Abstract methods can be declared as static. 
1) True 
2) False 

Q38 FlowLayout is the default layout manager for which of the following containers: 
1) Panel 
2) Applet 
3) Frame 
4) Window 
5) Dialog 

Q39 In which class are the following methods defined: 
– wait() 
– notify() 
– notifyAll() 
1) Thread 
2) Runnable 
3) Object 
4) Event 
5) Synchronize 

Q40 Which one of the following creates an instance of Vector with an initial capacity of 10, and an incremental capacity of 5. 
1) new Vector(10, 5); 
2) new Vector(5,10); 
3) None. There is no constructor of Vector which provides this feature. 
4) Vector is declared as final, and it is therefore not possible to instantiate it. 

Q41 True of False. 
CheckboxGroup is a subclass of Component. 
1) True 
2) False 

Q42 Which statements(s) below are true about the following piece of code. 
class Test implements Runnable{ 
public static void main(String [] args){ 
Thread t = new Thread(new Test()); 
t.start(); 

public void run(int limit){ 
for (int x = 0; x < limit; x++) 
System.out.println(x); 

1) All the numbers up to (but not including) "limit" are printed out. 
2) Nothing is displayed. There is no explicit call to the run() method. 
3) The code fails to compile because the Runnable interface is not implemented correctly. 
4) The code can be made to compile by declaring the class Test to be abstract. 
5) The code can be made to compile by removing the words "implements Runnable". 

Q43 Consider the following code and select the statement(s) which are true: 
1. class Test extends Frame{ 
2. 
3. public static void main(String [] args){ 
4. Test t = new Test(); 
5. } 
6. 
7. Test(){ 
8. Button b = new Button("Hello"); 
9. add(b, BorderLayout.SOUTH); 
10. } 
11. 
12. } 

1) The code compiles. When executed, nothing is displayed. 
2) The code compiles. When executed, a button with the text "Hello" is located at the bottom on the screen. The button is as tall as the text, but is the width of the frame. 
3) Adding in the following two lines between lines 9 and 10 will display a frame with a button at the bottom of the frame: setSize(100, 100); setVisible(true); 
4) The code fails to compile, because a layout manager was not specified. 
5) The code fails to compile because you cannot subclass the Frame class. 

Q44 Before which of the following can the keyword "synchronized" be placed, without causing a compile error. 
1) class methods 
2) instance methods 
3) any block of code within a method 
4) variables 
5) a class 

Q45 Consider the following class definitions: 
class Base{} 
class Subclass1 extends Base{} 
class Subclass2 extends Base(); 
Now consider the following declarations: 
Base b = new Base(); 
Subclass1 s1 = new Subclass1(); 
Subclass2 s2 = new Subclass2(); 
Now, consider the following assignment: 
s1 = (Subclass1)s2; 
Which of the following statements are correct regarding this assignment (select one). 
1) The assignment is legal and compiles without an error. No exception is thrown at runtime. 
2) The code fails to compile. The compiler complains that the assignment "s1 = (Subclass1)s2" is illegal. 
3) The code compiles but ClassCastException is thrown at runtime. 
4) The code fails to compile. You cannot subclass a parent class more than once. 

Q46 Select all the valid ways of initialising an array. 
1) int x[] = {1,2,3}; 
2) int []x[] = {{1,2,3},{1,2,3}}; 
3) int x[3] = {1,2,3}; 
4) int []x = {0,0,0}; 
5) char c[] = {‘a’, ‘b’}; 

Q47 What is the valid declaration for the finalize() method. 
1) protected void finalize() throws Throwable 
2) final finalize() 
3) public final finalize() 
4) private boolean finalize() 
5) private final void finalize() throws Exception 

Q48 What is the method used to retrieve a parameter passed into an applet using the PARAM tag. 
1) getParam() 
2) getParameter() 
3) getVariable() 
4) getVar() 
5) There is no method available. You must use "String [] args" approach. 

Q49 You have a button, which is in a panel. The panel is inside a frame. You assign the Frame a 24-point font and a background colour of yellow. You set the panel to have a background colour of red. Which of the following statements are true (select all valid statements). 
1) The font size of the button is 24-point. 
2) The background colour of the button is the same as that of the frame. 
3) The panel has a font size of 8-point. 
4) The button inherits the font from the panel. 
5) This is not a valid configuration. It is not valid to place a panel into a frame. 

Q50 Consider the following piece of code and select the correct statement(s): 
public class Test{ 
final int x = 0; 
Test(){ 
x = 1; 

final int aMethod(){ 
return x; 

1) The code fails to compile. The compiler complains because there is a final method ("aMethod") in a non-final class. 
2) The code compiles correctly. On execution, an exception is thrown when the Test() constructor is executed. 
3) The code fails to compile because an attempt is made to alter the value of a final variable. 
4) Removing the "final" keyword from the line "final int x = 0" will allow the code to compile correctly. 
5) The code fails to compile because only methods can be declared as final (and therefore "final int x = 0" is not valid). 

Q51 What is displayed when the following code fragment is compiled and executed (assume that the enveloping class and method is correctly declared and defined): 
StringBuffer sb1 = new StringBuffer("abcd"); 
StringBuffer sb2 = new StringBuffer("abcd"); 
String s1 = new String("abcd"); 
String s2 = "abcd"; 
System.out.println(s1==s2); 
System.out.println(s1=s2); 
System.out.println(sb1==sb2); 
System.out.println(s1.equals(sb1)); 
System.out.println(sb1.equals(sb2)); 

1) The code fails to compile, complaining that the line System.out.println(s1=s2); is illegal. 
2) The code fails to compile because the equals() method is not defined for the StringBuffer class. 
3) false 
true 
true 
false 
false 
4) false 
abcd 
false 
false 
false 
5) false 
true 
false 
false 
true 

Q52 What is the default layout manager for applets and panels? 
1) FlowLayout 
2) BorderLayout 
3) GridBagLayout 
4) GridLayout 
5) None of these 

Q53 Which of the following statements will compile without an error? 
1) Boolean b = new Boolean("abcd"); 
2) float f = 123; 
3) byte b = 127; 
4) int x = (int)(1.23); 
5) short s = 128; 

Q54 True or False. 
Menus can be added to containers. 
1) True 
2) False 

Q55 Which of the following statements are true regarding the graphical methods 
paint(), repaint() and update(). 
1) paint() schedules a call to repaint(). 
2) repaint() schedules a call to update(). 
3) update() calls paint(). 
4) update() schedules a call to repaint(). 
5) repaint() calls paint() directly. 

Q56 To which of the following can a menubar component be added? 
1) Applet 
2) Panel 
3) Frame 
4) Canvas 

Q57 With regard to apply applet by HTML tags, which of the following statements are correct? 
1) The CODE, WIDTH and HEIGHT tags are mandatory and the order is insignificant. 
2) CODE and CODEBASE are case insensitive, and the .class extension is optional. 
3) The PARAM tag is case insensitive. 
4) It is possible to download multiple JAR’s with the ARCHIVE tag (eg, ARCHIVE = "a.jar, b.jar"). 
5) The CODE tag is the only mandatory tag. 

Q58 Consider the following piece of code and select the correct statements. 
1. Object o = new String("abcd"); 
2. String s = o; 
3. System.out.println(s); 
4. System.out.println(o); 

1) The following is displayed: 
abcd 
abcd 
2) The code fails to compile at line 1. 
3) The code fails to compile at line 2 
4) The code fails to compile at line 4. 
5) The code can be made to compile by changing line 1 to the following: 
String o = new String("abcd"); 

Q59 Which of the following are legal methods for the String class? 
1) length() 
2) toUpper() 
3) toUpperCase() 
4) toString() 
5) equals() 

Q60 What is the output from the following piece of code: 
loop1: 
for(int i = 0; i < 3; i++){ 
loop2: 
for(int j = 0; j < 3; j++){ 
if (i == j){ 
break loop2; 

System.out.print("i = " + i + " j = " + j + " "); 

1) 
i = 1 
j = 0 
2) 
i = 1 
j = 0 
i = 2 
j = 1 
3) i = 0 
j = 1 
i = 0 
j = 2 
i = 1 
j = 0 
i = 2 
j = 0 
i = 2 
j = 1 
4) i = 1 
j = 0 
i = 2 
j = 0 
i = 2 
j = 1 
5) 
i = 1 j = 0 i = 2 j = 0 i = 2 j = 1 

Q61 What is displayed when the following piece of code is executed: 
loop1: 
for(int i = 0; i < 3; i++){ 
loop2: 
for(int j = 0; j < 3; j++){ 
if (i == j){ 
continue loop2; 

System.out.println("i = " + i + " j = " + j); 

1) i = 0 j = 0 
i = 0 j = 1 
i = 1 j = 0 
i = 1 j = 1 
i = 2 j = 0 
i = 2 j = 1 
2) i = 0 j = 0 
i = 1 j = 1 
i = 2 j = 2 
3) i = 0 j = 1 
i = 0 j = 2 
i = 1 j = 0 
i = 1 j = 2 
i = 2 j = 0 
i = 2 j = 1 
4) None of the above. 

Q62 Consider the following piece of code, and select the correct statement(s): 
long val = 2; 
… 
… 
Switch (val){ 
default: 
System.out.println("Default"); 
break; 
case 1: 
System.out.println("1"); 
break; 
case 2: 
System.out.println("2"); 
case 3: 
System.out.println("3"); 
break; 

1) The following is displayed: 


2) The following is displayed: 

3) The code fails to compile because the default case must be the last case in the switch statement. 
4) The code fails to compile because the argument for a switch statement cannot be a variable of type long. 
5) The following is displayed: 


Default 

Q63 Consider the following piece of code, and select the correct statement(s): 
public class Test extends Applet{ 
public void init(){ 
setLayout(new GridLayout(1,2)); 
add(new Button("#1")); 
add(new Button("#2")); 
add(new Button("#3")); 
add(new Button("#4")); 

1) The Gridlayout is created with 1 row and 2 columns. 
2) Adding the button with the label "#3" will cause an exception to be thrown. 
3) Adding the button with label "#3" will cause it to overwrite the button with label "#2". 
4) The layout automatically extends to accommodate the additional buttons. 
5) Only 2 buttons are displayed, one with label "#1" and one with label "#4". 

Q64 Which of the following layout managers will retain the preferred width and height of the contained components. 
1) GridLayout 
2) GridBagLayout 
3) BoxLayout 
4) FlowLayout 
5)BorderLayout 

Q65 You construct a List by calling List(5, false). 
Which statements below are correct (assume the layout managers do not modify the List properties). 
1) The list supports multiple selection. 
2) The list has 5 visible items. 
3) A vertical scroll bar will be added automatically if needed. 
4) The code fails to compile. The given constructor is not a valid one. 

Q66 Which of the following will definitely stop a thread from executing: 
1) wait() 
2) notify() 
3) yield() 
4) suspend() 
5) sleep() 

Q67 Which of the following is the correct method to call to change the layout manager for a container: 
1) setLayoutManager() 
2) setLayManager() 
3) changeLayout() 
4) You can’t change the layout manager for a container. 
5) setLayout() 

Q68 Which is the correct way to add a button, referenced by b, to a panel, referenced by p. 
1) add(p, b); 
2) p.add(b) 
3) b.add(p) 
4) Buttons can’t be added to panels. 
5) add(p) 

Q69 What is displayed when the following code is compiled and executed: 
long val = 2; 
switch(val){ 
case 1: 
System.out.println("1"); 
case 2: 
System.out.println("2"); 
default: 
System.out.println("default"); 

1) default 
2) 2 
default 
3) The code fails to compile because there are no break statements in the case clauses. 
4) The code fails to compile because a long data type is not a valid parameter for a switch statement. 

Q70 What is displayed following the execution of the code below: 
1. class Test{ 
2. String s; 
3. public static void main(String []args){ 
4. int x = 4; 
5. if (x < 4) 
6. System.out.println("Val = " + x); 
7. else 
8. System.out.println(s); 
9. } 
10. } 

1) Nothing. The code doesn’t compile because the variable s wasn’t initialised. 
2) The string "null" is displayed. 
3) The code runs, but a NullPointerException is thrown at line 8. 
4) The code compiles. No exception is thrown but nothing is displayed. 
5) Nothing. The code doesn’t compile because you can’t make a static reference to a non-static variable. 

Q71 Consider the following piece of code: 
class Test{ 
int x; 
String s; 
float fl; 
boolean [] b = new boolean [5]; 

public static void main(String []args){ 
System.out.println(x); 
System.out.println(s); 
System.out.println(fl); 
System.out.println(b[2]); 


What is displayed when this code is executed. 
1) 0 
null 
0.0 
false 
2) 0 
" " 
0.0 
true 
3) Nothing. The code fails to compile because the boolean array is incorrectly declared. 
4) Nothing. The code will not compile because the static method cannot access the variables since there is no instance of the Test class. 

Q72 What is displayed when the following code is compiled and executed: 
String s = "abcd"; 
String s1 = new String(s); 
if (s == s1) 
System.out.println("the same"); 
if (s.equals(s1)) 
System.out.println("equals"); 
1) the same 
equals 
2) equals 
3) the same 
4) The code compiles, but nothing is displayed upon execution. 
5) The code fails to compile. 

Q73 What is the legal range for the byte data type: 
1) 0 to +255 
2) -127 to +128 
3) -128 to +127 
4) 0 to 65535 
5) -32767 to +32768 

Q74 What is displayed when the following code is executed: 
String s = "abcdef"; 
System.out.println(s.charAt(4)); 
1) d 
2) e 
3) Nothing. An ArrayIndexOutOfBoundsException is thrown 
4) The code does not compile. charAt() is not a valid method of the String class. 
5) The code does not compile because the string s is not created correctly. 

Q75 True or False. 
The String class does not have an append() method. 
1) True 
2) False 

Q76 Consider the following code segment. 
double d = -11.1; 
double d1 = method(d); 
System.out.println(d1); 
If the output of this code segment is -12.0, then what methods could be called in method() above. 
1) floor() 
2) ceil() 
3) round() 
4) abs() 
5) min() 

Q77 What outputs are possible from invoking Math.random(). 
1) -0.12 
0.56E3 
2) 0.12 
1.1E1 
3) -23.45 
0.0 
4) 0.356 
0.03 
5) 1.00 
0.99 

Q78 In a thread, the wait() method must be called inside which of the following: 
1) A while() loop 
2) The run() method 
3) synchronised code 
4) The constructor 
5) It doesn’t matter where the wait() is called from. 

Q79 Consider the following piece of code: 
public class Test extends Applet{ 
public void init(){ 
setLayout(new BorderLayout()); 
add("South", new Button("B1")); 
add("North", new Button("B2")); 
add("South", new Button("B3")); 


Select the correct statements regarding the above. 
1) There are 2 buttons displayed in the SOUTH section, B1 and B3. 
2) Only B3 is displayed in the SOUTH section. 
3) An exception is thrown when an attempt is made to add a second component to SOUTH. 
4) Only B1 is displayed in the SOUTH section. 
5) You can’t add buttons to applets. 

Q80 What is displayed when the following piece of code is executed: 
1. String val = null; 
2. int x = Integer.parseInt(val); 
3. 
4. System.out.println(x); 
1) 0 
2) null 
3) A NumberFormatException is thrown at line 2. 
4) Nothing is displayed 

Q81 Consider the following piece of code: 
class A{ 
int x = 0; 
A(int w){ 
x = w; 

class B extends A{ 
int x = 0; 
B(int w){ 
x = w +1; 


1) The code compiles correctly. 
2) The code fails to compile, because both class A and B do not have valid constructors. 
3) The code fails to compile because there is no default no-args constructor for class A. 

Q82 Given an object myListener (whose class implements the ActionListener interface), which of the following are valid ways to enable myListener to receive all action events from component smallButton? 
1) smallButton.add(myListener); 
2) smallButton.addListener(myListener); 
3) smallButton.addActionListener(myListener); 
4) smallButton.addItem(myListener); 

Q83 Which of the following are valid listener interfaces? 
1) ActionListener 
2) MouseMotionListener 
3) SystemEventListener 
4) MouseClickListener 
5) WindowListener 

Q84 Which of the following is the correct way to set the foreground colour of a component, c. 
1) c.setForeground("red"); 
2) c.setColor("Color.red"); 
3) c.Foreground(Color.red); 
4) c.setForegroundColor("red"); 
5) c.setForeground(Color.red); 

Q85 Which of the following are valid ways to create a Map collection. 
1) Map m = new Map(); 
2) Map m = new Map(init capacity, increment capacity); 
3) Map m = new Map(new Collection()); 
4)Map is an interface, and cannot be instantiated. 

Q86 Select all the correct statements relating to the following piece of code? 
1. public class A{ 
2. abstract int method(); 
3. void anotherMethod(){ 
4. } 
5. 
6. class B extends A{ 
7. int method(){ 
8. return 2; 
9. } 
10. } 
1) Changing "extends" to "implements" on line 6 will allow the code to compile correctly. 
2) The method() in class A cannot be abstract without the entire class being declared as abstract. 
3) Declaring class A to be abstract will allow the code to compile correctly. 
4) The class A must have an explicit default constructor in order for it to be subclassed correctly. 
5) The code fails to compile, because class B does not implement anotherMethod(). 

Q87 Which layout manager do the comments below refer to: 
All components contained in it have the same width and height. Contained components are stretched to have the same dimensions. 
1) FlowLayout 
2) BorderLayout 
3) GridLayout 

Q88 Select all valid statements. 
1) When typing text into a TextField, scroll bars will automatically appear when the TextField becomes full. 
2) When typing text into a TextArea, scroll bars will appear when text is typed past the boundaries of the TextArea. 
3) TextFields can have more than 1 row of text. 
4) The class TextArea is a super class of the class TextField. 
5) Both TextAreas and TextFields have a method called setEditable(), which can enable or disable editing of the component. 

Q89 In which class is the paint() method defined? 
1) Object 
2) Applet 
3) Component 
4) Thread 
5) Graphics 

Q90 Select the statement which most closely describes the user interface of an applet with the following init() method: 
public void init(){ 
Panel p = new Panel(); 
p.setLayout(new BorderLayout()); 
p.add(new Button("Hello"), BorderLayout.EAST); 
p.add(new Button("Bye"), BorderLayout.WEST); 
add(p); 

1) Two buttons are displayed. A button with "Hello" is on the right side of the applet. The button with "Bye" is on the left side of the applet. Both buttons extend from the centre of the applet to each side, and are the height of the applet. 
2) Two buttons are displayed. A button with "Hello" is on the right side of the applet. The button with "Bye" is on the left side of the applet. Both buttons are only as wide as the text on the button, but are the height of the applet. 
3) Two buttons are displayed. A button with "Hello" is on the right side of the applet. The button with "Bye" is on the left side of the applet. Both buttons are only large enough to support the associated button texts. 

Q91 What is wrong about the following piece of code (assume the relevant import statements are present): 
public class Test{ 
public static void main (String [] args) throws IOException{ 
if (args[0] == "hello") 
throw new IOException(); 


1) Nothing. The code compiles correctly. 
2) The code fails to compile. You can’t throw an exception from the main() method. 
3) The code fails to compile. IOException is a system exception, and cannot be thrown by application code. 

Q92 Consider the following piece of code, and select the statements which are true. 
class Test{ 
int x = 5; 
static String s = "abcd"; 
public static void method(){ 
System.out.println(s + x); 


1) The code compiles and displays "abcd5". 
2) The code compiles, but throws an exception at runtime, because variable x isn’t declared as static. 
3) The code fails to compile because you can’t make a static reference to a non-static variable. 
4) The code will compile if x is declared to be static. 
5) The code will compile by removing the static keyword from the declaration of method(). 

Q93 Select all legal code fragments from the following. 
1) char c = "c"; 
2) Boolean b = new Boolean("qwerty"); 
3) String s = "null"; 
4) int q; 
for (int p = 0, q = 0; p < 5; p++){ 
System.out.println("Val = " + p + q); 

5) int x = 3; 
Float f = new Float(x); 

Q94 Which of the following are legal ways to construct a RandomAccessFile? 
1) RandomAccessFile("file", "r"); 
2) RandomAccessFile("r", "file"); 
3) RandomAccessFile(‘r’, "file"); 
4) RandomAccessFile("file", ‘r’); 
5) RandomAccessFile("file", "rw"); 

Q95 Consider the following code and select the most appropriate statements. 
1. class Test{ 
2. public int doubleValue(int a) 
3. System.out.println(a); 
4. return (int)(a * 2); 
5 } 
6. 
7 public float doubleValue(int a){ 
8. System.out.println(a); 
9. return (float)(a * 2); 
10. } 
11.} 
1) The code compiles since the two doubleVal() methods have different return types. 
2) The code doesn’t compile because the compiler sees two methods with the same signature. 
3) The code can be made to compile by redefining the parameter for doubleVal() on line 7 to be "float a" instead of "int a". 
4) The code can be made to compile by replacing the public declaration on line 7 with private. 

Q96 What is displayed when the following piece of code is executed: 
class Test extends Thread{ 
public void run(){ 
System.out.println("1"); 
yield(); 
System.out.println(2"); 
suspend(); 
System.out.println("3"); 
resume(); 
System.out.println("4"); 

public static void main(String []args){ 
Test t = new Test(); 
t.start(); 


1) 1 



2) 1 


3) 1 

4) Nothing. This is not a valid way to create and start a thread. 
5) 1 

Q97 Consider the following piece of code, and select the most appropriate statements. 
TextField t = new TextField("Hello", 20); 
1) The user will be able to edit the string. 
2) The field will be 20 characters wide. 
3) The text field will be same size on all platforms, since Java is platform independent. 
4) When entering text into the field, only 20 characters can be entered. 
5) If the font is changed, the size of the textfield will adjust to allow 20 characters to be displayed. 

Q98 True of False. 
Using the instanceof operator on an interface will cause a runtime exception. 
1) True 
2) False 

Q99 Which of the following are valid ways to create a Button component? 
1) new Button(); 

2) new Button(30, 10); where 30 is the width of the button and 10 is the height 
3) new Button("hello"); 
4) new Button(new String("hello")); 
5) new Button(String("hello")); 

Q100 Which of the following are NOT valid subclasses of AWTEvent? 
1) MouseClickEvent 
2) OutputEvent 
3) MouseMotionEvent 
4) KeyAdapter 
5) WindowMinimizeEvent 

Q101 Which of the following are valid methods for the Graphics class? 
1) drawOval(int x, int y, int width, int height) 
2) toString() 
3) drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) 
4) drawPolygon(int[] xPoints, int[] yPoints, int nPoints) 
5) fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) 

Q102 Which of the following are valid methods in the Math class? 
1) arcTan(double a) 
2) atan(double a) 
3) sqrt(double a) 
4) min(int a, int b) 
5) cosine(double a) 

Q103 Which of the following will display the string "ica", given: 
String s = "Metallica"; 
1) System.out.println(s.subString(7)); 
2) System.out.println(s.substring(6)); 
3) System.out.println(s.subString(6, 8)); 
4) System.out.println(s.substring(7, 9)); 
5) None of these. 

Q104 Which of the following are defined in the Object class? 
1) toString() 
2) equals(Object o) 
3) public static void main(String [] args) 
4) System.out.println() 
5) wait() 

Q105 Select all valid statements relating to the paint() method defined in the Component class. 
1) It takes 4 int types as parameters, representing the x and y co-ordinates, width and height, respectively. 
2) It is declared as final, and so it cannot be overridden. 
3) It is declared as static. 
4) It takes an instance of the Graphics component as a parameter. 
5) When overriding the paint() method, you must handle the identification and repair of damaged components. 

Q106 Which of the following keywords can be applied to a method? 
1) transient 
2) volatile 
3) private 
4) protected 
5) final 

Q107 Which of the following keywords can be applied to a top-level class (i.e., not an inner class)? 
1) private 
2) protected 
3) transient 
4) public 
5) final 

Q108 Consider the following piece of code, and select all relevant statements: 
1. class Test{ 
2. public static void main(String [] args){ 
3. aMethod(); 
4. } 
5. 
6. static void aMethod(){ 
7. try{ 
8. System.out.println("abcd"); 
9. return; 
10. } finally { 
11. System.out.println("1234"); 
12. } 
13. } 
14.} 

1) An exception is thrown at line 9. 
2) The code fails to compile. The compiler complains about the return statement at line 9. 
3) abcd 
1234 
4) abcd 
5) The code fails to compile, complaining that a ‘catch’ clause is missing from line 10. 

Q109 Which of the following statements are true. 
1) The type "int" is a 32-bit signed integer value. 
2) The type "short" is a 16-bit unsigned integer value. 
3) The type "char" is a 16-bit Unicode character. 
4) The type "float" is a 64-bit floating point value. 
5) The type "long" is a 64-bit signed integer value. 

Q110 Which layout manager is described by the following: 
It aligns components vertically and horizontally, without requiring that the components be of the same size. It maintains a dynamic rectangular grid of cells, with each component occupying one or more cells, called its display area. 
1) GridLayout 
2) FlowLayout 
3) GridBagLayout 
4) BoxLayout 

Q111 True of False. 
The StringBuffer class overrides the toString() method to return a String representation of the StringBuffer. 
1) True 
2) False 

Q112 Select the correct statements from the following: 
1) The class RandomAccessFile is a subclass of the java.io.File class. 
2) The class java.io.FileWriter contains methods to write primitives (eg, writeInt(), writeFloat(), etc) 
3) The class java.io.BufferedOutputStream contains methods to write primitives (eg, writeInt(), writeFloat(), etc) 
4) The File class defines a method which can be used to delete files and directories from a disk. 
5) The RandomAccessFile class defines a method which can be used to delete files and directories from a disk. 

Q113 True or False. 
A class can implement more than one interface, but can only inherit from a single parent class. 
1) True 
2) False 

Q114 What is the result of compiling and executing the following code. 
public class ThreadTest extends Thread { 
public void run() { 
System.out.println("In run"); 
yield(); 
System.out.println("Leaving run"); 

public static void main(String args []) { 
(new ThreadTest()).start(); 


1) The code fails to compile in the main() method. 
2) The code fails to compile in the run() method. 
3) Only the text "In run" will be displayed. 
4) The text "In run" followed by "Leaving run" will be displayed. 
5) The code compiles correctly, but nothing is displayed. 

Q115 Which of the following will compile without errors. 
1) Byte b = new Byte(123); 
2) Byte b = new Byte("123"); 
3) Byte b = new Byte(); 
b = 123; 
4) Byte b = new Byte((int)123.4); 
5) Byte b = new Byte(0x123); 

Q116 Consider the following piece of code and select the correct statement(s): 
1. public class Test{ 
2. static int x; 
3. static public void main(String [] args){ 
4. x = x + 1; 
5. System.out.println("Value is " + x); 
6. } 
7. } 
1) The code fails to compile. The compiler complains that the variable x is used before it is initialised. 
2) The code compiles correctly and displays "Value is 1" when executed. 
3) The code compiles correctly, but throws a NullPointerException at line 5. 
4) The code fails to compile because the ‘main’ method is incorrectly declared. 

Q117 Which of the following are termed "short circuit" logical operators. 
1) & 
2) && 
3) | 
4) || 
5) ^ 

Q118 Which of the following are valid expressions. 
1) Object o = new String("abcd"); 
2) Boolean b = true; 
3) Panel p = new Frame(); 
4) Applet a = new Panel() 
5) Panel p = new Applet() 

Q119 Which of the following is a valid way to declare an abstract method which is intended to be public. 
1) public abstract method(); 
2) public abstract void method(); 
3) public abstract void method(){} 
4) public virtual void method(); 
5) public void method() implements abstract; 

Q120 Which of the following are valid ways to define a constructor for class Test. 
1) public void Test(){} 
2) public Test(){} 
3) private Test(){} 
4) public static Test(){} 
5) final Test(){} 

Q121 Which of the following statements are valid for a method which is overriding the following: 
protected void method(int x){..} 
1) The overriding method must take an int as its only parameter. 
2) The overriding method must return a void. 
3) The overriding method can be declared as private. 
4) The overriding method can return any value it wishes. 

Q122 True or False. 
An inner class can implement an interface or extend a class. 
1) True 
2) False 

Q123 Which of the following are valid return types for listener methods. 
1) boolean 
2) void 
3) An object of type Event 
4) An object of type Object 
5) A long value, representing the Object ID. 

Q124 Consider the following piece of code and select the correct statements. 
1. public class Test{ 
2. public static void main(String [] args){ 
3. print(); 
4. } 
5. 
6. public static void print(){ 
7. System.out.println("Test"); 
8. } 
9. 
10. public void print(){ 
11. System.out.println("Another Test"); 
12 } 
13. } 
1) The code compiles successfully and displays "Test". 
2) Changing the code at line 10 to the following, will allow the code to compile correctly: 
public void print(int x){ 
3) The code fails to compile. The compiler complains about a static reference to a non-static method, print(). 
4) The code fails to compile. The compiler complains about duplicate methods. 
5) Changing the return type on line 10 from ‘void’ to ‘int’ will allow the code to compile correctly. 

Q125 Consider the following list of tags and attributes of tags and select the ones which can legally be placed between the APPLET and /APPLET delimiters. 
1) JAVAC 
2) JAR 
3) CODE 
4) NAME 
5) PARAM 

Q126 Which variables can an inner class access from the class which encapsulates it. 
1) All static variables 
2) All final variables 
3) All instance variables 
4) Only final instance variables 
5) Only final static variables 

Q127 Using a FlowLayout manager, which of the following is the correct way to add a conponent referenced by the variable "c" to a container: 
1) add(c); 
2) add("Center", c); 
3) c.add(); 
4) c.set(); 
5) set(c); 

Q128 Assuming there is a class X which implements the ActionListener interface. 
Which method should be used to register this with a Button? 
1) addListener(new X()); 
2) addActionListener(new X()); 
3) addButtonListener(new X()); 
4) addActionAdapter(new X()); 
5) (new X()).addActionListener(); 

Q129 What is the result of compiling and executing the following fragment of code: 
boolean flag = false; 
if (flag = true) 

System.out.println("true"); 

else 

System.out.println("false"); 

1) The code fails to compile at the "if" statement. 
2) An exception is thrown at run-time at the "if" statement. 
3) The text "true" is displayed. 
4) The text "false" is displayed. 
5) Nothing is displayed. 

Q130 Which of the following is not a subclass of java.awt.Component? 
1) Frame 
2) Container 
3) CheckboxGroup 
4) Canvas 
5) Applet 

Q131 What is the result when the following piece of code is compiled and executed. 
1. public class Calc { 
2. public static void main (String args []) { 
3. int total = 0; 
4. 
5 . for (int i = 0, j = 10; total < 30; ++i, –j) { 
6. System.out.println(" i = " + i + " : j = " + j); 
7. 
8. total += (i + j); 
9. 
10. } 
11. 
12. System.out.println("Total " + total); 
13. } 
14. } 
1) The code fails to compile at line 5, because the variable "j" is not declared correctly. 
2) The code fails to compile at line 2, because you can’t have a static method in a non-static class. 
3) The code compiles correctly, but throws an exception at line 5. 
4) The code compiles correctly but throws an exception at line 2. 
5) The code compiles correctly and displays the following when executed: 
i = 0 : j = 10 
i = 1 : j = 9 
i = 2 : j = 8 
Total 30 

Q132 Which of the following will create a TextField capable of displaying 10 characters, with the initial text "hello"? 
1) TextField t = new TextField("hello", 10); 
2) TextField t = new TextField(10, "hello"); 
3) TextField t = new TextField(); 
t.setCols(10); 
t.setText("hello"); 
4) TextField t = new TextField(); 
t.setFieldSize(10); 
t.setText("hello"); 
5) None of the above. 

Q133 What is the effect of adding the sixth element to a Vector created using the following code: 
new Vector(5, 10); 
1) An IndexOutOfBounds exception is thrown. 
2) The vector grows in size to a capacity of 10 elements. 
3) The vector grows in size to a capacity of 15 elements. 
4) Nothing. The Vector will have grown when the fifth element was added, because Vector elements are zero-based. 
5) Nothing. This is not a valid way to create a Vector. 

Q134 When is the text "Hi there" displayed? 
public class StaticTest { 
static { 
System.out.println("Hi there"); 

public void print() { 
System.out.println("Hello"); 

public static void main(String args []) { 
StaticTest st1 = new StaticTest(); 
st1.print(); 
StaticTest st2 = new StaticTest(); 
st2.print(); 


1) Never. 
2) Each time a new object of type StaticTest is created. 
3) Once when the class is loaded into the Java virtual machine. 
4) Only when the main() method is executed. 

Q135 Which of the following are valid ways to assign the value of 5 to a variable of type "int" called testValue? 
1) int testValue = 0x5; 
2) int testValue = (int)(2.1F + 3.4D); 
3) int testValue = (octal)5; 
4) int testValue = (0x0A >> 1); 
5) int testValue = (0x0A >>> 1); 

Q136 Which of the following operations will cause an ActionEvent to be generated. 
1) Clicking a checkbox. 
2) Selecting an option from a Choice box. 
3) Scrolling a scroll bar. 
4) Clicking a button. 
5) Hitting ENTER when typing in a text field. 

Q137 True or False. 
All Listener interfaces methods are declared as public and void. 
1) True 
2) False 
Q138 True or False. 
In a GridLayout, the width and height of all cells are the same. 
1) True 
2) False 

Q139 True or False. 
The BorderLayout manager only allows a single component to be displayed in each sector. 
1) True 
2) False 

Q140 You want to extend the functionality of the String class, and decide that the best approach is to subclass String. Which of the following statements are correct. 
1) The approach fails, because the String class is declared as final and cannot be subclassed. 
2) The approach succeeds, and it is therefore possible to override the standard functionality provided by String. 
3) The approach fails, because the String class is declared as abstract, and therefore it cannot be subclassed. 

Q141 Which of the following are valid ways to determine the number of elements in an array defined as follows: 
int intArray[] = {1,2,3}; 
1) intArray.size; 
2) intArray.size(); 
3) intArray.length; 
4) intArray.length(); 
5) intArray.getSize(); 

Q142 You have a check box within a panel, and the panel is contained within an applet. There are no other components within the applet. 
Using "setBackground(Color.white)", you assign the background colour of the applet to white. 
Which of the following statements are true. 
1) The background colour of the panel is white. 
2) The foreground colour of the checkbox is the same as the foreground colour of the applet. 
3) It is impossible to determine the background colour of the checkbox from the imformation supplied. 
4) You can’t put a panel inside an applet. 

Q143 Which of the following can be added to a menu? 
1) A panel 
2) A button 
3) A menu 
4) A checkbox 
5) A menubar 

Q144 You construct an application by making the following call: 
Frame app = new Frame(); 
app.setSize(100,100); 
Which of the following statements are correct. 
1) An empty frame of size 100×100 is displayed, located in the top left corner of the screen. 
2) An empty frame of size 100×100 is displayed, located in the centre of the screen. 
3) Nothing is displayed. There is no setSize() method in the Frame class. 
4) Nothing is displayed. The frame will only be displayed by setting the forground and background colours. 
5) Nothing is displayed. A frame is created by default with zero size, and invisible. 

Q145 Which of the following are valid methods in the java.awt.Graphics class? 
1) drawString() 
2) drawOval() 
3) fillRect() 
4) drawPolyline() 
5) fillPolyline() 

Q146 Which of the following are valid command line options for the JAR utility: 

1) c (create a new or empty archive) 
2) m (indicates that first argument is the name of a user-supplied manifest) 
3) M (do not create a manifest) 
4) z (ZIP the contents of the archive) 
5) L (list the archive contents) 

Q147 Consider the following code segment and select the correct statement(s): 
1. class FinalTest{ 
2. final int q; 
3. final int w = 0; 
4. 
5. FinalTest(){ 
6. q = 1; 
7. } 
8. 
9. FinalTest(int x){ 
10. q = x; 
11. } 
12. } 
1) The code fails to compile because a class cannot have more than 1 constructor. 
2) The code fails to compile because the class FinalTest has no constructors. 
3) The code fails to compile because the an attempt is made to initialise a final variable at lines 6 and 10. 
4) The code compiles correctly without any warnings or errors. 
5) The code fails to compile because the final variable q is not initialised correctly at line 2. 

Q148 True or False. 
It is valid to throw (and re-throw) an exception inside a catch{} clause. 
For example: 
… 
catch (Exception e){ 
throw e; 

1) True 
2) False 

Q149 True or False. 
A scrollbar will appear in a TextField if more text is typed than can be displayed within the TextField. 
1) True 
2) False 

Q150 True or False. 
It is valid to declare an inherited method as abstract. 
1) True 
2) False 

Q151 Consider the following code segments and select the correct statement: 
Segment 1: 
1. int a = 3; 
2. int b = 0; 
3. int c = a/b; 
Segment 2: 
4. float a = 1.0F; 
5. float b = 0.0F; 
6. float c = a/b; 
1) When executed, both segments will cause an exception to be thrown. 
2) When executed, neither segment will cause an exception to be thrown. 
3) Only Segment 1 will throw an exception. 
4) Only Segment 2 will throw an exception. 

Q152 Which of the following classes override the equals() method. 
1) String 
2) Integer 
3) Double 
4) Date 
5) File 

Q153 Which of the following is the default layout manager for a panel. 
1) BorderLayout 
2) FlowLayout 
3) GridBagLayout 
4) GridLayout 
5) None of the above. 

Q154 True or False. 
The StringBuffer class inherits from the String class. 
1) True 
2) False 

Q155 True or False. 
The class String has a concat() method, while the StringBuffer class has an append() method. 
1) True 
2) False 

Q156 True or False. 
The primative wrapper classes Integer, Double and Float all inherit directly from the java.lang.Wrapper class. 
1) True 
2) False 

Q157 Which of the following are valid methods for the Applet class. 
1) start() 
2) stop() 
3) init() 
4) destroy() 
5) kill() 

Q158 True or False. 
A label can only display a single line of text. 
1) True 
2) False 

Q159 Which of the following are valid methods for the Math class. 
1) random() 
2) Random() 
3) toDegrees() 
4) square() 
5) sqr() 

Q160 True or False. 
JDK 1.2 contains an Arrays class which provides various methods for manipulating arrays (such as searching and sorting). 
1) True 
2) False 

Q161 True or False. 
The Class class has no public constructor. 
1) True 
2) False 

Q162 Which of the following statements is true with regard to persistence. 
1) "Serializable" is a keyword within the Java language. 
2) "Serializable" is an interface, which classes can implement. 
3) "Serializable" is a class, which other classes can extend. 
4) None of the above. 

Q163 Which of the following statements is correct with regard to threads. 
1) "Runnable" is a keyword within the Java language, used to identify classes which can exist as separate threads. 
2) "Runnable" is an interface, which classes can implement when they wish to execute as a separate thread. 
3) "Runnable" is a class, which classes can extend when they wish to execute as a separate thread. 
4) None of the above. 
5) java does not support threads. 

Q164 Select the statements which are valid from the list below. 
1) The primative data type "char" is 16-bits wide. 
2) Unicode uses 16-bits to represent a character. 
3) Unicode uses 32-bits to represent a character. 
4) UTF uses 24-bits to represent a character. 
5) UTF uses as many bits as are needed to represent a character. 

Q165 When a Frame is constructed, it has no size and is not displayed. Which of the following methods can be called to display the Frame. 
1) setSize() 
2) setBounds() 
3) setDisplayable() 
4) setVisible() 
5) setState() 

Q166 Which one of the following is correct (assume A and B are correctly defined). 
1) if (A instanceOf B) 
2) if (A instanceof B) 
3) if (A.instanceOf(B)) 
4) if (A instanceof(B)) 

Q167 What is displayed when the following is executed: 
double d1 = -0.5; 
System.out.println("Ceil d1 = " + Math.ceil(d1)); 
System.out.println("floor d1 = " + Math.floor(d1)); 
1) Ceil d1 = -0.0 
floor d1 = -1.0 
2) Ceil d1 = 0.0 
floor d1 = -1.0 
3) Ceil d1 = -0.0 
floor d1 = -0.0 
4) Ceil d1 = 0.0 
floor d1 = 0.0 
5) Ceil d1 = 0 
floor d1 = -1 

Q168 Select the layour manager which is described by the following: 
"It arranges its constituent components in horizontal rows. It will attempt to fit as many components as possible into the first row, and remaining components will spill over into subsequent rows. Components always appear left to right, in the order they were added to the container." 
1) FlowLayout 
2) GridLayout 
3) CardLayout 
4) TransverseFlowLayout 
5) GridBagLayout 

Q169 True or False 
The argument for a "case" statement must be a constant or a constant expression which can be evaluated at compile time. 
1) True 
2) False 

Q170 Select the valid code fragments from the following list: 
1) public transient static final int _FRAMEX = 850; 
2) this("a", "b"); 
[assuming a constructor of the type xxx(String, String) exists for this class] 
3) private transient static final int _FRAMEX = 850; 
4) boolean b = 0; 

Q171 True or False. 
The File class can represent either a file or a directory within a file system. 
1) True 
2) False 

Q172 True or False. 
The argument for a while() statement MUST be a boolean. 
1) True 
2) False 

Q173 True or False. 
The right-hand operand of the instanceof operator can be an interface; eg 
a instanceof b 
where b is an interface. 
1) True 
2) False 

Q174 Consider the following class: 
public class Test{ 
public int secret; 

Which of the following is the correct way to make the variable ‘secret’ read-only. 

1) Declare ‘secret’ to be private. 
2) Declare the class Test to be private. 
3) Declare ‘secret’ to be private and write a method getSecret() which returns the value of ‘secret’. 
4) Declare ‘secret’ to be transient. 
5) Declare ‘secret’ to be static. 

Q175 Which one of the following methods of the Math class can be used to find the square root of a number. 
1) squareRoot() 
2) sqrt() 
3) root() 
4) sqr() 
5) None of the above. You use the pow() method. 

Q176 To which layout manager does the following statement refer: 
"it preserves the preferred size (width and height) of each component". 
1) Flow Layout 
2) Border Layout 
3) Grid Layout 
4) Grid Bag Layout 
5) None of the above. All layout managers alter the dimensions of their containing components. 

Q177 Consider the following code fragment, and select the correct statements(s): 
1. public class Test extends MyBase implements MyInterface{ 
2. int x = 0; 
3. 
4. public Test(int inVal) throws Exception{ 
5. if (inVal != this.x){ 
6. throw new Exception("Invalid input"); 
7. } 
8. } 
9. 
10. public static void main(String args[]){ 
11. Test t = new Test(4); 
12. } 
13.} 
1) The code fails to compile at line 1. It is not valid to both implement an interface and extend from a parent class simultaneously. 
2) The code fails to compile at line 4. It is not valid for constructors to throw exceptions. 
3) The code fails to compile at line 6, because this is not valid way to throw an exception. 
4) The code fails to compile at line 11. The compiler complains that there is an uncaught exception. 
5) The code fails to compile at line 5, because this is not a valid way to reference variable x. 

Q178 Consider the following real-life relationships, and select the code fragment which most closely represents it. 
An employee is a person. An employee has zero or more dependants. 
 [for the code fragments, assume that all relevant packages are imported, and all relevant class definitions exist]. 
1) class Employee extends Dependants{ 
Person p; 

2) class Person extends Employee{ 
Vector dependants; 

3) class Employee extends Person{ 
Vector dependants; 

4) abstract class Person extends Dependants{ 
Employee e; 

5) class Dependant implements Employee{ 
Vector person; 

Q179 Which of the following are valid declarations for a native method. 
1) public native void aMethod(); 
2) private native String aMethod(); 
3) private native boolean aMethod(int val){}; 
4) public native int aMethod(String test); 
5)private native boolean aMethod(boolean flag, Integer val); 

Q180 Which of the following are valid ways to define an octal literal of value 17 (octal). 
1) private final int theNumber = 0x17; 
2) private final int theNumber = 017; 
3) public int theNumber = 017; 
4) public int theNumber = (octal)17; 
5 )public int THE_NUMBER = 017; 

Q181 Consider the following piece of code and select all statements which yield a boolean value of true as a result. 
Double d1=new Double(10.0); 
Double d2=new Double(10.0); 
int x=10; 
float f=10.0f; 
1) d1 == d2; 
2) d1 == x; 
3) f == x; 
4) d1.equals(d2); 
5) None of the above 

Q182 Given the following definition: 
String s = null; 
Which code fragment will cause an exception of type NullPointerException to be thrown. 
1) if ((s != null) & (s.length()>0)) 
2) if ((s != null) && (s.length()>0)) 
3) if ((s != null) | (s.length()>0)) 
4) if ((s != null) || (s.length()>0)) 
5) None of the above. 

Q183 Which of the following are valid declarations for a 2×2 array of integers. 
1) int a[][] = new int[10,10]; 
2) int a[][] = new int [10][10]; 
3) int a[10,10] = new int [10][10]; 
4) int [][]a = new int [10][10]; 
5) int []a[] = new int [10][10]; 

Q184 Which values of variable x will show "Message 2". 
switch(x) 

case 1 : 
System.out.println("Message 1"); 
case 2 : 
case 3 : 
System.out.println("Message 2"); 
default : 
System.out.println("End"); 

1) 1 
2) 2 
3) 3 
4) 4 
5) none 

Q185 What is the result of the following code : 
public class SuperEx { 
String r; 
String s; 
public SuperEx(String a,String b) { 
r = a; 

s = b; 

public void aMethod() { 
System.out.println("r :" + r); 


public class NewSuper extends SuperEx { 
public NewSuper(String a,String b) { 
super(a,b); 

public static void main(String args []) { 
SuperEx a = new SuperEx("Hi","Tom"); 
SuperEx b = new NewSuper("Hi","Bart"); 
a.aMethod(); 
b.aMethod(); 

public void aMethod() { 
System.out.println("r :" + r + " s:" + s); 


1) The following is displayed: 
r:Hi 
s:Hi 
2) Compiler error at the line "SuperEx b = new NewSuper("Hi","Bart");" 
3) The following is displayed: 
r:Hi 
r:Hi s:Bart 
4) The following is displayed 
r:Hi s:Tom 
r:Hi s:Bart 

Q186 You have a class with a certain variable and you don’t want that variable to be accessible to ANY other class but your own. Your class must be sub-classable. 
Which keyword do you add to the variable. 
1) private 
2) public 
3) transient 
4) final 
5) abstract 

Q187 You get this description of a class : 
Employee is a person. For every employee, we keep a vector with the working hours, an integer for the salary and a variable that can be true or false whether or not the employee has a company car. 
Indicate which of the following would be used to define the class members. 
1) Vector 
2) Employee 
3) Object 
4) boolean 
5) int 

Q188 Which line of code can be inserted in place of the comments, to perform the initialisation described by the comments: 
public class T { 
int r; 
int s; 
T(int x, int y) { 
r = x; 
s = y; 


class S extends T { 
int t; 
public S(int x, int y, int z){ 
// insert here the code 
// that would do the correct initialisation 
// r= x and s= y 
t=z; 


1) T(x, y); 
2) this(x, y); 
3) super(x, y); 
4) super(x, y, z); 
5) None 

Q189 Suppose a MyException should be thrown if Condition() is true, which statements do you have to insert ? 
1: public aMethod { 
2: 
3: if (Condition) { 
4: 
5: } 
6: 
7: } 
1) throw new Exception() at line 4 
2) throw new MyException() at line 4 
3) throw new MyException() at line 6 
4) throws new Exception() at line 2 
5) throws MyException at line 1 

Q190 Suppose a NullPointerException is thrown by test(). Which message is displayed? 
void Method(){ 
try { 
test(); 
System.out.println("Message1"); 

catch (ArrayOutOfBoundsException e) { 
System.out.println("Message2"); 

finally { 
System.out.println("Message3"); 

System.out.println("Message4"); 

1) Message1 
2) Message2 
3) Message3 
4) Message4 
5) None of the above. 

Q191 Choose the class that can hold multiple equal objects in an ordered way. 
1) Map 
2) Collection 
3) List 
4) Set 
5) Vector 

Q192 Consider the following variables definitions. 
Float f1 = new Float("10F"); 
Float f2 = new Float("10F"); 
Double d1 = new Double("10D"); 
Which of the following yields a boolean value of true. 
1) f1 == f2 
2) f1.equals(f2) 
3) f2.equals(d1) 
4) f2.equals(new Float("10")) 

Q193 What does the getID() method of AWTEvent tell us. 
1) Tells us the x and y coords of the mouse at the event time. 
2) Tells us which Object the event originated from. 

3) Tells us which special keys were pressed at the event time. 
4) Tells us the event type. 
5) Tells us the how many pixels were between the mouse pointer and text on a Canvas. 

Q194 What is the return type of an Eventlistener ? 
1) int 
2) NULL 
3) void 
4) boolean 
5) Object 

Q195 You create a Long object using the following: 
Long val = new Long("11"); 
Which of the following will return the value of the object as a byte value? 
1) byte b = (byte)val; 
2) byte b = val.getByte(); 
3) byte b = (byte)val.getValue(); 
4) byte b = val.byteValue(); 
5) None of the above. 

Q196 Consider the following. 
String s1 = "abc"; 
String s2 = "def"; 
String s3 = new String(s2); 
s2 = s1; 
What is the value of s3 after the final line of code is executed? 
1) "abc" 
2) "def" 
3) null 
4) An exception is thrown when "s2 = s1" is executed. 

Q197 What tags are mandatory when creating HTML to display an applet 
1) name, width, height 
2) code, name 
3) codebase, height, width 
4) code, width, height 
5) None of the above 

Q198 What is displayed when the following code is executed: 
String s1 = " hello world "; 
String s2 = s1.trim(); 
System.out.println(s2); 
1) " hello world" 
2) "hello world " 
3) "hello world" 
4) " hello world " 
5) "helloworld" 

Q199 Which of the following are methods within the String class. 
1) substring() 
2) startsWith() 
3) toString() 
4) toUpperCase() 
5) indexOf() 

Q200 True or False. 
APPLET tags must appear between BODY and /BODY tags. 
1) True 
2) False 

ANSWER: 
1. 1,2 
Answers 3, 4 and 5 are incorrect because these operations requires that an int (c) be converted to a boolean, or the boolean be converted to an int. Both of these conversions are illegal. 
2. 5 
A constructor cannot be abstract, final, native, static or synchronized. Refer to the Java Language Specification (section 8.6.3, version 1.0). 
3. 4 
In general, all components are resized and only retain their preferred height in the NORTH region. However, the CheckBox is not deformable, so it retains it’s preferred size. 
4. 1,3,4 
5. 1 
6. 3 
When a File class is constructed, it simply creates a handle to a File object. No files are created on the local harddisk. 
As the JDK API documentation points out, the File class is "an abstract representation of file and directory pathnames". 
The File class also contains directory separator attributes, which are platform specific. Therefore, the directory separator used is irrelevant. 

Also, since the File class simply creates a reference to a file object, no exception is thrown if the file already exists on the disk. 
7. 1,4,5 
Answer 1 is correct, because in read mode, the file must exist if any other operations are to be performed on it. 
The RandomAccessFile is not compatible with the Stream or reader/writer classes, so Answer 3 is incorrect. 
8. 3 
Strings are immutable, and so they cannot be modified. However, as the JDK API documentation will show, the String class has a replace() method, so answer 1 is incorrect. 
If line 2 read as "s = s.replace(‘d’, ‘q’)" then a new object would be created and assigned to s. The value of this new String object would be "abcqefgh". However, as line 2 is presented, no new object is created, and so ‘s’ remains unchanged. 
9. 1,5 
10. 2 
I came across the statement during my study for the exam, and simply noted it as fact. I never really looked too deeply into it – so please don’t email me for an explanation 🙂 
11. 1,4,5 

Therefore, Answer 1 is correct, because class B attempts to override method() to be less public (ie, protected to "friendly"). 

Answer 2 is incorrect, because a protected variable or method is always available to child classes (this is the purpose of the protected keyword). 

Answer 3 is incorrect, because all the information needed to verify this code is available at compile time. 

Answers 4 and 5 are correct because adding either "public" or "protected" to line 7 actually moves it higher up the access hierarchy (ie, more public than friendly). 

12. 1 
13. 2 
14. 1 
15. 3 
16. 2 
The rule for accessing methods and variables in a class hierarchy is as follows: 

-the object reference is used when accessing variables (so the value of b.x is therefore 2). 

-the underlying object is used when accessing methods (so the method called is actually the method defined in Subclass, and in Subclass, x =3). 
17. 1 
18. 2 
19. 2 
20. 1,2,3 
1. 3 
22. 1 
23. 1 
24. 1 
25. 4 
26. 1,4,5 
Answer 1 is correct, because x is declared as private to class A and is therefore not available to any other class (even subclasses). 
Answer 3 is totally meaningless, but sounds vaguely plausible! 
Answer 4 is correct, because the only problem with the code is the attempt to reference the variable x. 
Answer 5 is correct (see answer 4). 
27. 3 
28. 2,3,4,5 
29. 1 
Answer 2 is incorrect, since the {} defines an empty method (but still a method) so it is not abstract. 
Abstract methods cannot be static, so answer 3 is incorrect. 
Abstract and final are almost opposite in meaning and therefore do not form a valid keyword combination (final means a method can’t be overridden, abstract means a method must be overridden), so answer 4 is incorrect. 
30. 2 
31. 4 
Interfaces cannot have constructors, only classes have constructors. 
Answer 2 is a valid statement when dealing with classes, but not in the context of the code in the question. 
Answer 5 is totally untrue, but potentially confusing 🙂 
32. 1 
33. 1,2,4 
34. 1 
Answer 2 is incorrect, because booleans can’t have integer values (in this case, "1"). 
Answer 3 is an meaningless statement. 
Answer 5 is incorrect, attempting to confuse C/C++ and Java ways of defining true and false boolean values. 
35. 2,4 
36. 2 
37. 2 
38. 1,2 
39. 3 
40. 1 
41. 2 
42. 3 
43. 1,3 
44. 1,2,3 
45. 2 
46. 1,2,4,5 
47. 1 
48. 2 
49. 1.4 
50. 3,4 
Answer 1 is incorrect, because a class can have final methods and variables without the need for the entire class to be final. 
Answer 2 is incorrect, because the type of error in this code is detectable at compile time. 
Answer 5 is invalid. Final can be applied to primitives. 
51. 4 
52. 1 
53. 1,2,3,4,5 
54. 2 
55. 2.3 
56. 3 
57. 1,3,4 
58. 3,5 
59. 1,3,4,5 
60. 5 
61. 3 
62. 4 
63. 1,4 
64. 4 
65. 2,3 
66. 1,3,4,5 
67. 5 
68. 2 
69. 4 
70. 5 
71. 4 
72. 2 
73. 3 
74. 2 
75. 1 
76. 1 
77. 4 
78. 3 
79. 2 
80. 3 
81. 3 
82. 3 
83. 1,2,5 
84. 5 
85. 4 
86. 2,3 
There are several things wrong with this code: 
– class A must be declared as abstract, since method() is declared as abstract 
– if class A is declared as abstract, then the code will compile correctly 
– if the abstract declaration of method() in class A is removed, the code will compile (however, the entire line 2 must now read as follows: 
int method(){} 
In other words, a method body must now be supplied since the method is no longer abstract. 
87. 3 
88. 2,5 
89. 3 
90. 2 
91. 1 
92. 3,4,5 
93. 2,3,5 
94. 1,5 
95. 2,3 
96. 3. 
97. 1,2 
98. 2 
The instanceof operator can be used as follows: 
– on classes to see if a particular class is derived from another (ie, is an instance of) 
– on interfaces to see if a class implements a particular interface 
99. 1,3,4 
100. 1,2,3,4,5 
101. 1,2,3,4,5 
102. 2,3,4 
103. 2 
104. 1,2,5 
105. 4 
106. 3,4,5 
107. 4,5 
108. 3 
109. 1,3,5 
110. 3 
111. 1 
112. 4 
113. 1 
114. 4 
115. 2 
1 will not compile, because 123 defaults to type int, and there is no constructor of the Byte class which takes type int as a parameter. 
2 compiles correctly, because a parseable string is a valid parameter for the Byte constructor. 
3 fails to compile, because there is no no-args constructor for the Byte class. 
4 fails to compile. While the cast to an int is valid, the same reasons as Answer 1 apply. 
5 fails to compile, because the value 0x123 is a hex value, and equates to a decimal value of 291. This is not within the valid range for the Byte value. 
116. 2 
117. 2,4 
118. 1,5 
119. 2 
120. 2,3 
121. 1,2 
122. 1 
123. 2 
124. 2,4 
125. 3,4,5 
126. 1,2,3 
127. 1 
Thanks to Prasad for rightly pointing out that Answer 2 above also works for a container which uses the Flow Layout manager (even though it doesn’t have a "Center" area"). 
This can be explained by the fact that a container such as a Panel inherits from java.awt.Container, which has a method with a signature as follows: 
add(String, Component) 
However, while this is symantically correct (ie, it will compile and function correctly), it can’t be considered as a valid answer since Flow layout doesn’t have the concept of a "Center" area – at least, that’s my opinion 🙂 
However, this raises an interesting point – where possible, you should use static class variables, where a choice is available – eg, use BorderLayout.NORTH instead of "NORTH" when adding components to a container. This will ensure that any errors are trapped at compile time, rather than at run-time 🙂 
128. 2 
129. 3 
130. 3 
131. 5 
132. 1 
133. 3 
134. 3 
135. 1,2,4,5 
136. 4,5 
137. 1 
138. 1 
139. 1 
140. 1 
141. 3 
142. 1,2 
143. 3 
144. 5 
145. 1,2,3,4 
146. 1,2,3 
147. 4 
148. 1 
149. 2 
150. 1 
151. 3 
152. 1,2,3,4,5 
153. 2 
154. 2 
155. 1 
156. 2 
157. 1,2,3,4 
158. 1 
159. 1,3 
160. 1 
161. 1 
162. 2 
163. 2 
164. 1,2,5 
165. 1,2,4 
166. 2 
167. 1 
168. 1 
169. 1 
170. 1,2,3 
171. 1 
172. 1 
173. 1 
174. 3 
175. 2 
176. 1 
177. 4 
178. 3 
179. 1,2,4,5 
180. 2,3,5 
181. 3,4 
182. 1,3,4 
183. 2,4,5 
184. 1,2,3 
185. 3 
186. 1 
187. 1 
188. 3 
189. 2,5 
190. 3 
191. 5 
192. 2,4 
193. 4 
194. 3 
195. 4 
196. 2 
197. 4 
198. 3 
199. 1,2,3,4,5 
200. 1

SCJP 模擬考試題, 筆試常考

http://beansoft.java-cn.org/download/scjp_emulator.zip 700KB Java 1.4 版本

 

是我很早以前買的一本英文 SCJP 輔導書裡面所附帶的程式碼.
下載後解壓縮得到幾個 JAR 檔案 下載後 Windows 下可以雙擊執行, 點選最大化後, 然後點選 Mark 按鈕就可以看到正確答案和解釋了.
Linux/Windows 下都通過命令列鍵入
java -jar Final.jar 這樣的命令即可執行. 

現在的 Java 筆試題 的基礎部分(core java)很多都是從類似這樣的英文題裡面抽取出來的, 基本上熟悉之後筆試題會答的很漂亮.
介面截圖: 

再轉載:  閱讀完此貼你才可以大膽的高薪工作!http://bbs.tarena.com.cn/topic.cgi?forum=1&topic=10848&show=0
 大家找工作就要面試,有面試就有對付面試的辦法。以下一些題目來自我朋友痛苦的面試經歷,他給我總結了一下,我拿來和大家分享!提這些問題的公司包括IBM, E*Trade, Siebel, Motorola, SUN, 以及其它大小公司。   
   面試是沒什麼道理可講的,它的題目有的不合情理、脫離實際。有在紙上寫的,有當面考你的,也有在電話裡問的,給你IDE的估計很少(否則你趕快去買彩票, 說不定中)。所以如果你看完此文後,請不要抱怨說這些問題都能用IDE來解決。你必須在任何情況下準確回答這些問題,在面試中如果出現一兩題回答不準確很有可能你就被拒之門外了。   當然這些都是Java的基本題,那些面試的人大多數不會問你Hibernate有多先進,Eclipse的三個組成部分,或command design pattern,他們都是老一輩了,最喜歡問的就是基礎知識。別小看了這些基礎,我朋友水平挺可以的,結果就栽在一道基礎知識的問題上,和高薪無緣。   
   希望這些知識點對大家有所幫助,願大家從達內出來後都能找到高薪的工作!

第一,談談final, finally, finalize的區別。   final 用於宣告屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。finally是異常處理語句結構的一部分,表示總是執行。finalize是Object類的一個方法,在垃圾收集器執行的時候會呼叫被回收物件的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉檔案等。  

第二,Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面)? 可以繼承其他類或完成其他介面,在swing程式設計中常用此方式。  

第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很笼統)。 Static Nested Class是被宣告為靜態(static)的內部類,它可以不依賴於外部類例項被例項化。而通常的內部類需要在外部類例項化後才能例項化。  

第四,&和&&的區別。 &是位運算子,表示按位與運算,&&是邏輯運算子,表示邏輯與(and).  

第五,HashMap和Hashtable的區別。 HashMap是Hashtable的輕量級實現(非執行緒安全的實現),他們都完成了Map介面,主要區別在於HashMap允許空(null)鍵值(key),由於非執行緒安全,效率上可能高於Hashtable.  

第六,Collection 和 Collections的區別。   Collection是集合類的上級介面,繼承與他的介面主要有Set 和List.Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜尋、排序、執行緒安全化等操作。  

第七,什麼時候用assert。 1.4新增關鍵字(語法),用於測試boolean表示式狀態,可用於除錯程式。使用方法 assert <boolean表示式>,表示如果表示式為真(true),則下面的語句執行,否則丟擲AssertionError。另外的使用方式assert < boolean表示式>:<other表示式>,表示如果表示式為真,後面的表示式忽略,否則後面表示式的值用於AssertionError的構建引數。注意編譯時要增加-source 1.4 引數,否則報錯。]執行時要增加 -ea引數,否則assert行被忽略  

第八,GC是什麼? 為什麼要有GC?   GC是垃圾收集的意思(Gabage Collection),記憶體處理是程式設計人員容易出現問題的地方,忘記或者錯誤的記憶體回收會導致程式或系統的不穩定甚至崩潰,Java提供的GC功能可以自動監測物件是否超過作用域從而達到自動回收記憶體的目的,Java語言沒有提供釋放已分配記憶體的顯示操作方法。   

第九,String s = new String("xyz");建立了幾個String Object? 兩個  

第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少? Math.round(11.5)==12Math.round(-11.5)==-11round方法返回與引數最接近的長整數,引數加1/2後求其floor.  

第十一,short s1 = 1; s1 = s1   1;有什麼錯? short s1 = 1; s1  = 1;有什麼錯? short s1 = 1; s1 = s1   1; (s1 1運算結果是int型,需要強制轉換型別)short s1 = 1; s1  = 1;(可以正確編譯)  

第十二,sleep() 和 wait() 有什麼區別? sleep是執行緒類(Thread)的方法,導致此執行緒暫停執行指定時間,給執行機會給其他執行緒,但是監控狀態依然保持,到時後會自動恢復。呼叫sleep不會釋放物件鎖。wait是Object類的方法,對此物件呼叫wait方法導致本執行緒放棄物件鎖,進入等待此物件的等待鎖定池,只有針對此物件發出notify方法(或notifyAll)後本執行緒才進入物件鎖定池準備獲得物件鎖進入執行狀態。  

第十三,Java有沒有goto? 沒有  很十三的問題,如果哪個面試的問到這個問題,我勸你還是別進這家公司。(完)(job.sohu.com)

第十四,陣列有沒有length()這個方法? String有沒有length()這個方法?陣列沒有length()這個方法,有length的屬性。String有有length()這個方法。

第十五,Overload和Override的區別。Overloaded的方法是否可以改變返回值的型別?方法的重寫Overriding和過載Overloading是Java多型性的不同表現。重寫Overriding是父類與子類之間多型性的一種表現,過載Overloading是一個類中多型性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫 (Overriding)。子類的物件使用這個方法時,將呼叫子類中的定義,對它而言,父類中的定義如同被"遮蔽"了。如果在一個類中定義了多個同名的方法,它們或有不同的引數個數或有不同的引數型別,則稱為方法的過載(Overloading)。Overloaded的方法是可以改變返回值的型別。

第十六,Set裡的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==還是equals()? 它們有何區別?Set裡的元素是不能重複的,那麼用iterator()方法來區分重複與否。equals()是判讀兩個Set是否相等。equals()和==方法決定引用值是否指向同一物件equals()在類中被覆蓋,為的是當兩個分離的物件的內容和型別相配的話,返回真值。

第十七,給我一個你最常見到的runtime exception。ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterformatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

第十八,error和exception有什麼區別?error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說記憶體溢位。不可能指望程式能處理這樣的情況。exception 表示一種設計或實現問題。也就是說,它表示如果程式執行正常,從不會發生的情況。

第十九,List, Set, Map是否繼承自Collection介面?List,Set是Map不是

第二十,abstract class和interface有什麼區別?宣告方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要建立一個體現某些基本行為的類,併為該類宣告方法,但不能在該類中實現該類的情況。不能建立abstract 類的例項。然而可以建立一個變數,其型別是一個抽象類,並讓它指向具體子類的一個例項。不能有抽象建構函式或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法。介面(interface)是抽象類的變體。在介面中,所有方法都是抽象的。多繼承性可通過實現這樣的介面而獲得。介面中的所有方法都是抽象的,沒有一個有程式體。介面只可以定義static final成員變數。介面的實現與子類相似,除了該實現類不能從介面定義中繼承行為。當類實現特殊介面時,它定義(即將程式體給予)所有這種介面的方法。然後,它可以在實現了該介面的類的任何物件上呼叫介面的方法。由於有抽象類,它允許使用介面名作為引用變數的型別。通常的動態聯編將生效。引用可以轉換到介面型別或從介面型別轉換,instanceof 運算子可以用來決定某物件的類是否實現了介面。

第二十一,abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?都不能

第二十二,介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承實體類(concrete class)?介面可以繼承介面。抽象類可以實現(implements)介面,抽象類是否可繼承實體類,但前提是實體類必須有明確的建構函式。

第二十三,啟動一個執行緒是用run()還是start()?啟動一個執行緒是呼叫start()方法,使執行緒所代表的虛擬處理機處於可執行狀態,這意味著它可以由JVM排程並執行。這並不意味著執行緒就會立即執行。run()方法可以產生必須退出的標誌來停止一個執行緒。

第二十四,構造器Constructor是否可被override?構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被過載Overloading。

第二十五,是否可以繼承String類?String類是final類故不可以繼承。

第二十六,當一個執行緒進入一個物件的一個synchronized方法後,其它執行緒是否可進入此物件的其它方法?不能,一個物件的一個synchronized方法只能由一個執行緒訪問。

第二十七,try {}裡有一個return語句,那麼緊跟在這個try後的finally {}裡的code會不會被執行,什麼時候被執行,在return前還是後?會執行,在return前執行。

第二十八,程式設計題: 用最有效率的方法算出2乘以8等於幾?有C背景的程式設計師特別喜歡問這種問題。2 << 3

第二十九,兩個物件值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?不對,有相同的hash code。

第三十,當一個物件被當作引數傳遞到一個方法後,此方法可改變這個物件的屬性,並可返回變化後的結果,那麼這裡到底是值傳遞還是引用傳遞? 是值傳遞。Java 程式語言只由值傳遞引數。當一個物件例項作為一個引數被傳遞到方法中時,引數的值就是對該物件的引用。物件的內容可以在被呼叫的方法中改變,但物件的引用是永遠不會改變的。

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?switch(expr1)中,expr1是一個整數表示式。因此傳遞給 switch 和 case 語句的引數應該是 int、 short、 char 或者 byte。long,string 都不能作用於swtich。

第三十二,程式設計題: 寫一個Singleton出來。Singleton模式主要作用是保證在Java應用程式中,一個類Class只有一個例項存在。一般Singleton模式通常有幾種種形式:第一種形式: 定義一個類,它的建構函式為private的,它有一個static的private的該類變數,在類初始化時例項話,通過一個public的getInstance方法獲取對它的引用,繼而呼叫其中的方法。public class Singleton {  private Singleton(){}  //在自己內部定義自己一個例項,是不是很奇怪?  //注意這是private 只供內部呼叫  private static Singleton instance = new Singleton();  //這裡提供了一個供外部訪問本class的靜態方法,可以直接訪問    public static Singleton getInstance() {    return instance;      } } 第二種形式: public class Singleton {   private static Singleton instance = null;  public static synchronized Singleton getInstance() {  //這個方法比上面有所改進,不用每次都進行生成物件,只是第一次       //使用時生成例項,提高了效率!  if (instance==null)    instance=new Singleton();return instance;   } } 其他形式:定義一個類,它的建構函式為private的,所有方法為static的。
一般認為第一種形式要更加安全些