「Javaプログラマであるかを見分ける10の質問」に答えてみた

@IT読んでたら、巡り巡ってこんなとこに辿り着いた。
Javaプログラマであるかを見分ける10の質問 - やさしいデスマーチ

  1. ==演算子とequalsメソッドの違いは何か?
  2. 文字列の+演算子による連結とStringBuilderを使った連結の違いを説明せよ。文字列の連結は原則として+演算子を使ってはならない理由を説明せよ。
  3. Listのようにジェネリクス型を使う主たる目的は何か?
  4. オブジェクトがガベージコレクションGC)される主たる条件は何か?
  5. チェック例外と非チェック例外の違いを型と例外処理の観点で説明せよ。
  6. フィールドのアクセス修飾子をprivateにしgetter/setterメソッドを提供する事でフィールドを参照する設計方針を取る主な理由を説明せよ
  7. NullPointerExceptionが発生するのは主にどういう状況か?
  8. オーバーロードとオーバーライドの違いは何か?
  9. コンストラクタとは何か?
  10. インターフェイスを利用する目的を1つ説明せよ


俺の程度が知れてしまうからちょっと怖いが、ちょっと回答してみた。

  1. オブジェクト自体の等価か、中身の等価か。
  2. 遅いしメモリ食うから。実践して比較してみたことはないので今もそうかは知らない。
  3. 型の安全性の担保とキャストの省略。
  4. 他からの参照がなくなったら。
  5. Javaの言語仕様としてコンパイル時に検査する必要があるかどうか。コンパイル時にtry〜catchが要るとか要らんとかそんな話ならくだらん。
  6. setかgetの抑制ができる。また、set、get時に小細工できる。
  7. 主に、の意味が分からんが、大体変数がnullのまま他の処理に渡しちゃった時。
  8. 処理自体の上書きか、同名メソッドの別振る舞いか、多態性のアプローチの違い。
  9. インスタンス作るときの処理。
  10. 参照する相手に中身に関係なく振る舞いだけ提供できるから。Strategyパターンとか。

どうだろう・・・。


Javaできます!っていうやつに改めて問うてみたい気はする。
質問によっては明確な答えは無いし、各自で考え方も違うから(そもそも考えてれば、だけど)、議論にもなって面白いかも。
あと、要員面談とかする時に聞いてみたい気はするが、こんなこと聞いてくるやつねちっこいよなw