1. 首頁
  2. 面試

java面試寶典帶答案

java面試寶典帶答案

一、 寫出下面程式碼的執行結果 (分值10分) public class Foo {

public static void main(String[] args) { String strValue="ABCDEFG"; strValue.substring(3); strValue.concat("123"); System.out.println("result=" + strValue);//ABCDEFG String value = new String ("ABCDEFG"); System.out.println(strValue== value);//false

} }

二、 寫出下面程式碼的執行結果 public class Foo{ (分值5分)

public static void main(String args[]) { int x = 100; int y = 200; if (x = y)//=是賦值運算子。不是比較運算子。 編譯失敗。 System.out.println("Not equal"); else System.out.println("Equal"); } }

三、 寫出下面程式碼的`執行結果 (此題需寫出分析過程,沒有分析過程不得分,分值10分)

import java.io.IOException; public class ExceptionTest {

public static void main(String args[]) { try { new ExceptionTest().methodA(5); } catch (IOException e) { System.out.println("caught IOException"); } catch (Exception e) { System.out.println("caught Exception"); }finally{ System.out.println("no Exception"); } }void methodA(int i) throws IOException { if (i%2 != 0) throw new IOException("methodA IOException"); } }

在主函式中建立本類物件,呼叫了非靜態方法methodA(5);

methodA方法執行方法體時,因為條件滿足,丟擲了IO異常。 Try就檢測到了該異常。

因為有多個catch,會去找匹配的第一個catch。所以catch(IOException e){}就執行了。列印caught IOException。異常被處理後。在執行finally程式碼塊中的語句。 因為finally中的程式碼一定會執行。Finally程式碼塊通常都用於關閉資源。比如流資源,或者資料庫。

四、 寫出下面程式碼執行的結果(此題需寫出分析過程,沒有分析過程不得分,分值10分) public class Test {

static boolean isTrue() { System.out.println("isTrue"); return true; }

static boolean isFalse() { System.out.println("isFalse"); return false; }

public static void main(String[] args) { if (isTrue() || isFalse()) { System.out.println(" || operate return true"); } if (isFalse() & isTrue()) { System.out.println(" & operate return true"); } } }

五、 寫出下面程式碼執行的結果(此題需寫出分析過程,沒有分析過程不得分,分值10分)

class MyThread extends Thread{

public void run(){ try { Thread.currentThread().sleep(3000); } catch (InterruptedException e) { } System.out.println("MyThread running"); } }

public class ThreadTest{

public static void main(String argv[]) { MyThread t = new MyThread(); t.run(); t.start(); System.out.println("Thread Test"); } }

六、 執行B.main的結果是什麼?(此題需寫出分析過程,沒有分析過程不得分,分值10分) class A {

void fun1() {

System.out.println(this.fun2()); }

int fun2() { return 123; } }

class B extends A { int fun2() { return 456; }

public static void main(String argv[]) { A a;

B b = new B(); b.fun1(); a = b; a.fun1(); } }

、 執行ListTest.main的結果是什麼?(此題需寫出分析過程,沒有分析過程不得分,分值10分) class Data { int val;

int getVal() { return val; }

void setVal(int val) { this.val = val; } }

public class ListTest {

public static void main(String argv[]) { Data data = new Data();

ArrayList list = new ArrayList();

for (int i=100; i<103; i++) { data.setVal(i); list.add(data); }

int j = 0;

while (j < list.size()) {

Data tmp = (Data )list.get(j);

System.out.println("list(" + j + ") = " + tmp.getVal()); j++; } } }

八、 請指出以下程式碼有哪些錯誤(分值15分) 1.

abstract class Name { private String name;

public abstract boolean isStupidName(String name) {} }

2.

public class Something { void doSomething () { private String s = ""; int l = s.length(); } } 3.

public class Something {

public int addOne(final int x) { return ++x; } }

九、 寫出以下正則表示式(分值10分) 1-6位字母或數字:

手機號(只能以139或159開通,11位數字):

十、 寫一個方法,實現字串的反轉,如:輸入abc,輸出cba(分值10分)

十一、 寫一個延遲載入的單例模式(Singleton)的例子(分值10分)

十二、

public class OuterClass { private double d1 = 1.0; // code here }

把下列答案存放在指定code位置上,哪兩個答案是正確的。闡述原因。 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(); }