Javaプログラマであるかを見分ける10の質問に挑戦してみた

http://d.hatena.ne.jp/shuji_w6e/20110305/1299288660
私は実務経験などないし、3年もJavaやってるわけでもないので
自信はないのですが、勉強のためにも1問1答してみたいと思います。
誤りなどぜひ指摘して下さると嬉しいです。


1. ==演算子とequalsメソッドの違いは何か?
==演算子がオブジェクトそのものの同一性を比較するのに対して、equalsメソッドはその定義により同値性を比較する。


2. 文字列の連結は原則として+演算子を使ってはならない理由を説明せよ。
だめなのか!
えーと、連結といってもString自体は文字列の変更を行うことは想定されていないので、オブジェクトが新しく生成されるため、リソースの無駄な消費や処理速度の低下がある…んでしょうか。


3. Listのようにジェネリクス型を使う主たる目的は何か?
そのListに対して要素を追加したり削除したりする際に、型安全性が保証される。


4. オブジェクトがガベージコレクションGC)される主たる条件は何か?
…そのオブジェクトが参照されなくなったとき…?


5. チェック例外と非チェック例外の違いを型と例外処理の観点で説明せよ。
チェック例外は実行前に想定される例外(入出力のエラーとか)で、非チェック例外は実行中に起こる例外(配列外参照とか)…だと思ってたけど、型って…RuntimeExceptionを継承してるかどうかの違いとか…?


6. フィールドのアクセス修飾子をprivateにしgetter/setterメソッドを提供する事でフィールドを参照する設計方針を取る主な理由を説明せよ
フィールドへのアクセスはそのメソッドを介してのみ行われることにより、カプセル化を実現する。
って、理由になってないかも…


7. NullPointerExceptionが発生するのは主にどういう状況か?
参照しようとしたオブジェクトがまだ生成されていない場合。例えば、あるクラスのメンバーであるオブジェクトがまだインスタンス化されていないのに、参照しようとしたときとか。


8. オーバーロードとオーバーライドの違いは何か?
オーバーロードは、シグネチャの異なる同名のメソッドが実装されること。オーバーライドは、スーパークラスと同じシグネチャのメソッドを、新たに実装すること。


9. コンストラクタとは何か?
new演算子によりそのオブジェクトがインスタンス化された際に呼び出されるもの。オブジェクトの初期値設定などを記述する。


10. インターフェイスを利用する目的を1つ説明せよ
ある仕様に対して異なる実装がある場合、インタフェースが共通していれば、複数のクラスが同じ振る舞いを行うことができ、ポリモーフィズムが実現される。


うわぁ、疑問符が多い。
一応何かしら書いたけれど、点数にするとどうなんでしょう…
80%程度回答できていれば中堅プログラマとして採用されるらしいです。