以下は業務でよく使う順に並べた 500 のトピック / テクニック です。項目ごとに短い説明と代表的な用途を添えています。まず大分類ごとに分け、業務で即役立つ順に並べました。
- 1〜50:言語基本・実務で頻出(50件)
- 51〜100:コレクション(List/Map/Set など)— 実務パターン(50件)
- 101〜150:ストリームとラムダ(50件)
- 151〜200:並列・並行処理(50件)
- 201〜240:入出力・NIO(40件)
- 241〜270:データベース / JDBC(30件)
- 271〜300:ネットワーク・HTTP(30件)
- 301〜330:Web/サーバサイド(Servlet / Spring 等)— 実務(30件)
- 331〜360:シリアライズ・JSON・XML(30件)
- 361〜390:テスト・デバッグ(30件)
- 391〜410:ビルド・デプロイ・ツール(20件)
- 411〜430:セキュリティ(20件)
- 431〜450:パフォーマンス・プロファイリング(20件)
- 451〜475:設計パターン・アーキテクチャ(25件)
- 476〜490:外部 API・連携(15件)
- 491〜500:実務で便利な小ネタ・ユーティリティ(10件)
1〜50:言語基本・実務で頻出(50件)
- 変数宣言(プリミティブ/参照型) — 型選びと初期化。
- 型変換(キャスト、ボクシング/アンボクシング) — データ受け渡し時。
- 条件分岐(if / switch) — ビジネスロジックの分岐。
- ループ(for / enhanced for / while) — 集合処理、レコードループ。
- メソッド定義と引数(可変長引数) — 再利用可能ロジック。
- 戻り値(参照/プリミティブ) — API レイヤ設計。
- 例外処理(try / catch / finally) — 安定性と後始末。
- カスタム例外の作り方 — 明確なエラー伝搬。
- null/Optional の使い分け — NPE 回避、意図の明示。
- String 操作(concat, substring, format) — 表示・ログ処理。
- StringBuilder / StringBuffer — 文字列連結の効率化。
- 配列(一次元・多次元) — 固定長データ処理。
- List / Map / Set の基本概念(インターフェース) — データ構造選択。
- forEach とラムダの基本(簡単な処理) — 可読性向上。
- 可変引数メソッド(…) — 汎用ユーティリティ。
- インスタンス生成(new)とファクトリパターンの基礎 — オブジェクト管理。
- static とインスタンスの違い — 状態管理。
- final の使い方(変数・クラス・メソッド) — 不変性確保。
- アクセス修飾子(public/private/protected/default) — カプセル化。
- クラス設計の基本(単一責任) — 保守性を高める。
- 継承とポリモーフィズム — 拡張性のある設計。
- 抽象クラス vs インターフェース — API 設計の選択。
- 内部クラス(static / 非static / 匿名) — 小さなヘルパー実装。
- Enum の使い方(プロパティとメソッド) — 定数管理。
- アノテーションの基礎(@Override 等) — メタ情報。
- ジェネリクス基礎(型パラメータ) — 型安全なコレクション。
- ワイルドカード(? extends / ? super) — API 汎用性。
- 可視性とパッケージ設計 — モジュール分離。
- 型推論(var) — ローカル変数の簡潔化(Java 10+)。
- 文字列の正規表現(Pattern / Matcher) — テキスト検証。
- 日付時間API(java.time: LocalDate/LocalDateTime/Duration) — 日時処理。
- ロギングの基本(slf4j + Logback 等) — 運用ログ。
- リソース自動クローズ(try-with-resources) — リソース漏れ防止。
- シリアライズ(Serializable の注意点) — 永続化/送受信。
- リフレクション基礎(Class, Method) — フレームワーク開発/DI。
- アサーション(assert) — デバッグ補助。
- アルゴリズム基礎(ソート/検索の考え方) — パフォーマンス判断。
- 配列→コレクション変換(Arrays.asList 等) — API 互換。
- 入出力のエンコーディング(UTF-8 など) — 文字化け防止。
- 簡単なユーティリティクラス作成(static メソッド) — 共通処理集約。
- 依存注入(コンストラクタ注入の利点) — テスト容易性。
- 不変オブジェクトの作り方(Immutable) — スレッド安全。
- equals / hashCode の正しい実装 — コレクションでの動作保証。
- toString の実装方針 — ログ/デバッグの可視化。
- 最小特権の原則(アクセス制御) — セキュリティ基本。
- サニタイズ(入力検証) — セキュリティと整合性。
- Javadoc コメントの書き方 — API ドキュメント化。
- バージョン互換(Java のメジャーアップでの注意) — 移行計画。
- 単体テストを意識した設計(DI, インターフェース分離) — テスト容易性。
- コードスタイルとフォーマッタ(一定の規約) — チーム開発品質。
51〜100:コレクション(List/Map/Set など)— 実務パターン(50件)
- ArrayList の使いどころと性能(ランダムアクセス重視) — 一覧管理。
- LinkedList の使いどころ(頻繁な先頭/中間挿入) — キュー実装。
- HashMap の基本(キーのハッシュ化) — 索引付き検索。
- LinkedHashMap(挿入順/アクセス順保持) — LRU 実装の簡易版。
- TreeMap(ソートされた Map) — 範囲検索。
- HashSet の特性と重複排除 — 一意性保持。
- EnumMap / EnumSet の活用(enum 最適化) — 小さい高速マップ/集合。
- ConcurrentHashMap (スレッド安全な Map) — マルチスレッド環境。
- Collections.unmodifiableList 等(読み取り専用ラッパー) — API 返却時の安全性。
- Collections.shuffle / sort / reverse — リスト操作ユーティリティ。
- Arrays クラスユーティリティ(sort / binarySearch) — 配列操作。
- Collections.synchronizedList 等(同期ラッパー) — 古い同期方法。
- Map.computeIfAbsent / compute / merge — 集計ロジック簡潔化。
- Map のストリーム処理(entrySet→stream) — キー/値単位処理。
- MultiMap パターン(Map<K, List>) — 1対多管理。
- イミュータブルコレクション(List.of, Map.of) — 不変の集合。
- PriorityQueue(優先度キュー) — ジョブスケジューラ。
- Deque(ArrayDeque) — 両端操作、高速スタック/キュー。
- NavigableMap / NavigableSet(近傍検索) — 前後関係の取得。
- WeakHashMap の利用ケース(キャッシュと GC) — メモリリーク防止。
- IdentityHashMap(== でキー比較) — 特殊用途。
- ConcurrentLinkedQueue(ロックフリーキュー) — 高スループット。
- CopyOnWriteArrayList(読み取り多い並列環境) — 読み取り優先。
- Collections.frequency / disjoint などユーティリティ — コレクション比較。
- Stream.collect(Collectors.toList()/toSet()/toMap()) — ストリーム結果変換。
- PartitioningBy / GroupingBy(Collectors) — 集計・グループ化。
- FlatMap を使ったネスト解除 — ネスト構造展開。
- Comparator の作り方(comparing, reversed, thenComparing) — ソートルール。
- 自然順序付け(Comparable) — デフォルトソート。
- サブリスト(subList)の注意点(ビュー) — 変更の影響範囲。
- Immutable key の要件(hashCode/equals 安定) — Map の鍵設計。
- コレクションの初期容量指定(負荷低減) — パフォーマンスチューニング。
- Stream の並列化(parallelStream)と注意点 — スレッド安全性。
- Iterator.remove の正しい使い方 — ループ中の安全な削除。
- ListIterator(双方向反復) — 位置ベースの操作。
- Collections.swap / replaceAll — リスト操作の簡潔化。
- Arrays.copyOf / copyOfRange — 配列操作と拡張。
- Immutable wrappers と defensive copy パターン — API 安全性。
- Map のビュー(keySet, values, entrySet)の使い分け — 効率的操作。
- Stream の無限ストリーム(iterate, generate) — データ生成。
- トポロジカルソート(グラフ→依存解決) — ビルド順や依存解決。
- バッファ付きコレクション(LinkedList の代替) — メモリ/性能の考慮。
- コレクション間の差分(removeAll, retainAll) — 差分集計。
- Map の null キー/値対応(実装差) — 入出力検証。
- ThreadLocal を使ったスレッド依存データ管理 — スレッド単位の状態。
- Collections.newSetFromMap(Map を Set に変換) — カスタム Set 実装。
- Guava / Apache Commons Collections の利用(拡張ユーティリティ) — 実務ツール。
- 多次元配列と List<List> の使い分け — 可変性と利便性。
- バッチ処理用チャンク分割(partitioning) — メモリ制御。
- Iterator vs Stream の使い分け(遅延評価・メモリ) — 性能設計。
101〜150:ストリームとラムダ(50件)
- Stream API の基本(stream(), filter, map, collect) — データ変換。
- Intermediate / Terminal 操作の理解 — パイプライン設計。
- filter・map・flatMap の使い分け — 条件絞りと展開。
- distinct / limit / skip — 重複排除・ページング処理。
- reduce の使い方(集約) — 合算や累積計算。
- collect(Collectors.groupingBy(…)) — グルーピング集計。
- joining(Collectors.joining) — 文字列結合。
- partitioningBy(true/false に分割) — 二分集計。
- summarizingInt/Long/Double — 統計情報を一発取得。
- max/min/findFirst/findAny — 候補抽出。
- anyMatch/allMatch/noneMatch — 条件検査。
- IntStream/LongStream/DoubleStream(プリミティブストリーム) — オートボクシング回避。
- range / rangeClosed(数値ストリーム) — 反復生成。
- Stream.iterate(Java 9 の変化) — シーケンス生成。
- Collectors.toMap の衝突解決(mergeFunction) — Map 化での安全対策。
- Stream 並列化の落とし穴(副作用) — スレッド安全性。
- peek の使い方(デバッグ) — 中間ログ。
- ファイルの行ストリーム処理(Files.lines) — 大規模ファイル処理。
- Optional を返すストリーム処理パターン — null 安全。
- ストリームでの例外処理パターン(ラップ処理) — checked 例外の扱い。
- Collector.of でカスタム Collector 作成 — 特殊な集約。
- 並列ストリームと ForkJoinPool のチューニング — スループット向上。
- ストリームの短絡(short-circuit)操作 — パフォーマンス最適化。
- 並列ストリームでのコンテキスト保持(ThreadLocal の注意) — 意図しない挙動回避。
- flatMap を用いたネスト解除(OptionalやListのネスト) — 構造フラット化。
- Collector joining with delimiter/prefix/suffix — レポート生成。
- IntSummaryStatistics の活用 — 集計情報取得の便利型。
- Stream の例外リカバリ戦略(fallback) — 途中失敗の処理。
- Stream を使った行列変換(transpose) — データ整形。
- サードパーティライブラリ(jOOλ 等)の活用 — ストリーム拡張。
- ストリームでのランダムアクセスの落とし穴 — パフォーマンス評価。
- ストリームチェーンの分割と再利用 — 可読性/保守性。
- Stream サプライヤーパターン(Supplier を用いる) — 再生成可能性。
- 並列 reduce の適切な設計(結合可能な演算) — 正しさの担保。
- イテレータ→ストリームの変換(StreamSupport) — 外部API統合。
- Windowing(スライディング窓)パターン実装 — 時系列処理。
- Stream のメモリ使用量推定と対策 — 大量データ処理。
- 組み合わせ生成(combinatorics via stream) — テストデータ作成。
- Stream と SQL の比較(いつ DB で処理すべきか) — 負荷分散判断。
- ストリームのデバッグ技(ログ出力・中間確認) — トラブルシュート。
- キャッシング Collector(memoizing)パターン — 重い計算の最適化。
- ストリームでの並列グループ化(groupingByConcurrent) — 並列集計。
- reduce で複合オブジェクト集約 — ドメイン集計。
- Stream API によるツリー/グラフ探索(再帰を使わないパターン) — 非再帰探索。
- Stream と Optional の良い組み合わせ — 値の有無ハンドリング。
- lazy evaluation の理解(中間操作は遅延) — 無駄な処理回避。
- Stream を使った CSV → オブジェクト変換 — ETL の簡潔化。
- parallelStream のベンチマーク方法 — 実運用での検証。
- Stream を用いたデータ整形パイプライン設計 — パイプラインアーキテクチャ。
- ストリーム処理の設計ガイドライン(副作用禁止等) — 保守性向上。
151〜200:並列・並行処理(50件)
- Thread の基礎(作成・start/run) — 低レベル並列処理。
- Runnable と Callable の違い — 戻り値と例外処理。
- ExecutorService の使い方(固定スレッドプール) — スレッド管理。
- Future / CompletableFuture の基本 — 非同期処理と結果取得。
- CompletableFuture.thenApply / thenCompose / thenCombine — 非同期パイプライン。
- Executor のシャットダウンの正しい手順 — リソースリーク回避。
- ScheduledExecutorService(定期タスク) — バッチ/スケジューリング。
- synchronized ブロックとメソッド — 排他制御の基本。
- Lock(ReentrantLock)と Condition — 柔軟な同期制御。
- ReadWriteLock(読み取り優先) — 読み取り多めの場面。
- volatile の意味と使いどころ — 可視性確保。
- AtomicInteger / AtomicReference — ロックレス操作。
- CountDownLatch / CyclicBarrier — スレッド同期パターン。
- Phaser(高度な同期) — 柔軟なバリア同期。
- Semaphore(同時実行数制限) — リソース制御。
- ThreadPool のチューニング(コア/最大/キュー) — 性能最適化。
- Work stealing と ForkJoinPool — divide-and-conquer 型処理。
- Deadlock の原因と検出方法 — 安全性確保。
- Livelock と Starvation の理解と回避策 — 公平性。
- 非同期エラーハンドリング(exceptionally, handle) — 失敗回復。
- BlockingQueue(ArrayBlockingQueue, LinkedBlockingQueue) — 生産者/消費者。
- Disruptor パターン(高性能キュー) — 高スループット要求時。
- ThreadLocal の正しい使用(クリーンアップ必須) — リクエスト単位の状態。
- synchronized vs Lock の使い分け — 性能と機能性。
- Fork/Join を使った並列分割処理 — 大量データの並列処理。
- 非同期ストリーミング(Reactive の基礎) — イベント駆動処理。
- CompletableFuture と Executor を組み合わせたワークフロー — 実務タスク管理。
- 非同期パイプラインの構築パターン(fan-out/fan-in) — 並列処理集約。
- Future.get のタイムアウト指定 — ハング防止。
- スレッド名や例外ハンドラの設定 — 運用性向上。
- ThreadPoolExecutor のカスタマイズ(RejectedExecutionHandler) — オーバーフロー対処。
- 並列コレクション(ConcurrentLinkedDeque など) — 高並列のデータ構造。
- 信号待ち / notifyAll の正しい使い方 — 待ち合わせの実装注意。
- スレッドプールでのネスト呼び出し(deadlock の注意) — 設計上の落とし穴。
- 非同期ログ記録の考え方 — パフォーマンスと順序保証。
- バックプレッシャーの概念(Reactive) — 過負荷制御。
- 非同期テスト(CompletableFuture のテスト) — テスト方法。
- 並列処理でのトランザクション境界 — 一貫性の保持。
- 非同期 API の設計(コールバック/Promise/Reactive) — API 利便性。
- Lock-free データ構造の基礎概念 — 高性能設計。
- 并行ストリームと ForkJoinPool の関係 — 運用チューニング。
- 非同期例外のロギングと監視 — 運用可観測性。
- スレッドセーフなシングルトン実装 — 初期化安全性。
- スレッド間通信(Queue ベース) — 非同期連携。
- CPU バウンド vs I/O バウンド の適切なスレッド数 — リソース最適化。
- メモリバリアの概念(JMM) — 正しい並行設計理解。
- 非同期処理の可視化(メトリクス) — 運用判断。
- 逐次実行にフォールバックする戦略(graceful degradation) — 安全性設計。
- CompletableFuture.allOf / anyOf の使いどころ — 複数非同期の集約。
- 並列処理のプロファイリング(スレッドダンプ分析) — ボトルネック特定。
201〜240:入出力・NIO(40件)
- File / Path(java.nio.file.Path)の基本操作 — ファイルの基本入出力。
- Files クラスユーティリティ(readAllLines, write) — 小規模ファイル処理。
- BufferedReader / BufferedWriter の使い方 — 効率的なテキスト入出力。
- InputStream / OutputStream の扱い(バイナリ) — バイナリデータ処理。
- FileChannel / ByteBuffer(NIO) — 高速なファイルアクセス。
- AsynchronousFileChannel(非同期ファイル I/O) — 非同期大容量処理。
- Paths.get と相対/絶対パスの注意 — 環境差対応。
- WalkFileTree(ファイルツリー操作) — 再帰的処理。
- WatchService(ファイル監視) — ファイル変更トリガー。
- Charset と文字コード変換 — マルチバイト文字対応。
- RandomAccessFile(ランダム読み書き) — 頻繁な部分更新。
- ZipFile / ZipOutputStream(圧縮/展開) — ファイル圧縮処理。
- Stream を使ったファイル行処理(Files.lines) — 大ファイルの逐次処理。
- Scanner の使いどころ(簡易分解) — 入力解析。
- IO のバッファサイズチューニング — 性能向上。
- try-with-resources での複数リソース管理 — クリーンアップ自動化。
- ソケット I/O(Socket/ServerSocket)基礎 — TCP 通信。
- DatagramSocket(UDP)基礎 — 軽量の単発送信。
- URLConnection / HttpURLConnection(旧) — シンプルな HTTP 通信。
- java.net.InetAddress(DNS/ホスト解決) — ネットワーク情報取得。
- NIO Selector(マルチプレクス入出力) — 大量同時接続処理。
- ファイルロック(FileLock) — 競合制御。
- 標準入出力(System.in/out/err)の扱い — CLI ツール。
- Properties ファイル読み書き — 設定管理。
- Preferences API(軽量設定ストレージ) — ユーザー設定保持。
- MIME 型判定と Content-Type 処理 — HTTP ヘッダの扱い。
- 圧縮ストリーム(GZIPInputStream/OutputStream) — ネットワーク軽量化。
- Base64 エンコード/デコード — バイナリ→テキスト変換。
- IO 例外ハンドリングの設計(リトライやフォールバック) — 信頼性向上。
- バイト順(エンディアン)の扱い — バイナリプロトコル対応。
- File.separator と OS 非依存パス設計 — クロスプラットフォーム対応。
- TemporaryFile の作成とクリーンアップ — 一時ファイル管理。
- ファイル権限(PosixFilePermissions) — セキュリティ考慮。
- 大容量ファイルの分割/結合パターン — バッチ処理。
- ストリーミング応答(HTTP レスポンスの逐次送信) — メモリ節約。
- 文字コード検出(BOM 判定等) — 入力前処理。
- NIO2 の PathMatcher(glob, regex) — ファイルマッチング。
- ファイルアップロード処理の実装パターン — Web アプリ用。
- FileSystem abstraction(ZIP FS など) — 仮想ファイルシステム利用。
- IO のテスト戦略(モック、TempDir) — 単体テスト設計。
241〜270:データベース / JDBC(30件)
- JDBC ドライバの基本設定と接続(DriverManager) — DB 接続初期化。
- DataSource とコネクションプーリング(HikariCP 等) — 接続効率化。
- PreparedStatement の利用(パラメータ化) — SQL インジェクション防止。
- トランザクション管理(commit/rollback, autoCommit) — データ一貫性。
- Batch 処理(addBatch / executeBatch) — バルク書き込み高速化。
- ResultSet の正しいクローズ順序 — リソースリーク回避。
- JDBC の例外ハンドリング(SQLState, errorCode) — 障害対応。
- NamedParameter(JdbcTemplate など)パターン — 可読性向上。
- ORマッパー(JPA/Hibernate)の基本と利点 — 生産性向上。
- エンティティ設計(ID 戦略、正規化) — 永続化設計。
- クエリ最適化(索引の利用、EXPLAIN) — 性能チューニング。
- ページング実装(limit/offset, keyset pagination) — UI 用データ取得。
- トランザクションの伝播(PROPAGATION)概念 — サービス連携。
- コネクションリーク検出設定(pool の診断) — 運用安定化。
- 楽観ロック vs 悲観ロック — 同時更新対策。
- カスタム SQL と ORM の使い分け — 性能と柔軟性。
- ストアドプロシージャ呼び出し(CallableStatement) — DB 側ロジック利用。
- スキーママイグレーションツール(Flyway, Liquibase) — DB 変更管理。
- 分散トランザクション(2PC)の基本と回避策 — 複雑性軽減。
- DB 接続情報の安全な管理(暗号化/シークレット管理) — セキュリティ。
- キャッシング(二次キャッシュ/アプリ側キャッシュ) — DB 負荷軽減。
- スロークエリ検出と対応フロー — 運用改善。
- 実行計画の読み方(INDEX 使用状況) — クエリ最適化判断。
- JDBC テンプレートパターン(template method) — ボイラープレート除去。
- JDBC でのストリーミング(fetchSize) — 大量データ処理。
- BLOB / CLOB の扱い方 — 大容量データ格納。
- 文字コード問題の対処(DB 側とアプリ側の整合) — 文字化け回避。
- DB 障害時のフォールバック戦略(retry, circuit breaker) — 可用性向上。
- マルチテナント設計パターン(schema vs column) — SaaS 向け設計。
- DB のモニタリング指標(接続数/クエリ遅延) — 運用可観測性。
271〜300:ネットワーク・HTTP(30件)
- HttpClient(Java 11+)の基本利用 — HTTP 通信。
- タイムアウト設定(connect/read) — 外部依存の堅牢化。
- HTTP ヘッダの扱い(Content-Type, Authorization) — プロトコル設計。
- REST API 設計の基本(エンドポイント設計、ステータスコード) — API 品質。
- エラーハンドリングと標準化(エラーコード/ボディ) — クライアント互換性。
- JSON シリアライズ/デシリアライズ(Jackson/Gson) — データ交換。
- HTTP ステータスコードの使い分け(200/201/400/401/403/404/500) — API 運用。
- Keep-Alive と接続再利用 — ネットワーク効率。
- TLS/SSL の基本設定(証明書、信頼ストア) — セキュア通信。
- 認証方式(Basic, Bearer, OAuth2) — セキュリティ設計。
- CORS(クロスオリジン)の理解と設定 — ブラウザ互換。
- HTTP/2 の利点と対応策 — レイテンシ削減。
- WebSocket(双方向通信)利用ケース — リアルタイム更新。
- gRPC の使いどころとメリット — 高速 RPC。
- API バージョニング戦略(URL / header) — 互換性維持。
- Rate Limiting(レート制限)実装方法 — 公平な利用制御。
- Circuit Breaker(resilience4j / Hystrix) — 外部依存の耐障害性。
- ヘルスチェックエンドポイント設計(/health) — オーケストレーション連携。
- API ドキュメント化(OpenAPI/Swagger) — 開発・運用共有。
- プロキシ・リバースプロキシとの連携(X-Forwarded-For 等) — インフラ連携。
- Multipart/form-data の処理(ファイルアップロード) — Web フォーム対応。
- 接続プールと Keepalive の監視 — ネットワーク安定化。
- TLS プロトコル緩和(脆弱プロトコルの無効化) — セキュリティ強化。
- HTTP クライアントの再試行ポリシー設計 — 一貫したリトライ動作。
- プロトコルバージョン互換性(HTTP/1.1 vs HTTP/2) — クライアント選定。
- API レスポンス圧縮(gzip, brotli) — 帯域節約。
- ストリーミングレスポンス(chunked) — 大量データ逐次送信。
- TLS の SNI/ALPN の理解 — 複合ホスティング対応。
- Webhook の実装と検証(署名検証) — 外部連携安全性。
- プロキシ経由の認証と接続設定 — インフラ制約対応。
301〜330:Web/サーバサイド(Servlet / Spring 等)— 実務(30件)
- Servlet のライフサイクル(init/service/destroy) — 基礎動作理解。
- Filter / Listener の使いどころ(認証/ログ) — リクエスト横断処理。
- Spring Boot の基本構成(starter の使い方) — 迅速なプロジェクト立ち上げ。
- @Controller と @RestController の違い — Web レイヤ実装。
- DI(@Autowired / コンストラクタ注入)ベストプラクティス — テスト容易性。
- @Configuration / @Bean の基本 — Bean 定義。
- プロパティ管理(application.properties / yaml) — 環境別設定。
- Actuator の導入とメトリクス — 運用監視。
- Spring Data JPA の使い方(Repository) — DB 操作簡素化。
- @Transactional の正しい使い方 — トランザクション管理。
- Bean スコープ(singleton, prototype, request, session) — オブジェクト寿命。
- ExceptionHandler(@ControllerAdvice)での一括エラー処理 — API 品質向上。
- Validation(javax.validation / @Valid) — 入力検証。
- CORS 設定(@CrossOrigin / WebMvcConfigurer) — API 公開制御。
- Interceptor と Filter の違い — リクエスト処理の挿入点。
- MultipartResolver を使ったファイルアップロード — 大容量ファイル対応。
- セッション管理(HttpSession, stateless と stateful) — 認可設計。
- CSRF 対策(Spring Security の導入) — セキュリティ対策。
- Spring Security 基礎(認証、認可の実装) — アプリ保護。
- OAuth2 / OpenID Connect の統合パターン — シングルサインオン。
- RestTemplate vs WebClient(Reactive) — 同期/非同期クライアント。
- コンテンツネゴシエーション(produces/consumes) — API 互換。
- プロファイル(@Profile)を利用した環境分離 — デプロイ戦略。
- テンプレートエンジン(Thymeleaf)利用ケース — サーバサイドレンダリング。
- HATEOAS の基礎 — REST の自己記述性。
- Health checks / readiness / liveness の実装 — コンテナ環境向け。
- サーバー側キャッシュ(CacheControl / ETag) — ネットワーク効率。
- マイクロサービス間の呼び出しパターン(同期 vs 非同期) — アーキテクチャ設計。
- API ゲートウェイ(認証・ルーティング)連携パターン — インフラ整理。
- Spring Boot のプロファイリングと設定最適化 — 起動/実行性能。
331〜360:シリアライズ・JSON・XML(30件)
- JSON シリアライズ(Jackson の基本) — API レスポンス。
- @JsonProperty / @JsonIgnore の使い分け — JSON マッピング制御。
- 型安全なデシリアライズ(DTO を使う) — バリデーション容易化。
- Jackson のモジュール(JavaTimeModule 等) — 日時シリアライズ対応。
- JSON Schema によるバリデーション — API 入力検証。
- Gson の基本使い方 — 軽量 JSON 処理。
- XML バインディング(JAXB) — 既存 XML API 連携。
- CSV パース(OpenCSV / Commons CSV) — 帳票/インポート処理。
- プロトコルバッファ(Protocol Buffers)利用ケース — バイナリ通信最適化。
- Avro / Thrift の利用場面 — データ互換性確保。
- JSON-LD / Schema.org の基礎 — 構造化データ出力。
- シリアライズ互換性の注意点(serialVersionUID) — 長期保存の互換。
- ストリーミング JSON パーサ(Jackson Streaming API) — 大量データ処理。
- JSON Pointer / JSON Patch の使い所 — 部分更新。
- 型変換ルール(カスタムシリアライザ) — 特殊フォーマット対応。
- XML XPath / XSLT の基礎 — XML 変換・抽出。
- バイナリ形式の圧縮とシリアライズ併用 — 帯域/保管最適化。
- Jackson の @JsonView を使ったシリアライズ制御 — レスポンスの切替。
- Streaming API とメモリ節約(SAX vs DOM) — 大規模 XML。
- メッセージフォーマットのバージョニング戦略 — 互換性維持。
- JSONP / CORS のセキュリティ注意点 — クライアント対策。
- カスタムフォーマット(例えば Excel → JSON)変換パターン — ETL。
- Schema registry とシリアライズ管理(Kafka と併用) — メッセージ整合性。
- セキュアな XML パーシング(XXE 対策) — 脆弱性対応。
- JSON benchmarks(処理速度比較)による選択 — ライブラリ選定。
- メタデータ付きシリアライズ(ヘッダ+ボディ) — RPC/イベント設計。
- JSON の部分更新パターン(merge) — 軽量 PATCH 実装。
- 複合型データのマッピング戦略(polymorphic) — 継承付き DTO の扱い。
- シリアライズ時のバージョン情報付与 — フォーマット管理。
- JSON -> DB マッピングパターン(NoSQL / RDB への格納) — データ保管戦略。
361〜390:テスト・デバッグ(30件)
- JUnit 5 の基本(@Test, assertions) — 単体テスト。
- Mockito でのモック作成 — 依存切り離しテスト。
- Integration Test(SpringBootTest) — 結合動作確認。
- @BeforeEach / @AfterEach の使い方 — テスト前後処理。
- ParameterizedTest(複数入力テスト) — 網羅的検証。
- テストデータ管理(Fixture, Factory) — 再現性のあるテスト。
- テストカバレッジ(JaCoCo)活用 — 品質指標。
- プロファイル切り替えによるテスト環境分離 — 環境依存排除。
- ロギングを使ったデバッグ(適切なログレベル) — 問題追跡。
- デバッガ(ブレークポイント、変数ウォッチ)活用法 — 実行検証。
- コンテナを使った統合テスト(Testcontainers) — 実環境に近い検証。
- 性能テスト(JMH / JMeter) — ベンチマーク。
- テストダブルのパターン(スタブ/スパイ/モック) — 目的別選択。
- テスト可能なコード設計(DI, pure function) — 保守性向上。
- ログからの診断フロー設計(ログ構造化) — 運用効率化。
- Exception の再現テスト(fault injection) — 障害耐性確認。
- CI でのテスト自動化(GitHub Actions / Jenkins) — 開発効率。
- レガシーコードのテスト導入ステップ(カバレッジ向上戦略) — 改修安全性。
- メトリクス導出テスト(Prometheus メトリクス確認) — 可観測性検証。
- メモリリーク検出(heap dump 分析) — 長時間実行の安定化。
- ログサニタイズと赤acted 情報 — セキュリティ配慮。
- デバッグ用 feature flag の運用方法 — 本番安全性確保。
- End-to-End テストの設計(現実的なシナリオ) — ユーザ視点の検証。
- 非決定的テストの回避(時間/順序依存) — 安定した CI。
- テストデータの匿名化と GDPR 対応 — プライバシー保護。
- カナリアリリースとテスト連携 — 本番段階的検証。
- ログ分析ツール(ELK 等)を用いた障害解析 — 運用迅速化。
- 例外発生箇所のスタックトレース解析手法 — 原因究明。
- デバッグログを残す最小限の設計(敏感情報を除外) — セキュリティと有用性。
- テストの高速化テクニック(単体先行、外部依存のモック) — 開発速度向上。
391〜410:ビルド・デプロイ・ツール(20件)
- Maven の基本(pom.xml, 依存管理) — ビルドの標準化。
- Gradle の基本(build.gradle / Kotlin DSL) — 柔軟なビルド。
- マルチモジュールプロジェクト設計 — 大規模プロジェクト分割。
- バージョニング戦略(Semantic Versioning) — リリース管理。
- CI/CD パイプライン設計(ビルド→テスト→デプロイ) — 自動化。
- Artifact リポジトリ(Nexus, Artifactory)運用 — 配布管理。
- コンテナ化(Dockerfile のベストプラクティス) — 配置一貫性。
- Kubernetes 基本(Pod/Service/Deployment)との連携 — オーケストレーション。
- Infrastructure as Code(Terraform)の導入ポイント — インフラ再現性。
- ロールバック戦略の設計(immutable deploy 等) — リリース安全性。
411〜430:セキュリティ(20件)
- (番号継続の都合上)認証と認可の違い — 基本概念。
- パスワード取り扱い(ハッシュ化: bcrypt/scrypt/argon2) — 認証安全性。
- HTTPS 強制(HSTS)とセキュア設定 — 通信保護。
- SQL インジェクション対策(プリペアドステートメント) — DB セキュリティ。
- XSS 対策(出力エスケープ) — フロント保護。
- CSRF トークンの設計と検証 — リクエスト偽造防止。
- Open Redirect 等の脆弱性チェック — 外部連携安全。
- 秘密情報の安全管理(Vault/Secrets Manager) — シークレット保護。
- ロールベースアクセス制御(RBAC)設計 — 権限管理。
- セキュリティログの監査設計 — 追跡可能性。
- JWT の安全な利用(署名・期限・スコープ) — トークン管理。
- 暗号化(対称/非対称)の基本と用途選定 — データ保護。
- キー管理のベストプラクティス — 鍵漏洩防止。
- 依存ライブラリの脆弱性スキャン(OWASP Dependency-Check) — サプライチェーン保護。
- セキュリティテスト(ペネトレーション・静的解析) — 脆弱性発見。
- TLS 証明書のローテーション設計 — 運用安全性。
- セッション固定攻撃対策(セッション ID 再発行) — 認証強化。
- レートリミットとブルートフォース対策 — アカウント保護。
- セキュリティヘッダ(Content-Security-Policy 等)設定 — ブラウザ防御。
- インプットバリデーションとホワイトリスト化 — 基本防御。
(注:番号は継続表示上の都合で 401〜420 を使用しています。)
431〜450:パフォーマンス・プロファイリング(20件)
- ガーベジコレクションの基本(GC 種類) — メモリ管理理解。
- GC チューニングの基本パラメータ(Xmx/Xms, GC 選択) — メモリ最適化。
- ヒープダンプの取り方と解析(MAT) — メモリリーク調査。
- スレッドダンプの解析 — デッドロック/スタック状態特定。
- プロファイラ(YourKit, VisualVM)の使い方 — CPU/メモリ分析。
- ネイティブメモリリークの検出 — JNI 使用時の注意。
- オブジェクトアロケーション低減のテクニック — GC 負荷軽減。
- HotSpot の JIT 最適化理解 — 実行性能の把握。
- キャッシュ設計(TTL, LRU) — レスポンス最適化。
- I/O ボトルネックの測定と改善 — 総合性能向上。
- レイテンシ分解(ネットワーク/DB/CPU) — ボトルネック特定。
- ベンチマーク設計(負荷ツール活用) — 性能要件検証。
- メモリプールの活用(ByteBuffer プール等) — メモリアロケーション削減。
- GC ログ解析と可視化 — 長期トレンド分析。
- コードホットスポットの特定(sampling/profile) — 最適化対象抽出。
- オブジェクトの再利用パターン(オブジェクトプーリング) — 作成コスト低減。
- ネットワーク効率化(バッチ化・圧縮) — 帯域削減。
- レスポンス時間 SLA 設計 — 運用品質指標。
- メトリクスの定着(Prometheus + Grafana)による監視 — 可観測性。
- 遅延ログの集約とアラート設計 — 早期発見。
451〜475:設計パターン・アーキテクチャ(25件)
- シングルトンパターンの正しい実装 — グローバルリソース管理。
- ファクトリパターン(Factory) — インスタンス化の抽象化。
- ビルダーパターン(Builder) — 複雑オブジェクト生成。
- ストラテジーパターン — アルゴリズム切替。
- オブザーバーパターン(イベント駆動) — 通知設計。
- デコレータパターン — 機能追加の柔軟化。
- アダプタパターン — 既存 API の橋渡し。
- MVC / MVVM 等のプレゼンテーションパターン — UI 層設計。
- リポジトリパターン — 永続化抽象化。
- サービスレイヤーとドメインモデルの分離 — 層別責任。
- CQRS(コマンド/クエリ分離)の基本 — スケーラビリティ。
- Event Sourcing の概念 — 履歴ベースの状態管理。
- Circuit Breaker(設計的導入) — 外部依存保護。
- Saga パターン(分散トランザクション) — マイクロサービスの一貫性。
- API ファースト設計(OpenAPI) — チーム協業。
- Hexagonal Architecture(ポートとアダプタ) — テスト容易性。
- Domain-Driven Design の基礎概念(Aggregate, Entity) — 複雑業務設計。
- Anti-Corruption Layer(ACL) — レガシー統合戦略。
- バルクヘッドパターン(障害隔離) — SRE 的耐障害性。
- テンプレートメソッドパターン — 処理共通化。
- Flyweight パターン(軽量共有) — メモリ効率化。
- Proxy パターン(遅延ロード、アクセス制御) — 管理と制御。
- Adapter vs Facade の使い分け — API 表現の最適化。
- Strangler Fig パターン(段階的置換) — レガシー移行戦略。
- Bulkhead と Throttling の組合せ設計 — 可用性戦略。
476〜490:外部 API・連携(15件)
- メッセージング基礎(JMS / RabbitMQ / Kafka) — 非同期連携。
- Kafka の基本概念(Topic, Partition, Offset) — 高スループット配信。
- メッセージの可搬性(Idempotency)設計 — 冪等性確保。
- ファイル連携パターン(ポーリング vs Push) — 外部システム統合。
- SOAP と REST の使い分け — 既存システム連携。
- API 認証フローの標準化(OAuth2) — セキュア統合。
- バッチインポート/エクスポートの設計(チェックポイント) — リカバリ対応。
- イベント駆動アーキテクチャ(EDA)導入要点 — 非同期連携。
- 外部サービスの契約設計(SLAs) — 運用安定性。
- データフォーマット中立化(契約層の導入) — 変更耐性。
- Webhook 受信の検証と再試行戦略 — 受信側堅牢化。
- メッセージフォーマットの互換性維持(schema registry) — サービス連携。
- API ゲートウェイでの認証・課金・監視実装 — 運用統制。
- ETL パイプラインの設計(抽出/変換/ロード) — データ統合。
- バルクデータ転送の最適化(圧縮、スレッド) — 帯域/時間短縮。
491〜500:実務で便利な小ネタ・ユーティリティ(10件)
- 環境変数 / コンフィグの安全取得パターン — デプロイ柔軟性。
- アプリ内メトリクス(カスタムメトリクス)基礎 — SLA 監視。
- 簡単なコマンドラインツール作成(picocli など) — 管理ユーティリティ。
- CSV/Excel 生成(Apache POI) — レポート出力。
- ファイル名タイムスタンプ付与とローテーション — ログ/出力管理。
- バージョン情報(MANIFEST.MF)を利用した表示 — デバッグ/運用。
- 設定のホットリロード(可能な箇所のみ) — 運用性向上。
- 健全性チェックと自動復旧スクリプト連携 — 運用自動化。
- 簡潔な CLI ロガーの実装(短いスタブ) — スクリプトツール向け。
- ドキュメント生成(Asciidoctor / Swagger)自動化 — 開発者体験向上。
Java 逆引き集 | 変数宣言(プリミティブ/参照型) — 型選びと初期化
Java 逆引き集 | 型変換(キャスト、ボクシング/アンボクシング) — データ受け渡し時
Java 逆引き集 | 条件分岐(if / switch) — ビジネスロジックの分岐
Java 逆引き集 | ループ(for / enhanced for / while) — 集合処理とレコードループ
Java 逆引き集 | メソッド定義と引数(可変長引数) — 再利用可能ロジック
Java 逆引き集 | 戻り値(参照/プリミティブ) — API レイヤ設計
Java 逆引き集 | 例外処理(try / catch / finally) — 安定性と後始末
Java 逆引き集 | カスタム例外の作り方 — 明確なエラー伝搬
Java 逆引き集 | null/Optional の使い分け — NPE 回避、意図の明示
Java 逆引き集 | String 操作(concat, substring, format) — 表示・ログ処理
Java 逆引き集 | StringBuilder / StringBuffer — 文字列連結の効率化
Java 逆引き集 | 配列(一次元・多次元) — 固定長データ処理
Java 逆引き集 | List / Map / Set の基本概念(インターフェース) — データ構造選択
Java 逆引き集 | forEach とラムダの基本(簡単な処理) — 可読性向上
Java 逆引き集 | 可変引数メソッド(…) — 汎用ユーティリティ
Java 逆引き集 | インスタンス生成(new)とファクトリパターンの基礎 — オブジェクト管理
Java 逆引き集 | static とインスタンスの違い — 状態管理
Java 逆引き集 | final の使い方(変数・クラス・メソッド) — 不変性確保
Java 逆引き集 | アクセス修飾子(public/private/protected/default) — カプセル化
Java 逆引き集 | クラス設計の基本(単一責任) — 保守性を高める
