Skip to Content Java Solaris コミュニティ パートナー My Sun ご購入について Japan Worldwide

Sun認定資格
Java認定資格
spacer spacer
≫  トレーニングTOP
≫  コース一覧
≫  サン認定資格
  - Java / Solaris
  資格保有者の声
  CertManager
  認定証送付先の変更等
  受験者登録情報管理
≫  一社向けトレーニング
≫  トレーニング・オプション
spacer spacer

Sun Certified Programmer for the Java 2 Platform 例題(解答)

 Sun Certified Programmer for the Java 2 Platform 5.0
概要 | お申込方法 | 認定証 | FAQ
Sun Certified Programmer for the Java 2 Platform5.0 試験 (試験番号 310-055) では、次のような問題が出題されます。解答は赤字で示しています。
  1. 宣言、初期化、スコープ
  2. 以下のコードがあります。7行目に挿入するコードとしてふさわしいものはどれですか?

    1. class Food {
    2.   enum Fruits {
    3.     Banana, Apple, Lemon, Orange, Peach
    4.   }
    5. 
    6.   public static void main(String args[]) {
    7.     //ここに処理を挿入
    8.     System.out.println(f);
    9.   }
    10. }
    

    1. Food f = Food.Banana;
    2. Fruits f = Fruits.Apple;
    3. enum f = Fruits.Peach;
    4. Food f = new Fruits();
    5. Fruits f = Fruits(Orange);

  3. フロー制御
  4. 以下のようなコードがあります。

     1. class Test{
     2.   public static void main(String args[]){
     3.     for( int x = 3; x > 0 ; x-- ){
     4.       switch( x - 1 ){
     5.         0:  System.out.print("1  ");
     6.         1:  System.out.print("2  ");
     7.         2:  System.out.print("3  ");
     8.         3:  System.out.print("4  ");
     9.       }
    10.     }  
    11.   }
    12. }
    

    実行結果として正しいものはどれですか?

    1. 3 2 1
    2. 4 3 2 1
    3. 3 4 2 3 4 1 2 3 4
    4. 何も出力されない
    5. コンパイルエラーになる
    6. 実行時に例外が発生する

  5. APIコンテンツ
  6. 以下のようなコードがあります。

     1. class Exam {
     2.   public static void main(String args[]) {
     3.     // ここにコードを挿入
     4.   }
     5. }
    

    3 行目に挿入するコードとして、ふさわしいものはどれですか?

    1. System.out.printf("number is %d\n" , Math.PI);
    2. System.out.printf("number is %f\n" , Math.PI);
    3. System.out.printf("number is %x\n" , Math.PI);
    4. System.out.printf("number is %d\n" + Math.PI);
    5. System.out.printf("number is %f\n" + Math.PI);
    6. System.out.printf("number is %x\n" + Math.PI);

  7. 並行性
  8. 現在実行中のスレッドが実行待ち状態になる原因として考えられるものはどれですか。

    1. synchronized ブロックの処理を終了したとき;
    2. スレッドが interrupt() メソッドを呼び出したとき;
    3. スレッドが notify() メソッドを呼び出したとき;
    4. スレッドが notifyAll() メソッドを呼び出したとき;
    5. スレッドが wait() メソッドを呼び出したとき;

  9. オブジェクト指向コンセプト
  10. 以下のようなコードがあります。このコードにおいてクラス A とクラス B の関係の説明としてふさわしいものはどれですか?

    10. class A { }
    11. class B { 
    12.   private A obj = new A();
    13. }
    

    1. クラス B はクラス A と関係を持たない。
    2. クラス B はクラス A と1対多の関係を持つ。
    3. クラス B はクラス A と多対多の関係を持つ。
    4. クラス A とクラス B の関係は、"has-a" 関係である。
    5. クラス A とクラス B の関係は、"is-a" 関係である。

  11. コレクション/ジェネリックス
  12. 以下のようなコードがあります。

    10. import java.util.*;
    11. public class Gen {
    12.   public static void main(String [] args) {
    13.     // ここにコードを挿入
    14.     list.add("south");
    15.     list.add("north");
    16.     list.add("west");
    17.     list.add("east");
    18.     // ここにコードを挿入
    19.   }
    20. }
    

    このコードが正しくコンパイル、実行できるようにするためには、どのコードを 13 行目と 18 行目に挿入すればよいですか?

    1. 13. List(String) list = new ArrayList(); 18. for(String str : list) System.out.print(str + " ");
    2. 13. List<E> list = new ArrayList<E>(); 18. for(String str : list) System.out.print(str + " ");
    3. 13. List<String> list = new ArrayList<String>(); 18. for(String str : list) System.out.print(str + " ");
    4. 13. List<String> list = new List<String>(); 18. for(String str : list) System.out.print(str + " ");
    5. 13. List<String> list = new ArrayList<String>(); 18. for(String str ; list) System.out.print(str + " ");

    解説:
    C が正解です。A は、13 行目のList(String) が不正な記述であるため、誤りです。B は、13 行目の型パラメータの記述が誤っています。目的の型名を指定する必要があります。D は、13 行目でList インタフェースをインスタンス化しようとしてるため、誤りです。E は、18 行目の拡張 for の記述で変数宣言とリストとの区切りが ; になっているため誤りです。


  13. Java言語の基礎
  14. 以下のようなコードがあります。

     1. class Exam {
     2.   public static void main(String args[]) {
     3.     System.out.println(args[0]);
     4.   }
     5. }
    

    また、コマンドラインで以下のように java コマンドを実行するとします。
    java Exam Foo
    実行結果はどれですか?

    1. 問題なく実行されるが何も出力されない
    2. java という値が出力される
    3. Exam という値が出力される
    4. Foo という値が出力される
    5. 実行時に例外が発生する

    解説:
    D が正解です。実行時にコマンドライン上でクラスファイル名の後に指定した値は main()メソッドの引数に渡されます。ここでは、クラス名 Exam の次に指定した Foo が args[0] に渡されるため、Foo が出力されます。


Sun Certified Programmer for the Java 2 Platform 1.4
Sun Certified Programmer for the Java 2 Platform1.4 試験 (試験番号 310-035) では、次のような問題が出題されます。

  1. 正しい配列の宣言を下記より3つ選択して下さい。


    1. int [42] x;
    2. int x [42];
    3. int [] x = (1,2,3);
    4. char [] myChars;
    5. int [] x = new int[] {2,4,5};
    6. int [] myScores [];

  2. 下記の内、オーバーライドの関係になるものを2つ選択して下さい。


    1. native void methoda();
    2. final void methoda() {}
    3. void final methoda() {}
    4. synchronized void methoda() {}
    5. synchronized final void methoda() {}

    【補足】指定されているメソッドはfinalオーバーライドできません。

  3. 以下のコードの実行結果を1つ選択して下さい。


  4. class Bool {
    static boolean b;
    public static void main(String [] args) {
    int x=0;
    if (b ) {
    x=1;
    }

    else if (b = false){
    x=2;
    }
    else if (b){
    x=3;
    }
    else {
    x=4;
    }
    System.out.println("x = " + x);
    }
    }

    1. X = 0
    2. X = 1
    3. X = 2
    4. X = 3
    5. X = 4
    6. コンパイルエラー

    【補足】bの値はfalseに初期化されます。8行目でfalseにリセットし、15行目で x が4に設定されているところまで処理が移動します。

  5. オブジェクトを破棄する方法を選択して下さい。


    1. オブジェクトへの参照を全て null にする
    2. Runtime.getRuntime().gc を呼び出す
    3. オブジェクトの持っている参照の全てを全て null にする
    4. (x をオブジェクトへの参照名とすると)x.remove() を呼び出す
    5. (x をオブジェクトへの参照名とすると)x.finalize() を呼び出す
    6. ガベッジコレクションのみがオブジェクトを破棄できる

    【補足】オブジェクト破棄のリクエストは出せますが、ガベッジコレクションのみが実際の破棄のタイミングを決定できます。

  6. 以下のコードを下記コマンドで実行したときの結果を選択して下さい。


  7. public class X {
    public void main(String [] args) {
    System.out.println("brand " + args[0]);
    }
    }

    %java X Y

    1. brand
    2. brand X
    3. brand Y
    4. brand X Y
    5. コンパイルエラー
    6. 実行時の例外

    【補足】実行時例外が発生します。
    Javaプログラミングを実行時にmain()メソッドをスタートさせるにはpublicとvoidの間にstaticも宣言する必要があるためです。

  8. 以下のコードの実行結果を選択して下さい。


  9. int i=3, j=0, result=1;
    result += i-- * --j ;
    System.out.println( result );

    1. 0
    2. -1
    3. -2
    4. -3
    5. コンパイルエラー
    6. 実行時の例外

    【補足】(i*(j-1))+1 と同じ実行結果。

  10. 以下のコードを実行した際、A, Bの関係を表す正しい表記を2つ選択して下さい。


  11. class A {}
    class B {
    private A myA = new A();
    }

    1. A と B との関係がない場合もある
    2. B は A との関係がない場合もある
    3. B は A と "1対多" の関係をもっている
    4. A と B は "has-a" の関係をもっている
    5. A と B は "is-a" の関係をもっている

  12. 以下のコードの実行結果を選択して下さい。


  13. public static void main(String [] args) {
    class T1 extends java.lang.Thread{}
    class T2 extends T1{}
    class T3 implements java.lang.Runnable{}

    new T1().start();
    new T2().start();
    new Thread(new T3()).start();
    System.out.println( "Executing" );
    }

    1. コンパイルエラー
    2. プログラムは終了しない
    3. プログラムは実行するがなにも出力しない
    4. 実行時例外が発生する
    5. プログラムが結果出力後終了する
    6. プログラムは3つめのスレッドを生成後終了する

    【補足】T3はランナブルインターフェースを実装していないので、メソッドがabstractのままでは、インスタンス化できません。

  14. 以下のコードの実行結果を選択して下さい。


  15. public class Test811 {
    public static void main(String [] args) {
    double num = 7.4;
    int a = (int) Math.abs(num + .5);
    int b = (int) Math.ceil(num + .5);
    int c = (int) Math.floor(num + .5);
    int d = (int) Math.round(num + .5);
    int e = (int) Math.round(num - .5);
    int f = (int) Math.floor(num - .5);
    int g = (int) Math.ceil(num - .5);
    int h = (int) Math.abs(num - .5);

    System.out.println("" + a + b + c + d + e + f + g + h);
    }
    }

    1. 56
    2. 78787676
    3. 78788777
    4. 77787776
    5. コンパイルエラー
    6. 実行時例外が発生する

    【補足】

    • Math.absは数値の絶対値をかえします。
    • Math.ceilは数値の値以上で最小の整数をdouble型でかえします。
    • Math.floorは数値の値以下で最大の整数をdouble型でかえします。
    • Math.roundは数値に最も近いlong型をかえします。
    • 結果は1/2を加えてfloorメソッドでとりint型にキャストして整数に丸められます。
    • もし、system.out.println()の中に""が含まれていなければ、整数値は文字列の値を連結させるのではなく、数学的に足されるので「A」が正解となります。
  16. java.util.ArrayListクラスの説明で正しい表記を3つ選択して下さい。


    1. 重複する要素を保持できる
    2. そのメソッドはスレッドセーフである
    3. 双方向に検索ができる
    4. java.util.Setを実装する
    5. 迅速なランダムアクセスに向いている
    6. java.util.Collectionsを実装する

    【補足】

    • ListクラスはIteratorクラスだけではなくListIteratorクラスを使用しています。なぜならListIteratorの双方向検索を可能にするためです。
    • Setインターフェースは重複するオブジェクトを保持できませんが、ArrayListクラスはSetクラスではなくListクラスを実装しているので、重複するオブジェクトを保持することができます。
    • ArrayListクラスのメソッドはSyncronized指定されていないのでそのメソッドはスレッドセーフではありません。
    • ArrayListクラスは RandomAccess インタフェースを実装し、迅速なランダムアクセスに向いています。また java.util.Collection インタフェースも実装しています。(Collections クラスではないことに注意しましょう)
トップに戻る


Sun Certified Programmer for the Java 2 Platform1.2
Sun Certified Programmer for the Java 2 Platform 1.2の試験 (試験番号 310-025) では、次のような問題が出題されます。

  1. 以下のコードをコンパイル、実行するとどうなりますか?


  2. public class Test {
    static int x;
    public static void main(String args[]) {
    System.out.println("Value is " + x);
    }
    }

    1. "Value is 0" が出力される。
    2. NullPointerException がスローされる。
    3. 不正な配列アクセスのコンパイルエラーとなる。
    4. 不正なメモリ割り当て前の参照のコンパイルエラーとなる。
    5. ArrayIndexOutOfBoundsException がスローされる。

  3. Frame がサイズ変更された場合、Frame の内側の領域にある Button のサイズに影響を与えないためには、Button をどこに配置すればよいですか?


    1. FlowLayout の内部の領域
    2. GridLayout の内部の領域t
    3. BorderLayout の Center の領域
    4. BorderLayout の East または、West の領域
    5. BorderLayout の North または、South の領域

  4. カプセル化による利点は何ですか?


    1. public メソッドのみ必要とされる。
    2. 例外がどのメソッドからもスローされない。
    3. final クラスを作成することにより他のコードから変更されない。
    4. インタフェースを変更することなしに実装を変更し、その結果他のコードを変更しないようにできる。
    5. 実装を変更することなしにインタフェースを変更し、その結果他のコードを変更しないようにできる。

  5. 格納しているオブジェクトを操作する際、インデックスのようなString 型のユニークキーを持つオブジェクトはどれですか?


    1. Map
    2. Set
    3. List
    4. Collection
    5. Enumeration

  6. インナークラスに関する記述で正しいものはどれですか?


    1. インタフェースを実装しなければならない。
    2. 外部クラス以外のクラスからもアクセスすることができる。
    3. その内部クラスでのみインスタンス化できる。
    4. メソッドのスコープ内で宣言された場合、 final としなければならない。
    5. 外部オブジェクトから内部オブジェクト内の変数、メソッドにアクセスすることが出来る。

  7. Javaのキーワードはどれですか?

    1. NULL
    2. sizeof
    3. friend
    4. extends
    5. synchronized

  8. 抽象クラスで abstract メソッドはどのように宣言しますか?


    1. public abstract method();
    2. public abstract void method();
    3. public void abstract Method();
    4. public void method() {abstract;/}
    5. public abstract void method() {/}
トップに戻る


お問い合わせ 会社情報 ニュース 採用情報 プライバシー 利用規定 商標 Copyright 1994-2007 Sun Microsystems, Inc.