javaの資格試験(ocj-p)を取って何を学んだか
TRANSCRIPT
自己紹介• 内田 大樹(@nikuyoshi)
• 通信会社の情報システム部門の運用基盤開発部門
• ジョブ管理システム(ex. JP1)を中心に、設計・開発・試験等を担当しています
• Java, JavaScript(Ext JS), HTML, CSS, Shell script
• 最近Qiitaに記事を投稿することが増えました
必要な知識• Java言語の基礎
• javac、javaコマンド、JARファイル、ガーベッジコレクション、finalizeメソッド等
•宣言、初期化、スコープ • static変数、インスタンス変数、配列、インナークラス、ローカルインナークラス等
•フロー制御 • if~else文、switch文、while文、break、continue、アサーション、例外処理等
• APIコンテンツ • StringBuilder、StringBufferクラス、正規表現、ファイルI/O、直列化、ロケール等
•並行性 • Threadクラス、スレッドの生成、同期化、割り込み、マルチスレッド等
•オブジェクト指向コンセプト • カプセル化、メソッドのオーバーロード、is-a・has-a関係、ポリモーフィズム等
•コレクション/ジェネリックス • Hashtable、HashMap、HashSet、TreeSet、ジェネリクス、ワイルドカード等
http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=5001&get_params=p_exam_id:1Z0-851&p_org_id=70&lang=JA
以下のコードをコンパイル、実行した時の結果として正しいものを選びなさい。public class Example { public static void main(String[] args) { Thread t = new Thread(new Runnable(){ public void run(){ System.out.println("running"); } }); t.start(); t.start(); }}
A. 正常に実行され、「running」が表示される
B. 正常に実行され、「runningrunning」が表示される C. コンパイルエラーになる D. 実行時に例外がスローされる
以下のコードをコンパイル、実行した時の結果として正しいものを選びなさい。public class Example { public static void main(String[] args) { Thread t = new Thread(new Runnable(){ public void run(){ System.out.println("running"); } }); t.start(); t.start(); }}
A. 正常に実行され、「running」が表示される
B. 正常に実行され、「runningrunning」が表示される C. コンパイルエラーになる D. 実行時に例外がスローされる IllegalThreadStateException
解説
• startメソッドによって実行されたメソッドは、runメソッドの実行が完了すると、デッドスレッドとなり、そのスレッドをstartメソッドによって再び起動することはできない。再び起動すると、java.lang.IllegalThreadStateExceptionが送出される。
ジェネリックなComparableインターフェースを実装する型を扱うFooクラスを完成させたい。 空欄①~⑤を埋めよ。(ドラッグ&ドロップ問題)
class Foo< > {
element = null;
public void add( e){ element = e; // some more code }}
① ② ③ ④
⑤
選択肢
? E <?> <E> extends implements super Comparable Comparable<E> Comparable<?>
ジェネリックなComparableインターフェースを実装する型を扱うFooクラスを完成させたい。 空欄①~⑤を埋めよ。(ドラッグ&ドロップ問題)
class Foo< > {
element = null;
public void add( e){ element = e; // some more code }}
E extends Comparable<E>
E
E
選択肢
? E <?> <E> extends implements super Comparable Comparable<E> Comparable<?>
全てミス無く埋めることができて一問分の正解
感想• スレッド、ファイル操作、ポリモーフィズムのきちんとした知識があまりない状態から勉強したため、知識を詰め込むのが結構しんどかった。(2年前当時)
• OCJ-Pは引っかけ問題が多く、2択まで絞り込んでもそれから1択に絞るのが難しく感じた。
• 重箱の隅をつつくような問題が多く、そういった問題の知識を増やすよりはコードを実際に書く方が実務に活きると思った。 個人的な意見としては、新人にはオススメできない。数年Javaを書いた人が、総復習がてらに受験するのは良いと思う。 あとは転職のため?
学んだこと
• スレッドの状態遷移、制御、同期化のお作法を理解できたこと(個人的にはこれが一番業務に繋がった)
• ジェネリクス、ポリモーフィズムを理解することで柔軟なクラス設計ができるようになったこと
• 面倒くさいファイル操作周りの知識をつけられたこと(JDK1.7 New I/O 2のおかげで使用頻度減って悲しい)