ぺんぎんらぼ

お笑いとマンガ好きなしょぼしょぼWeb系エンジニアの日記です。たまに絵を描きます。

お笑いとマンガ好きなしょぼしょぼWeb系エンジニアの日記です

オラクルの Java SE8 Silver を受験してきました

せんじつ会社命令でJava SE8 Silverを受験し、無事合格してきました。
得点率が87%だったので、全77問中11問くらい間違えた感じです。
けっこう間違えてますね・・・。

1年前にSE7 Silverを取得していたこともあって、
試験勉強としては前日に志賀澄人先生の『徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応』(黒本)を買って、

www.amazon.co.jp

第10章と第11章の「総仕上げ問題」 だけ解いて、あとは全体をパラパラ眺めました。
本番ではこの「総仕上げ問題」とかなり似た問題が出たので、
やっておいてよかったと思いました。

試験範囲にSE8の新しいAPIや構文、
「LocalDate/LocalDateTimeのAPI」とか「ラムダ」とかが追加されましたが、
実際の出題率は、LocalDate系が3問、ラムダは1問、でした。

LocalDate/LocalDateTimeは、

  • DateTimeFormatter
  • 実行時例外
  • オブジェクトのImmutable性

の理解について問う問題でした。

このうちひっかかりやすいのはImmutable性の問題と思います。

import java.time.LocalDate;
 
public class Main {
 
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2015, 2, 1);
        date.plusDays(30);
        date.plusMonths(1);
        System.out.println(date);
    }
 
    // A. 2015-02-01が出力される
    // B. 2015-03-03が出力される
    // C. 2015-04-03が出力される
    // D. コンパイルエラー
    // E. 実行時エラー
}

答えはAの「2015-02-01が出力される」です。
7行目や8行目で

date = date.plusDays(30); date = date.plusMonths(1);

というように、それぞれの結果返ってきたオブジェクトを、
変数dateに設定しなおしていれば回答はCですが、
そうはしていないので、2015年2月1日の情報をもったLocaldateオブジェクトの内容がそのまま出力されます。

ラムダの問題は確かこんな感じだったと思います。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
 
public class Main {
 
    public static void main(String[] args) {
        String[] array = { "Hi", "George", "Batson", "Weaver" };
        List<String> list = new ArrayList<>(Arrays.asList(array));
 
        if (list.removeIf((String s) -> {return s.length() <= 2;})) {
            System.out.println("Hi removed");
        }
    }
 
    // A. Hi removedが出力される
    // B. コンパイルに成功するが何も出力されない
    // C. コンパイルエラー
    // D. 実行時エラー
}

答えはAの「Hi removedが出力」です。

11行目の「(String s) -> {return s.length() <= 2;})」を、
removeIfメソッドの引数として渡しています。
removeIfメソッドは引数にPredicate型のラムダ式を受け取り、
実装された条件式がtrueを戻せばコレクションの要素を削除します。
さらにremoveIfメソッドは削除処理を実行したとき、tureを戻り値でかえしますので、
実行時には「Hi removedが出力」されます。

ラムダ式に関する丁寧な解説も黒本に載っているので、
SE7を持っている人は差分だけ勉強、
初めてSilverを受験する人でも黒本をしっかりやれば、合格できると思います。