忍者ブログ
よくわからないことを調べて解説してみるブログ。

2024

1205
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2016

0626
OCJP Gold 7(Java SE Programmer Ⅱ)に合格しました。
無料キャンペーンを利用して、4回受けていました。
なのであまりえらそうなことは書けません。

利用したのは下記の本です。
問題演習はやっておいて損はないです。


絶対に合格するなら、
テスト範囲の標準APIについて、
・JavaDocを読み込んでいること
 概要説明の記述を見て何のクラスのことか思い浮かべればベスト。

・クラス図を描けること
 CollectionAPIやDBアクセス周りのクラス構成の理解。
 これをやっておくと、~Setに対する理解が非常に深まりますし、
 Javaそのものの考え方にも触れることが出来ます。

・一連のメソッドの動作仕様の理解
 クラスの責務を果たすメソッドの複数回実行。
 クラスの責務を補佐するメソッドの実行後の責務を果たすメソッド実行時の挙動。

・各メソッドの矛盾した利用による動作
 例えば、
    resultSet.absolute(1);
    resultSet.next();を2回実行したときの挙動は?

なぜ8ではなく7かというとラムダに苦手意識があるためです・・・。
いずれUpdate試験は受ける予定です。

拍手[0回]

PR

2016

0521
public class Main {
	public static void main(String[] args) {
		A a = new A();
		Thread aThread = new Thread(a, "AThread");
		Thread bThread = new Thread(a, "BThread");
		System.out.println("aThread.getState() :" + aThread.getState());
		aThread.start();
		System.out.println("aThread.getState() :" + aThread.getState());
		try {
			aThread.join();
		} catch (InterruptedException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
		System.out.println("aThread.getState() :" + aThread.getState());
		aThread.start();
	}
}
実行結果
aThread.getState() :NEW
aThread.getState() :RUNNABLE
aThread.getState() :TERMINATED
Exception in thread "main" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:705)
at thread.joinToStart.Main.main(Main.java:18)
上記のとおり、
new Thread():NEW
start()             : RUNNABLE
join() 後   :TERMINATED
となり、再度start()することはできない。

拍手[0回]

2015

0712
61%で不合格。
合格ラインは65%だった。

試験結果からのフィードバックは、
  • アサーションを使用した不変量のテスト
  • インタフェースの継承とクラスの継承の選択
  • コレクションを作成するためのダイアモンド演算子の使用
  • シングルトン・デザイン・パターンを使用したクラス設計
  • スレッドのライフサイクルの管理と制御
  • スレッドの潜在的な問題の識別
  • ファイルの読み込みおよび書き込みのためのストリームの使用
  • メソッドのオーバーライド
  • ラッパー・クラスとオートボクシングの使用
  • 共有データに対するスレッドのアクセスの同期化
  • 従来型とジェネリックス型を使用したコレクションの相互運用性の分析
  • 文字列の検索、解析および作成
  • 書式指定パラメータを使用した文字列の書式化: %b、%c、%d、%f、%s
  • 最上位レベルとネストクラスの作成
  • (ピリオド)、*(アスタリスク)、+(プラス)、?、\d、\D、\s、\S、\w、\W、\b、\B、[]、()などのパターンを正規表現で使用して、文字列の検索、解析および置換を行う
  • JDBCのトランザクションの振る舞いのカスタマイズとトランザクションのコミット
  • WatchServiceを使用したディレクトリ変更の監視
  • is-a関係とhas-a関係を実装するコードの作成
  • throw文とthrows文の使用


覚えている範囲で、分からなかったところ。
・printfの引数の解釈ごとに例外が起きうるか?起きる場合、どのような例外か?
・シングルトンパターン
・compute,joinの用法
・split,tokenizer,scannerの違い
・is-a,has-aの理解
・メソッド内のクラス宣言は可能か?
・オートボクシングとオーバーロードにおける配列型と可変長引数の切り替え、型違いの切り替えについて
・volatile
・ライブロック
・スレッドAのインスタンスオブジェクトを扱うsyncronizedメソッドAから更なるsyncronizedメソッドBを呼び、
 その後スレッドAから同様のメソッドAが呼ばれたとき、メソッドBからメソッドへ戻って来れるか???
・BufferedInputReaderの skipメソッド
・各入出力クラスの上書きオプションの指定方法について

90問中、まったく適当であろうと感じたケースが19問。
あとはある程度、判断できた問題が71問。
実際には、35問(39%)を間違えており、出来ると思い込んでいた問題が16問。

・スレッドの問題は、印象に残りやすいが4~6問程度だったか。フィードバックを見る限り3問は間違えている・・・・
・NIO2は、問題集の範囲内で対応できた。
・is-a,has-aが分かっていない・・・


次回は、RETAKEキャンペーンがまた始まったらチャレンジとなるため、
おそらく例年通りであれば12月以降となる・・・。


余談だが、
来月末はJSTQB Foundation(ソフトウェアテストにおける認定資格)を受験予定。

拍手[0回]

2015

0623
package june20150623;

public class InnerStaticClass {
	static class InnerClass{
		public int no = 10;
		public static int value = 11;
	}
	class InnerClass2{
		public int no = 12;
//		public static int value = 13;	//	コンパイルエラー!staticでないインナークラスにstatic変数はfinal修飾子が必須。
										//	トップクラスおよび静的インナークラスのみ、staticの非final変数定義が許可されている。
										//	実行時のエラーメッセージ和訳
										//	「定数式で初期化されない限り、フィールドの値は、
										//	非静的インナータイプで静的に宣言することはできません」
		public static final int value2 = 14;
	}
	public static void main(String[] args) {
//		int no = new InnerStaticClass().InnerClass.no;	// コンパイルエラー!メンバ変数はstaticではない。

		//	instance-value of static inner class
		int no = new InnerStaticClass.InnerClass().no;	// メンバ変数はインスタンス変数であるため、インスタンス化したうえでのアクセスが可能。
														// インナークラスへのアクセスはstaticに可能。

		// static-value of static inner class
		no = InnerStaticClass.InnerClass.value;			// static インナークラスのstaticメンバ定義

//		no = new InnerStaticClass.InnerClass2().no;		// 最上位クラスのインスタンス化が前提と成るため、コンパイルエラー!

		// instance-value of non-static inner class
		no = new InnerStaticClass().new InnerClass2().no;

		// static-value of non-static inner class

		no = InnerStaticClass.InnerClass2.value2;		// non-static インナークラスへのstaticメンバ定義(final必須)
	}
}


・インナークラスの生成式
 new 最上位クラス(). new インナークラス();

・非staticインナークラスのメンバへのアクセス
 new 最上位クラス.new インナークラス().メンバ変数;

・非staticインナークラスのstaticメンバへのアクセス
 最上位クラス.インナークラス.staticメンバ変数;

・staticインナークラスのメンバへのアクセス
    最上位クラス.new インナークラス.メンバ変数;
  
  メンバ変数がstaticでないため、インナークラスをインスタンス化することでしか、メンバ変数を実体化出来ないため、本来不要であるstaticクラスのインスタンス化が必要となっている。

・staticインナークラスのstaticメンバへのアクセス
 new 最上位クラス.インナークラス().staticメンバ変数;

・トップクラスおよび静的インナークラスのみ、staticの非final変数定義が許可されている。

拍手[0回]

2015

0623
package june20150623;

public class ConstractaDoubleInitializeValue {

	public static void main(String[] args) {
		new Parent();
	}
}

class Human {
	final int age;
	final static int heigt; //	コンパイルエラー!final static 変数は、変数定義時、staticイニシャライザにて初期化が可能。
	final static int weight;//	final static 変数は、変数定義時、staticイニシャライザにて初期化が可能。
	static {
		weight = 50;
	}

	public Human(int age) {
		this.age = age; //	final変数への初期化はコンストラクタでは可能。
	}
}

class Parent extends Human {
	public Parent() {
		this(10);
		age = 20; // コンパイルエラー!final変数への初期化は一度のみ許される。
	}

	public Parent(int age) {
		super(age);
	}
}

class Child extends Human {

	public Child(int age) {
		super(age);
	}
}
実行結果
Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
ブランクの final フィールド heigt は初期化されていない可能性があります
final フィールド Human.age には代入できません
at june20150623.Parent.<init>(ConstractaDoubleInitializeValue.java:12)
at june20150623.ConstractaDoubleInitializeValue.main(ConstractaDoubleInitializeValue.java:6)

拍手[0回]

| HOME | 次のページ忍者ブログ [PR] * Template by TMP >>
プロフィール
HN:
たんてーくん
性別:
非公開
フリーエリア
最新CM
[09/25 http://2017.bblbuy.com]
[09/24 http://www.japanform.com]
[09/23 http://www.japanform.com]
[09/22 http://www.japanform.com]
[09/21 http://2017.bblbuy.com]
ブログ内検索
忍者ブログ [PR]
* Template by TMP