Oracle Java Gold 11

先日Oracle Java Gold 11を受けてきたので、私が受験して思ったことや勉強法などの情報を書き記しておきます。

受験費が高いので確実に受かるという自信ができてから受験するのが無難です。



おススメの勉強法など

受験は黒本の問題集を一通り理解できる状態になれば受験して問題ないと思います。

というのも出題される問題が、ほぼ黒本に出てきたような問題と似たようなものだったからです。

黒本の内容が8割以上(内容も理解したうえで)正解できるようになれば、合格できる確率はかなり高い状態になっているはずです。

おススメの勉強法はこんな感じ

・黒本を見ながら問題を解く
・わからなかった問題や怪しい問題、間違った問題は、その場で解答と解説を読んで理解する
・使ったことがないAPIであれば実際にプログラムコードを書いてみて理解を深める
・完全にわかる問題は解答だけ確認し解説も見ない

1問1問ひたすらこれを繰り返す流れになります。

出題される問題の傾向ですが全体的にStream、Optional、Consumer、FunctionとかのStreamAPI、ラムダ式でコネコネする問題が多い印象でした。多分セキュアコーディングは黒本やってればOKだと思われます。追加で勉強したい方は下記のリンクを参照してください。

勉強する際の参考ページ

Java Goldの勉強をする際に参考になるページのリンクを出しておきます。
※Java Gold 11の試験範囲を完全に網羅できているわけではありません。

模擬問題

折角なので私がJava Goldレベルの問題を適当に5問ほど作ってみたのでよかったら勉強がてら解いてみてください。選択肢を多めにしてるので、本試験より多少難易度が高いかもしれません。

1.次のプログラムの結果を選択してください。

//import省略

public class Test{
	public static void main(String[] args) {
		IntStream.rangeClosed(0, 9)
			.boxed()
			.sorted(Comparator.reverseOrder())
			.skip(1)
			.limit(5)
			.forEach(System.out::print);
	}
}
選択肢
(a) 12345
(b) 01234
(c) 0123456789
(d) 123456789
(e) 012345678
(f) 12345678
(g) 87654
(h) 98765
(i) 987654321
(j) 9876543210
(k) 87654321
(l) 876543210

2.次の中でコンパイルエラーとなるものをすべて選択してください。

選択肢
(a) List<? extends Number> list = new ArrayList<String>();
(b) List<? extends Number> list = new ArrayList<Integer>();
(c) List<? extends Number> list = new ArrayList<Double>();
(d) List<? extends Number> list = new ArrayList<Number>();
(e) List<? extends Number> list = new ArrayList<Object>();
(f) List<? extends Number> list = new ArrayList<BigDecimal>();
(g) List<? extends Number> list = new ArrayList();

3.次のプログラムの結果を選択してください。

//import省略

public class Test{
	public static void main(String[] args) {
		String[] list = {"apple","orange","ice","game"};
		Predicate<String> p = (s) -> s.length() == 3;
		Arrays.stream(list)
			.filter(p.or((s) -> s.length() == 5))
			.forEach(System.out::println);
	}
}
選択肢
(a)
 apple
 orange
 ice
 game

(b)
 apple
 ice

(c)
 ice

(d)
 apple

(e)
 orange
 game

4.次のプログラムの結果を選択してください。

//import省略

public class Test{
	public static void main(String[] args) {
		Collection<Integer> list = new CopyOnWriteArrayList<>();
		list.add(1);
		list.add(2);
		list.add(3);
		
		Iterator<Integer> it = list.iterator();
		while(it.hasNext()) {
			int i = it.next();
			if ( i == 2 ) {
				it.remove();
			}
		}
		
		list.forEach(System.out::print);
	}
}
選択肢
(a) 123
(b) 12
(c) 13
(d) 23
(e) コンパイルエラーとなる
(f) 実行時エラーとなる

5.次のプログラムのinsert code hereに挿入するコードとして正しいものをすべて選択してください。

//import省略

public class Test{
	public static void main(String[] args) {
		String[] s = {"apple","orange","remon"};
		Map map = Arrays.stream(s)
			.collect(/*insert code here*/);
		
		map.keySet().stream().sorted().forEach(System.out::println);
	}
}
実行結果
apple
orange
remon
選択肢
(a) Collectors.toList()
(b) Collectors.groupingBy(e -> e.substring(0,5))
(c) Collectors.groupingBy(Function.identity())
(d) Collectors.groupingBy(e -> e.replace(e, e))
(e) Collectors.groupingBy(e -> e, e -> e)
(f) Collectors.partitioningBy(e -> e.length() == 5)
(g) Collectors.partitioningBy(e -> true)
(h) Collectors.toMap(e -> e, e -> e.substring(0,1))
(i) Collectors.flatMapping(Function.identity(), Collectors.groupingBy(e -> e))

Java

Posted by nompor