はじめに
Javaエンジニアを目指す皆さん、こんにちは!今回は、Java Silver試験の対策について詳しく解説していきます。15章に分けて、重要なポイントと練習問題を紹介します。それでは、さっそく始めましょう!
1. Javaプログラミングの基礎
Javaの基本構文や変数の扱い方を学びます。
練習問題:
次のコードの出力は何ですか?
public class HelloWorld {
public static void main(String[] args) {
int x = 5;
System.out.println(x++);
}
}
a) 5
b) 6
c) コンパイルエラー
d) 実行時エラー
答え: a) 5
後置インクリメント演算子(x++)は、現在の値を返してから増加させます。
2. オブジェクト指向プログラミング
クラスとオブジェクトの概念を理解しましょう。
練習問題:
以下のコードで正しいのはどれですか?
class Animal {
void makeSound() {
System.out.println("Some sound");
}
}
class Dog extends Animal {
void makeSound() {
System.out.println("Woof");
}
}
a) 継承の例である
b) オーバーロードの例である
c) カプセル化の例である
d) 多態性の例である
答え: a) 継承の例である
DogクラスがAnimalクラスを継承し、makeSoundメソッドをオーバーライドしています。
3. 配列と文字列
配列の操作と文字列の扱い方を学びます。
練習問題:
次のコードの出力は何ですか?
String str = "Hello";
str.concat(" World");
System.out.println(str);
a) Hello
b) World
c) Hello World
d) コンパイルエラー
答え: a) Hello
Stringは不変オブジェクトです。concat()メソッドは新しい文字列を返しますが、元の文字列は変更されません。
4. 例外処理
try-catchブロックの使い方を理解しましょう。
練習問題:
以下のコードで適切な例外処理はどれですか?
try {
int[] arr = new int[5];
arr[10] = 50;
} catch (___________) {
System.out.println("Array index out of bounds!");
}
a) ArrayIndexOutOfBoundsException e
b) Exception e
c) RuntimeException e
d) IndexOutOfBoundsException e
答え: a) ArrayIndexOutOfBoundsException e
配列の範囲外にアクセスしようとした場合、ArrayIndexOutOfBoundsExceptionがスローされます。
5. ラムダ式と関数型インターフェース
Java 8以降の機能を学びます。
練習問題:
正しいラムダ式はどれですか?
interface Calculator {
int calculate(int x, int y);
}
Calculator add = ____________;
a) (x, y) -> x + y
b) (x, y) => x + y
c) (int x, int y) -> { return x + y; }
d) (x, y) -> return x + y;
答え: a) (x, y) -> x + y
これは最も簡潔で正しいラムダ式の書き方です。
6. ストリームAPI
コレクションの操作を効率的に行う方法を学びます。
練習問題:
次のコードの出力は何ですか?
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
.filter(n -> n % 2 == 0)
.mapToInt(Integer::intValue)
.sum();
System.out.println(sum);
a) 15
b) 6
c) 9
d) 3
答え: b) 6
偶数(2と4)の合計が計算されます。
7. モジュールシステム
Java 9以降のモジュールシステムについて学びます。
練習問題:
モジュール定義ファイルの正しい名前は?
a) module-info.class
b) module-info.java
c) module.java
d) module.class
答え: b) module-info.java
モジュールを定義するファイルは「module-info.java」という名前で作成します。
8. ジェネリクス
型安全性を高めるジェネリクスの使い方を学びます。
練習問題:
次のコードで正しいのはどれですか?
List<? extends Number> list = new ArrayList<Integer>();
list.add(10);
a) コンパイルエラー
b) 実行時エラー
c) 10が追加される
d) nullが追加される
答え: a) コンパイルエラー
「? extends Number」は読み取り専用となるため、要素を追加することはできません。
9. コレクションフレームワーク
ListやMapなどの基本的なコレクションの使い方を学びます。
練習問題:
HashMapの特徴として正しいのはどれですか?
a) 要素の順序を保持する
b) キーの重複を許可する
c) nullキーを1つだけ許可する
d) スレッドセーフである
答え: c) nullキーを1つだけ許可する
HashMapはnullキーを1つだけ許可し、順序を保持せず、スレッドセーフではありません。
10. 入出力処理
ファイルの読み書きや標準入出力の扱い方を学びます。
練習問題:
次のコードで適切なインポート文はどれですか?
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
a) import java.io.;
b) import java.util.;
c) import java.nio.;
d) import java.lang.;
答え: a) import java.io.*;
BufferedReaderとFileReaderは java.io パッケージに含まれています。
11. スレッドとマルチスレッディング
並行処理の基本を学びます。
練習問題:
スレッドセーフなクラスはどれですか?
a) ArrayList
b) HashMap
c) Vector
d) LinkedList
答え: c) Vector
Vectorはスレッドセーフなクラスです。他の選択肢はスレッドセーフではありません。
12. Java日付/時間API
Java 8以降の新しい日付/時間APIを学びます。
練習問題:
現在の日時を取得するための正しいコードは?
a) new Date()
b) LocalDateTime.now()
c) Calendar.getInstance()
d) System.currentTimeMillis()
答え: b) LocalDateTime.now()
これはJava 8以降で推奨される現在の日時を取得する方法です。
13. アノテーション
メタデータを追加するアノテーションの使い方を学びます。
練習問題:
次のアノテーションの意味は?
@Override
public void someMethod() {
// ...
}
a) メソッドをオーバーライドしていることを示す
b) メソッドを非推奨にする
c) メソッドを抑制する
d) メソッドをテストする
答え: a) メソッドをオーバーライドしていることを示す
@Overrideアノテーションは、メソッドがスーパークラスのメソッドをオーバーライドしていることを示します。
14. JDBC
データベース接続の基本を学びます。
練習問題:
JDBCドライバーを登録するための正しいコードは?
a) Class.forName("com.mysql.jdbc.Driver");
b) DriverManager.registerDriver("com.mysql.jdbc.Driver");
c) Connection.register("com.mysql.jdbc.Driver");
d) Database.loadDriver("com.mysql.jdbc.Driver");
答え: a) Class.forName("com.mysql.jdbc.Driver");
これは従来のJDBCドライバーを登録する一般的な方法です。
15. Java SECの基礎
セキュリティ関連の機能を学びます。
練習問題:
安全なパスワード保存方法として適切なのは?
a) 平文で保存
b) MD5でハッシュ化
c) bcryptでハッシュ化
d) Base64でエンコード
答え: c) bcryptでハッシュ化
bcryptは現在、パスワードのハッシュ化に推奨されるアルゴリズムの1つです。
以上が、Java Silver試験対策の15章です。各章の練習問題を解きながら、理解を深めていってください。この記事を参考に、しっかりと準備を進めてください。Java Silver試験合格を目指して、頑張りましょう!