亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 15個常見的Node.js面試問題及答案

15個常見的Node.js面試問題及答案

來源:千鋒教育
發布人:wjy
時間: 2022-06-01 13:17:00 1654060620

  俗話說:臨陣磨槍,不快也光。對于成功的編程面試來說,準備和知識面一樣重要。準備使你有信心參加面試,而不用擔心莫名的緊張情緒。如果第一次參加編程面試,這一點尤其重要。

15個常見的Node.js面試問題及答案

  為幫助 Node.js 開發人員更好的面試,列出了 15 個常見的 Node.js 和網絡開發相關的面試問題。

  在本文中,我們將重點討論 Node.js 相關問題。但是,請記住 JavaScript 問題在 Node.js 面試中也經常問到,所以準備一些對你來說沒什么壞處。

  現在,讓我們深入了解面試中可能會問到的 Node.js 問題。

  ## **1、Node.js與JavaScript有什么不同?**

  ![img](https://pic3.zhimg.com/80/v2-3817e606ff0fa0e67be7139b855a5dd2_720w.jpg)

  ## **2、什么時候用Node.js?**

  Node.js 是異步的、事件驅動的、非阻塞的和單線程的,使得它成為開發下面應用程序的完美候選:

  - 實時應用程序,如聊天和提供實時更新的應用程序。

  - 將視頻或其他多媒體內容流式傳輸給大量觀眾的流式應用程序。

  - 其他 I/O 密集型應用程序,如協作平臺。

  - 遵循微服務架構的網絡后端。

  然而,Node.js 的特性使得它對于其他類型的應用程序來說不是一個理想的選擇。執行 CPU 密集型任務的應用程序(如復雜的數學計算)在使用 CPU 時表現不佳,因為 Node.js 是單線程的。

  ## **3、EventEmitter做了什么?**

  Node.js 中任何對象發出的事件都是 EventEmitter 類的實例,就像 http 模塊。

  所有 EventEmitter 類都可以使用 eventEmitter.on() 函數將事件偵聽器附加到事件。然后一旦捕捉到這樣的事件,就會同步地逐個調用它的偵聽器。

  ```js

  const events = require("events");

  const eventEmitter = new events.EventEmitter();

  const eventListener = function(){

  console.log("event triggered");

  }

  eventEmitter.on("emitted", eventListener);

  eventEmitter.emit("emitted");

  ```

  ## **4、事件循環是什么?**

  單線程的 Node.js 必須是非阻塞的,以防止線程阻塞在需要很長時間才能完成的任務上,事件循環負責實現這種非阻塞行為,它使用應用程序線程調度掛起的任務。

  Node.js 在任務完成時通過回調來處理異步函數返回的響應。與創建任務的事件類似,任務完成后也會發出一個事件。Node.js 將需要處理的事件添加到事件隊列。

  事件循環對事件隊列中的事件進行迭代,并安排何時執行其關聯的回調函數。

  ## **5、流是什么?**

  Stream 流是從源讀取或寫入數據并將其傳輸到連續流目標的管道。有四種類型:

  - 可讀

  - 可寫的

  - 可讀寫

  - 先寫入,再讀出來

  每個流也是一個 EventEmitter。這意味著流對象可以在流上沒有數據、流上有可用數據或流中的數據在程序刷新時發出事件。

  ```js

  const fs = require("fs");

  const readableStream = fs.createReadStream("test.txt");

  let content = "";

  readableStream.on("data", (chunk) => {

  content += chunk;

  });

  readableStream.on("end", () => {

  console.log(content);

  });

  ```

  ## **6、ReadFile和createReadStream函數有什么區別?**

  readFile 函數異步讀取文件的全部內容,并存儲在內存中,然后再傳遞給用戶。

  createReadStream 使用一個可讀的流,逐塊讀取文件,而不是全部存儲在內存中。

  與 readFile 相比,createReadStream 使用更少的內存和更快的速度來優化文件讀取操作。如果文件相當大,用戶不必等待很長時間直到讀取整個內容,因為讀取時會先向用戶發送小塊內容。

  ```js

  const fs = require("fs");

  fs.readFile("test.txt", (err, content) => {

  console.log(content);

  });

  ```

  ## **7、如何處理Node.js中未捕獲的異常?**

  我們可以在進程級別捕獲應用程序中未捕獲的異常。為此將偵聽器附加到 process 全局對象:

  ```js

  process.on("uncaughtException", (err) => {

  console.log("exception caught: ", err);

  });

  ```

  ## **8、Node.Js能否充分利用多核處理器?**

  (默認的)Node.js 應用程序總是單線程的,即使在多核處理器上運行,應用程序也能只使用一個處理器。

  但是 Node.js 的核心模塊之一 Cluster 支持 Node.js 應用程序開啟多核,允許我們創建多個工作進程,這些進程可以在多個內核上并行運行,并共享一個端口來偵聽事件。

  每個進程使用 IPC 與主線程通信,并根據需要將服務器句柄傳遞給其他進程。主進程可以偵聽端口本身并以循環方式將每個新連接傳遞給子進程,也可以將端口分配給子進程以便子進程偵聽請求。

  ## **9、反應堆設計模式是什么?**

  反應堆設計模式是,Node.js 將回調函數(處理程序)附加到每個 I/O 操作,然后創建請求時將處理程序提交給解復用器。

  解復用器收集應用程序中發出的每個 I/O 請求,并將它們作為隊列中的事件進行排隊。這個隊列就是我們所說的事件隊列。將事件排隊后,解復用器返回應用程序線程的控制。

  同時,事件循環遍歷事件隊列中的每個事件,并調用附加的回調來處理事件響應。

  這就是 Node.js 中所使用的反應堆模式。

  ## **10、單線程與多線程網絡后端相比有哪些好處?**

  盡管 Node.js 是單線程的,但是大多數用于后端開發的編程語言都提供多線程來處理應用程序操作。

  為什么單線程有利于后端開發?

  - 開發人員更容易實現應用程序。我們的應用程序在生產過程中不會突然遇到意外的競爭條件。

  - 單線程應用程序易于擴展。

  - 它們可以毫不延遲地在一個時刻收到的大量用戶請求提供服務。相比之下,當流量較大時,多線程后端必須等待線程池中的線程釋放,才能為用戶請求提供服務。利用 Node.js 的非阻塞特性,用戶請求不會在單個線程上掛起太長時間(只有在操作不是 CPU 密集型時)。

  ## **11、REPL是什么?**

  REPL 代表 Read Eval Print Loop,是一個虛擬環境,可以在其中輕松地運行編程語言。Node.js 帶有一個內置的 REPL 來運行 JavaScript 代碼,類似于我們在瀏覽器中用來運行 JavaScript 代碼的控制臺。

  要啟動 Node.js REPL,只需在命令行上運行 node,然后寫一行 JavaScript 代碼,就可以在下一行看到它的輸出。

  ## **12、process.nextTick和setImmediate有什么區別?**

  傳遞給 setImmediate 函數的回調將在事件隊列上的下一次迭代中執行。

  另一方面,回調傳遞給 process.nextTick 在下一次迭代之前以及程序中當前運行的操作完成之后執行。在應用程序啟動時,開始遍歷事件隊列之前調用它的回調。

  因此,回調 process.nextTick 總是在 setImmediate 之前調用。

  下面代碼段:

  ```js

  setImmediate(() => {

  console.log("first");

  })

  process.nextTick(() => {

  console.log("second");

  })

  console.log("third");

  ```

  將按順序輸出:

  ```js

  third

  second

  first

  ```

  ## **13、stub什么**

  測試應用程序時使用 stub,模擬給定組件或模塊的行為,你可以將精力集中在要測試的代碼部分。通過使用 stub 代替與測試無關的組件,不必擔心外部組件會影響結果。

  例如,如果正在測試的組件在預期測試的部分之前有一個文件讀取操作,則可以使用 stub 來模擬該行為并返回模擬內容,而不用實際讀取文件。

  在 Node.js 中,我們使用像 Sinon 這樣的庫來實現(譯者注,Sinon 在測試中替換某部分代碼,減少測試項編寫的復雜度 [https://sinonjs.org](https://link.zhihu.com/?target=https%3A//sinonjs.org))。

  ## **14、為什么在express中分離“應用程序”和“服務器”是一種好的做法?**

  通過在 Express 中分離應用程序和服務器,可以將 API 實現與網絡相關配置分開。在不執行網絡調用的情況下執行 API 測試,保證了更快的測試執行和更好的代碼覆蓋度量。

  要實現這種分離,應該在單獨的文件中聲明 API 和 server,對應 app.js 和 server.js:

  ```js

  // app.js

  const express = require("express");

  const app = express();

  app.use("/", index);

  app.use("/contact", contact);

  app.use("/user", user);

  module.exports = app;

  // server.js

  const http = require("http");

  const app = require("/app");

  app.set('port', process.env.PORT);

  const http = http.createServer(app);

  ```

  ## **15、什么是yarn和npm?為什么要用yarn代替npm呢?**

  npm 是與 Node.js 自帶的默認包管理器,它有一個大型的公共庫和私有庫,存儲在 npm registry 的數據庫中(譯者注,官方默認中心庫 [http://registry.npmjs.org/](https://link.zhihu.com/?target=http%3A//registry.npmjs.org/),國內淘寶鏡像 [http://registry.npm.taobao.org/](https://link.zhihu.com/?target=http%3A//registry.npm.taobao.org/)),用戶可以通過 npm 命令行訪問該數據庫。在 npm 的幫助下,用戶可以輕松管理項目中的依賴項。

  yarn 也是一個包管理器,為了解決 npm 的一些缺點。yarn 依賴 npm 注冊中心為用戶提供對包訪問。yarn 底層結構基于 npm,如果從 npm 遷移到 yarn,項目結構和工作流不需要大改。

  就像之前提到的,在某些情況下,yarn 提供了比 npm 更好的功能。與 npm 不同的是,它會緩存下載的每個包,不必重新下載。

  通過校驗和驗證包的完整性來提供更好的安全性,保證在某個系統上運行的包在任何其他系統中的工作方式完全相同,這就是為什么選擇 yarn 而不是 npm 來進行包管理。

  ## **總結**

  在本文中,討論了 15 個最常見的 Node.js 面試問題,幫助你為下一次面試做準備。知道你可能被問到的問題和答案,面試就不再緊張了。

  **- End -**

  更多關于“html5培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓經驗,課程大綱更科學更專業,有針對零基礎的就業班,有針對想提升技術的提升班,高品質課程助理你實現夢想。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
開班信息
北京校區
  • 北京校區
  • 大連校區
  • 廣州校區
  • 成都校區
  • 杭州校區
  • 長沙校區
  • 合肥校區
  • 南京校區
  • 上海校區
  • 深圳校區
  • 武漢校區
  • 鄭州校區
  • 西安校區
  • 青島校區
  • 重慶校區
  • 太原校區
  • 沈陽校區
  • 南昌校區
  • 哈爾濱校區
肉丝超薄丝袜交一区二区| 欧美日韩精品一区二区在线播放 | 成人精品视频99在线观看免费| 成年免费A级毛片免费看无码| 国产精品久久久久久久稀缺资源| 黑人顶到深处高潮颤抖| 麻豆国产97在线 | 中文| 日本少妇情视频WWW| 亚洲AV蜜乳永久www| 中文字幕乱码人妻无码久久| 成人全部免费的A毛片在线看| 国产小受呻吟GV视频在线观看| 久久熟妇一区二区三区紧湿| 人妻少妇乱子伦精品无码专区毛片| 无码人妻精一区二区三区| 野花日本HD免费高清版视频| 啊灬啊灬啊灬快灬高潮了霸总| 国产精品夜间视频香蕉| 老司机久久99久久精品播放| 僧侣と交わる色欲の夜に| 亚洲狠狠色成人综合网| JAPAN强要VIDEOD警妞| 国产精品无码综合区| 浪货趴办公桌~H揉| 色欲AV自慰一区二区三区| 亚洲欧美一区二区成人片| А天堂中文在线官网| 国产亚洲成AⅤ人片在线观看麻豆| 蜜桃91人妻在线视频| 天美传媒MV高清版在线观看| 一边亲着一面膜下奶怎么回事| 粗大的内捧猛烈进出无码| 精品无码国产污污污免费网站国产| 人妻AV鲁丝一区二区三区蜜臀| 亚洲AV综合色区无码一二三区| CAOPOREN超碰| 激情影视乱码AV| 清一区二区国产好的精华液| 亚洲妇女无套内射精| 边做饭边被躁我和邻居的视频| 精品久久久久久无码人妻| 日产乱码一二三区别免费观看| 亚洲伊人久久大香线蕉综合图片| 顶级RAPPER潮水日本| 可以C女性角色的游戏手游| 无码aⅴ精品一区二区三区浪潮| 中文字幕无码精品亚洲资源网| 国产精品无码一区二区三区免费 | А√天堂中文在线| 精品香蕉一区二区三区| 少妇又粗又大人妻无码| 中文字幕无码精品三级在线电影| 国产偷自视频区视频| 人禽伦免费交视频播放| 野花高清在线电影观看免费视频 | 无码欧美毛片一区二区三在线视频| 自拍亚洲欧美在线成电影| 国产亚洲欧美另类一区二区三区| 人妻去按摩店被黑人按中出| 亚洲无码视频一区二区| 国产精品久久久久精品A级| 欧美人与动性行为视频| 亚洲精品无码久久久久AV麻豆| 丰满熟妇BBWBBWBBWBB| 妺妺窝人体色WWW看美女| 亚洲V欧美V国产V在线观看| 第一次爱的人视频播放完整版| 免费播放片高清在线视频| 亚洲丰满熟妇在线观看| 国产AV无码精品色午夜| 欧美视频二区欧美影视| 一本色道久久综合亚洲精品| 国产午夜亚洲精品不卡| 色妞AV永久一区二区国产AV| 99久久99久久久精品齐齐综合| 久久99精品国产麻豆蜜芽| 无码人妻精品一区二区三区久久久| 扒掉内裤露出打嫩嫩的屁股| 麻豆日产精品卡2卡3卡4卡5卡| 亚洲成人综合av| 国产精品视频免费播放| 日韩Av无码一区二区| BGMBGMBGM老妇视频| 老外粗猛长爽的视频| 亚洲国产制服丝袜先锋| 国产拍揄自揄免费观看| 熟妇的奶头又大又粗视频| 锕锕锕锕锕锕~好深啊电影APP | 精品无人区无码乱码毛片国产| 无码人妻丰满熟妇区五十路在线 | 波多野结衣AV高清一区二区三区| 免费精东传媒VS天美传媒| 亚洲色偷偷综合亚洲AV78| 国产日韩AⅤ无码一区二区三区| 少妇人妻一级AV片| 成人午夜福利免费体验区| 亲孑伦一区二区三区| 51久久精品人人搡人人玩| 老子影院午夜精品无码| 亚洲中文成人中文字幕| 痉挛高潮喷水AV无码免费| 亚洲VA无码手机在线电影| 国产特级毛片AAAAAA高清| 无码αv人妻一区二区三区| 丰满少妇被猛男猛烈进入久久| 人妻无码AⅤ中文字幕系列| GOGO西西自慰人体高清人体模| 蜜臀av一区二区三区久久 | 乱码一线二线三线新区破解欧| 亚洲综合AV在线在线播放| 久久精品国产99精品国产亚洲性| 亚洲精品第一国产综合精品99| 黑人玩弄人妻中文在线| 亚洲VA中文字幕无码一二三区 | 裸体美女洗澡啪啪裸J网站| 一杆长枪直入两扇门| 久青草国产97香蕉在线视频| 又粗又黄又猛又爽大片APP| 里番ACG★同人里番本子大全| 淫荡集团69视频在线观看| 老师露双奶头无遮挡挤奶视频| 一区二区三区乱码在线 | 中文 | 国产无遮挡无码视频免费软件| 性色av蜜臀av色欲av免费| 果冻传媒播放观看免费| 亚洲成AV人片在线观看无码不卡| 精品久久8X国产免费观看| 亚洲午夜无码久久久久软件| 看全色黄大色黄大片 视频| 一女大战七个黑人到喷浆| 美女高潮20分钟视频在线观看| 最新国产精品亚洲| 琪琪电影网WWW888DVDC| 吃花核心舌头在里面旋转| 少妇又粗又大人妻无码| 国产欧美成AⅤ人高清| 亚洲成a人蜜臀AV在线播放| 久久99精品国产麻豆不卡| 在线观看特色大片免费网站| 男人又粗又黑又硬的东西| YIN荡到骨子里的SAO货| 色妞AV永久一区二区国产AV| 国产精品午夜福利不卡| 亚洲国产成人久久综合| 久久久亚洲欧洲日产无码AV| 自拍亚洲欧美在线成电影| 人妻 日韩 欧美 综合 制服| 国产99精品视频一区二区三区| 五十路六十路七十路熟婆| 狠狠躁天天躁夜夜躁婷婷| 伊人久久大香线蕉AV网禁呦| 欧美乱大交XXXXX在线观看| 成人人妻小说AV| 西方44大但人文艺术是什么东西| 精品人妻少妇一区二区三区在线| 又大又粗又爽ΑA级毛片| 青青草国产成人A∨| 公司办公室的秘书3| 亚洲 小说区 图片区 都市| 久久久久久久久精品成人| ⅩXXⅩ内射意大利老妇| 熟妇人妻无乱码中文字幕真矢织江| 国产一二三四区中| 荫蒂每天被男人添| 日本三级欧美三级人妇视频黑白配 | 成人无码精品无码社区| 羞羞漫画_成人漫画_成人专用| 久久精品国产欧美日韩| JAPANESE春药高潮| 无码毛片内射白浆视频| 久久精品国产亚洲AV麻豆| FREEZEFRAME丰满少妇| 无码成人免费AV片在线观看| 久久精品国产亚洲AV高清热| АⅤ资源中文在线天堂| 小少妇BBBBBBBBBBBB| 老熟妇XXXⅩHD老熟女| 成人免费视频CAOPORN| 亚洲AV无码久久| 嫩B人妻精品一区二区三区| 国产成人亚洲精品无码高潮| 亚洲欧洲日产V一个人免费观看视频WWW高清 | 国产精品视频色尤物YW| 一本色道久久88亚洲精品综合| 日韩A片无码ⅩXXXX| 激情偷乱人伦小说视频在线| ASS年轻少妇BBWPICS| 无码无套少妇毛多18P| 久久人人爽天天玩人人妻精品| 成年免费A级毛片免费看无码| 亚洲AV最新天堂网址| 欧美乱大交XXXXX| 国产午夜鲁丝片AV无码| 8X8Ⅹ成人免费视频在线观看| 铜铜铜铜铜铜铜好大好深色板 | 色偷偷亚洲女人的天堂| 久久久久久精品免费免费| 东欧av性无码高清| 一出一进一爽一粗一大视频免费的| 少妇高潮惨叫久久久久电影69|