Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Javaの資格試験(OCJ-P)を取って何を学んだか

2,137 views

Published on

渋谷Java(LT枠)で発表した内容です。

Published in: Engineering

Javaの資格試験(OCJ-P)を取って何を学んだか

  1. 1. Javaの資格試験(OCJ-P)を 取って何を学んだか 2015-08-01 渋谷Java(LT枠) @nikuyoshi
  2. 2. 本日の発表内容は個人の見解であり、 必ずしも所属組織の立場、戦略、意見 を代表するものではありません。
  3. 3. 自己紹介 • 内田 大樹(@nikuyoshi) • 通信会社の情報システム部門の運用基盤開発部門 • ジョブ管理システム(ex. JP1)を中心に、設計・開発・試験 等を担当しています • Java, JavaScript(Ext JS), HTML, CSS, Shell script • 最近Qiitaに記事を投稿することが増えました
  4. 4. 実家は熱海で喫茶店を やってます(宣伝)
  5. 5. 受験したきっかけ
  6. 6. とりあえずJavaの資格取ってこい
  7. 7. 承知いたしました(ガクガク
  8. 8. Oracle Certified Java Programmer, SE5/6 (OCJ-P) とは何か?
  9. 9. 試験概要 問題数 60問 合格ライン 61% 試験時間 150分 出題形式 多肢選択式 / ドラッグ&ドロップ 受験料 34,230円(2013年当時)
  10. 10. 結果、勉強期間、使用教材等 • Java経験: 約半年(2013年5月時点) • 正解率: 66% • 勉強期間: およそ3ヶ月 • 使用教材: 黒本教科書、黒本問題集
  11. 11. 必要な知識 • 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
  12. 12. 例題
  13. 13. 以下のコードをコンパイル、実行した時 の結果として正しいものを選びなさい。 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. 実行時に例外がスローされる
  14. 14. 以下のコードをコンパイル、実行した時 の結果として正しいものを選びなさい。 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
  15. 15. 解説 • startメソッドによって実行されたメソッドは、 runメソッドの実行が完了すると、デッドス レッドとなり、そのスレッドをstartメソッド によって再び起動することはできない。再び起 動すると、 java.lang.IllegalThreadStateExceptionが送出 される。
  16. 16. ジェネリックなComparableインターフェースを実装する 型を扱うFooクラスを完成させたい。 空欄①∼⑤を埋め よ。(ドラッグ&ドロップ問題) class Foo<                     > { element = null; public void add( e){ element = e; // some more code } }  ①   ②   ③   ④   ⑤  選択肢 ? E <?> <E> extends implements super Comparable Comparable<E> Comparable<?>
  17. 17. ジェネリックな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<?> 全てミス無く埋めること ができて一問分の正解
  18. 18. 感想 • スレッド、ファイル操作、ポリモーフィズムのきちんとした知識があ まりない状態から勉強したため、知識を詰め込むのが結構しんどかっ た。(2年前当時) • OCJ-Pは引っかけ問題が多く、2択まで絞り込んでもそれから1択に絞 るのが難しく感じた。 • 重箱の隅をつつくような問題が多く、そういった問題の知識を増やす よりはコードを実際に書く方が実務に活きると思った。 個人的な意見 としては、新人にはオススメできない。数年Javaを書いた人が、総復 習がてらに受験するのは良いと思う。 あとは転職のため?
  19. 19. 学んだこと • スレッドの状態遷移、制御、同期化のお作法を理解で きたこと(個人的にはこれが一番業務に繋がった) • ジェネリクス、ポリモーフィズムを理解することで柔 軟なクラス設計ができるようになったこと • 面倒くさいファイル操作周りの知識をつけられたこと (JDK1.7 New I/O 2のおかげで使用頻度減って悲しい)
  20. 20. 受験して良かった/悪かった点 • 良かった点 • Javaを体系的に勉強することで偏りなく基礎知識が身についたこと • 最低限これだけのスキルを持っていると表明できる形を残せたこと • 悪かった点 • 資格のための勉強をしてしまいがちで、業務に活かしにくいこと • 読めるようにはなるが、スラスラ書けるようにはならないこと

×