亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

一些可能會用到的Node.js面試題

2024-05-06 16:52:12
字體:
來源:轉載
供稿:網友

前言

從ECMAScript標準,Node.js語法以及NPM模塊角度來看,Node.js的發展讓人目不暇接,那么面試題也得與時俱進。

問題

  • 什么是錯誤優先的回調函數?
  • 如何避免回調地獄?
  • 什么是Promise?
  • 用什么工具保證一致的代碼風格?為什么要這樣?
  • 什么是Stub?舉例說明
  • 什么是測試金字塔?舉例說明
  • 最喜歡哪個HTTP框架?為什么?
  • Cookies如何防范XSS攻擊?
  • 如何保證依賴的安全性?

答案

1. 什么是錯誤優先的回調函數?

錯誤優先的回調函數(Error-First Callback)用于同時返回錯誤和數據。第一個參數返回錯誤,并且驗證它是否出錯;其他參數用于返回數據。

fs.readFile(filePath, function(err, data){if (err){// 處理錯誤return console.log(err);}console.log(data);});

2. 如何避免回調地獄?

以下方式可以避免回調地獄:

  • 模塊化: 將回調函數轉換為獨立的函數
  • 使用流程控制庫,例如aync
  • 使用Promise
  • 使用aync/await

3. 什么是Promise?

Promise可以幫助我們更好地處理異步操作。下面的示例中,100ms后會打印result字符串。catch用于錯誤處理。多個Promise可以鏈接起來。

new Promise((resolve, reject) =>{setTimeout(() =>{resolve('result');}, 100)}).then(console.log).catch(console.error);

4. 用什么工具保證一致的代碼風格?為什么要這樣?

團隊協作時,保證一致的代碼風格是非常重要的,這樣團隊成員才可以更快地修改代碼,而不需要每次去適應新的風格。這些工具可以幫助我們:

  • ESLint
  • Standard

5. 什么是Stub?舉例說明

Stub用于模擬模塊的行為。測試時,Stub可以為函數調用返回模擬的結果。比如說,當我們寫文件時,實際上并不需要真正去寫。

var fs = require('fs');var writeFileStub = sinon.stub(fs, 'writeFile', function(path, data, cb){return cb(null);});expect(writeFileStub).to.be.called;writeFileStub.restore();

6. 什么是測試金字塔?舉例說明

測試金字塔反映了需要寫的單元測試、集成測試以及端到端測試的比例:

Node.js,面試題

測試HTTP接口時應該是這樣的:

  • 很多單元測試,分別測試各個模塊(依賴需要stub)
  • 較少的集成測試,測試各個模塊之間的交互(依賴不能stub)
  • 少量端到端測試,去調用真正地接口(依賴不能stub)

7. 最喜歡哪個HTTP框架?為什么?

這個問題標準答案。需要描述框架的優缺點,這樣可以反映開發者對框架的熟悉程度。

8. Cookies如何防范XSS攻擊?

XSS(Cross-Site Scripting,跨站腳本攻擊)是指攻擊者在返回的HTML中插入JavaScript腳本。為了減輕這些攻擊,需要在HTTP頭部配置set-cookie:

  • HttpOnly - 這個屬性可以防止cross-site scripting,因為它會禁止Javascript腳本訪問cookie。
  • secure - 這個屬性告訴瀏覽器僅在請求為HTTPS時發送cookie。

結果應該是這樣的: Set-Cookie: sid=; HttpOnly. 使用Express的話,cookie-session默認配置好了。

9. 如何保證依賴的安全性?

編寫Node.js應用時,很可能依賴成百上千的模塊。例如,使用了Express的話,會直接依賴27個模塊。因此,手動檢查所有依賴是不現實的。唯一的辦法是對依賴進行自動化的安全檢查,有這些工具可供選擇:

  • npm outdated
  • Trace by RisingStack
  • NSP
  • GreenKeeper
  • Snyk

附加題

1. 這段代碼有什么問題?

new Promise((resolve, reject) =>{throw new Error('error')}).then(console.log)

then之后沒有catch。這樣的話,錯誤會被忽略。可以這樣解決問題:

new Promise((resolve, reject) =>{throw new Error('error')}).then(console.log).catch(console.error)

調試一個大型的項目時,可以使用監控unhandledRejection事件來捕獲所有未處理的Promise錯誤:

process.on('unhandledRejection', (err) =>{console.log(err)})

2. 這段代碼有什么問題?

function checkApiKey(apiKeyFromDb, apiKeyReceived){if (apiKeyFromDb === apiKeyReceived){return true}return false}

比較密碼時,不能泄露任何信息,因此比較必須在固定時間完成。否則,可以使用timing attacks來攻擊你的應用。為什么會這樣呢?Node.js使用V8引擎,它會從性能角度優化代碼。它會逐個比較字符串的字母,一旦發現不匹配時就停止比較。當攻擊者的密碼更準確時,比較的時間越長。因此,攻擊者可以通過比較的時間長短來判斷密碼的正確性。使用cryptiles可以解決這個問題:

function checkApiKey(apiKeyFromDb, apiKeyReceived){return cryptiles.fixedTimeComparison(apiKeyFromDb, apiKeyReceived)}

3. 這段代碼的輸出是什么?

Promise.resolve(1).then((x) => x + 1).then((x) => { throw new Error('My Error') }).catch(() => 1).then((x) => x + 1).then((x) => console.log(x)).catch(console.error)

答案是2,逐行解釋如下:

  1. 創建新的Promise,resolve值為1。
  2. x為1,加1之后返回2。
  3. x為2,但是沒有用到。拋出一個錯誤。
  4. 捕獲錯誤,但是沒有處理。返回1。
  5. x為1,加1之后返回2。
  6. x為2,打印2。
  7. 不會執行,因為沒有錯誤拋出。

英文: Node.js Interview Questions and Answers (2017 Edition)

譯者: Fundebug

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91精品久久久久| 成人国产精品av| 亚洲人午夜精品| 国产成人一区二区三区电影| 亚洲精品久久久久中文字幕欢迎你| 国产v综合ⅴ日韩v欧美大片| 日韩精品在线观看一区| 国产精品h在线观看| 中文字幕欧美日韩va免费视频| 国产精品91免费在线| 亚洲白拍色综合图区| 欧美中文字幕视频| 国产成人一区二区三区| 国产在线精品播放| 日韩有码视频在线| 中文在线不卡视频| 欧美日韩在线视频一区二区| 26uuu另类亚洲欧美日本老年| 热久久免费国产视频| 国产一区二区三区高清在线观看| 日韩精品在线第一页| 国产亚洲欧美日韩一区二区| 91在线直播亚洲| 亚洲美女喷白浆| 91国产美女在线观看| 久久久久久一区二区三区| 欧美黑人视频一区| 国产精品福利在线观看网址| 亚洲欧美日韩精品久久| 国产精品美腿一区在线看| 992tv在线成人免费观看| 欧美激情videoshd| 国产一区欧美二区三区| 国产成人综合精品在线| 91亚洲精品久久久久久久久久久久| 俺去亚洲欧洲欧美日韩| 成人444kkkk在线观看| 久久人人爽亚洲精品天堂| 亚洲深夜福利网站| 成人乱人伦精品视频在线观看| 日韩亚洲欧美中文高清在线| 国产精品第3页| 日韩欧亚中文在线| 欧美激情亚洲自拍| 久久综合伊人77777蜜臀| 国产免费一区二区三区在线观看| 日韩一区在线视频| 色偷偷av一区二区三区| 91夜夜揉人人捏人人添红杏| 国产精品久久一区| 欧美大片网站在线观看| 色伦专区97中文字幕| 国产国产精品人在线视| 成人免费淫片aa视频免费| 欧美日韩国产页| 精品国产乱码久久久久久虫虫漫画| 高清一区二区三区日本久| 一区二区亚洲欧洲国产日韩| 精品视频在线播放免| 日韩精品在线观看一区二区| 少妇久久久久久| 成人激情电影一区二区| 亚洲人成在线播放| 国产精品久久激情| 欧美日韩不卡合集视频| 欧美丝袜一区二区| 欧美最猛性xxxxx(亚洲精品)| 最近日韩中文字幕中文| 国产精品看片资源| 欧美日韩免费区域视频在线观看| 欧美性猛交xxxx乱大交3| 中文字幕免费精品一区| 亚洲片国产一区一级在线观看| 欧美成aaa人片在线观看蜜臀| 精品久久久久久亚洲精品| 热99在线视频| 成人免费黄色网| 欧美精品久久久久久久| 91啪国产在线| 国产精品美女呻吟| 91中文在线视频| 成人av电影天堂| 亚洲国产精品国自产拍av秋霞| 国产成人中文字幕| 国产成人精品久久二区二区91| 亚洲欧洲xxxx| 成人精品网站在线观看| 亚洲www在线观看| 国产一区二中文字幕在线看| 黄色一区二区三区| 成人黄色激情网| 久久资源免费视频| 久久亚洲成人精品| 亚洲伊人成综合成人网| 91久久精品视频| 亚洲精品乱码久久久久久按摩观| 亚洲理论电影网| 亚洲精品久久久久久久久久久久| 欧美日韩一区免费| 亚洲人成网站777色婷婷| 1769国内精品视频在线播放| 日韩美女视频中文字幕| 国产精品69久久| 久久精品91久久久久久再现| 日韩成人av一区| 国自在线精品视频| 精品日本高清在线播放| 欧美最近摘花xxxx摘花| 午夜精品美女自拍福到在线| 精品久久久久久久久久久久| 91探花福利精品国产自产在线| 欧美激情精品久久久久久久变态| 91久久国产婷婷一区二区| 北条麻妃99精品青青久久| 色综合天天综合网国产成人网| 欧美猛交ⅹxxx乱大交视频| 国产精品jizz在线观看麻豆| 一区二区亚洲精品国产| 欧美一级高清免费| 亚洲男人的天堂网站| 亚洲四色影视在线观看| 久久精品视频99| 国产精国产精品| 亚洲国产精品99久久| 亚洲第一区中文字幕| 久久夜色撩人精品| 亚洲精品小视频| 在线精品高清中文字幕| 欧美肥臀大乳一区二区免费视频| 一本色道久久88综合日韩精品| 国产精品视频区| 国产一区视频在线| 欧美性生交xxxxxdddd| 日韩中文字幕精品视频| 中文字幕国产亚洲2019| 久久偷看各类女兵18女厕嘘嘘| 国产精品国产自产拍高清av水多| 欧美色欧美亚洲高清在线视频| 高跟丝袜欧美一区| 亚洲人成在线播放| 日韩在线一区二区三区免费视频| 黑人巨大精品欧美一区二区三区| 久久久久久久999精品视频| 国产精品三级久久久久久电影| 国产精品在线看| 日韩欧美在线一区| 国产精品欧美一区二区三区奶水| 理论片在线不卡免费观看| 亚洲精品视频在线观看视频| 日韩大胆人体377p| 欧美黄色www| 在线播放国产一区中文字幕剧情欧美| 国产成人精品av| 亚洲国产精品美女| 国产视频精品自拍| 欧美猛少妇色xxxxx| 97超级碰碰人国产在线观看| 青青久久av北条麻妃海外网| 91精品久久久久| 国产精品视频网站| 国产精品偷伦一区二区| 91精品视频观看| 国产精品久久久久av| 亚洲色图校园春色|