Oracle Java Gold 11
先日Oracle Java Gold 11を受けてきたので、私が受験して思ったことや勉強法などの情報を書き記しておきます。
受験費が高いので確実に受かるという自信ができてから受験するのが無難です。
おススメの勉強法など
受験は黒本の問題集を一通り理解できる状態になれば受験して問題ないと思います。
というのも出題される問題が、ほぼ黒本に出てきたような問題と似たようなものだったからです。
黒本の内容が8割以上(内容も理解したうえで)正解できるようになれば、合格できる確率はかなり高い状態になっているはずです。
おススメの勉強法はこんな感じ
・黒本を見ながら問題を解く
・わからなかった問題や怪しい問題、間違った問題は、その場で解答と解説を読んで理解する
・使ったことがないAPIであれば実際にプログラムコードを書いてみて理解を深める
・完全にわかる問題は解答だけ確認し解説も見ない
1問1問ひたすらこれを繰り返す流れになります。
出題される問題の傾向ですが全体的にStream、Optional、Consumer、FunctionとかのStreamAPI、ラムダ式でコネコネする問題が多い印象でした。多分セキュアコーディングは黒本やってればOKだと思われます。追加で勉強したい方は下記のリンクを参照してください。
勉強する際の参考ページ
Java Goldの勉強をする際に参考になるページのリンクを出しておきます。
※Java Gold 11の試験範囲を完全に網羅できているわけではありません。
- Javaの基礎
- API関連
- 文字列操作機能の利用(String)
- ランダムな値の生成(Random)
- 可変長配列(List)
- 特殊な可変長配列(CopyOnWriteArrayList)
- 可変配列操作(Collections、Comparator)
- 連想配列(Map)
- StreamAPIについて(Stream)
- StreamAPIの機能を使いこなす(Stream、Function、Cosumer、Collectorsなど)
- マルチスレッドの利用(Thread、Runnable)
- スレッド間同期(synchronized、Thread.join)
- 既存処理のマルチスレッド化(ThreadPoolExecutor(ExecutorService)、Executors)
- スレッド同期を行う特殊クラス(CyclicBarrier)
- フォルダ作成、ファイル削除などの基本操作(nio、Files)
- テキストファイルの読み込みと書き込み(Reader、Writer)
- バイナリファイルの読み込みと書き込み(BufferedStream)
- クラスオブジェクトを保存(Serializable、ObjectStream)
- アプリケーションの多言語化(ResourceBundle、Locale)
- JDBCでデータベース接続を行う(PreparedStatement、CallableStatement)
- その他
模擬問題
折角なので私が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))
ディスカッション
コメント一覧
まだ、コメントがありません