HapInS Developers Blog

HapInSが提供するエンジニアリングの情報サイト

Java Goldを取得してみた話

はじめに

どうも、たまにブログ記事を投稿している人です。
今回はJavaGoldの資格を取ったので、どんな取り組み方をして取得までに至ったのか、軽くまとめます。
こういう記事を調べたら大体同じことを言ってますが、色んなものを取り入れて自分なりに進めるのが一番良いと思います!

ということで、次回それらをまとめていきます。ごきげんよう






嘘です。
早速本題に入っていきます~。

やったことリスト

黒本

タイトルからある通り、黒本と呼ばれている参考書があり、こいつは最強です。
これ1冊あれば十分って言われてましたが、受け終わった後に確かにそうだったなと感じております。
理由としては、

  • 章末にある演習問題の類題が結構な割合で出題される
  • 解説が豊富で、先に問題を解くスタイルなので飽きにくい
  • 各章の練習問題が意外と演習問題や本番に活きる部分がある

この辺りかなと思っています。

勉強方法

あくまでも私自身のやり方ではありましたが、こんな感じでした。

  • 黒本1週目→とりあえず解説を見ずに問題を解き、そのあと解説を見ながら答え合わせ
  • 黒本2週目→解説や演習に掲載されているコードを打ち込んで動かす
  • 黒本3週目→演習問題を解いてから、正解以外の選択肢の理由を考えたり調べたりする
  • 黒本4-7週目→ひたすら問題を解く

あとはウォームアップ的な感じで、ほぼ毎日演習問題を解く前に練習を全て解いてからやってました。

お気づきかもしれませんが、解説を読んでから解くのではなく、

ともかく手を動かす。何が何でも手を動かす

これが大事です。

参考書は読んでると飽きます。
コード書いてた方が楽しいに決まってるじゃないですか!

なので、
インプット2割:アウトプット8割(なんなら9割)

これくらいの比率が良いと思います。
完璧に覚えてから問題を解こうというのはきついので、最初はボロボロになりながら問題をすぐやりましょう。

繰り返していくうちに知識として吸収されていきます(不思議ですね)

あとはよく問題を間違える箇所もメモしておくのも効果的です。

これはダメじゃよ

答えを丸暗記するの非常に危険です。
上述した通り、全く同じというよりは似たような問題だったり、類題だけが出題されるわけではないのです。
それを応用した問題が体感2割-3割出題されていました。

なぜそうなっているのか、なぜ他の選択肢が間違いなのか

これをしっかり意識しながら解説を読み込んだり、問題を復習していきましょう。
そして間違い選択肢のエラーを正して、正常値にするためにはどうすれば良いか等まで分かってくると、仕上がってきた証拠にもなります。

以上を踏まえた上で、演習問題で95-100%以上の正解率があればいけると思っています。

それでも不安な場合は、並行して紫本や白本と言ったものを買うのもありです。
(一応自分も紫本は辞書的な感じで手元に置いてありました。)

重要ポイント

全体的に黒本をやっておく必要はありますが、特に出題割合が多かった箇所があります。
練習問題の問題数だったり、解説の種類が明らかにおかしいだろっていう箇所です。
(正直どんだけ他より多いんだよと思ったのは、内緒の話)

  • ストリームAPI
  • 汎用とコレクション
  • 関数型インターフェースとラムダ式

この辺に関しては、特に血反吐を吐くくらいやっておきましょう。
まじです。

だからと言って他の箇所を疎かにするとまずいので、
上記以外もしっかり取り組むことをおすすめします

どんなことを覚えていくの?

下記に関しては特に意識して知識を蓄えていく必要があります。
※各章で意識することです

  • インターフェースの特徴
  • インナークラス/匿名クラスの仕組み
  • 並列処理の動き/スレッドの競合
  • ラムダ式の書き方
  • ファイルの入出力処理/パスへのアクセスに関するメソッド周り
  • データベースへのアクセス/データの更新系メソッド
  • ラッパークラス/ジェネリクス/非境界・上限境界ワイルドカードの仕組み/コレクションインターフェース
  • 主要関数型インターフェースの種類/メソッド/戻り値
  • ストリームAPIのメソッド(中間操作/終端操作)/処理後の戻り値
  • 独自アノテーション周り
  • 例外処理/try-with-resourceの仕組み/アサーション
  • ローカライズの方法/記述方法
  • モジュールの定義方法
  • セキュアコーディングを適用するための設計方針/実現のためのクラス内の構成

簡単にまとめましたが、この辺は少なくとも押さえておく必要があると感じました。


例えば、

  • ストリームAPI等を走らせたときに、戻ってくる値はどんなものなのか
  • 中間処理/終端処理はどういうことを処理をしてくれるものなのか
  • 実現した処理を別処理に置き換えるときに、どういう置き換え方が必要なのか
  • 特定の関数型インターフェースでは引数を持てるのか。何個まで持てるのか
  • ラムダ式とかの書き方が正しいルールに当てはまっているか


などなどともかく覚えることが非常に多いです。

なので、上述した通り、実際にEclipseとかを使用してコードを動かして、
仕組みを少しずつ理解していくと幸せになります。

まとめ

資格を取得するまでのペースは人それぞれだと思っています。
なので、「〇〇日で取れたよ!」とか「○○ヶ月かかってしまった!」みたいなのは参考にするべきじゃないと思います。

どんだけかかろうが、どんだけ失敗しようがゴール(資格なら合格)に到達すれば良いのですから

あとよく目にするのが、資格は要らないだのなんだのって言うのもチラホラ調べていく中で見ましたし、
実際私自身も周りに過去言われたりしました。

もちろん無理に取る必要もありませんし、その勉強時間を個人開発とかに使うのもありだと思います。

だから結局どれを取るにも大切なのって、
周りのノイズに負けずに、自分の軸をしっかり持ち続けること
じゃないでしょうか。

最後になりますが、
資格を取るということは、良い意味で変な自信にも繋がったと感じております。
「おっひょおおおおおお!やりゃできんじゃん自分!」って感じに。

だからこれからも色んなことにチャレンジしていこうと思います。


さてと、最近ハマってるエルヴィスとか、
ビートルズとか聴きたい気分になってきたので、今日はこの辺で。