11の黒本でも受かるという話を真に受けてJava SE 17 Programmer II (1Z0-826-JPN) 試験を受け合格しました。
私の場合は黒本だけでは厳しいと感じたので白本も使用しました。
参考書
徹底攻略Java SE 11 Gold問題集(通称:黒本)
Javaプログラマ Gold SE11 スピードマスター問題集(通称:白本)
学習期間
一日最低5時間ほどを1.5ヶ月です。
テスト範囲(割合)
・Stream API & 関数型インタフェースとラムダ式 5割くらいだと思います
・コレクションとジェネリクス 7~8問ほど
・Java モジュール・システム 7~8問ほど
・並列処理 5問前後
・ファイル I/O 3問前後
・JDBC 3問前後
・ローカライズ 3問前後
各範囲の問題
Stream API
基本的に黒本、白本をやっておけばいいと思います。
Record型がよく使われているのでメソッドの把握をしておいた方がいいです。
public class Main {
public static void main(String[] args) throws Exception {
Item item = new Item("名前");
System.out.println(item.name()); //getName()ではない
}
}
record Item(String name) {
}
他の方の記事にもありましたが、dropWhile()、takeWhile()の動きは把握したほうがいいです。
List<Integer> lists = List.of(1, 3, 5, 6, 7, 8, 9);
lists.stream()
.dropWhile(i -> i % 2 == 1)
.forEach(System.out::println);
関数型インタフェースとラムダ式
個人的には白本の方が覚えやすかったです。
ローカルクラスがここに含まれているので黒本の1章はやっておきましょう。
一方で、白本の1章はスルーでもいいと思います。
コレクションとジェネリクス
ジェネリクスは黒本の説明がわかりやすいのでそっち優先。
反対にコレクションは白本の方がDequeやLinkedListの挿入時に対する対策ができるため、黒本3割、白本7割で勉強がいいと思います。
public class Main {
public static void main(String[] args) throws Exception {
Deque<Integer> d = new ArrayDeque<>();
d.add(1);
d.push(2);
d.offerLast(3);
d.addLast(4);
d.addFirst(5);
while (!d.isEmpty()){
System.out.print(d.pop() + " ");
}
}
}
Java モジュール・システム
コマンド系が半分くらいです。
黒本著者のyoutube観たりしました。
並列処理
当たり前ですがIDEでチェックしましょう。
どうでもいいのですが、選択肢に「ncrement」という誤記があり、そういうのもあるんだなって思いました笑
public class Main {
public static void main(String[] args) throws Exception {
List<String> lists = List.of("a", "ab", "abc");
Runnable r1 = new Runnable() {
@Override
public void run() {
lists.stream().map(String::length);
}
};
Runnable r2 = new Runnable() {
@Override
public void run() {
lists.forEach(System.out::println);
}
};
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
}
}
ファイル I/O
黒本、白本両方手をつけた方がいいです。
白本はオプション系が豊富。
あとreadObjectが呼び出されるのはデシリアライズ直後です。
JDBC
Apache Derbyが便利なため黒本からやった方がいいと思います。
白本は最悪手を動かさなくていいです。
ローカライズ
黒本と白本で対応可能です。
黒本などが出る前にGold SE 17を取るための対策方法
①試験範囲、体験談をチェック
11と比較して範囲は狭くなったことから対策方法も少し変える必要があります。
また、体験談を参考に対策することをお勧めします。
②黒本 + 紫本 or 白本
黒本一冊で合格できるかというと厳しかったと思います。
たかが一冊分の代金をケチって落ちるよりかはマシだと思うので、古本に抵抗さえなければメルカリで紫本か白本の購入をお勧めします。
必ず11 verの参考書を購入して下さい。
あと大体の本は誤植があるので必ず調べて下さい。
公式ドキュメントは正直あまり読んでないです。気になったらさらっと閲覧したくらいです。
③コードを打ち込んで挙動確認
黒本および白本、どちらも実際に打ち込むと正解とは異なるものがあるので必ず打ち込む。
ただ毎回打ち込むのは怠いので、その点で白本は優秀でした。
④StreamAPIの戻り値に気をつける
StreamAPIの戻り値は徹底的に覚えました。
.count()で終わるとlong型とか、.average()はOptionalDouble型などです。
⑤電車内やお昼休みにやる
Goldに対する対策方法ではないのですが、合格するためなら隙間時間にコツコツやることは大切です。
本番
苦手な部分、分からない問題はとっとと飛ばしたので15~20分くらい余りました。
Silverを受けた時は読みづらくて辛かったのですが、Goldは初見の割に読みやすかったです。
ただStreamAPIに関する問題で読めないものが2問くらいあり、どちらもCollectors.groupingByによるネストの深さで流石に諦めて飛ばしました。
終わりに
誰かの役に立てれば幸いです。