ITお絵かき修行

3歩歩いても忘れないために

OCJP Gold SE7うかった

合格ラインが65%で、正解率が68%だった。ギリギリだった。
過去に受験したBronzeが80%、Silverが90%だったので、楽勝だろうと思って慢心したらこの有様だった。
なので合格記という名の反省文を書く。


【分析】
まずスコアレポートより間違いの傾向をみると、おおよそ以下のように大別できた。
①抽象クラス・インタフェースクラスの取り扱い
正規表現
③スレッド
④コレクションフレームワーク
⑤その他不注意
このうち特に間違いが多く、試験でも印象に残った①と②を反省する。


【反省1】
①抽象クラス・インタフェースクラスの取り扱い
問題集の段階から難しいと感じていたが、試験ではさらに難しいと感じた。
具体的には、下のコードのような感じ?の変数名の重複と変数(定数)のスコープを絡めてくる問題があった。
対策としては、教科書・問題集のサンプルソースの写経時に、
・thisキーワードが使用できる箇所
・内部クラスからスーパクラスの変数にどうアクセスできるか
などを試しながら写経すれば勉強になるのでは、と感じた。

public interface A {
    String a = "testA";
}

public abstract class B implements A {
    String a = "testB";
}

public class C extends B{
    public static void main(String[] args) {
    String a = "testC";
        class D{
            public String a = new C().a;
            @Override
            public String toString(){
                return a;
            }
        }
    System.out.println(new D());
    }
}



※ちなみに実行すると「testB」が出力される。


【反省2】
②の正規表現については、普段の開発でもあまり使用せず、見かけるときがあっても毎回Google先生に聞いていたので、覚えきれず苦戦した。

(ピリオド)、*(アスタリスク)、+(プラス)、?、\d、\D、\s、\S、\w、\W、\b、\B、[]、()などのパターン

\dが数字、\sが空白文字、というルールに加えて\Dは数字以外、+がつくと1回以上の反復、などの合わせ技が来ると対処できなかった。

対策としては普段から正規表現が書かれているソースに興味をもつか、丸暗記するしかない…と思う。
150分の試験の中で「この正規表現なんだっけ?\dが空白文字だから…」とか色々考えだしてしまうと、集中力がもたないので、軽く解けるようにしておきたい。


【反省というより感想】
・③のスレッドについては、Forkする処理、Joinする処理の順序を問う問題が難しかった。
・④のコレクションフレームワークについては、従来型とジェネリックス型を使用した型変換の際、
 どのタイミングで値をキャストしなければならないか、を問う問題が難しかった。


【反省まとめ】
もっとコード書きます。読みます。


オラクル認定資格教科書 Javaプログラマ Gold SE 7 (EXAMPRESS)

オラクル認定資格教科書 Javaプログラマ Gold SE 7 (EXAMPRESS)

オラクル認定資格教科書 Javaプログラマ Gold SE 7 スピードマスター問題集 (EXAMPRESS)

オラクル認定資格教科書 Javaプログラマ Gold SE 7 スピードマスター問題集 (EXAMPRESS)