Javaプログラマであるかを見分ける10の質問

元ネタはこちらですが、「優れたJavaプログラマ」を見分ける質問ではありません*1。次のような状況を想定してください。

受託業務を中心にしている弊社は、Javaで業務系ウェブアプリケーションの開発を行う事になりました。しかし社内のリソースを使うにも1−2名足らない事が見積もりから解っています。そこで、中堅エンジニアを1−2名募集することになりました。正社員か派遣かは問いませんが、経験が3年程度の中堅プログラマが必要です。同等またはそれ以上のスキルを持つ正社員がプロジェクトを牽引しますが、ゼロから教えながら教育することはできないので、必要最低限のスキルを持っていることが条件になります。

こんな状況を想定して、面接の質問を考えてみました。経験が3年程度あれば、問題なく答えられるはずです*2。尚、質問はホーム言語がJavaである前提です。

下記質問にそれぞれ50文字以内を目安に簡単に説明すること。

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

80%程度は回答できるプログラマを採用したい所です。

追記

文字列の連結については語弊が無いような表記に変えてみました。

*1:自称Javaプログラマを見分ける質問です

*2:職場でやってみるのはホラーの場合がありますのでご注意ください