BETA

【合格体験記】Java SE8 Gold取得しました。

投稿日:2019-09-26
最終更新:2019-09-26

0.はじめに

先日、Java SE 8 Programmer IIに無事合格しました。

正答率は92%と、予想以上にいい結果だったので驚いております。
学習期間はおよそ2ヶ月ぐらいだったと思います。

せっかくなのでn番煎じではありますが、合格までに自分が行ったこと、
およびGoldの取得のメリット(どういった部分で技術力が向上するか)や、
特に勉強しておくべきところなど、思ったところを簡単にまとめたいと思います。
今後、この資格の取得を考えている方向けの内容になります。

1.実際に行った対策

①黒本

参考書として利用したのは、黒本のみです。
黒本を、2ヶ月の間におそらく4~5週したと思います。
学習する際、特に意識したのは、下記2点です。

・「正しい選択肢」だけでなく「誤った選択肢」がなぜ誤っているのか、ちゃんと理解する
・問題文のコードを実際に実行し、結果を確認する。

また、周回ごとに以下のような工程で学習を進めていきました。
こちらも、何か特別な勉強法などはしてません。正攻法です。

n週目 学習内容
1週目 問題文の意味すら理解できないので、問題を読む→即解説を読み、
理解する→問題を解く、という流れ
2週目 普通に問題から解く。間違えた問題はマークし、やり直す
3週目以降 繰り返し


一応紫本も購入しましたが、自分にはあまり合わなかったのか、ほとんど利用しませんでした……
理由としては、紫本は読んでいるととても眠くなるからです。
黒本は問題集、紫本は教科書という位置付け(だと私は思っている)なので、
どうしても手を動かさないで読んでいるだけの時間が長くて……気づいたら寝落ちするを繰り返しました。
なので、ばっさり紫本は諦めて、黒本一本で行くことを決めました。
結果として、これは正解だったと思います。

黒本は問題集とはいえ、解説も非常に詳しいので、
少なくともGoldを合格するという目的であれば黒本で十分です。
(もっとちゃんと詳しく理解したいという方は、ちゃんと紫本を読んだ方がいいんだと思います)

②ググる

黒本の解説は非常に詳しいですが、
やっぱりそれだけでは理解できない事もあります。

そういう時はやはりググるしかありません。
特に以下の2つのサイトにお世話になりました。

Java(tm) Platform, Standard Edition 8 API仕様
Oracle公式はやはり必須です。
特にGoldの試験では、Stream APIで利用するメソッドの引数の型・戻り値の型や、関数型インタフェースの引数の型・戻り値の型を頭に叩き込んでおく必要があるため、迷ったらまずここで確認しましょう。
(後述の「3.必ず頭に叩き込むべきところ」で記載します)

ひしだま's 技術メモページ
こちらのサイトも、各メソッドの引数や型などがとても整理されていて、よく利用させていただきました。またサンプルコードなども豊富に載っているため、写経をするには素晴らしいサイト様です。

2.Java SE8 Goldを取る(ことを目指して勉強する事による)メリット

注 あくまでも個人の感想です!

まずこの資格は、スーパーJavaプログラマーを証明するものではありません。
実際バリバリJavaのコードがかけるようになれるわけではありません。
それとこれとはまた別です。

じゃあ一体どういったメリットがあるのかというと、
大きく分けて下記3つぐらいかなぁーと実感としてあります。

①Javaの基礎固めが完了したと言える
②Javaのコードを読む力が身に付く
③経歴書に書ける

①についてですが、Java SE8 Goldを取得したことにより第三者に証明できるのは、
「一通りJavaで出来ることは知識として抑えています」
といったところだと思います。
土台は完成したという状態なので、実際にコードを書けるようになるにはさらなる経験をこの上に積み重ねていくことが必要です。
(フレームワークとか、デザインパターンとか・・・)
ただ、少なくともガタガタな土台に積み上げていくよりかは遥かに効率的だと思います。
・・・とか偉そうにいってますが、私も実際にJavaでの開発業務経験はほとんどありません。
現在経験積み上げ真っ只中です。頑張ります。

ある意味業務にすぐ役立つのは、②のコードを読む力かと思います。
試験ではJavaのコードを読み、「実行結果として正しいもの選択しなさい」という問題が大体なので、
必然コードを読む力は身につきます。
既存のコードを改修するといった業務には活かせる力かと思います。

③はそのまんまです。
すでにバリバリJava開発を経験していて、実績もある方には旨味にはならないと思いますが、
Javaでの経験がないがスキルチェンジなどを目的にJava開発の業務に就きたいという方には、
面談などでアピールできる武器の1つにはなると思います。

3.必ず頭に叩き込むべきところ

Java Goldを取得するために避けて通れないのは「Stream API」「ラムダ式」「関数型インタフェース」です。(もちろんそれだけではありませんが、やっぱりこいつらは代表格・・・)
特に関数型インタフェースの種類と、引数と、戻り値の型は必ず覚えましょう。
こちらもひしだま's 技術メモページさんのこちらのページに丁寧にまとめてくださっていて、助かりました。
もちろん、黒本にも解説は載っています。

またStreamAPIで呼べる主なメソッドと、その引数と、返り値もセットで覚えましょう。
例えば同じ名前のメソッドでも、呼び出したのが参照型Streamかプリミティブ型Streamかによって引数や返り値の型が変わってきます。割とややこしいですが、なんとかなります。
私は黒本や、Oracleのサイトなどを元に、以下のような一覧表を作って覚えました。

Stream API メソッド 引数 返り値の型
Stream< T > map Function<T,R> < R > Stream< R >
Stream< T > allMatch Predicate< T > Boolean
Stream< T > filter Predicate< T > Stream< T >
IntStream map IntUnaryOperator IntStream
IntStream allMatch IntPredicate Boolean
IntStream filter IntPredicate IntStream

例えば下記のコードを実行した結果は、どうなるでしょうか。
実際には選択問題ですが・・・
(現段階でさっぱりわからなくても全然問題ありません。私もそうでした)

    public static void main(String[] args) {  

        Predicate<Integer> predicate = new Predicate<Integer>(){  

            @Override  
            public boolean test(Integer num) {  
                return num > 5;  
            }  
        };  

        IntStream stream = IntStream.of(6,7,8);  
        if(stream.allMatch(predicate)) {  
            System.out.println("ALL MATCH TRUE");  
        }  
    }  
正解はこちらです 12行目でコンパイルエラーとなります。 IntStreamのallMatchメソッドは引数としてIntPredicate型を受けます。 しかし、上記ではPredicate型を渡してしまっているため、エラーとなります。

上記のはほんの一例ですが、
このようにStreamAPIや関数型インタフェースの型や戻り値、メソッド名を問われます。
この辺はぐぐったらたくさんでてきますので、
自分なりに整理し、頭に叩き込むようにしましょう!

4.最後に

私自身Javaでの開発業務経験はほぼゼロの状態で、
スキルチェンジを目指すべく第一歩として今回の資格取得に挑戦しました。
(あとは昇給目当て)

なかなか覚えることが多く最後の最後まで不安でしたが、無事合格できてよかったです。
この土台の上に、まずはSpringフレームワークの知識を積んでいきたいなと思っています。

こういった記事を書くのは初めてなので拙い文章となりましたが、
ここまで読んでいただきありがとうございます。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@XjGS5ru5WhKuIMn1の技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!