Oracle Java Silver SE 11 に合格する方法とおすすめ書籍

# はじめに
こんにちは，来海くるみ（@walnut-pro）です．
Oracle Java Silverの試験に無事合格したので，報告とともに，<b>合格するために行ったこと</b>を記事にしようと思います．

# 前回の記事
https://qiita.com/walnut-pro/items/d97e6293bc9964d0da45

# 背景
自分はこれまでにPythonでの深層学習やJavaScriptでのWeb開発をしていた経験がありましたが，Javaに関しては<b>（ほぼ）知識ゼロ</b>でした．これからバックエンドの開発もしていきたいな〜，Javaを使っていきたいな〜と思っていたところ，会社の先輩から「Oracle Java Silverの資格をとってみよう」とアドバイスをいただきました．

# Oracle Java Silverとは
<b>参考資料</b>
Java SE 11 Programmer I (1Z0-815-JPN) 試験

https://www.oracle.com/jp/education/certification/jse11-5570635-ja.html

Java SilverはOracleの認定試験であり，Javaアプリケーション開発のためのプログラミング知識や，さまざまな状況への対応能力を有していることを証明される，開発初心者を対象とした資格です．Java Goldを目指す方は保有が必須であり，海外でも通用する資格でもあるため，Javaプログラマーを目指す方はとっておいて損はない資格だと思います．

# 活用した書籍

## Java SE 11 Silver 問題集 （黒本）
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1917122/bf11c5dd-0cbf-7a47-4843-e447a5a81482.jpeg" width="30%"/>

https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5Java-SE-11-Silver%E5%95%8F%E9%A1%8C%E9%9B%86-1Z0-815/dp/4295007625/ref=sr_1_4?keywords=java+se11+silver&qid=1665816100&qu=eyJxc2MiOiIxLjY5IiwicXNhIjoiMC45MSIsInFzcCI6IjEuMDkifQ%3D%3D&sr=8-4

<b>個人的な評価</b>
内容の充実度　★★★★★
わかりやすさ　★★★★☆
類問演習の可否 ★★★★☆

結論，この本のおかげで合格することができました！Java Silverの試験内容が網羅されており，総仕上げ問題が2回分もついています．また，各章は以下のような内容で，問題と解説がまとまっています．

第１章　簡単なJavaプログラムの作成
第２章　Javaの基本データ型と文字列操作
第３章　演算子と判定構造
第４章　制御構造
第５章　配列の操作
第６章　インスタンスとメソッド
第７章　クラスの継承，インタフェース，抽象クラス
第８章　関数型インタフェース，ラムダ式
第９章　API
第１０章　例外処理
第１１章　モジュールシステム
第１２章　総仕上げ問題①
第１３章　総仕上げ問題②

## スッキリわかるJava入門 第3版

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1917122/2f3ef0b2-e251-c38e-4a32-5f81cc67788f.jpeg" width="30%"/>

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-%E7%AC%AC3%E7%89%88-%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E4%B8%AD%E5%B1%B1%E6%B8%85%E5%96%AC/dp/4295007803/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=377Z8D1DXMRWJ&keywords=java+%E5%85%A5%E9%96%80&qid=1665816551&qu=eyJxc2MiOiI0LjE3IiwicXNhIjoiMi42MyIsInFzcCI6IjIuNTQifQ%3D%3D&sprefix=java+%E5%85%A5%E9%96%80%2Caps%2C164&sr=8-1

<b>個人的な評価</b>
内容の充実度　★★★☆☆
わかりやすさ　★★★★★

Java Silverに直接関係がある訳ではありませんが，Javaを学び始める方に向けたやさしい書籍です．自分はオブジェクト指向やカプセル化，継承，ポリモーフィズムを中心にこの本で学んだ後，先ほどの黒本で試験勉強を行いました．最初から黒本を始めるよりは，こちらで勉強をしてから黒本に取り組む方が効率良いと思います！

## せかチャン - 世界一わかりやすい情報科チャンネル

https://www.youtube.com/watch?v=mGEUZcKx4CE&t=853s

<b>個人的な評価</b>
内容の充実度　★★★★☆
わかりやすさ　★★★★★

書籍ではありませんが，YouTubeでおすすめするのがこちらのチャンネルです．正直なところ，オブジェクト指向の考え方など本を読んで理解するよりも，こちら動画の説明を聞いて理解する方が圧倒的に早いと思います．Javaに関する動画を多く出しているので良かったら活用してみてはいかがでしょうか？

# 対策方法
ここからは，書籍を活用して自分が<b>どのように勉強したか</b>をまとめていきます．
## スケジュール
・2022/08-2022/10の2ヶ月間
・最初の1ヶ月は，スッキリわかるJava入門やYouTubeの動画でJavaの基礎を勉強
・ラスト1ヶ月は，黒本2周を目標として勉強（可能なら３周を目指す）

## Google スプレッドシートの活用

自分はスプレッドシートを使って，黒本の問題演習に取り組んでいました．使った理由としては，
・黒本への書き込みが不要
・自分が間違えた問題を記録できる
・正答率を計算しやすい

の３つです！以下にスプレッドシートの作り方の例を載せておきます．

|問題  |解答（1回目）  |合否  |解説  |
|---|---|---|---|
|1  |a  |◯  |java.lang パッケージはインポート宣言を省略できる  |
|2  |b  |x (a)  |Sampleクラスは無名パッケージに属しているので使えない  |
|3  |c  |◯  |javacを使わずjavaだけでSample.javaを実行可能  |
|4  |d  |x (b)  |"¥のように¥マークを使う  |

このような表形式の解答欄を作って，問題を解く→解説をみる→シートの<b>解説</b>の列に記入を繰り返していました．

## 正答率の変遷を大公開

|章  |1回目  |2回目  |3回目  |
|---|---|---|---|
|1  |37.5%  | 75.0% | 87.5% |
|2  |22.7%  | 59.1% | 100% |
|3  |47.6%  | 61.9% | 95.2% |
|4  |52.9%  | 70.6% |82.4% |
|5  |30.0%  | 40.0% | 80.0% |
|6  |33.3%  | 63.3% | 71.4% |
|7  |33.3%  | 38.1% |83.3% |
|8  |12.5%※  | 62.5% | - |
|9  |36.8%  | 52.6% | - |
|10  |41.1%  | 47.1% | - |
|11  |52.9%  | -※ | -|
|12  |50.8%  | -※ | - |
|13  |56.25%  | -※ | - |

※記録できていない部分あり

黒本を始めた頃は，解けない問題が多すぎて「これ大丈夫か？」と思っていました．しかし，３周目をやる頃には8〜9割を取れるようになってきたので，第1章から第11章までを理解できた後に第12,13章の総仕上げ問題に取り組みました．

## 総仕上げ問題について
試験と同様に80問 180分で設定されているため，試験と同じように時間を確保して取り組むと良いと思います．また，<b>第12,13章の問題が本番の試験にも少々出てくる</b>ので，こちらの計160問は暗記した方が良いと思います．

# 実際に試験を受けてみて
自分の本番の試験の正答率は78%でした．（合格ラインは63%）
3時間の試験時間中，2時間で全ての問題を解き，残りの1時間で２周目の解き直しを行いました．合っていると確信している問題でも，アクセス修飾子の有無やstaticの有無などでコンパイルエラーとなることもありますので，見直しはしっかりしましょう．今回の試験で不正解だった項目を以下に列挙します．

・オブジェクトのフィールドへの読み取りと書き込み
・オーバーロード，オーバーライド及び隠蔽の区別
・パッケージの宣言とインポート
・参照型のキャストとポリモーフィックなメソッド呼び出し
・参照型の宣言とインスタンス化，およびオブジェクトのライフサイクル（作成，再割り当てによる参照解除，ガベージ・コレクションなど）
・変数のスコープ
・抽象クラスの作成と継承
・繰り返し文（do/while，while，for文および拡張for文）の使用とネストした繰り返し文およびbreak,continueの使用

# 最後に
ひとまず，Oracle Java Silverに合格できて良かったです．また，これからJava Silverを目指す方の参考になれれば幸いです．
最後まで読んでいただき，ありがとうございました！

# Twitter

こちらで呟いてますので，良かったらフォローお願いします✨
https://twitter.com/walnut_pro