Javaプログラマであるかを見分ける10の質問に答えてみる(採点編)

Javaプログラマであるかを見分ける10の質問に答えてみる - MasaHeroの日記
出題者の回答*1を元に採点してみる。

  1. ==演算子とequalsメソッドの違いは何か?
    • オブジェクトidの比較とオブジェクトの中身の比較
      • 正解
  2. 文字列の連結は原則として+演算子を使ってはならない理由を説明せよ。
    • 余分にStringオブジェクトが生成されるから
      • ?たぶん正解
  3. Listのようにジェネリクス型を使う主たる目的は何か?
    • 型変換のためのコード削減と型変換ミスの予防
      • 正解
  4. オブジェクトがガベージコレクションGC)される主たる条件は何か?
    • 参照カウンタが0になった
      • 正解
  5. チェック例外と非チェック例外の違いを型と例外処理の観点で説明せよ。
    • RuntimeExceptionとErrorのどちらからの派生なのか。
      • 例外処理について全く触れてないので不正解
  6. フィールドのアクセス修飾子をprivateにしgetter/setterメソッドを提供する事でフィールドを参照する設計方針を取る主な理由を説明せよ
    • 値チェックと整形を行わせるため
      • ?たぶん正解
  7. NullPointerExceptionが発生するのは主にどういう状況か?
    • スレッド間の同期をミスったとき
      • 不正解
  8. オーバーロードとオーバーライドの違いは何か?
    • 何か違いあったっけか。
      • 回答放棄により不正解
  9. コンストラクタとは何か?
  10. インターフェイスを利用する目的を1つ説明せよ
    • 多種類のクラスを同一の関数で取り扱う。
      • たぶん正解

8割正解。たぶんとなっているところを差し引いたら4割。一番少ないといわれた層に該当。とりあえず書いてみて動けばOK、ダメならそのとき考えるてなことをやっていたらこのざまです。ていうか、プログラムを書いてるけどプログラマとして学習してないのでこのざまなのかもしれない。用語の解説とかよりもとりあえずサンプルコードなのはダメか。

Javaプログラマ名乗るならEffective Javaを読みましょうという事です。必須ではないけど、効率よく学習したいならばEffective Javaを読むべきです。また、ある程度の回答が出てくるのであれば、一緒に仕事をして経験を積んで欲しい人かもしれないので自分であれば歓迎します。正しい解答は必要な事ではありません。

EffectiveシリーズはC++だけはかなり前に読んだな。もう忘れたけど。探せば本棚にあるはず。

ということで、私はJava中堅プログラマの補充人員として歓迎されるそうです。その業界に籍を置く可能性はなかなか少なそうですが、今の会社を首になったら考えよう。