以下は、面接・筆記試験・コーディングテストで非常によく聞かれる Java Tips を、出題頻度が高い順・実務視点で体系的にまとめたものです。
(丸暗記ではなく「なぜそうなるか」を説明できるレベルを想定しています)
① 言語仕様・基本構文(最頻出)
1. == と equals() の違い
==:参照(アドレス)比較equals():内容比較(Objectは参照比較)String / Integerはオーバーライド済み
2. String は不変(immutable)
- 変更時は新しいインスタンス生成
- 文字列結合は
StringBuilderを使う
3. StringBuilder と StringBuffer
StringBuilder:非同期・高速StringBuffer:同期化・低速
4. final の3用途
- 変数:再代入不可
- メソッド:オーバーライド不可
- クラス:継承不可
5. プリミティブ型とラッパークラス
intvsInteger- オートボクシング / アンボクシング
② コレクション(超頻出)
6. ArrayList と LinkedList
| 観点 | ArrayList | LinkedList |
|---|---|---|
| 検索 | 速い | 遅い |
| 追加削除 | 遅い | 速い |
| メモリ | 少 | 多 |
7. HashMap の仕組み
hashCode()→ バケット →equals()- Java8 以降は衝突時に赤黒木
8. HashMap と ConcurrentHashMap
HashMap:非スレッドセーフConcurrentHashMap:部分ロック
9. Set と List
Set:重複不可List:順序あり・重複可
10. Collections と Collection
Collection:インタフェースCollections:ユーティリティクラス
③ オブジェクト指向(理解必須)
11. 継承と委譲の違い
- 継承:is-a
- 委譲:has-a(実務推奨)
12. 抽象クラス vs インタフェース
| 項目 | 抽象クラス | インタフェース |
|---|---|---|
| 継承 | 単一 | 多重 |
| フィールド | 可 | 定数のみ |
| 実装 | 一部可 | デフォルト可 |
13. オーバーライドの条件
- 引数同じ
- 戻り値は共変可
- アクセス修飾子は弱くできない
14. ポリモーフィズム
- 親型参照 + 子インスタンス
- 実行時バインディング
④ 例外処理(面接常連)
15. Exception と RuntimeException
Exception:検査例外RuntimeException:非検査例外
16. try-catch-finally
finallyは基本必ず実行returnがあっても実行される
17. 独自例外を作る理由
- 業務エラーの意味を明確化
- ログ・ハンドリング向上
⑤ JVM・メモリ(中〜上級)
18. ヒープとスタック
- ヒープ:オブジェクト
- スタック:ローカル変数・参照
19. ガベージコレクション
- 到達不能オブジェクトを回収
System.gc()は保証なし
20. クラスロードの流れ
- ロード → リンク → 初期化
⑥ マルチスレッド(差がつく)
21. synchronized
- 排他制御
- メソッド or ブロック単位
22. volatile
- 可視性保証
- 排他制御ではない
23. Thread vs Runnable
Runnable推奨(多重継承回避)
24. ExecutorService
- スレッドプール管理
shutdown()必須
⑦ Java8+(現代Java)
25. Lambda式
list.forEach(s -> System.out.println(s));
Java26. Stream API
map / filter / collect- 遅延評価
27. Optional
NullPointerException回避isPresent()よりorElse
28. default メソッド
- 既存IFの後方互換
⑧ よくある引っかけ問題
29. null instanceof Object
→ false
30. finally の return
→ try の return を上書き
31. Integer キャッシュ
-128 ~ 127は同一参照
32. 配列は参照型
- メソッド引数で変更される
⑨ 実務・設計系(評価が上がる)
33. static の使いどころ
- 状態を持たせない処理
- ユーティリティ
34. 不変オブジェクトの利点
- スレッドセーフ
- バグ減少
35. ログは System.out ではない
SLF4J + Logback
⑩ 面接官がよく聞く質問例
- 「
HashMapの中身を説明してください」 - 「
equals()だけ実装すると何が起きますか」 - 「
volatileは何を保証しますか」 - 「
Stringが immutable な理由は?」


