Javaバックエンドエンジニア:面接質問集
プロジェクト関連
- 自己紹介
- プロジェクト紹介
- プロジェクトの規模
- スレッドと並行処理の知識ポイント
lock
と synchronized
の違い
- MYSQL と MONGODB の違い
- 使用している SpringCloud のコンポーネントとバージョン
Springエコシステム
- SpringBootのコアとは何か
- SpringBootのバージョン
- 使用されているSpringCloudコンポーネント
- SpringBootとSpringCloudの違い
- Springのbean注入方法
- 複数データソース設定におけるBeanの命名規則
マイクロサービスアーキテクチャ
- マイクロサービスモジュールの分割方法
- 結合において、ビジネス結合と技術結合のどちらを優先するか
- 使用されているマイクロサービスのパターン
- API設計におけるステートレスとステートフルの違い、選択方法
- クラウド展開におけるデフォルトのノード数
Java関連
- 使用中のJDKバージョン
- Streamの内部実装
- Streamコードの問題をデバッグする方法
- Streamのコンポーネントと内部構造
- スレッド間でメッセージを共有する方法
- 再入可能ロックとは何か
- ロックについての理解を説明してください
- JDK8とJDK17の違い
サーバー設定
- Tomcatのデフォルトスレッド数
- Tomcatから他のWebサーバーへの移行方法
- Nginxリバースプロキシの設定
データベースとキャッシュ
- プロジェクトでRedis接続を作成する方法、必要な依存関係
- Jedisを使用して接続を作成する方法
- Redisのトランザクションコマンド
- SQLシナリオ: 部門と従業員テーブル間の結合クエリで、部門ごとの最高給与を取得
- 左結合の利点
プログラミングシナリオ
- Java8 APIを使用して、年齢と名前によるPersonオブジェクトのソートを実装する
- 2つの文字列間に共通する文字を出力する
CI/CD
- Dockerfileの記述経験
- JenkinsパイプラインにおけるGroovyクロージャの機能
- Nexusツールの目的
- DevOpsの実践経験
コアコンセプト
- Javaメモリモデル(JMM)の概念と機能
- HashMapの実装原理と衝突解決
- プロキシパターンの実装(静的および動的)
- IoCとAOPの原理
- Redisがシングルスレッドで高いパフォーマンスを維持する理由
- Executorスレッドプールのパラメータ設定
インドの面接官が重視するポイント
- Javaの基本概念(例を用いて)
- ポリモーフィズムの使用法
- LinkedListのパフォーマンスと違い
- Mapの違い
- 配列の取り扱いに関する解決策
- Linuxコマンド
- プロジェクト経験(技術スタック: Python, Angular, Control-M)
- 英語の能力
英語の流暢さのレベル
- 自己表現ができない - 基礎が弱く、自己紹介やプロジェクトの説明ができない
- 基本的/簡単な会話 - 基礎はあるが、準備した自己紹介はできる
- 日常的なコミュニケーション - 基礎がしっかりしており、英語の会議に参加して内容の大部分を理解できる
- 実用的 - 基礎が強く、面接官と流暢にコミュニケーションが取れる
- 実用的かつ技術的な交流 - 優れた英語力を持ち、技術的な議論を障壁なく行える
その他の面接評価ポイント
- 学習方法
- 技術コミュニケーション能力
- クライアントとのコミュニケーション経験
- プロジェクトの課題と解決策
- キャリア開発計画
- 技術的深さ(マルチスレッド、データ検証、フロントエンド開発など)