最近整理了一份優質視訊教程資源,想要的可以關注我然後私信“666”即可免費領取哦!如果文章對你有所啟發和幫助,可以點個關注、收藏、轉發,也可以留言讨論,這是對作者的最大鼓勵。

準備面試總是一項艱巨的任務,很有可能你不知道自己到底會被問到什麼,緊張的情緒很容易占據主導地位,讓你連自己的名字都忘記了。我整理了21個Node.js的面試問題,從很簡單的東西到一些技術含量更高的話題,在這個過程中幫助你。
Node.js并不隻用于後端,我們也使用它來建立前端應用程式,這已經成為Web開發生态系統中非常重要的一部分。這意味着對于Node.js開發人員來說,熟悉這項技術在不同的JavaScript環境中所扮演的角色是非常有用的。出于這個原因,我列出了一些問題和答案。
指導方針
我建議你在閱讀答案之前先試着回答問題,你也可能在這裡為你的候選人尋找面試問題的例子,我相信這些應該是多樣的作為一個起點來幫助你評估他們的水準。
我認為,不僅僅是正确回答一個問題,它還顯示了人們知道多少的細節。一個好的答案可能會引發愉快的談話,可能會把緊張的情緒變成與同僚的閑聊的樣子,這對雙方來說都是理想的結果。
Node.js問題
什麼是Node.js?
Node.js是一個基于V8引擎的JavaScript運作時環境。它允許我們在浏覽器之外運作JavaScript——通常是在Web伺服器中。
Node.js有什麼用?
考慮到Node.js的單線程特性要求我們盡快釋放事件循環,是以Node.js在處理多個連接配接時,以較低的循環複雜度表現出色。這使Node.js成為微服務和實時應用程式的理想選擇。
什麼是npm?
npm代表Node.js包管理器,是Node.js Package Manager的縮寫,它由一個指令行界面組成,我們可以使用它通路公共和私有包的線上系統資料庫。
如何從頭開始建立Node.js應用程式?
我們可以先建立一個項目檔案夾,然後,我們在指令行中導航到該檔案夾并運作 npm init。最後,我們按照步驟填寫我們的應用程式資訊。
“npm install”有什麼作用?
它安裝在 package.json 檔案中找到的依賴項。
如何在Node.js中安裝庫?
npm install-of-library 将安裝我們的庫并将其包含為依賴項,如果添加 --save-dev 參數,它将作為 devDependency 包含在内。
如何建立自定義腳本?
我們需要進入 package.json 并在 scripts 字段中添加我們的自定義腳本,然後,我們可以通過轉到終端并運作 npm run-script-name 來運作腳本。
是否可以使用Node.js建立前端應用程式?
浏覽器無法運作Node.js應用程式,但是你可以使用諸如webpack或Parcel之類的代碼來打包代碼并将其轉換為浏覽器可以運作的東西。如今,使用Node.js環境建構前端應用程式非常普遍。Node.js在前端的一個很好的例子是Electron架構,它同時利用Node.js和chromium來建構“原生”應用,比如VS Code。
你能否提及三個流行的Node.js架構?
Express.js可能是目前最流行的架構,Koa.js可能是最快的架構之一,Sails.js鑒于使用socket.io,對于實時雙邊通信應用來說非常好用。
Express.js有什麼用?
Express.js使為我們的Web應用程式設定路由變得非常容易,這使其成為建立REST API的明智選擇,它非常靈活且易于使用,其中間件體系結構有助于保持簡單且可擴充的系統。
什麼是Crypto?
Crypto是Node.js的一個内部庫,它提供了加密功能,例如,加密和解密密碼。
在Node.js中我們如何處理本地和全局作用域?
與用戶端JavaScript不同,在Node.js中,在最大範圍内用 var 聲明的變量不是全局變量,而是它們所在子產品的局部變量。在浏覽器上,我們可以通路我們的全局變量所在的 window 對象,Node.js 有一個對象叫做 global。
Node.js是否可以通路檔案系統?
是的,我們可以利用 fs 子產品來讀、寫、複制、删除檔案和檔案夾。
非阻塞是什麼意思?
這意味着一段代碼,比如異步函數,被安排在事件循環的下一次疊代中運作,進而解除了其餘代碼的阻塞,讓它繼續運作。
什麼是事件循環,它是如何工作的?
事件循環使Node.js具有異步特性,它在一個循環中排程一組五個階段的執行。第一階段運作預定的 setTimeout 和 setInterval 回調;第二個階段運作計劃在目前疊代上運作的IO回調;第三個階段輪詢将在下一次疊代中執行的事件;第四個階段運作 setImmediate() 回調;最後,第五個階段運作所有“close”回調。
異步函數并行運作嗎?
否。當并行程序在其自己的程序或線程中運作時,異步函數将在下一個事件循環疊代中執行。
Node.js是多線程的嗎?
一個Node.js程序在單線程中運作,但我們可以使用 child_process 子產品來并行運作多個程序,或者使用 Worker 來運作多個線程。
什麼是child_process子產品?
child_process 子產品使我們可以生成和派生子程序。這些是在自己的CPU中運作的獨立程序,使我們可以通路系統指令。
web worker和worker thread的差別是什麼?
Web worker是在浏覽器中實作的,worker thread 是在Node.js中實作的。它們都解決了同一個問題,那就是提供并行處理。事實上,Worker Thread API是基于Web Workers實作的。
使用worker thread與child_process相比有什麼優勢?
child_process用自己的記憶體空間運作自己的程序,而worker thread則是一個程序中的線程,可以與主線程共享記憶體,這有助于避免來回昂貴的資料序列化。
你将使用什麼來通過HTTP與用戶端建立雙向實時連接配接?
我們可以使用WebSockets或者長輪詢,有像soket.io和SignalR這樣的庫可以為我們簡化這個過程。如果WebSockets在浏覽器中不可用,它們甚至可以為用戶端提供長時間的輪詢功能。
結束
我希望這些問題對你有用,你能回答所有的問題嗎?如果你不能,别擔心,除非你的目标是進階職位,否則你不需要知道所有的知識。