Java Bronze過去問の代わりに解く練習問題20問【解説つき】

当ページのリンクには広告が含まれています。
Java Bronze(1Z0-818-JPN)の過去問の代わりに解く練習問題20問のアイキャッチ画像

オラクル認定資格の「Java Bronze(1Z0-818)」の練習問題20問を、全問の解説つきでお伝えさせていただきます。

筆者はJava Bronze・Silver・Goldの3つすべてに合格しており、Bronzeは独学50時間で合格しました。この記事に載せている20問はすべて筆者が作成したオリジナル問題で、1問残らず実際にJDK 11でコンパイル・実行し、出力やコンパイルエラーの内容を確認したうえで解説を書いています。「解説には正解と書いてあるが、実際に動かすと違う」ということが起きないようにするためです。

先に問題20問をまとめて出し、そのあとに解答と解説を置いています。本番と同じように、まずは解説を見ずに20問続けて解いてみてください。

この記事はこんな方におすすめです!

  • Java Bronzeの参考書を一通り読み終えて、そろそろ問題を解きたい方
  • 「Java Bronze 過去問」で検索したものの、どれが本物か分からず困っている方
  • 問題集を買う前に、自分が今どのくらい解けるのか試しておきたい方
目次

Java Bronze(1Z0-818)に公式の過去問は存在しない

最初に、検索してたどり着いた方がいちばん知りたいところをはっきりさせておきます。Java Bronzeには、公式に公開されている過去問はありません。

オラクル認定資格は、受験時に同意する規約で試験問題の内容を外部に開示することが明確に禁止されています。情報処理技術者試験のように、終わった試験の問題が公式サイトで公開される仕組みがそもそも無いということです。ですから「Java Bronzeの過去問」と書かれた教材があった場合、それは次のどちらかになります。

  • 出題範囲に沿って作られたオリジナルの予想問題を、通称として「過去問」と呼んでいる
  • 受験者が記憶して持ち出した問題を載せている(規約違反にあたります

市販の黒本・紫本も、中身はすべて前者のオリジナル問題です。この記事の20問も同じく、Oracle公式が公開している出題範囲の7分野に沿って筆者が作成したものになります。本番の問題そのものではありませんので、そこは正直にお伝えしておきます。

そのうえで、Bronzeの試験は「コードを読んで、実行結果かコンパイル結果を答える」形式が中心です。ここは本番もオリジナル問題も変わりません。だからこそ、解説に書いてある実行結果が本当に正しいかどうかが効いてきます。この記事では全20問を実際に動かして確認しました。

項目内容
試験名Java SE Bronze
試験番号1Z0-818-JPN
問題数・試験時間60問・65分
合格基準正答率60%以上
準拠バージョンJava SE 11
この記事の検証環境Eclipse Temurin JDK 11.0.32.1(javac 11.0.32.1)

試験時間・出題数・合格基準は変更される場合がありますので、申込前にOracle University の1Z0-818-JPN試験ページで確認してください。

▼Java Bronzeの難易度と勉強時間はこちら▼

Javaブロンズの難易度と勉強時間|独学50時間で合格した手順

Java Bronzeの練習問題20問

出題範囲の7分野から20問を用意しました。本番は60問65分なので、1問あたり約65秒が目安になります。20問なら22分前後を目標にしてみてください。解答は次の「解答と解説」にまとめてあります。

  • 問1〜3 Java言語のプログラムの流れ
  • 問4〜6 データの宣言と使用
  • 問7〜9 演算子と分岐文
  • 問10〜12 ループ文
  • 問13〜14 オブジェクト指向コンセプト
  • 問15〜17 クラス定義とオブジェクトの生成・使用
  • 問18〜20 継承とポリモフィズム

問1〜3 Java言語のプログラムの流れ

問1. 次のコードをコンパイルして実行した結果として、正しいものを1つ選んでください。

public class Sample {
    public static void main(String... args) {
        System.out.println("Hello Bronze");
    }
}
  1. Hello Bronze と表示される
  2. コンパイルエラーになる
  3. コンパイルは通るが、実行時にmainが見つからないエラーになる
  4. 何も表示されずに終了する

問2. 次のコードをコンパイルして実行した結果として、正しいものを1つ選んでください。

public class Sample {
    static public void main(String[] args) {
        System.out.println("OK");
    }
}
  1. OK と表示される
  2. 修飾子の順序が不正なのでコンパイルエラーになる
  3. コンパイルは通るが実行時エラーになる

問3. 次のコードをコンパイルした結果として、正しいものを1つ選んでください。

import java.util.ArrayList;
package sample;

public class Sample {
    public static void main(String[] args) {
        System.out.println("x");
    }
}
  1. 正常にコンパイルでき、x と表示される
  2. コンパイルエラーになる
  3. 警告は出るがコンパイルでき、x と表示される

問4〜6 データの宣言と使用

問4. 次のコードを実行したときの表示として、正しいものを1つ選んでください。

int x = 7;
double y = 2;
System.out.println(x / 2);
System.out.println(x / y);
System.out.println(x % 2);
  1. 3/3.5/1
  2. 3.5/3.5/1
  3. 3/3.0/1
  4. 3/3.5/0

問5. 次のコードを実行したときの表示として、正しいものを1つ選んでください。

char c = 'A';
c += 2;
System.out.println(c);
System.out.println('A' + 2);
System.out.println("A" + 2);
  1. C/67/A2
  2. C/C/A2
  3. 67/67/A2
  4. 2行目でコンパイルエラーになる

問6. 次のコードをコンパイルして実行した結果として、正しいものを1つ選んでください。

public class Sample {
    public static void main(String[] args) {
        int count;
        if (args.length == 0) {
            count = 1;
        }
        System.out.println(count);
    }
}
  1. 1 と表示される
  2. 0 と表示される
  3. コンパイルエラーになる

問7〜9 演算子と分岐文

問7. 次のコードを実行したときの表示として、正しいものを1つ選んでください。

int a = 5;
int b = a++ + ++a;
System.out.println(a);
System.out.println(b);
  1. 7/12
  2. 7/11
  3. 6/11
  4. 7/10

問8. 次のコードを実行したときの表示として、正しいものを1つ選んでください。

int n = 2;
switch (n) {
    case 1:
        System.out.println("one");
    case 2:
        System.out.println("two");
    case 3:
        System.out.println("three");
        break;
    default:
        System.out.println("other");
}
  1. two のみ
  2. two と three
  3. two と three と other
  4. one と two と three

問9. 次のコードを実行したときの表示として、正しいものを1つ選んでください。

String s1 = "Java";
String s2 = "Java";
String s3 = new String("Java");
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s1.equals(s3));
  1. true/false/true
  2. true/true/true
  3. false/false/true
  4. true/false/false

問10〜12 ループ文

問10. 次のコードを実行したときの表示として、正しいものを1つ選んでください。

int i = 10;
do {
    System.out.println(i);
    i++;
} while (i < 5);
System.out.println("end:" + i);
  1. 何も表示されず、end:10 だけが表示される
  2. 10 と end:11 が表示される
  3. 10/11/12/13/14 と end:15 が表示される
  4. 無限ループになる

問11. 次のコードを実行したときの表示として、正しいものを1つ選んでください。

for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        if (j == 2) continue;
        if (i == 2) break;
        System.out.print(i + "" + j + " ");
    }
}
  1. 11 13 31 33
  2. 11 13 21 23 31 33
  3. 11 12 13 31 32 33
  4. 11 13 33

問12. 次のコードを実行したときの表示として、正しいものを1つ選んでください。

int[] nums = {1, 2, 3};
for (int v : nums) {
    v *= 10;
}
System.out.println(nums[0]);

int[] copy = nums;
copy[0] = 99;
System.out.println(nums[0]);
  1. 10/99
  2. 1/99
  3. 1/1
  4. 10/10

問13〜14 オブジェクト指向コンセプト

問13. 次のコードをコンパイルして実行した結果として、正しいものを1つ選んでください。

class Member {
    private String name = "Nico";
}

public class Sample {
    public static void main(String[] args) {
        Member m = new Member();
        System.out.println(m.name);
    }
}
  1. Nico と表示される
  2. null と表示される
  3. コンパイルエラーになる

問14. 次のコードを実行したときの表示として、正しいものを1つ選んでください。

class Counter {
    int value = 0;
    static int total = 0;
    void add() { value++; total++; }
}

public class Sample {
    public static void main(String[] args) {
        Counter a = new Counter();
        Counter b = new Counter();
        a.add();
        a.add();
        b.add();
        System.out.println(a.value + " " + b.value + " " + Counter.total);
    }
}
  1. 2 1 3
  2. 3 3 3
  3. 2 1 1
  4. 3 1 3

問15〜17 クラス定義とオブジェクトの生成・使用

問15. 次のコードをコンパイルして実行した結果として、正しいものを1つ選んでください。

class Book {
    String title;
    Book(String title) { this.title = title; }
}

public class Sample {
    public static void main(String[] args) {
        Book b = new Book();
        System.out.println(b.title);
    }
}
  1. null と表示される
  2. 空文字が表示される
  3. コンパイルエラーになる

問16. 次のクラスに対して new Item(); を実行したときの表示として、正しいものを1つ選んでください。

class Item {
    String name;
    int price;
    Item() {
        this("none", 0);
        System.out.println("no-arg");
    }
    Item(String name, int price) {
        this.name = name;
        this.price = price;
        System.out.println("with-arg");
    }
}
  1. with-arg → no-arg の順に表示される
  2. no-arg → with-arg の順に表示される
  3. no-arg だけが表示される
  4. コンパイルエラーになる

問17. 次のコードをコンパイルして実行した結果として、正しいものを1つ選んでください。

public class Sample {
    int count = 5;
    public static void main(String[] args) {
        System.out.println(count);
    }
}
  1. 5 と表示される
  2. 0 と表示される
  3. コンパイルエラーになる

問18〜20 継承とポリモフィズム

問18. 次のコードをコンパイルして実行した結果として、正しいものを1つ選んでください。

class Animal {
    void cry() { System.out.println("Animal"); }
}
class Dog extends Animal {
    void cry() { System.out.println("Wan"); }
    void run() { System.out.println("Run"); }
}

public class Sample {
    public static void main(String[] args) {
        Animal a = new Dog();
        a.cry();
        a.run();
    }
}
  1. Wan → Run の順に表示される
  2. Animal → Run の順に表示される
  3. コンパイルエラーになる

問19. 次のクラスに対して new GrandChild(); を実行したときの表示として、正しいものを1つ選んでください。

class Parent {
    Parent() { System.out.println("Parent"); }
}
class Child extends Parent {
    Child() { System.out.println("Child"); }
}
class GrandChild extends Child {
    GrandChild() { System.out.println("GrandChild"); }
}
  1. GrandChild → Child → Parent の順
  2. Parent → Child → GrandChild の順
  3. GrandChild だけが表示される

問20. 次のコードをコンパイルして実行した結果として、正しいものを1つ選んでください。

class Base {
    public void show() { System.out.println("Base"); }
}
class Sub extends Base {
    protected void show() { System.out.println("Sub"); }
}

public class Sample {
    public static void main(String[] args) {
        new Sub().show();
    }
}
  1. Sub と表示される
  2. Base と表示される
  3. コンパイルエラーになる

解答と解説(全20問)

解説には実際にJDK 11で動かしたときの出力、コンパイルエラーの場合はエラーメッセージの実物を載せています。自分の答えと照らし合わせてみてください。

正解正解正解正解
問1A問6C問11A問16A
問2A問7A問12B問17C
問3B問8B問13C問18C
問4A問9A問14A問19B
問5A問10B問15C問20C

問1〜3の解説 Java言語のプログラムの流れ

問1の正解:A(Hello Bronze と表示される)

mainメソッドの引数は String[] args の形で覚えている方が多いと思いますが、可変長引数の String... args でもエントリポイントとして認められます。可変長引数は内部的に配列として扱われるためです。実行すると Hello Bronze がそのまま表示されました。

間違えやすいのは、String args[](角かっこが変数名の後ろ)も有効だという点です。逆に int[] args のように型がStringでない場合は実行時にmainが見つからずエラーになります。「配列かどうか」ではなく「String型を受け取るか」で判断してください。

問2の正解:A(OK と表示される)

修飾子の順序に決まりはありません。public static でも static public でも同じように動きます。実行すると OK が表示されました。

試験では「見慣れない順序で書かれているだけで、実は正常なコード」がよく出ます。順序が違うというだけでコンパイルエラーを選ばないようにしてください。ただし戻り値の型 void は必ずメソッド名の直前で、ここだけは順序が固定です。

問3の正解:B(コンパイルエラーになる)

ソースファイルの記述順は「package宣言 → import文 → クラス定義」で固定です。この順序を入れ替えるとコンパイルが通りません。実際に出たエラーがこちらです。

Sample.java:2: エラー: class、interfaceまたはenumがありません
package sample;
^
エラー1個

package宣言はファイルの先頭に1つだけ、import文はその後に何個でも書けます。なおpackage宣言は省略できますが、省略した場合はデフォルトパッケージ扱いになります。

問4〜6の解説 データの宣言と使用

問4の正解:A(3/3.5/1)

実行結果はこうなりました。

3
3.5
1

ポイントはint同士の割り算は小数点以下が切り捨てられることです。7 / 2 は 3.5 ではなく 3 になります。一方 x / y は int と double の計算なので、intがdoubleに変換されてから計算され 3.5 になります。

この「int同士なら結果もint」は試験で最も狙われるところです。double d = 7 / 2; と書いた場合も、割り算が先に終わってから代入されるので d は 3.5 ではなく 3.0 になります。

問5の正解:A(C/67/A2)

C
67
A2

3行とも仕組みが違うので、1つずつ押さえてください。

  • c += 2 は複合代入演算子で、暗黙のキャストが入るためchar型のまま。’A’の2つ先で C になります
  • 'A' + 2charがintに昇格して計算されるので、65+2で 67(数値)になります
  • "A" + 2片方がStringなので文字列の連結になり、A2 になります

ちなみに c = c + 2; と書くと、こちらは暗黙のキャストが入らないためコンパイルエラーになります。+== ... + は同じではない、というのがこの問題の本質です。

問6の正解:C(コンパイルエラーになる)

Sample.java:7: エラー: 変数countは初期化されていない可能性があります
        System.out.println(count);
                           ^
エラー1個

ローカル変数は明示的に初期化しないと使えません。インスタンス変数なら int は 0、参照型は null という既定値が入りますが、メソッドの中で宣言したローカル変数には既定値がありません。

この問題で引っかかりやすいのは、if文の中で必ず代入されるように見えるところです。コンパイラは「if が成立しない経路がある」と判断するため、実行時に必ず通るかどうかは関係なくエラーになります。else を付けて全経路で代入するか、宣言時に int count = 0; とすれば通ります。

問7〜9の解説 演算子と分岐文

問7の正解:A(7/12)

7
12

左から順に追うと分かります。a++「値を使ってから増やす」ので、この式では 5 を使って a が 6 になります。次の ++a「増やしてから値を使う」ので、a が 7 になってから 7 を使います。結果として b は 5 + 7 = 12、a は 7 です。

後置と前置の違いは、単独の行では結果が変わらないのに、式の中に入れると変わるのが厄介なところです。試験では必ず式の中に混ぜて出てくるので、「使ってから増やす/増やしてから使う」と声に出して追うのが確実です。

問8の正解:B(two と three)

two
three

switch文は一致したcaseから下へ、breakに当たるまで実行され続けます。これをフォールスルーと呼びます。n が 2 なので case 2 から始まり、breakが無いので case 3 も実行され、そこのbreakで抜けます。default までは到達しません。

「case 2 だけが実行される」と考えてAを選んでしまうのが典型的な間違いです。breakの有無を必ず先に確認してください。なお default はどこに書いても構わず、一致するcaseが無いときだけ実行されます。

問9の正解:A(true/false/true)

true
false
true

==同じオブジェクトを指しているかを比べ、equals中身が同じかを比べます。

s1 と s2 はどちらもリテラルで、Javaは同じ内容の文字列リテラルを使い回すため同じオブジェクトになり true です。一方 s3 は new で作っているので必ず別のオブジェクトになり false になります。中身はどちらも “Java” なので equals は true です。

実務では文字列の比較に == を使わないと覚えておけば足りますが、試験では「リテラル同士なら true になる」という挙動そのものが問われます。

問10〜12の解説 ループ文

問10の正解:B(10 と end:11 が表示される)

10
end:11

do-while文は条件を判定する前に必ず1回実行されます。i は最初から 10 で条件 i < 5 を満たしていませんが、1回目の処理は実行されるので 10 が表示され、i が 11 になってから条件判定で抜けます。

while文なら1回も実行されずに end:10 だけが出ます。do-whileとwhileの違いは「最低1回動くかどうか」だけで、ここが問われます。あわせて、do-whileの末尾のセミコロン(} while (...);)を忘れるとコンパイルエラーになる点も狙われます。

問11の正解:A(11 13 31 33)

11 13 31 33 

continue と break の違いがそのまま答えになります。continue は今回の繰り返しだけを飛ばして次に進み、break はループそのものを抜けます。

  • i=1:j=2 のときだけ continue で飛ぶので、11 と 13 が出力されます
  • i=2:j=1 で break が働き、内側のループだけ抜けるので何も出力されません
  • i=3:i=1 と同じく 31 と 33 が出力されます

間違えやすいのは「breakで外側のループまで止まる」と考えてDを選ぶパターンです。ラベルを付けない限り、breakが効くのは自分が直接入っているループだけです。

問12の正解:B(1/99)

1
99

前半と後半で結果が逆になるのがこの問題の狙いです。

拡張for文の変数 v は配列の要素をコピーした別の変数なので、v をいくら書き換えても元の配列は変わりません。そのため nums[0] は 1 のままです。

一方 int[] copy = nums;配列そのものをコピーしているのではなく、同じ配列を指す参照を代入しているだけです。copy経由で書き換えると nums も変わるので 99 になります。「中身のコピー」と「参照のコピー」の違いが、Bronzeの配列問題で最も問われるポイントです。

問13〜14の解説 オブジェクト指向コンセプト

問13の正解:C(コンパイルエラーになる)

Sample.java:7: エラー: nameはMemberでprivateアクセスされます
        System.out.println(m.name);
                            ^
エラー1個

private を付けたフィールドはそのクラスの中からしかアクセスできません。値が入っているかどうかは関係なく、外部のクラスから m.name と書いた時点でコンパイルが通りません。

これがカプセル化の基本形です。外から使わせたい場合は public String getName() { return name; } のようなメソッドを用意します。「フィールドはprivate、操作はpublicなメソッドで」という形を覚えておけば、この分野の問題はほぼ対応できます。

問14の正解:A(2 1 3)

2 1 3

インスタンス変数 valueインスタンスごとに別々に用意されるので、a では2回、b では1回足されて 2 と 1 になります。

これに対して static を付けた totalクラスに1つだけ存在し、すべてのインスタンスで共有されます。a が2回、b が1回足したので合計3になります。

「クラスは設計図、インスタンスは実物」という説明はよく聞きますが、試験で問われるのはこのstaticの有無で共有されるかどうかが変わるという一点です。コードを見たらまずstaticを探してください。

問15〜17の解説 クラス定義とオブジェクトの生成・使用

問15の正解:C(コンパイルエラーになる)

Sample.java:8: エラー: クラス Bookのコンストラクタ Bookは指定された型に適用できません。
        Book b = new Book();
                 ^
  期待値: String
  検出値: 引数がありません
  理由: 実引数リストと仮引数リストの長さが異なります
エラー1個

コンストラクタを1つでも自分で定義すると、コンパイラが自動で用意してくれる引数なしのコンストラクタ(デフォルトコンストラクタ)は作られなくなります。このクラスには Book(String) しかないので、new Book() は呼べません。

Bronzeで頻出の引っかけです。デフォルトコンストラクタが用意されるのは「コンストラクタを1つも書かなかったとき」だけと覚えてください。引数なしでも生成したいなら Book() { } を自分で追加します。

問16の正解:A(with-arg → no-arg の順に表示される)

with-arg
no-arg
none:0

this(...)同じクラスの別のコンストラクタを呼び出す書き方です。引数なしのコンストラクタが最初に呼ばれますが、その1行目で this("none", 0) が実行されるため、先に引数ありのコンストラクタが最後まで動いてから、戻ってきて no-arg が表示されます。

書いてある順に表示されると思ってBを選びがちですが、呼び出しが先に完了する点に注意してください。なお this(...)コンストラクタの必ず1行目に書く決まりで、2行目以降に書くとコンパイルエラーになります。

問17の正解:C(コンパイルエラーになる)

Sample.java:4: エラー: staticでない変数 countをstaticコンテキストから参照することはできません
        System.out.println(count);
                           ^
エラー1個

main は static なメソッドなので、インスタンスが存在しない状態で動きます。インスタンス変数 count は「どのインスタンスの count か」が決まらないため参照できません。

解決策は2つで、count に static を付けるか、new Sample().count のようにインスタンスを作ってから参照するかです。staticメソッドからインスタンス変数・インスタンスメソッドは直接呼べないという原則は、試験でも実務でも最初につまずくところです。

問18〜20の解説 継承とポリモフィズム

問18の正解:C(コンパイルエラーになる)

Sample.java:12: エラー: シンボルを見つけられません
        a.run();
         ^
  シンボル:   メソッド run()
  場所: タイプAnimalの変数 a
エラー1個

この問題は2段構えになっています。a.cry() だけなら、実際のオブジェクトは Dog なので Wan が表示されます(これがポリモフィズムです)。しかし a.run() で止まります。

呼び出せるメソッドは「変数の型」で決まり、実際に動くメソッドは「オブジェクトの型」で決まります。変数 a の型は Animal で、Animalクラスに run() は無いため、コンパイルの時点で弾かれます。

Aを選んだ方は、ポリモフィズムの理解としては正しい方向です。「実行時にDogだから呼べるはず」は通らず、コンパイル時に変数の型でチェックされるというルールを追加で覚えてください。((Dog) a).run(); とキャストすれば呼び出せます。

問19の正解:B(Parent → Child → GrandChild の順)

Parent
Child
GrandChild

コンストラクタの先頭には、書かなくても super(); が自動的に挿入されます。そのため GrandChild を生成すると、まず一番上の親までさかのぼってから、上から順に実行されます

「呼んだクラスから順に動く」と考えてAを選びやすいところです。継承関係では常に親が先に完成すると覚えてください。親に引数なしのコンストラクタが無い場合は、子のコンストラクタで super(引数) を明示しないとコンパイルエラーになります。これは問15と組み合わせて出題されます。

問20の正解:C(コンパイルエラーになる)

Sample.java:5: エラー: Subのshow()はBaseのshow()をオーバーライドできません
    protected void show() { System.out.println("Sub"); }
                   ^
  (public)より弱いアクセス権限を割り当てようとしました
エラー1個

オーバーライドではアクセス修飾子を親より狭くできません。親が public なら子も public にする必要があります。逆に、親が protected のときに子を public にする(広げる)のは問題ありません。

エラーメッセージが「より弱いアクセス権限を割り当てようとしました」と明示してくれるので、実務では気づけます。ただし試験では紙の上で判断する必要があるので、public → protected → (修飾子なし)→ private の順に狭くなることと、その向きには変更できないことをセットで覚えてください。

20問を解き終えたら次にやること

正答数によって、次にやるべきことが変わります。本番の合格基準は正答率60%なので、20問なら12問が合格ラインです。

正答数今の状態次にやること
0〜11問文法の理解が固まっていない参考書に戻り、間違えた分野の章だけを読み直す。全部読み直す必要はありません
12〜15問合格ラインは超えているが不安定市販の問題集を1冊、最低3周する。間違えた問題だけを繰り返します
16〜20問合格が見えている模擬試験形式(60問65分)で時間を計って解く。受験申込みに進んで問題ありません

筆者がBronzeに合格したときも、参考書を1周したあとはひたすら問題集を回すやり方でした。Bronzeは範囲が狭いぶん、同じ問題集を3周する方が、複数冊に手を出すより確実に伸びます。

▼Java Bronzeのおすすめ参考書・問題集はこちら▼

Java Bronze対策のおすすめ参考書と問題集|Java資格3つ合格者が選び方を解説

16問以上正解できた方は、そのまま受験を申し込んでしまった方が結果的に早いです。申込方法は写真付きで解説していますし、受験料を抑えたい場合は楽天で受験チケットを買う方法もあります。

▼Java Bronzeの申し込み手順と受験チケットの買い方はこちら▼

【2026年版】Java Silver・Bronze・GoldとOracle Bronzeの申し込み手順を写真付きで解説

Oracle・Java認定資格試験の受験チケットを楽天で購入する方法|受験料を抑える手順

よくある質問

この20問は本番と同じ難易度ですか?

出題範囲と形式は本番に合わせていますが、本番の問題そのものではありません。前述のとおりオラクル認定資格は試験内容の開示が禁止されているため、本番と同一の問題を載せている教材は存在しない(あるとすれば規約違反)と考えてください。難易度の感覚としては、市販の問題集の標準的な問題と同程度に作ってあります。

20問だけで合格できますか?

足りません。本番は60問で、出題範囲の7分野からまんべんなく出ます。この20問は「今の実力を測る」「弱い分野を見つける」ための物差しとして使ってください。そのうえで市販の問題集を1冊やり込むのが、遠回りに見えていちばん確実です。

Java SE 17の試験にも使えますか?

Bronzeは1Z0-818(Java SE 11準拠)が現行で、SE 17版のBronzeは用意されていません。SilverとGoldにはSE 17版があります。この記事で扱っている文法はいずれもJavaの基本部分なので、Silverの学習を始める前の土台確認としても使えます

▼Java Bronze・Silver・Goldの難易度の違いはこちら▼

Java資格の難易度はどれくらい?Bronze・Silver・Goldをレベル別に比較

さいごに

Java Bronze(1Z0-818)の練習問題20問と、その解説をお伝えしました。

Bronzeは、公式の過去問が存在しないぶん「どの教材の解説を信じるか」で仕上がりが変わる試験です。だからこそこの記事では、20問すべてを実際にコンパイル・実行して、出力とエラーメッセージを確認してから解説を書きました。

12問以上正解できたなら、あとは問題集を3周して受験を申し込むだけです。Bronzeに合格したら、次はSilverが視野に入ってきます。筆者はBronzeのあとSilverに100時間、Goldに150時間かけて合格しましたので、その体験も参考にしてみてください。

▼次のステップ、Java Silverの勉強方法はこちら▼

Java Silver SE11の難易度は?勉強時間100時間で合格した体験談と勉強法

最後までお読みいただきありがとうございました。

※本記事の情報は2026年9月時点のものです。試験の出題範囲・問題数・合格基準は変更される場合がありますので、最新情報は公式サイトでご確認ください。

SNSでシェアして頂けると嬉しいです!よろしくお願いします!
  • URLをコピーしました!

コメント

コメントする

目次