ガイド
NODE.JS INTERVIEW Qs
Node.js開発者を採用する際の技術面接で使える質問と模範回答。Event Loop、Streams/Buffers、Cluster/Worker Threads、Express vs Fastifyなどを網羅。
最終更新:2026年5月
Node.jsのEvent Loopを説明してください
Event LoopはNode.jsが非同期I/Oを処理する仕組みです。libuvが提供し、シングルスレッドで動作します。フェーズはtimers → pending callbacks → idle/prepare → poll → check → close callbacksの順に実行されます。各フェーズのキューが空になるとnextTickQueueとmicrotaskQueueが処理されます。ブロッキング処理はWorker Threadsや子プロセスで回避すべきです。
StreamsとBuffersの違いと使い分けを説明してください
Bufferは生のバイナリデータをメモリに保持する固定長コンテナです。Streamsはデータを小さなチャンクに分割して順次処理する抽象化で、メモリ効率が高く大容量ファイルの読み書きに適しています。Readable、Writable、Duplex、Transformの4種類があり、pipe()で連結できます。
ClusterモジュールとWorker Threadsの違いは何ですか?
Clusterモジュールは複数のNode.jsプロセスをforkし、同じポートを共有して負荷分散します。各プロセスは独立したメモリ空間とEvent Loopを持ちます。Worker Threadsは同じプロセス内でスレッドを生成し、SharedArrayBufferでメモリを共有できます。CPU密集型タスクにはWorker Threads、I/O密集型のスケーリングにはClusterが適しています。
ExpressとFastifyの違いを説明してください
Expressは最も広く使われるNode.jsフレームワークで、ミドルウェアエコシステムが豊富ですが、古いアーキテクチャのためパフォーマンスに限界があります。FastifyはJSONスキーマベースのバリデーション、組み込みのログ機能、そしてExpressの約2倍のスループットを誇ります。プラグインアーキテクチャによりスコープ付きの登録が可能で、マイクロサービスに適しています。
Node.jsにおけるエラーハンドリングのベストプラクティスを教えてください
同期コードではtry/catch、非同期コードではasync/awaitとtry/catch、コールバックでは最初の引数errorを常にチェックします。 uncaughtExceptionとunhandledRejectionには必ずリスナーを登録し、プロセスをgracefulに終了させます。カスタムErrorクラスを作成し、HTTPステータスコードとエラーコードを分離します。Sentryなどの監視ツールと連携し、スタックトレースをログに残します。
Node.jsアプリのセキュリティベストプラクティスを教えてください
依存関係の脆弱性をnpm auditで定期的にスキャン、helmetでHTTPヘッダーを硬化、express-rate-limitでレート制限を実装します。JWTはlocalStorageではなくhttpOnlyクッキーに保存、入力値はjoi/zodで厳密にバリデート、SQLインジェクションにはプリペアドステートメントを使用します。さらに、.envファイルの漏洩防止、CORSの適切な設定、secretsのローテーションも必須です。
お問い合わせ