Java Gold SE 11に合格しました【正答率85%】

先日Java Goldを受験し、見事合格しましたのでその経緯をまとめたいと思います。

#Java Gold試験概要
まず簡単な試験概要です。
・試験名:Java SE 11 Programmer II
Pearson VUEで試験の申込みをする時に「Java Gold」だと検索に引っかからないので注意です。
・試験時間：180分
一般的なベンダ試験の試験時間だと思います。普通に解いていれば180分丸々問題に費やすことはないと思います。
・出題数：80問
・合格ライン：63%
ベンダ試験の上位資格にしてはかなり合格ラインは低いな、という印象でした。なので20問くらい間違えてもいいかぁくらいの気楽な気持ちで取り組みました。
・受験要件：Java Silverを取得済みであること

#自身の背景
まず今回Java Goldを受験するにあたり、自身の経歴について記載します。

###Javaの経験
大学時代と社会人1年目で少し触れて、Java Bronzeは取得。しかしその後は業務等で使う機会は全くなく、内容はほとんど忘れてしまった。昨年6月にJavaを使う部署へと異動し、猛勉強を開始。昨年8月にはJava Silverを取得（Goldの受験要件）。Pythonは独学でも少しやっていたのでプログラミングに対する抵抗はあまりなかったです。

###その他スキル
・AWSソリューションアーキテクト プロフェッショナルを含む、AWS資格5冠
　・ソリューションアーキテクト（アソシエイト、プロフェッショナル）
　・SysOpsアドミニストレーター（アソシエイト）
　・デベロッパー（アソシエイト）
　・クラウドプラクティショナー
　11冠を目指してその他資格についても学習中

・その他：基本情報処理技術者、第一級陸上特殊無線技士

#学習方法について
基本的に下記書籍を使って学習しました。いずれもSE8のものも販売されていますが、ご自身が受けるバージョンと差異がないことを確認してください。SE8とSE11ではかなり出題範囲が異なります。

・[徹底攻略Java SE 11 Gold問題集](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5Java-SE-11-Gold%E5%95%8F%E9%A1%8C%E9%9B%86%EF%BC%BB1Z0-816%EF%BC%BD%E5%AF%BE%E5%BF%9C-%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-ebook/dp/B09G5XXFKG/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3OFL4VEDR4NLW&keywords=Java+SE11&qid=1641637043&sprefix=java+se11%2Caps%2C234&sr=8-3)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/d6a7ca3b-813f-4997-f015-6ca93af5aef0.png)
通称黒本。後述しますが、試験対策としてはぜひ読みたい一冊です。Silverのときもお世話になりました。下記流れで学習に取り組みました。
__1周目__ 
1章から順番に問題を解いていく。その際、正否に関わらず解説は一通り読み込む。ただし、並列処理の章だけは一旦飛ばして、模擬試験の章の前に取り組みました。また、間違えた問題についてはチェックを付けています。
模擬試験の正答率は約50%。
__2周目__
もう一度、今度は並列処理も含めて1章から問題を解いていく。間違えた問題についてはチェックをつけるが、この時にチェックが付かなかった問題については解説をスキップした。
模擬試験の正答率は約60%。
__3週目__
チェックが一つ以上ついている問題を解き直す。正解したら特に解説は読まない。間違えたらその問題が書いてあるページに折り目をつけてあとから振り返りができるようにした。
模擬試験の正答率は８5%。
__4週目__
通常、３周くらいすれば大抵の資格は取れる自信が出てくるのですが、あと一歩足りないなと感じていました。なので、チェックが付いている問題（模擬試験も含め）だけ最後に取り組みました。

・[オラクル認定資格教科書 Javaプログラマ Gold SE11](https://www.amazon.co.jp/%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E6%95%99%E7%A7%91%E6%9B%B8-Java%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E-Gold-SE11-%E8%A9%A6%E9%A8%93%E7%95%AA%E5%8F%B71Z0-816/dp/4798162027/ref=sr_1_4?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3OFL4VEDR4NLW&keywords=Java+SE11&qid=1641637043&sprefix=java+se11%2Caps%2C234&sr=8-4)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/8ab1e3fe-0ae6-dc06-2173-b19ba91a40a0.png)
通称紫本。The教科書でした。Java Goldの学習を始めたのが９月頭だったのですが、先述の黒本がまだ発売していなかったため、先にこちらを購入して学習をしていました。情報量としては書籍の中で一番多いと思います。それ故、飽きやすさが若干出てしまったため、１週は読みましたが、練習問題・模擬試験は２週しかしていません。読み物が好きな人はこの一冊だけでも合格できるかもしれません。

・[オラクル認定資格教科書 Javaプログラマ Gold SE11 スピードマスター問題集](https://www.amazon.co.jp/%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E6%95%99%E7%A7%91%E6%9B%B8-Java%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E-Gold-SE11-%E3%82%B9%E3%83%94%E3%83%BC%E3%83%89%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E5%95%8F%E9%A1%8C%E9%9B%86%EF%BC%88%E8%A9%A6%E9%A8%93%E7%95%AA%E5%8F%B71Z0-816%EF%BC%89-ebook/dp/B08TBDQ24Z/ref=sr_1_5?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3OFL4VEDR4NLW&keywords=Java+SE11&qid=1641637043&sprefix=java+se11%2Caps%2C234&sr=8-5)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/90ef54f2-1e7b-f061-ddf0-55140ac2a212.png)
通称白本。試験前最後の１週間で総仕上げとして解きました。掲載されている問題としてはこの本が一番実試験に近かったと思います。１周目は全問題を解き、２周めは間違えた問題だけ解きました。問題の質は素晴らしいのですが、問題集としては致命的な誤植が多数あります（答えが違うとか・・・）。ですので、その誤植に気づけるくらいの一定の知識は必要なので、これ一冊だけで合格はなかなか難しいと思います。

それぞれの本の難易度・特徴をまとめると下記のようになります。

||難易度|良い点|悪い点|
|:-:|:-:|:-|:-|
|黒本|易〜中|Java Goldの取っ掛かりとしては一番取り組みやすい|合格に必要な知識量としてはこれだけだと若干不安|
|紫本|中〜難|合格に必要な知識量はこれで最も習得可能|文字量が多いため学習の意欲は下がりやすい|
|白本|易〜中|掲載されている問題は一番実戦向き|誤植が多いため正誤表を参照しながら取り組む必要がある|

#試験当日
試験当日はテストセンターで受験しました。何回か受験している場所で、流れもいつもどおりなので特に緊張することなく試験に臨みました。試験時間は１８０分ですが、判断に迷った問題にはチェックを入れつつ、合計９０分で８０問を解きました。その後２０分ほどで問題を振り返り、試験を終了しました。直後に正答率と合否が出てくるのでボタンを押す瞬間は緊張しました。
![スクリーンショット 2022-01-08 15.44.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/24638339-beaa-b8a5-a86c-a3f09d9b292e.png)
余談ですが、試験日については予めこの日に受ける！と宣言するような形で、先に予約すると良いかと思います。ダラダラ勉強しなくなります。

#試験で注意すべきこと・テクニック
__コレクションの型に注目__
こんな感じのやつです。

```java
List<Integer> list = new ArrayList<>();
```

<>の中身を意識して、何型の変数であるかがカギです。特に、

```java
List list = new ArrayList<>();
```

のように、<>の中身がない場合はObject型であるため注意が必要です。
あとは、superやextendsを利用した宣言にも注意が必要です。

```java
List<? super Integer> list = new ArrayList<Number>(); // OK
List<? extends Number> list = new ArrayList<Integer>(); // OK
List<? extends Number> list = new ArrayList<Object>(); // コンパイルエラー
```

__アクセス修飾子に注目__
オーバライドすると、子クラスのアクセス修飾子は親と同じか、より広い範囲のアクセス修飾子にしなければなりません。特にinterfaceの継承時は、抽象メソッドに暗黙のpublicがないか注意してください。

```java:Func1.java
public interface Func1 {
    boolean call(int x);
}
```

```java:Main.java
public class Main implements Func1 {
    public static void main(String[] args) {
    }
    
    boolean call(int x) { // publicで修飾しないといけないためコンパイルエラー
        return false;
    }
}
```

__試験当日は体調を良くして取り組む__
これが一番大切だと思います。夜ふかしは厳禁です。

#その他おすすめ書籍
試験対策以外では下記書籍がおすすめです。
・[スッキリわかるJava入門 実践編 第3版](https://www.amazon.co.jp/E3-82-B9-E3-83-83-E3-82-AD-E3-83-AA-E3-82-8F-E3-81-8B-E3-82-8BJava-E5-85-A5-E9-96-80-E5-AE-9F-E8/dp/429501124X/ref=dp_ob_title_bk)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/cbc5822e-29d3-3c14-3914-f515bb316e18.png)
単純に試験対策ではなく、業務に役立つ内容が多めです。この中にもJava Goldで出てくる内容があるため、いきなり試験対策に抵抗があればこちらの本もおすすめです。

#さいごに
勉強時間は３ヶ月で90時間程度(1日１時間目標)だったと思います。SilverのスキルがあってもGoldは範囲が広いということもあり、かなりの勉強時間が必要でした。わからないところは分かるまで勉強する、の意識のもと努力した甲斐がありました。
この資格を取って終わりではなく、業務に活かして使えなければ意味がありません。あくまでスタート地点に立てたということを意識して今後も様々な勉強に取り組みたいと思います。