Javaブロンズ試験の難易度と合格率・勉強方法と参考書

Javaブロンズの難易度

Oracleは様々な認定資格を制定していますが、その中でもJavaエンジニアに関係するのが「Oracle認定Java資格」です。英語で「Oracle Certified Java Programmer」と言い、頭文字を取って「OCJP」と表記することがあります。

また、この認定資格は難易度の高い順に「Gold・Silver・Bronze」となっていて、Javaブロンズは一番下に位置する資格です。ですがその難易度は低いものではありません。歴としたJava言語使用者を証明するだけの知識が問われます。

難易度というのは人によって感じ方が異なるものです。そのため、まずは公式による試験問題のサンプルを自分で解いてみると良いでしょう。公式には7つの問題が掲載されています。

なお合格ラインは正答率60%なので、この問題に4、5問ほど正解できれば現状の実力でも合格できる見込みがあるかもしれません。

Javaブロンズの合格率

合格率は明示されていないので不明です。そのため何とも言い難いのですが、ネット上の情報を見る限り100%の合格率ではないと予測できます。合格報告をしている方の中には前回落ちていることを述べている方もいますし、同僚と受験して同僚が落ちたという報告もみられるからです。

また、公式の問題を解いてみると合格率を肌で感じることができるはずです。決して言語初心者では解く事ができないややこしい問題は合格率の低さを伺わせます。

Javaブロンズの勉強方法

Oracleの公式サイトにはブロンズの試験範囲が掲載されています。

これによるとJava言語のあらゆる要素が試験範囲であることが分かるでしょう。特にJavaに特徴的な「クラス」「オブジェクト」「継承」「ポリモフィズム」当たりは重点的に勉強しておくと良いかもしれません。

例えばオーバーロードとオーバーライドの違いは混乱しやすいものなので、理解を明確にしておくと得点に繋がるはずです。

具体的な勉強方法は何より過去問を解く事です。実際に試験に登場した問題を解く事は必ず合格への力となります。ただ、Java言語は随時更新されている言語なので、新しいトピックにも注目しておくと良いかもしれません。

もちろん試験問題に即時反映されるわけではありませんが、数年後の試験に登場してもおかしくないでしょう。例えば、試験では拡張for文に関する問題も出題されているので、数年前に浸透した技術についてもチェックが必要です。

過去問を解く場合、1つの問題集では不安が残るかもしれません。問題自体を暗記してしまい、問題の意味を理解せずに正答率が上昇してしまうケースも考えられるからです。

1冊の問題集をほぼ間違い無く答えられるようになっても実際の試験ではそのままの問題が出るわけではありません。本気で合格を目指すなら複数の問題集を解くと良いでしょう。こなしていく内に実力がついてくるはずです。

問題集以外に大きな力となってくれるのが実際にコードを動かしてみることです。試験問題に出たコードを自分で打ち実行してみると理解に繋がります。あれだけ悩んでいた問題が嘘のように明確に分かるかもしれません。

例えば公式のサンプル問題に以下のような問題があります。

以下のコードがあります。

1. class Num {
2. private int number1 = 10;
3.
4. public void Num() {
5. number1 = 100;
6. }
7.
8. public void disp() {
9. System.out.println(number1);
10. }
11. }
12. public class TestP {
13. public static void main(String[] args) {
14. Num n = new Num();
15. n.disp();
16. }
17. }
実行結果はどれですか?

A.100
B.10
C.2行目が原因でコンパイルエラーになる
D.4行目が原因でコンパイルエラーになる
E.14行目が原因でコンパイルエラーになる
F.実行時に例外が発生する

正解は「B.10」です。

また、5行目の値を変更しても変わらず「10」です。

4行目の「Public void Num()」はコンストラクタでも何でもありません。クラス名と同じただのメソッドです。このただのメソッドを呼んでいないため、値が書き換わるはずもありません。そして本来のコンストラクタである「Num(){…}」を追記し検証し、やっと問題の答えが「10」であることが分かるのです。

出題される問題は上記のように、語弊を恐れずに言うなら「変なコード」が扱われやすい傾向にあります。いわゆる「引っ掛け問題」です。パッと見て問題が無さそうなコードに潜む妙な処理を見抜く力が必要とされるでしょう。

こうした問題を解く事で果たしてJavaプログラマとしての力量が問われるのかというと疑問が残るかもしれませんが、一種のパズル問題のように考えておいた方が良いかもしれません。もちろん業務において出題される妙なコードに影響されないよう気をつけておきましょう。

Javaブロンズを取得するメリット

JavaブロンズはJavaプログラマとして基礎的な技能を有することを証明してくれます。もし問題の難易度を理解してくれる方が存在するなら、十分に評価してくれるでしょう。ただし試験問題が引っ掛け問題で構成され、実技とは少しかけ離れた傾向にあるため評価をしない方も存在します。

また、会社によっては資格手当をつけてくれるところもあるので、そういうところにお勤めの場合には直接的な昇給を望むことができます。実際に試験会場では会社の命令によって無理矢理受験しているという方もいらっしゃるはずです。

また、こうした会社では資格取得を奨励していることがあり、勉強費用として過去問の書籍購入費を肩代わりしてくれるケースもあります。もしそうした制度を実施しているならどんどん申請しましょう。自分の知識も給料も増えるので受験しない手はありません。

それからSilverやGoldへの足がかりとしてJavaブロンズ合格を目指すのも良いでしょう。段階的に難易度は上がっていきますが、Javaプログラマとして成長していきたいなら価値のある目標です。特にGoldまで取得できたならより評価されやすくなるに違いありません。

Javaブロンズ合格を目指す方に役立つ参考書

やはりまずは問題集をこなすことです。代表的なJavaブロンズに対応した過去問題集は以下の2つとなります。

徹底攻略 Java SE 7/8 Bronze 問題集[1Z0-814]対応

オラクル認定資格教科書 Javaプログラマ Bronze SE 7/8 スピードマスター問題集

この問題集を何週も解いて正答率を上昇させていけば、この問題集をこなすだけで合格できるかもしれません。ですが、暗記によって正答率が上がっているだけかもしれない、という不安が残るなら教科書が必要となります。

Java言語の知識が既にある方の場合の試験対策用の教科書としては以下の参考書が役に立つでしょう。

オラクル認定資格教科書 Javaプログラマ Bronze SE 7/8

この本は紫本という通称で呼ばれているほど知名度が高く、評判も上々です。これまであやふやだったJavaの理解が深まり、試験勉強以上に自分の力になってくれるかもしれません。こうした教科書は既にJavaに慣れ親しんだ方のための本なので、Javaへの理解があやふやな場合は以下の本が役立つはずです。

新・明解Java入門 (明解シリーズ)

様々な言語の入門書を執筆されている柴田 望洋氏の著作です。分かりやすく記述されているのでJava言語の基礎を学ぶのに相応しい書籍と言えるでしょう。この本でもまだ難しい、と思う場合は以下の書籍が良いかもしれません。

スッキリわかるJava入門 第2版 (スッキリシリーズ)

やさしいJava 第6版 (「やさしい」シリーズ)

これらの著作は何より読みやすさに重点が置かれていて、教科書然とした書き方とはなっていません。初学者に寄り添うような形で書かれているため、Java言語自体に初めて触れる方にとって良いガイド本となるはずです。

Javaブロンズの受験費用

Javaブロンズ、シルバー、ゴールドの受験費用は以下のようになっています。

・Javaブロンズ:13600円
・Javaシルバー:26600円
・Javaゴールド:26600円

Javaブロンズだけ他の2資格と比べて安い状況ですが、全体的に高いと言えます。合格でも不合格でも13600円は払わなくてはいけませんし、シルバーやゴールドとなると倍額近くかかってしまうのです。金銭的な負担は決して軽いものでは無いので、できるだけ少ない受験回数で合格したいところでしょう。

試験はオフラインかオンラインかを選ぶ事ができます。オフラインの場合は試験会場へ赴くことになるため交通費を勘案しなければいけません。特に地方にお住まいの場合、受験費用の総額は意外と大きなものになる可能性もあるため注意しておきましょう。ただオンライン試験であれば場所を問われないので、経済面、労力面を考えると有利です。

また、試験時間は65分で問題数は60問です。ほぼ1分1問で問題を解く必要があるため、迷っていると直ぐにタイムアップになってしまうでしょう。できるだけ速く正確に問題を解くため、実践的な知識を身につける必要があります。そしてそれは何より過去問を解くことによって得られるはずです。

Javaブロンズを取得すると転職に有利になるのか

Javaブロンズを保有しているからと言って転職が有利になると断言はできません。難易度はそれなりに高い資格なのですが、評価は絶対視しないほうが良いでしょう。やはり試験問題と実技の領域は異なるため、本当に有能な人材かどうか、という点を測れる資格とは言えないのです。

ただ、同条件の人材のうち、片方がJavaブロンズを所得していたならそちらの方がプログラミングに長けていると評価されるでしょう。「同条件の人材」というのはやや机上の空論じみていますが、似通った条件の人材が集まったときに資格の有無は力を発揮するはずです。

それから資格取得をすることで資格手当をつけてくれる会社へ転職するときには評価してくれる可能性は高いです。そうした会社では社員が資格を保有することで会社の信頼感を他企業へアピールしているのですから、有力な人材と評価してくれるでしょう。

Javaブロンズはゴールドのように特段難易度の高い資格には分類されませんが、Javaプログラマとしての実力を証明してくれます。

以上の事から、Javaブロンズを取得することは損ではありません。転職先によっては十分に評価される可能性もあるので、価値のある資格と言えるでしょう。

Java「ブロンズ」「シルバー」「ゴールド」の違い

まず難易度が異なります。ブロンズよりシルバー、シルバーよりゴールドの方が難易度は高い傾向にあるのです。例えばシルバーの試験範囲には「継承の条件」「例外の処理」「Java APIの主要なクラスの操作」といった項目が含まれます。ブロンズより深いJavaへの理解が求められるでしょう。

ゴールドは第一線で活躍するJavaプログラマ用の資格と考えて良いかもしれません。試験範囲には「ラムダ組込み関数型インタフェース」「コレクション、ストリームおよびフィルタ」「ジェネリクス」といったタームが並びます。

Java開発者としてかくあるべきという難易度の問題が並んでいるため、容易に合格できる資格ではありません。十分にブロンズとシルバーの知識を蓄えた上で望むのが良いでしょう。

ここでシルバーの難易度がどのくらいか、公式より問題を見てみましょう。

1.次のコードを確認してください。

1. public class Sequence {
2. Sequence() { System.out.print(“c “); }
3. { System.out.print(“y “); }
4. public static void main(String[] args) {
5. new Sequence().go();
6. }
7. void go() { System.out.print(“g “); }
8. static { System.out.print(“x “); }
9. }
このコードを実行すると、どのような結果になりますか。

A.c x y g
B.c g x y
C.x c y g
D.x y c g
E.y x c g
F.y c g x

正解はDの「x y c g」です。

正直なところ、こうした表記を初めて見る方も多いかもしれません。ここには「オブジェクトイニシャライザブロック」と「staticイニシャライザブロック」並びに「初期化処理の順序」の知識が問われています。最初から見ていきましょう。

まずクラスを初期化される際「staticイニシャライザブロック」に該当する処理が行われます。これは8行目の「static { System.out.print(“x “);}」を指しています。というわけでまず「”x “」が画面に表示されるのです。

次に処理はオブジェクト初期化時に実行する「オブジェクトイニシャライザブロック」へと進みます。そのため3行目の「{ System.out.print(“y “); }」が実行され「”y “」が表示されるわけです。

次に2行目のコンストラクタで「”c “」5行目のメソッド呼び出しで「”g “」が出力されていき、結果「x y c g」となります。この問題を限られた制限時間内で解かなければいけないので、容易な事では無いことが分かるはずです。

ただ、こうした表記を実務で使う事があるかというと疑問が残ります。初期化の順序を把握していなければ動かせないコードというのは危険でもありますし、一般的な表記とは言い辛いコードです。

やはり試験問題は一種のパズルゲームとして考えるのが良いでしょう。実務とは別の世界の、Java言語への精通度合いを測る競技のようなものと捉えておくと納得して問題に臨めるはずです。

初めて「オブジェクトイニシャライザブロック」と「staticイニシャライザブロック」を見た方にとってこの問題は混乱を引き起こすことになるかもしれません。もちろんゴールドではもっと難易度が高くなります。要求される知識量が段階ごとに多くなるため、やはり最初はJavaブロンズを受けるのが無難でしょう。

難易度以外の違いとして受験料と制限時間、問題数などがあります。それぞれの違いは以下の通りです。表記は「時間・問題数・合格ライン・受験料」となります。

・Javaブロンズ:65分 ・60問・60%・13600円
・Javaシルバー:150分・77問・65%・26600円
・Javaゴールド:150分・85問・65%・26600円

全体的に問題数と試験時間が厳し目に設定されていることがわかりますが、特にJavaブロンズはかなりシビアな設定と言えるでしょう。1問当たり1分で解く事が要求されています。こうなるとJavaブロンズだけ即答性が問われている状況と言えるかもしれません。

コードレビューの力を鍛えるのが有効

Javaブロンズは基本的に引っ掛け問題が多く、普段の開発では考えられないようなミスを前提としてコードが書かれています。そのため意識されること無く間違いを見過ごしてしまうかもしれません。

間違いに気づくと「そう書くわけないだろう…」と思われるかもしれませんが、そういう問題なのです。また、ふと「それはコンパイルすれば一発で分かるだろう…」と考えてしまうような問題も含まれている状況となっています。

こうした問題に対応するには他者の書いたコードを読む力を鍛えると良いかもしれません。自分とは異なる書き方で書かれたコードというのは多少混乱をもたらしますし、ミスも気づき難いものです。特にプログラム初学者のコードには誤解に基づくコードが散見されるので、良い試験問題となるかもしれません。

また、コードレビューをすることで実務にも良い影響を及ぼすことになるでしょう。誰もが見過ごす「ちょっとした間違い」は時として甚大な被害を巻き起こすものですが、それを事前に見つけ修正する力を得られれば便りになる人物となるはずです。

問題に出そうなコードを自分で書いてみる

問題に苦手分野がある場合、それを応用したコードを自分で書いて見るのも良い方法です。例えば、仕事で拡張for文を書いたことが無いなら書いてみましょう。このとき、コンパイルエラーや実行時エラーが出たならそれが問題として出題されるかもしれません。拡張for文の場合に考えられるミスにはこのようなケースが考えられます。

public static void main(String[] args) {
int[] a = {1,2,3,4,5};

for(int b:a){
System.out.println(a[b]);
}

これでは例外ArrayIndexOutBoundsExceptionが出てしまいます。なぜなら5行目の「a[b]」というのは正しい拡張for文の使い方ではなく、妙な結果となってしまうからです。正しいコードに修正するには以下のようにします。

public static void main(String[] args) {
int[] a = {1,2,3,4,5};

for(int b:a){
System.out.println(b);
}

4行目の「for(int b:a)」は「int型配列a[]の要素をint bに代入してfor文を回す」という意味なので、これが正しい姿となるわけです。クラスの配列に対しても拡張for文を回してみましょう。今度はhogeクラスのメンバnumに数値を設定し、拡張for文で表示させるメソッドdispを呼ぶようにしました。

class hoge{
private int num;
void set_num_name(int num){
this.num = num;
}
void disp(){
System.out.println(num);
}

public class testdayo {
public static void main(String[] args) {
hoge[] foo = new hoge[3];

for(int i=0;i<foo.length;i++){
foo[i] = new hoge();
foo[i].set_num_name(i);
}

for(hoge a:foo){
a.disp();
}}}}

通常のfor文と拡張for文を併用した形となっています。こうして書くと拡張for文には「インクリメントをどうするか」といった問題も見えてきます。今回は拡張for分を扱いましたが、その他の要素についても自分なりに検証し続けていくことで新しい発見があるかもしれません。

自分から知識をキャッチアップできる環境とは

Javaブロンズを取得することは自分の実力を試すのに良い方法ですよ。また、試験勉強を続けて得た知識は、現場での実践で必ず役立つでしょう。以前の自分だったら混乱していたケースでも、容易に理解できるようになっているかもしれません。

業務の外で、自分で知識をキャッチアップできる人は、業務と勉強を絡ませることができるような環境がおすすめです。そのような環境の方が、エンジニアとして大成することができるからです。

しかし、実際に自分のキャリアプランを考えていると、「このままの働き方でスキルアップできるのだろうか」「自分の求める生活は近づいているのだろうか」と不安になることってありますよね。

自分が求めるエンジニア像と会社が求めるスキルにギャップがある場合、働くモチベーションとしても、苦しいものあるでしょう。また、どういうキャリアを踏んでいくべきか見えないという方もいるのではないでしょうか。

そんな不安を抱えている人は、「TechStars Agent」に相談してみてください。

テックスターズエージェントは、エンジニア経験のあるキャリアエージェントが、あなたの技術やポテンシャルを見抜き、希望の労働条件を最大限に叶えられるキャリアを一緒に探してくれます。

  • 希望年収以上の職場に出会える
  • 技術に熟知したサポーターが一緒に職場を探してくれる
  • 新しい技術・学びたい技術の職場に出会える

あなたも、エンジニアとして成長するために、ぜひTechStars Agentを利用してみてください。