コース: Bonus

レッスン: Javaプログラマ言語認定試験の準備

Sun Microsystemsは、Solaris管理者およびさまざまなタイプのJavaプログラマ向けに認定試験を行っています。 また、それぞれの認定試験向けにトレーニング・クラスと模擬試験を提供しています。

このチュートリアルに含まれる資料の大部分は、"Sun認定Javaプログラマ"試験の準備に関係しています。

次に、役に立つリンクを示します。

http://www.sun.com/training/certification
各種認定とその学習手段の概要が提供されています。

http://www.sun.com/training/certification/java/index.html
Javaテクノロジー向けの認定に固有の情報が提供されています。

http://www.sun.com/training/certification/objectives
各Java認定試験の"テスト目標"へのリンクを含んだ表(試験範囲のリスト)が提供されています。

最後のリンクを開いて「Testing Objectives for the Sun Certified Programmer for the Java Platform」を選択すると、目標のリストが表示され、次の7つの分野別に項目が箇条書きになっています。

  1. 宣言、初期化、スコーピング
  2. フロー制御
  3. APIコンテンツ
  4. 並行処理
  5. OOの概念
  6. コレクション/ジェネリクス
  7. 基本事項
ここからは、Sun認定Javaプログラマのテスト目標である7つの分野に対して、箇条書きにされた各項目を引用し、関連資料が含まれるチュートリアルのセクションへのリンクを付加します。

免責事項:このチュートリアルは認定試験の手引書として使用されることを意図しておらず、試験の対象となるすべての題目を詳しく説明したものでもありません。 以下のリンクは、試験の準備として提供されており、このチュートリアルは多数のリソースと併せて使用することが可能です。

セクション1: 宣言、初期化、スコーピング

項目1:

"クラス(抽象クラスとあらゆる形式のネスト・クラスを含む)、インタフェース、列挙型を宣言し、パッケージとimport文(静的インポートを含む)を正しく使用しているコードを開発する。"

項目2:

"インタフェースを宣言するコードを開発する。 1つ以上のインタフェースを実装または拡張するコードを開発する。 抽象クラスを宣言するコードを開発する。 抽象クラスを拡張するコードを開発する。"

項目3:

"静的変数、インスタンス変数、ローカル変数として、プリミティブ、配列、列挙型、オブジェクトを宣言し、初期化し、使用するコードを開発する。 また、変数名には正しい識別子を使用する。"

項目4:

"静的メソッドと非静的メソッドの両方を宣言するコードを開発します。必要に応じて、JavaBeansネーミング標準に準拠したメソッド名を使用する。 また、可変長の引数リストを宣言して使用するコードを開発する。"

項目5:

"提示されたコード例で、あるメソッドが別のメソッドを正しくオーバーライドまたはオーバーロードしているかどうかを判断し、そのメソッドの正しい戻り値(共変戻り値を含む)を確認する。"

項目6:

"提示された一連のクラスとスーパークラスに対して、1つ以上のクラスのコンストラクタを開発する。 提示されたクラス宣言に対して、デフォルト・コンストラクタが作成されるかどうかを判断し、作成される場合はコンストラクタの動作を特定する。 提示されたネスト・クラスまたは非ネスト・クラスに対して、これらのクラスをインスタンス化するコードを作成する。"

セクション2: フロー制御

項目1:

"if文またはswitch文を実装するコードを開発し、これらの文に対する正しい引数タイプを識別する。"

項目2:

"あらゆる形式のループやイテレータ(for、拡張forループ(for-each)、do、while、label、break、continueを含む)を実装するコードを開発し、ループの実行中と実行後にループ・カウンタ変数が取る値について説明できる。"

項目3:

"アサーションを利用したコードを開発し、適切に使用されたアサーションと不適切に使用されたアサーションを区別する。"

項目4:

"例外と例外処理句(try、catch、finally)を利用し、例外をスローするオーバーライド・メソッドおよびメソッドを宣言するコードを開発する。"

項目5:

"コードの特定個所で発生した例外による影響を認識する。 例外には、ランタイム例外、チェック例外、エラーがある点に注意する。"

項目6:

"ArrayIndexOutOfBoundsException、ClassCastException、IllegalArgumentException、IllegalStateException、NullPointerException、NumberFormatException、AssertionError、ExceptionInInitializerError、StackOverflowError、NoClassDefFoundErrorのいずれかがスローされる状況を認識する。 上記のうち、どの例外が仮想マシンによってスローされるかを理解し、その他については、プログラムから例外をスローすべき状況を認識する。"

セクション3: APIコンテンツ

項目1:

"プリミティブ・ラッパー・クラス(Boolean、Character、Double、Integerなど)および/またはオートボクシングとアンボクシングを使用するコードを開発する。 String、StringBuilder、StringBufferクラス間の違いを説明する。"

項目2:

"提示された、ファイル・システムをナビゲートしてファイルの読取りまたは書込みを実行するシナリオに対し、java.ioのBufferedReader、BufferedWriter、File、FileReader、FileWriter、PrintWriterのいずれかのクラス(場合によってはその組み合わせ)を使用して正しいソリューションを開発する。"

項目3:

"java.ioのDataInputStream、DataOutputStream、FileInputStream、FileOutputStream、ObjectInputStream、ObjectOutputStream、Serializable APIを使用して、オブジェクトのシリアライズやデシリアライズを実行するコードを開発する。"

項目4:

"java.textパッケージに含まれる標準J2SE APIを使用して、特定のロケールに対する日付、数値、通貨を正しく書式設定または解析する。また、提示されたシナリオにおいて、デフォルト・ロケールまたは特定のロケールを使用する場合に適したメソッドを特定する。 java.util.Localeクラスの目的と用途について説明する。"

項目5:

"java.utilパッケージとjava.util.regexパッケージに含まれる標準J2SE APIを使用して、文字列またはストリームを書式化または解析するコードを作成する。 文字列の場合、PatternクラスとMatcherクラス、およびString.splitメソッドを使用したコードを記述する。 正規表現パターンを識別し、マッチングに使用する(.(ドット)、*(アスタリスク)、+(プラス)、?、\d、\s、\w、[]、()に限定)。 *、+、?の使用は欲張りマッチのみに限定され、丸括弧演算子はマッチング中の内容取得ではなく、グループ化メカニズムとしてのみ使用する。 ストリームの場合、FormatterクラスとScannerクラス、およびPrintWriter.formatまたはprintfメソッドを使用したコードを記述する。 書式パラメータ(%b、%c、%d、%f、%sのみ)を特定し、書式文字列内で使用する。"

セクション4: 並行処理

項目1:

" java.lang.Threadおよびjava.lang.Runnableの両方を使用して、新規スレッドを定義、インスタンス化、開始するコードを作成する。"

項目2:

"スレッドが存在可能な状態を認識し、スレッドの状態を移行する方法を特定する。"

項目3:

"提示されたシナリオに対して、同時アクセスの問題から静的変数またはインスタンス変数を保護するために、正しくオブジェクト・ロックを使用するコードを作成する。"

項目4:

"提示されたシナリオに対して、wait、notify、またはnotifyAllを正しく使用するコードを作成する。"

セクション5: OOの概念

項目1:

"クラスの厳密なカプセル化、疎結合、高凝集度を実装しているコードを開発し、その利点について説明する。"

項目2:

"提示されたシナリオに対して、ポリモフィズムの使用法を実証するコードを開発する。 キャストが必要になるケースを特定し、オブジェクト参照キャストに関するコンパイラ・エラーとランタイム・エラーの違いを認識する。"

項目3:

"コンストラクタ、インスタンス変数、または静的変数と、インスタンス・メソッドまたは静的メソッドに関して、継承修飾子による影響を説明する。"

項目4:

"提示されたシナリオに対して、オーバーライドまたはオーバーロードされたメソッドを宣言および呼び出すコードと、スーパークラスと、オーバーライドまたはオーバーロードされたコンストラクタを宣言および呼び出すコードを開発する。"

項目5:

""is-a"関係および"has-a"関係を実装するコードを開発する。"

セクション6: コレクション/ジェネリクス

項目1:

"提示された設計シナリオに対して、その設計を正しく実装するために、どのコレクション・クラスおよび/またはインタフェースを使用するべきかを判断する(Comparableインタフェースの使用を含む)。"

項目2:

"該当するhashCodeメソッドとequalsメソッドに対して、正しいオーバーライドと正しくないオーバーライドを区別し、==とequalsメソッドの違いを説明する。"

項目3:

"Collections API(特にSetインタフェース、Listインタフェース、Mapインタフェースと実装クラス)のジェネリクスを使用するコードを作成する。 ジェネリクスを使用しないCollections APIの制限事項、およびジェネリクスを使用するためにコードをリファクタリングする方法を理解する。"

項目4:

"クラス/インタフェース宣言、インスタンス変数、メソッド引数、戻りタイプに型パラメータを正しく使用するコードを開発し、ジェネリック・メソッドまたはワイルド・カード型を使用するメソッドを記述し、これら2つのアプローチの類似点と相違点について理解する。"

項目5:

"java.utilパッケージの機能を使用して、ソートやバイナリ検索の実行、またはリストから配列への変換を実行することでリストを操作するコードを作成する。 java.utilパッケージの機能を使用して、ソートやバイナリ検索の実行、または配列からリストへの変換を実行することで配列を操作するコードを作成する。 リストや配列のソートには、java.util.Comparatorインタフェースとjava.lang.Comparableインタフェースを使用する。 さらに、プリミティブ・ラッパー・クラスとjava.lang.Stringのソートに対して、"自然順"が与える影響を認識する。"

セクション7: 基本事項

項目1:

"提示されたコード例とシナリオに対して、適切なアクセス修飾子、パッケージ宣言、import文を使用して、サンプルに含まれるコードとの(アクセスまたは継承を介した)インタラクションを実現するコードを作成する。"

項目2:

"提示されたクラスとコマンドラインの例に対して、期待される実行時の動作を特定する。"

項目3:

"オブジェクト参照およびプリミティブな値が、代入やその他のパラメータの変更処理を実行するメソッドに渡された場合に受ける影響を特定する。"

項目4:

"提示されたコード例で、オブジェクトがガベージ・コレクションの対象になる時点を認識し、ガベージ・コレクション・システムによって保証されるものと保証されないものを識別する。 System.gcとファイナライゼーションの動作について識別する。"

項目5:

"提示された、JARファイルの内外にデプロイされたクラスの完全修飾名に対して、このクラスの適切なディレクトリ構造を構成する。 提示されたコード例とクラスパスで、このクラスパスを使用したコードのコンパイルが正しく実行されるかどうかを判断する。"

項目6:

"期待した結果を得るために、代入演算子(=、+=、-=に限定)、算術演算子(+、-、*、/、%、++、--に限定)、関係演算子(<、<=、>、>=、==、!=に限定)、instanceof演算子、論理演算子(&、|、^、!、&&、||に限定)、条件演算子(? :)など、適切な演算子を正しく適用してコードを作成する。 2つのオブジェクトまたは2つのプリミティブが等しいかどうかを特定するコードを作成する。"


サンプル・プログラムで問題が発生した場合は、 『サンプル・コードのコンパイルと実行: FAQ』をお試しください。
不満な点や 賞賛、 提案などがあれば、 フィードバックをお願いいたします

前のページ: 前のレッスン
次のページ: コース終了