rm /blog

IT系技術職のおっさんがIT技術とかライブとか日常とか雑多に語るブログです。* 本ブログに書かれている内容は個人の意見・感想であり、特定の組織に属するものではありません。/All opinions are my own.*

【ベンダー資格】Java SE 8 Programmer Ⅱ挑戦記

Java Gold!なんとか合格しました。。

f:id:rmrmrmarmrmrm:20200214190021p:plain


 

Overview

後述するが、今回は、Silverに比べて、割としっかり試験対策の勉強した分(まあ普通は試験対策に勉強するんだろうけども)、Silverのときより正答率が上だった(Silverが68%、Goldが75%)。
まあSilverに比べて正答率が数値的に高いってだけで、Goldのほうも別にそこまで褒められた正答率ではないのだが、「ちゃんと試験勉強した」ことがSilverに比べて少なからず数字に出ているな、とは思う。
実際、試験後の感想は、Silverは「なんとかギリギリ受かってるんじゃないかな~!」という感じだったが、Goldのほうは「多分受かってるだろう…これなら」という安心感が多少なりともあった。
要するにGoldのほうがSilverに比べて「(比較的)易しい」という感覚があった。
そう考えると、Silverってマジでギリギリのお情けで突破したんだな、と振り返らざるを得ない。
…ちゃんと勉強しないとだめなんですね。(当たり前)

試験勉強について

いわゆる「黒本」を一通り解いた。

徹底攻略 Java SE 8 Gold 問題集[1Z0-809]対応

徹底攻略 Java SE 8 Gold 問題集[1Z0-809]対応

  • 作者:米山 学
  • 出版社/メーカー: インプレス
  • 発売日: 2016/10/14
  • メディア: 単行本(ソフトカバー)
 

 前回、Silverのときに使った本(あれ通称なんて言うんだろう…白本?)とは、同じ「問題集」という位置づけでも形式が結構違うので、若干戸惑った。
個人的には、Silverのときに使った本のほうが、チャレンジした回ごとに「できた/できない」をチェックするマスがついてて(3回まで)、その点ではあっちのほうが使いやすかったなあ、と思うが、まあ本質的にはどっちも「問題集」であることに変わりはないので、この辺は好みの問題だろう。
この本は、各章ごとに、基礎知識+αに関する問題が並んでいて、最後の11章に、本番さながらの「模擬試験」が付いてる。
「基礎知識+α」の部分は、まさに基礎知識を充足させるには十分な量の基礎問題が並んでおり、極端な話、ここの部分を完全丸暗記できたとしたら、それだけで合格はできると思う。(スゴイ量になるが…)

ただ、Silverは「Javaの基礎知識」といったところだったので、いきなり「問題」解いてもなんとか太刀打ち出来た部分はあったのだが、Goldは「Java 8の機能」に焦点を当てた知識を問う問題が大半を占めており、一方俺はJavaの言語仕様が6くらいで止まってる人だったので、正直、最初は問題集見ても「何言ってんだかサッパリわからん」状態だった。
だから問題解く前にまず8の言語仕様を勉強した。
黒本の解説を先に読んで知識を仕入れた、というのも重要なポイントではあったが、何よりこちらのQiitaが非常に役に立った。
Java Goldの試験内容が、黒本の章立てに対応する形で簡潔にまとめられており、かつ抑えておくべきポイントもしっかり書いてある。
これは今後同試験に挑戦する人は確実に読んでおくべき記事だと思う(まあ今更8をわざわざ受ける人は少ないかもしれないが…)
また、「実際に自分でコードを書いてみる」というのもいろいろ試した。
実際に自分でコードを書いてみると、知識としての定着力が高まるのは間違いないと思う。
その勉強の過程で作り上げた膨大な殴り書きの記事がこちらである。
まあ、参考までに。

余談だが、勉強過程で黒本の誤記を1つ発見した。
インプレスから問い合わせ済で、誤記ページに内容が載っている。

f:id:rmrmrmarmrmrm:20200214190024p:plain

 

模擬試験について

黒本を買うと、後半11章に本番さながらの85問を載せた「模擬試験」と、インプレスのHPで手に入るPDFの「模擬試験」の、合計2つが手に入る。
いずれもやってみたが、結果は

  • 黒本の模擬試験:正答率68%
  • PDFの模擬試験:正答率62%

くらいで正直絶望的なスコアだった…
(※単純に正解した問数を問題数の母数85で割ってるだけだし、「3つ選べ」のような多肢選択する問題で、2つは正解1つはミス、という問題も「完全に間違い」とみなして、正答率に計上していないので、実際のスコアとはまた少し違うと思うが)
正直、ある程度勉強しておけば余裕じゃねえの、と思ってナメていたのだが(前回から反省していない…)、「こりゃひょっとすると受からないかもしれんぞ…」と恐怖を覚えた。

その後、模擬試験でミスった部分を徹底的に覚えなおし、ある程度時をあけて(3週間くらい)リベンジ。

  • 黒本の模擬試験・リベンジ:正答率88%
  • PDFの模擬試験・リベンジ:正答率75%

くらいになった。

上記の成績にもなんとなく表れているのだが、個人的には、黒本の模擬試験より、PDFの模擬試験のほうが難しいと感じた。
作ってる人が違うのかな?というくらい、問題の癖が違う感じがした。
が、受験した感じ、実際の試験はPDFとタメ張るか、むしろPDFより少し難しいくらいの感覚だった。
なので、黒本の模擬試験で十分な成績が取れたからと言って安心するのは良くないと個人的には思う。。。

とはいえ、本番試験では、黒本模擬試験・PDF模擬試験の中に出題されている問題と、「完全に同じ問題」もしくは「問われ方が少し違うだけでほぼ同じ問題」というのが、記憶にある限りで3~4問出題されていたので、やっておいて損は絶対ない。
これやってるだけで突破できるほど本番試験は甘くはないだろうが、少なからず、本番試験の傾向を確実につかんでいることだけは確かだ。

試験に対する感想

上に紹介したQiitaでは、「Stream APIが出題全体の約5割を占める」と書いてあるが、自分の受けた感覚では、Stream APIの占める割合は問題全体の4割前後といったところで、「思ったより出題されないな」といった感想だった。
上のQiitaを見る限りでは、「なんだStream API完全に抑えておけばそれだけで50%のスコア取れるのか。それに+αだけでとりあえず合格できるなら割と余裕そうだな」とタカをくくっていたので、もちろんStream APIは結構やりこんで勉強したのだが、実際にはそこまででもなかった、という感じで、少し面食らった。。
まあそれでも、半分近くがStream APIに関連する問題なので、抑えておくことは必須の分野と言えるのだろう。

上記の記述が目を引いたこともあり、「Stream APIはガチ重要だが、他は出題比率的にいってもそうでもない」といった印象が頭に根強く残ってしまった節があり、正直に言って、最初はStream API以外はあまり注目して(突っ込んで)勉強しようとはしていなかった。
当然ながら実際は、模擬試験を含めて違う分野から幅広くいろいろ出題されていた。
「Qiitaでは取り上げらていない・もしくはキーワードだけが取り上げられていてそこまで言及されていないように感じるが、その割には出題されてるな」と感じたのは

  • 内部クラスのフィールド・メソッドへのアクセス(ネスとしたクラスのprivateフィールドへのアクセス方法とか)
  • interfaceの使い方(関数型インタフェースとして有効なのはどれか?とか、インタフェースを使う設計上の特徴・用途は?とか)
  • ChronoUnitを使った日付・時間の計算方法
  • 基本の4つ以外でよく出てくる関数型インタフェース(特に~Function系のapplyとapplyAsXxxxの違い)
  • FunctionやConsumerを使う既存クラスの追加メソッド
  • Files#walk、Files#listの違い

あたりか。
思い出せないだけで他にもあると思うが、上記に挙げた部分は、模擬試験・本番試験ふくめ、印象に残った分野だと思う。
まあ、かなりピンポイントなので、あのQiitaの記事に全部書くのは不可能だと思うし、そもそも誰かが好意と趣味で書いただろう記事に「おんぶに抱っこ」なのも良くないので、こうした自発的な学習を通じて知識を得ることの重要さを、今回、改めて知ったというのは大きかったと思う。

終わりに

とりあえずこれで、前々から取りたかったベンダー資格の一つはゲットした。
Javaの実力の程を、手っ取り早く公的に示す手段を得た、という意味でもありがたいが、何より、Java 6で止まっていた大分レガシーな人間が、ようやく少し時代に追い付けた、というのがうれしい。
とはいえ、最新ではJava11の試験が運用開始している中、最早レガシーになりつつあるJava8の資格を取ったところで時代に追い付くにはまだ遠い。
この後、少し時期はあけようと思っているが、この知識がまだ新鮮なうちに、11 upgrade資格を受験し、11の知識に追い付きたいと思う。

しかし、振り返ると、「Gold欲しい」と思い至り、手始めにまずSilverの受験を、と決めたのが恐らく2019年11月くらいなので、それからわずか3~4か月程度で実際に目標に到達できたのはスゴイと思う。
ここでいう「スゴイと思う」は自分のことを褒めてるんではなくて(そんな大層な人間ではない)、試験制度の柔軟性について言及している。
例えば(引き合いに出してしまって悪い気がするが)情報処理試験・特に情報処理安全確保支援士を除く高度試験は、春か秋に1回だけなので、実質1年かけて試験の成果をだすことになるのだ。
それと比べると今回の資格取得におけるスピード感たるや…
「3か月のうちに2回も試験を受けて資格を得た」という実際の成果への結びつき=受験者本人の動き方次第でそれが可能になるという制度そのものがスゴイ、と感じて上のように述べたのだ。
これは情報処理試験では満たせない内容だからだ。
このあたりに、正直、情報処理試験との魅力の差を感じてしまっている。
まあベンダー試験は所詮特定のベンダー(民間企業)のものであり、ベンダーが「や~めた」って言えばそれで無に帰す危うさも内包しているので、一概に良し悪しは語れないし、これは「特徴の差」に過ぎないのだが。
今回、Goldを得るまでの過程が実際のところ非常にスムーズにいったことを振り返ると、こりゃ~資格取得が捗りますわ~という感じがしてしまうなあ、と思ったのである。
(しかし受験料がな…ブツブツ)

余談

Java SE 8 Programmer Ⅱ(Gold)ってProgrammer Ⅰ(Silver)持ってないと受験できないと聞いていたので、申し込むときに、「お前本当にSilver受かってるのか?ちゃんと証明しろ」とか言われるのかなと思ったのだが、何も言われなかった。
そういうもんなの?
それとも「何も言われずにGoldを申し込めた」という事実が既にSilverを持っていることの証明になっている?

しかしピアソンって「受験申込した履歴」は持ってるけど「その試験の結果がどうだったか」まで保持してない気がするんだよなあ…(完全な自分の想定だが)
だからピアソン側で受験の前提資格を申込者が満たしてるかどうかの判断ってできないような気がしていたんだが…
それとも合否の結果までちゃんとピアソンに通知してんのかな…
(仮にそうだとしたら、わざわざCertviewなんて謎の専用システム作らずに、全部ピアソンで結果まで見せてくれよって感じもするんだが)

もしかしてSilver持ってなくてもGoldの申し込み自体はできるのかな?
でもそういう場合って実際試験は受けられないわけだから(前提資格を満たしてないから)、あとで受験料返金するのか?
そんなことするくらいならわざわざ一回受験料徴収自体しない気もするんだけどな…
それともテストセンター行って初めて「受けられない」ってわかるとか?
テストセンターの受付で「あっ?!お前Silver持ってないじゃんwだめだよ受けられません、帰れ」とか言われるのか?
クレームになりそうな気がするが…(この例は言い方が極端だけどww)

それとも、Programmer ⅠとProgrammer Ⅱ、どちらか一つ受かればSilverバッチ付与、二つとも受かればGoldバッチ付与みたいな、LPIC的な制度だったりするのか?
そんなことは書いてなかった気がするんだけど…

という、モヤモヤが解決しない。。。
(まあ、合格した今となっては割とどうでもいいことなのだが)