A7Mの日記: Re:Javaプログラマであるかを見分ける10の質問
Javaプログラマであるかを見分ける10の質問なるものがあり、Javaは好きだけど、完全に理解しているわけでもなく、間違いと勘違いがあるはずだけど、頭の体操がてら答えてみた。
1. ==演算子とequalsメソッドの違いは何か?
==はオブジェクトが同一であるか否か。equalsはオブジェクトが同値であるか否かの比較。
2. 文字列の+演算子による連結とStringBuilderを使った連結の違いを説明せよ。文字列の連結は原則として+演算子を使ってはならない理由を説明せよ。
余分な文字列オブジェクトが生成されるのを防ぐためじゃなかったっけ?
3. List<Integer>のようにジェネリクス型を使う主たる目的は何か?
「車輪の再発明」を防ぐため。すでに存在している一般的なロジックはプログラマが記述するものではない。
4. オブジェクトがガベージコレクション(GC)される主たる条件は何か?
オブジェクトが参照されなくなったときじゃなかったっけ?
5. チェック例外と非チェック例外の違いを型と例外処理の観点で説明せよ。
??? orz
6. フィールドのアクセス修飾子をprivateにしgetter/setterメソッドを提供する事でフィールドを参照する設計方針を取る主な理由を説明せよ
フィールドの上限下限のように、値が妥当か否かを容易にチェックできる。もしくは、デバッグ時にフィールドの値が「どこで」変化するかを容易に検知できるから。
7. NullPointerExceptionが発生するのは主にどういう状況か?
初期化されていないオブジェクトを参照した。
8. オーバーロードとオーバーライドの違いは何か?
オーバーロードはメソッドの多重定義。同名でも引数の違いで区別する。オーバーライドはメソッドの上書き。サブクラスで同一名称、同一引数のクラスの挙動を変える。
9. コンストラクタとは何か?
オブジェクトが生成されるときに呼び出されるメソッド。
10. インターフェイスを利用する目的を1つ説明せよ
特定の動作(メソッド)をグループ化しておくことにより、サブクラスで必要最低限な挙動の交通整理を行う。
正直、正解か否か自信が無い。orz
追記1:
この回答は(ネタ的な意味で)酷いwwwwwwwww
Re:Javaプログラマであるかを見分ける10の質問 More ログイン