00

ガイド

NODE.JS INTERVIEW Qs

Node.js開発者を採用する際の技術面接で使える質問と模範回答。Event Loop、Streams/Buffers、Cluster/Worker Threads、Express vs Fastifyなどを網羅。

最終更新:2026年5月

01

Node.jsのEvent Loopを説明してください

Event LoopはNode.jsが非同期I/Oを処理する仕組みです。libuvが提供し、シングルスレッドで動作します。フェーズはtimers → pending callbacks → idle/prepare → poll → check → close callbacksの順に実行されます。各フェーズのキューが空になるとnextTickQueueとmicrotaskQueueが処理されます。ブロッキング処理はWorker Threadsや子プロセスで回避すべきです。

02

StreamsとBuffersの違いと使い分けを説明してください

Bufferは生のバイナリデータをメモリに保持する固定長コンテナです。Streamsはデータを小さなチャンクに分割して順次処理する抽象化で、メモリ効率が高く大容量ファイルの読み書きに適しています。Readable、Writable、Duplex、Transformの4種類があり、pipe()で連結できます。

03

ClusterモジュールとWorker Threadsの違いは何ですか?

Clusterモジュールは複数のNode.jsプロセスをforkし、同じポートを共有して負荷分散します。各プロセスは独立したメモリ空間とEvent Loopを持ちます。Worker Threadsは同じプロセス内でスレッドを生成し、SharedArrayBufferでメモリを共有できます。CPU密集型タスクにはWorker Threads、I/O密集型のスケーリングにはClusterが適しています。

04

ExpressとFastifyの違いを説明してください

Expressは最も広く使われるNode.jsフレームワークで、ミドルウェアエコシステムが豊富ですが、古いアーキテクチャのためパフォーマンスに限界があります。FastifyはJSONスキーマベースのバリデーション、組み込みのログ機能、そしてExpressの約2倍のスループットを誇ります。プラグインアーキテクチャによりスコープ付きの登録が可能で、マイクロサービスに適しています。

05

Node.jsにおけるエラーハンドリングのベストプラクティスを教えてください

同期コードではtry/catch、非同期コードではasync/awaitとtry/catch、コールバックでは最初の引数errorを常にチェックします。 uncaughtExceptionとunhandledRejectionには必ずリスナーを登録し、プロセスをgracefulに終了させます。カスタムErrorクラスを作成し、HTTPステータスコードとエラーコードを分離します。Sentryなどの監視ツールと連携し、スタックトレースをログに残します。

06

Node.jsアプリのセキュリティベストプラクティスを教えてください

依存関係の脆弱性をnpm auditで定期的にスキャン、helmetでHTTPヘッダーを硬化、express-rate-limitでレート制限を実装します。JWTはlocalStorageではなくhttpOnlyクッキーに保存、入力値はjoi/zodで厳密にバリデート、SQLインジェクションにはプリペアドステートメントを使用します。さらに、.envファイルの漏洩防止、CORSの適切な設定、secretsのローテーションも必須です。

07

お問い合わせ

Node.js開発者を探していますか?

技術面接のサポート、採用プロセスの相談、または直接Node.jsエンジニアとして参画することも可能です。

Node.js開発者向け面接質問 2026 | Code Your Reality