Node.js は、PayPal、Trello、Walmart、NASA など、多くの大企業の技術スタックの重要な部分です。
ZipRecruiter によると、米国の Node.js エンジニアの平均年収は 116,495 ドル、つまり時給約 56.01 ドルです。
すでに熟練した Node JS エンジニアであり、新しい役割を探している場合は、面接の準備が重要です。
以下は、次回の面接で遭遇する可能性が高い Node.js に関する最も一般的な質問の一部です。
Node.jsとは何ですか?
Node.js は、サーバーサイド Web アプリケーションの作成に使用される軽量かつ強力なフレームワークです。このクロスプラットフォーム JavaScript ランタイム環境は、Google の V8 JavaScript エンジンに基づいて構築されています。その設計は、Ruby の Event Machine や Python の Twisted の設計に似ています。
Node.js を使用する理由
- 開発者がバックエンド言語として JavaScript を使用できるようにします。 Node.js を使用すると、ユーザーはブラウザーの外部で JavaScript コードを実行でき、開発者はアプリケーションのフロントエンドとバックエンドの両方で JavaScript を使用できます。
- Node.js は軽量です。 Node.js は、非同期イベント駆動型 I/O モデルを通じて、I/O を直接処理するノードがないことを保証し、効率的かつ軽量にします。
- Node Package Manager (NPM) を通じて開発者の作業を簡素化します。 NPM には、開発中にダウンロードして使用できる小さなオープンソース ソフトウェア モジュールのコレクションがあるため、開発者はすべてを最初から作成する必要はありません。
Node.js がシングルスレッドなのはなぜですか?
Node.js は JavaScript コードを単一のスレッドとして実行します。したがって、この JavaScript コードを一度に実行することになります。ただし、Node.js は、libuv ライブラリを通じて、ディスクからのファイルの読み取りやネットワーク リクエストなどのさまざまなタスクを処理するさまざまなスレッドを実行します。
Node.js は同時実行をどのように処理しますか?
同時実行とは、アプリケーションが複数のタスクを同時に処理する状況です。 Node.js は、非同期コードがイベント キューの最後にプッシュされるイベント ループを使用します。 JavaScript はシングルスレッドですが、イベント ループにより、Node.js は I/O タスクをシステム カーネルにオフロードすることにより、ノンブロッキング I/O 操作を実行できます。
NPMとは何ですか?
これは、800,000 を超えるコード パッケージを備えた世界最大のソフトウェア レジストリです。 Node.js をインストールすると、 Node Package Managerが自動的にインストールされます。
イベントループとは何ですか?
JavaScript はシングルスレッドですが、イベント ループにより、Node.js はノンブロッキング I/O 操作を実行できます。可能な限り、Node.js は操作をシステム カーネルにオフロードします。
イベントエミッターとは何ですか?
これらは、特定のアクションが完了したというメッセージを送信した後にイベントをトリガーする Node.js のオブジェクトです。したがって、JavaScript 開発者は、エミッタからのイベントをリッスンするコードを作成できます。
WASIとは何ですか?
WebAssembly System Interface (WASI) API は、 WebAssembly System Interfaceを実装します。 WASI は、POSIX のような関数を使用して、サンドボックス化された Web アプリケーションに基盤となるオペレーティング システムへのアクセスを提供します。
REPLとは何ですか?
Node.js の Read-Eval-Print-Loop (REPL) は、Node.js 式を処理する対話型シェルです。使いやすいコマンド ラインは、ユーザーからのコード入力を取得し、解釈して結果を出力し、ユーザーが終了の合図をするまでループします。
制御フローとは何ですか?
これは、アプリケーション内のコードのロジックとフローを制御する方法です。 If ステートメントは、変数の状態と関数からの出力に基づいてコードの流れを特定の方向に制御できます。
コールバック地獄とは何ですか?
破滅のピラミッドとも呼ばれるコールバック地獄は、関数内に複数のコールバックがネストされている状況です。コールバック地獄は非同期プログラミングに関連しており、コードの理解と保守が難しくなります。
Node.jsのミドルウェアとは何ですか?
ミドルウェアは、アプリの要求と応答のサイクルにおいて、オブジェクトへの応答、オブジェクトの要求、次のミドルウェアへの移動のためのすべてのアクセス権を持つ機能です。ミドルウェアは、アプリケーション、データ、ユーザー間の接続として機能します。
Node.js ストリームとは何ですか?
ストリームは、配列や文字列に相当するデータのコレクションです。ただし、これらのストリームはメモリに収まる必要はなく、同時に使用できる場合もあります。
配管とは何ですか?
パイピングは、複数のストリームを接続するプロセスです。たとえば、読み取りストリームと書き込みストリームをパイプして、あるファイルから別のファイルへのデータ転送を可能にすることができます。
Node.jsバッファとは何ですか?
バッファー モジュールは、Node.js 設定でバイナリ データ ストリームを処理する方法を提供します。 Node.js では、Buffer はグローバル オブジェクトです。 「require」キーワードを使用してインポートする必要はありません。
この構文を使用すると、長さ 15 の空のバッファを作成できます。
var buf = Buffer.alloc(15);
イベント駆動型プログラミングとは何ですか?
イベント駆動型プログラミングとは何かを学ぶ前に、次の概念を理解する必要があります。
- イベントメッセージと通知
- プロデューサー – イベント ソース、パブリッシャー、および送信者
- コンシューマ イベント シンク、サブスクライバ、レシーバ、およびハンドラ
- メッセージキュー– イベントキュー
イベント駆動型プログラミングは、イベントに応答するコードを記述する概念です。たとえば、特定の温度に達したことをセンサーが検出する自動システムを構築できます。
このようなシステムには、イベントに応答して適切なアクションが確実に実行されるようにするイベント ハンドラーが備わっています。
テストピラミッドとは何ですか?
テスト ピラミッドは、アプリケーションを完全に開発するために必要な単体テスト、統合テスト、およびエンドツーエンド テストの割合を示します。テスト ピラミッドは、堅牢なテスト スイートの開発に役立ち、評価の頻度と順序を決定します。
エラーファーストコールバックとは何ですか?
エラーファースト コールバックはエラーとデータを渡します。このような関数に最初に渡すのはエラー オブジェクトであり、2 番目は関連するデータです。 Error-first コールバックを使用すると、エラー オブジェクトを渡し、何か問題があるかどうかを確認して、それを処理できます。問題が検出されない場合は、後続の引数に進みます。
LTS リリースとは何ですか?
長期サポート (LTS) は、開発者から延長サポートを受けるソフトウェア リリースです。 6 か月から 1 年間のサポートしか受けられない通常のプログラムとは異なり、延長サポートは 2 ~ 5 年間になります。
URLモジュールとは何ですか?
URL モジュールは、Web アドレスを読み取り可能な部分に分割 (解析) します。 URL モジュールを使用するには、require() メソッドを含める必要があります。
リブブとは何ですか?
Libuv は、C プログラミング言語で書かれたクロスプラットフォーム ライブラリであり、非同期のイベント駆動型プログラミング スタイルを提供します。 Libuv は、イベント ループとコールバックベースの I/O 通知を提供します。
スタブとは何ですか?
テスト スタブは、事前にプログラムされた動作を持つスパイ/関数です。スタブは既存の関数をラップすることも、匿名にすることもできます。
スタブは次の場合に使用できます。
- 一部のテストは、コード エラーではなく、ネットワーク接続エラーが原因で失敗します。
- メソッドの動作を制御し、コードを特定のパスに強制的に送りたいとします。
package.jsonとは何ですか?
Package.json は Node.js プロジェクトの中心です。このファイルには、NPM に公開する前に必要なプロジェクトに関する重要なメタデータが記録されます。 Package.json は、NPM がスクリプトの実行、依存関係のインストール、パッケージへのエントリ ポイントの識別に使用するプロジェクトの機能属性を定義します。
.json ファイル パッケージとは何ですか?
JSON は JavaScript Object Notation の短縮形です。これはデータの転送と保存のための軽量形式であり、データが Web サーバーから Web ページに送信されるときによく使用されます。
package.json ファイルは JSON 形式で記述されます。
Express.js パッケージとは何ですか?
Express.js は、モバイルおよび Web アプリケーションを作成するための堅牢な機能を備えた Node.js フレームワークです。
このコマンドを使用して、この最小限の Web フレームワークをインストールできます。
npm install express --save
Node.js で使用されるいくつかのフレームワークについて言及します。
- Express.js
- Koa.js
- Meteor.js
- Socket.io
- Nest.js
- Sails.js
- トータル.js
- ハピ.js
Node.js のいくつかのタイミング機能について言及する
- setTimeout/clearTimeout () : 割り当てられた時間 (ミリ秒単位) の後にコードが実行されるようにスケジュールする関数です。
- process.nextTick() : イベントループの次の繰り返しで呼び出す必要があるコールバック関数をスケジュールする関数です。
- clearImmediate/setImmediate() : 既存のイベント ループ サイクルの後にコードが実行されます。
- setInterval/clearInterval() : この関数は、コードのブロックを複数回実行するために使用されます。
Node.js で一般的に使用されるライブラリについて言及する
- ロダッシュ
- 非同期
- Express.js
- カルマ
- アクシオス
- イサキ
- 分子
- 曇り
- モカ
- PM2
外部ライブラリをインポートするにはどのようなコマンドを使用しますか?
「require」コマンド。たとえば、「var http=require (“HTTP”)」は HTTP ライブラリをロードします。
コールバックとは何ですか?
これらは、特定のタスクの完了後に呼び出される関数です。このような設定により、プログラムは別のコードを実行し、ブロックを防ぐことができます。
モジュールとは何ですか?
モジュールは、開発者が DRY (Don’t Reply Yourself) プログラミング原則に従うのに役立つ再利用可能な JavaScript コードです。このようなモジュールは、複雑なロジックを小さく、シンプルで管理しやすい塊に分割するのにも役立ちます。
I/Oという用語をどのように定義しますか?
I/O は、入力/出力の短縮形です。これは、プログラムとシステムのネットワークおよびディスクとの対話を指します。 I/O 操作の例としては、データベースとの通信、ディスクへのデータの読み取り/書き込み、HTTP リクエストの作成などが挙げられます。
Node.js でよく使用されるデータベースはどれですか?
モンゴDB
Node.js 終了コードの説明
終了コードは、プロセスを終了する特定のコードのグループです。
最も一般的な Node.js 終了コードの一部は次のとおりです。
- ハンドラーの実行時エラー
- 内部 JavaScript 評価の失敗
- キャッチされなかった致命的な例外
- 致命的な誤り
- 内部例外
- 未使用
Node.js のリアクター パターンとは何ですか?
Node.js のリアクター パターンは、I/O 操作のブロックを回避するために使用されます。リアクター パターンには、入出力操作に関連付けられたハンドラーがあります。
リアクター パターンはこのパターンに従います。
- アプリケーションがリクエストを行う
- イベント デマルチプレクサはこれらのリクエストを収集し、イベント キューを形成します。
- 非同期 IO ライブラリである Libuv は、イベント デマルチプレクサを実行します。
Node.js の非同期 API とノンブロッキング API について説明する
メッセージが非同期アーキテクチャを通じて送信されるとき。サーバーは情報を保存し、タスクが完了すると通知されます。
ノンブロッキング API は、利用可能なデータであれば何でも即座に応答します。ただし、実行はブロックされず、リクエストに従って実行を続けます。
Node.Js の V8 エンジンについて説明する
V8 JavaScript は、Web ブラウザーでの JavaScript の実行を改善するために、Chromium および Google Chrome Web ブラウザー用に開発されました。 V8 では、インタープリターを使用する代わりに、JS コードをより効率的なコードに変換して、JavaScript の実行速度を向上させます。
spawn() と fork() を区別する
- Spawn()は新しい関数を作成し、コマンド ラインを使用してそれを起動します。この関数はプロセッサ上にノード モジュールを作成し、その後、子プロセスがデータを返すときに Node.js がそれを呼び出します。
- Fork() は、既存の spawn() メソッドのインスタンスです。生成プロセスにより、いつでもタスクを処理するアクティブなノードが常に 1 つ以上存在することが保証されます。
同期関数と非同期関数の違い
同期関数では、プログラムによって与えられた命令に基づいて、コードが特定のシーケンスで実行されます。
非同期関数では、コードを並行して実行できます。このような設定では、別のプロセスが処理中であっても、次の操作が発生する可能性があります。
Node.js プロジェクトのパッケージを管理するにはどうすればよいですか?
さまざまなパッケージ インストーラーには、Node.js プロジェクトのパッケージを管理するための構成が付属しています。これらのパッケージのほとんどは npm または Yarn を使用します。幸いなことに、両方とも拡張機能を備えたほぼすべての JavaScript ライブラリへのアクセスを提供します。
制御フロー機能の説明
これは、さまざまな非同期関数呼び出しの間に実行されるコードの一部です。
結論
Node.js の面接で遭遇する可能性のある質問のほとんどをカバーしました。ただし、Node.js の技術スキルを持っていることも確認する必要があります。次の面接の準備を頑張ってください。
Web および API の開発をスピードアップするために、いくつかの NodeJS フレームワークを検討することもできます。