Java Silver 勉強ログ
Oracle認定資格であるJava Silverのための勉強ログ。Javaを5年以上やってきた人のログです。
資格のサイト
https://www.oracle.com/jp/education/certification/1z0-815-jpn-48261-ja.html
教材
いわゆる黒本です。古本を探しました。
公式にも例題が少しあります。Javaの経験があり、この問題をみて大丈夫だと思える方は勉強なしで突っ込んでも合格できます。
https://www.oracle.com/jp/education/certification/ocjp-silver-se8-3494542-ja.html
問題には試験独特で普段の作業には使わないようなものが多く含まれるため、お金をかけて勉強しました。
間違えた部分の解説しか読んでいないので全体については言えないのですが、解説は必要十分であったと思います。ある程度知識があることが前提になっているので、わからない知識はネットで調べることが必要です。nioのPathがIterableだって初めて知りました。
本当に黒本と同じ問題が出てくることがあります。パラメータも変わってなく、「この問題見たことある」となります。
試験の内容
試験は画面に表示された、Syntax Highlightなしでたまにインデントがズレてるコードを読んで問題に答えるものが大半です。他にはコマンドの使い方やJVM、標準のAPIについて少し聞かれます。合格に必要な正解の割合は63%だそうです。全80問のうち、50問ほどあっていれば受かる計算になります。
普段Javaを書く方はIDEを使っていると思います。そうでなくても、Syntax Highlightのお世話になっている方が多いと思います。そのような方々にとって、メモ帳に書かれてインデントもたまにずれているコードは読みたくないものですよね。自分はいやです。Java Silverではそのようなコードをひたすら読まされます。問題の選択肢も「コンパイルエラーになる」や「実行時に例外が投げられる」が含まれます。普段コンパイラやLinterがやっていることを人力で、Syntax Highlightなしでやらされます。
普段IDEAの静的解析に頼りっきりの自分としては訓練しないと乗り切れないと感じ、本を購入しています。
switch, for, while文といった基本の処理構造においてどのような実行結果になるか考える問題も出ます。だいたい勝手にループのカウンタを処理中に変更されます。for(int i = 0; i < 10; i++) と書かれていても10回ループが回ることはまずありません。ループ中にiは変更され、breakとcontinueが無駄にiと絡んで置かれています。そんな普段は書かない気持ち悪いコードの読み取りは難しいです。
前置インクリメントと後置インクリメントも出てきます。普段自分は変数に再代入しないですしどちらのインクリメントか意識しないで済むコードを書くので、やはり慣れていないと間違えます。
アクセス修飾子(private, publicなど)も出てきます。書いたことある人は意味わかりますし、privateなメソッド/フィールドにアクセスするようなコードは書きません。そもそもIDEの補完候補に出てこないです。試験では当然のようにprivateにアクセスするコードが出てきて、privateにアクセスしてるからコンパイルエラーだと主張してきます。(ただの間違え探しです)
super.super.xとか書いてある問題もあります。フィールドやメソッドの返り値にvar使ってるコードもあります。List.of()で作ったリストにaddしていることもあります。setterやコンストラクタなのにthisが入っていないからフィールドの値を更新できていないといったこともあります。このようなコードは意識していないと気づけないです。まずIDEが指摘してくれるので意識したことなかったです。だいたいローカル変数、フィールド、staticフィールドで色付けが変わるのでそんなに意識しなくても判断できていました。全部黒色だと読むのが辛いです。
継承や抽象クラスについても出ます。メソッドのオーバーライドする際、自分は普段は@Overrideと書いていますが、文法上は必要ないので試験ではほぼ書いてありません。書いてある時には親クラスに存在しないメソッドで、コンパイルエラーになっていることがあるので注意です。
試験対策
黒本を1周しただけでした。公式の問題例を見て問題の形式にびびったのできっちりやっています。時々知らなかった仕様が出てくるので、頭の片隅に入れておきます。試験にしか使いません。アンダーバーを2連続で使えないとか記号にくっつけられないとか知らなくてもコードは書けます。普通の人は3桁か4桁に区切るために使うわけですし。
MavenやGradleを使っている人はコマンドの使い方を忘れていることが多いので黒本に乗っている範疇でさらっと復習しておくのがよいです。モジュールシステムも最近導入された機能で、あまり知らない人が多いかもしれません。
また、普段コードを書いているとできるけどやらないのか、できないからやらないのかの区別がつかなくなってきます。switchのdefaultを最初に書いてもいいそうです。fall though あるのでわかるのですが、if文と同じ感覚だと間違えそうです。コロンから始まるラベルはほぼどこに書いてもいいようです。returnにもつけられるとか。でもtryのfinallyは1個限定のようです。catchにはFileNotFoundException | IOException eのような書き方はできないそうです。IOExceptionだけでいいからですね。到達不能コードは他言語では許されることもあるので勘違いしないようにしたいです。
どれも普段はやりませんが、文法上可能なのかわかっていないと試験では失点してしまいます。
この記事が気に入ったらサポートをしてみませんか?