PR

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

Java

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

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

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

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

これらの著作は何より読みやすさに重点が置かれていて、教科書然とした書き方とはなっていません。初学者に寄り添うような形で書かれているため、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.次のコードを確認してください。

初めて「オブジェクトイニシャライザブロック」と「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分を扱いましたが、その他の要素についても自分なりに検証し続けていくことで新しい発見があるかもしれません。

タイトルとURLをコピーしました