Java1級の試験に挑戦し、無事に満点合格することができました!そこで今回はどのような対策を行い、どのような勉強方法が効果的だったかのかをお話したいと思います。限られた時間の中で効率的に学習を進めるコツや、出題範囲をしっかりと抑えるためのポイントなど、実際に試験勉強で役立った具体的な方法をシェアしていきます。
【Java1級とは】
サーティファイが主催しているJavaプログラミング能力検定1級のことです。1級の認定基準としては、”オブジェクト指向に基づく分析・設計(UML)により業務システムの流れを把握し、変更仕様に従ってプログラムの保守ができる能力を有する。なおUMLの表記はユースケース図、シーケンス図、クラス図などの基本的な知識を有する。”ということで実際にプログラムを作成したり設計書を作成する等の実技がメインの試験でした。合格するためには、得点率が60%以上である必要があります。
https://www.sikaku.gr.jp/js/cpjv/jv/introduction/
【スペック】
SE歴4年目。Javaを始めShellまでいろんな言語を幅広く触って一通りなんとなく理解はしているが、何が一番得意かよくわからなくなってしまったいわゆる器用貧乏な人間です。Javaのスキルに関しては当時業務で少し触っていたので基本的な構文は扱うことができる、程度でした。
【試験内容】
テーマプログラムに対して問題文で求められる仕様変更や機能追加を行い、対応するプログラムと設計書を作成する、というものでした。
サンプル問題でいうと、ある程度完成している従業員管理システムのソースコードに追記することで機能を追加し、対応する設計書を作成する、というものです。従業員登録や削除等の基本的な操作は既に作成されており、更新機能を追加しそれに伴う処理やUIを修正するのが設問でした。
試験時間は150分で、問題数は2問です。この2問とも追加機能の開発とそれに伴う設計書作成です。
サンプル問題は以下から確認することができます。
https://www.sikaku.gr.jp/js/jv/org/prepare/sample/
【勉強期間と対策法】
試験の2週間程前から少しずつ始めていきました。多い日で4,5時間程度、少ない日は1時間未満の勉強時間でした。プログラムを作成するのにまとまった時間が必要だったので実際にコードを書いて答え合わせをする日はしっかりと学習時間を取りました。
【試験2週間前】
まずは相手を知る期間として、最初の1週間でTeraPadの使い方やコンパイルの構文を覚え、時間を気にせずにサンプル問題を1周解いてみました。また、以前同じ試験を受けたことがある先輩にどのような内容か聞いてみました。「設計書は紙に書いて提出する必要があるので思っている以上に時間がないよ」という情報を得たので設計書の解答例を一通り読み、記述の流れやスタイルを把握しました。「分量は多いけど記述方法は問題文からかき集めてくればOK」と判断し、なるべく問題冊子に記載されている文言を使用していこうと方針を決めました。
また、問題冊子を見たときにページ数に驚きましたが、実際書いてあることは処理詳細説明とソースコード丸写し+α程度なので「ソース読んで少し動かしてみればある程度機能把握できる」と判断しました。
【試験1週間前】
サンプル問題は解き終わってしまったので、解答例を読んで設計書の書き方をさらっと読むことと基本的な構文を理解するのを目標として勉強しました。「Java 基本構文」で検索してヒットした記事を読み漁ることにしました。以下のような記事を隙間時間を使って少しずつ読み進めていきました。
https://qiita.com/tomonori_hioki/items/cec47a366208d43d7339
https://java-code.jp/category/basic
【前日~当日】
今更細かい部分を勉強しても覚えきれない、試験時間が短いため初歩的なミスはなるべくしたくない、ということでとにかく基本部分の復習を行いました。特に言語ごとに書き方が違う構文は一度間違えると思いだすまで時間ロスに繋がると考え、以下のことを重点的に何度も確認しました。
1. コンパイルのコマンド
→これを忘れるとデバッグができなくなるので絶対に忘れないように試験直前まで確認しました。
2. データ型の扱い方
→個人的に変数の宣言を行う際に「どうやって宣言するんだっけ・・・」と混乱する傾向があるので忘れないようにしました。特に配列の書き方を忘れがちです。
3. 等価演算子の使い方
→”==”なのか”===”なのかが一瞬わからなくなるので確認する内容に入れました。(JavaScriptも触ったことがあるので混乱しがち)
4. for文、while文、if文、switch文の書き方
→ループや条件分岐も書き方を忘れそうになるので確認するようにしました。特にif文の書き方は混乱します。
5. returnとbreakの扱い方
→上記に関連してループを抜けるときはbreak、処理終了するときはreturn、というのを叩き込みました。
あとは記述(物理)が多いので、使い慣れたペンや消しゴムを使うことも結構大事だと感じました。久々に大量に文字を書いたので試験後は腕が疲れるレベルでした。設計書作成は追加機能分はしっかり記述する必要がありますが、既存部分は~省略~のように記述しても減点されなかったのである程度省略しても良いのかもしれません。
以上の方法で短い勉強期間であったにも関わらず、無事に満点を取ることができました。
参考にしてみてください。