おれろぐ #z_a_ki3

(・∀・) オイ!

OCJP Silver SE 7 模試1回目

zaki3.hateblo.jp

やる気が生成されず、前回投稿からちょっと立ちましたが、現状の知識を把握するために
紫本巻末の模試をやってみました。

オラクル認定資格教科書 Javaプログラマ Silver SE 7

オラクル認定資格教科書 Javaプログラマ Silver SE 7

結果

90問中、75問正解で正答率83%・・・あまり余裕はありませんね。

しっかり復習しましょう。

間違い晒し

問題

gist.github.com

コンパイル、実行した結果として正しいものを1つ選択。

  • A main hello
  • B hello main
  • C コンパイルエラー
  • D 実行時エラー

解答:C
正答:D

へっぽこなミスで、これ、実行に必要なmainメソッドが無いだけなのでコンパイル
問題なく出来るんですよね。

こんな間違えはもったいないです。

問題

ArrayListクラスの特徴として正しいものを4つ選択

  • A AbstractListクラスを継承している
  • B Collectionクラスのsort()メソッドが使用できる
  • C RandomAccessインターフェースを実装している
  • D オブジェクトを格納できる
  • E 宣言時に必ず型宣言しなくてはいけない

解答:A,B,C,D
正答:A,B,C,D

間違えて無かったけど、Cをカンで答えたので・・・

問題

gist.github.com

2行目にコードを挿入してコンパイルが成功するものはどれか2つ選択

  • A list.indexOf(2.0d);
  • B list.get(list.size());
  • C list.add("hi");
  • D list.add("10.0");

解答:A,D
正答:A,B

Bのlist.get(list.size())で要素の範囲をオーバーすると思って、Dを選択したのですが、
ボクシングアンボクシングやキャストと違ってパースは自動的にされないですよね。

"コンパイルが成功するもの"っていうのがポイントでBは実行時エラーになるものの
コンパイルは問題なく成功するんですよね。

行間をしっかり読むのが大事だと再認識しました。。。

問題

gist.github.com

sbが保持する文字をすべて削除するコードとして正しいものを1つ選択

  • A sb.delete();
  • B sb.deleteAll();
  • C sb.delete(0, sb.length());
  • D sb.delete(0, sb.size());
  • E sb.remove();
  • F sb.removeAll();

解答:B
正答:C

StringBuilderの仕様を覚えていませんでした。
基本的なAPI仕様を読みます。。。

StringBuilder (Java Platform SE 8)

問題

gist.github.com

6行目に挿入するコードで Welcome Java World. と出力するものを2つ選択

  • A sb.append(s1).append(s2);
  • B sb.insert(s1).insert(s2);
  • C sb.append(s1 + s2);
  • D sb.insert(s1 + s2);
  • E sb += (s1 + s2);

解答:A
正答:A,C

"2つ選択"と書いてます。問題をちゃんと読みましょう。

問題

gist.github.com

コンパイル、実行した結果として正しいものを1つ選択

  • A a:null b:0
  • B a:Bar b:500
  • C a:Foo b:100
  • D コンパイルエラー
  • E 実行時エラー

解答:A
正答:C

問題を見て、これあれやん!this付けてないからメソッド実行しても値が更新しない奴やん!
フィールドは初期化してないからデフォルトの値(String=null、int=0)やろ!!

と、盲目的に解答してました。コンストラクタで初期化してるのに完全に見えなくなってます。
ちゃんと全体を見ましょう。

問題

gist.github.com

コンパイル、実行した結果として正しいものを1つ選択

  • A Helloが2回表示される
  • B Helloが1回表示された後、ClassCastException が発生する
  • C Helloが1回表示された後、IllegalStateException が発生する
  • D コンパイルエラー

解答:B
正答:D

interface Aにはshow()メソッドが定義されてないのはコンパイル時にチェックされますね。
IDEだと警告が出るのであまり考えてませんでした。
あと、2つの例外をしっかり覚えてたら消去法で解答できましたね。

ClassCastException
あるオブジェクトを継承関係にないサブクラスにキャストしようとした

IllegalStateException
(オブジェクト状態が)不正または不適切なときにメソッドが呼び出された

問題

定義可能なコードを1つ選択

  • A abstract class A extends String { // 実装コード }
  • B abstract class B extends Double { // 実装コード }
  • C abstract class C extends Integer { // 実装コード }
  • D abstract class D extends System { // 実装コード }
  • E abstract class E extends Number { // 実装コード }

解答:D
正答:E

まず、Numberクラスを知らなかったのが敗因。基本型のラッパークラスの抽象クラスだったんですね。
Systemクラスを継承してもいいのかなぁ・・・と臭いは感じていたものの間違えました。

問題

gist.github.com

コンパイル、実行した結果として正しいものを1つ選択

  • A Object
  • B Number
  • C Integer
  • D char[]
  • E コンパイルエラー
  • F 実行時エラー

解答:A
正答:E

純粋にString型を引数に持つメソッドがないのでコンパイルエラーと思ったのですが、
実際はスーパークラスのObjectに暗黙の型変換が行われて2行目が実行されるんですね。

ぐぬぬ

ちょっと長くなったので分割します。