node常見面試題

node的特色

  1. 他是一個JavaScript的運行環境
  2. 依賴於Chrome V8 引擎進行代碼解釋
  3. 事件驅動
  4. 非堵塞
  5. 單線程
  6. 輕量,適用於實時數據交互

exports和module.exports的區別

  1. exports是對module.exports引用
  2. node爲每一個模塊提供一個exports變量,他指向module.exports
  3. 不能將它直接指向一個值,那樣會改變他的指向
  4. 若是exports和module.exports同時存在,那麼只顯示module.exports

http請求和響應的報文格式和常見http狀態碼

  1. 請求: 請求行,請求頭,空行,請求體
  2. 響應: 狀態行,響應頭,空行,響應頭
  3. 編碼格式 1.. 表示請求已發送 2.. 表示請求成功 3.. 表示等待用戶進一步操做,重定向 4.. 表示頁面加載錯誤 5.. 表示服務器錯誤

MIME類型有什麼用

  1. http協議中定義文檔性質及格式的標準
  2. 服務器經過MIME告知響應內容什麼類型,而瀏覽器經過MIME類型來缺點如何讓處理文檔

模塊加載機制

Nodejs遵循commonjs規範的模塊加載機制,使用require加載文件,使用exports和module.exports導出文件css

NPM的做用html

  1. 容許用戶從NPM服務器下載別人編寫的第三方包到本地使用
  2. 容許用戶從NPM服務器下載並安裝別人編寫的命令行程到本地使用
  3. 容許用戶將本身編寫的包或命令行程序上傳到NPM服務器供別人使用

url組成

協議+域名+端口+pathname+search+hash前端

fs文件操做模塊可否刪除一個非空目錄,若是不能應該怎麼作

不能 它只能刪除空的目錄 若是目錄不爲空,他必須先遍歷文件夾,刪除裏面的內容,而後若是還有文件夾,繼續遍歷 從而遞歸執行操做,只有當裏面的內容所有清空後,纔會刪除一個目錄html5

exports 中Router要解決的問題?

  1. 能夠認爲他是一個處理中間件和控制器的微型app,他擁有和app相似的方法
  2. 他解決了把模塊暴露給其餘模塊被濫用的風險

npm start命令,應該在哪裏配置,在哪裏能夠正確運行?

  1. 在package.json 中的script中配置npm命令
    • key是npm的自定義命令名稱
    • value是真正終端中執行的命令
  2. 在使用npm 運行自定義命令時, 須要確保命令路徑的位置上擁有package.json文件

express生成器的做用是什麼

能夠經過express-generator能夠快速建立一個應用骨架,包含一整套配置好的服務器配置,文件和文件夾,包括靜態資源的暴露,路由和模板引擎的配置,以及錯誤頁面的處理node

請回答, 前端Ajax請求後端接口/api/getNews, 接口過程當中, 都發生了什麼?

首先前端代碼運行在瀏覽器中,由瀏覽器的XMLHTTPRequest發起一個請求, 若是經過了跨域的檢測, 進行http鏈接, 發送請求信息, 服務器觸發對應監聽的"/api/getNews"接口的回調函數, 執行其中的代碼, 最後res返回響應的內容等給本次請求的地方.webpack

請求對象中包含哪些內容

請求協議,請求方式,請求地址,請求頭,請求頭web

響應對象中包含哪些內容

響應協議,響應狀態碼,響應狀態信息,響應頭,相應數據ajax

express的優勢

Express的優勢是線性邏輯:數據庫

  1. 路由和中間件完美結合
  2. 經過中間件形式把業務邏輯細分,簡化
  3. 隨隨便便的一個請求,經過一系列中間件處理後再響應給客戶,在複雜的邏輯也線性了

###什麼是中間件express

  1. Express是一個自身功能及其簡單,徹底由路由和中間件構成的文本開發框架

  2. 他就是在操做各類中間件處理複雜的邏輯

  3. 非內置的中間件經過require導入就可使用了

  4. 經常使用第三方中間件:

    • cookie-parser
    • ejs
    • express-session
    • http-errors
    • Multer
    • Nodemon
    • config-lite

express 缺點是什麼

  1. express是基於callback來組合業務邏輯
  2. callback有兩大缺點:
    1. 不可組合
    2. 異常不可捕獲

同步/異步

同步操做

因此線程都得等待,只有上一段代碼執行完畢,而後下一段代碼纔會執行,堵塞線程

異步操做

不會等待,當有程序在執行過程當中,後面的代碼繼續執行,當異步操做成功,通常使用回調函數來處理異步成功的動做

ejs

EJS是JavaScript的模板庫,用來從json數據生HTML文件

koa

優勢:
  1. 藉助promise和generator的能力,丟掉callback,完美解決異步組合問題和異步異常捕獲問題
  2. koa把router,view等功都移除了,更加輕量級
缺點
  1. Connect/Express 的中間件基本不能重用,基本要重寫

pug

  1. pug是一款健壯,靈活,功能豐富的HTML模板引擎,專門爲Node.js平臺開發
  2. 是一種經過縮減方式編寫代碼,不須要考慮閉合標籤,能夠提升速度和複用性

設計一個先後端交互的流程?

前端編寫HTML+CSS代碼之後, 經過JS的Ajax進行網路請求, 請求後臺指定的數據接口, 根據業務需求, 能夠還須要傳遞參數等信息, 獲取數據之後, 進行JSON解析和DOM建立展現. 服務器端 編寫接口, 接收參數等, 鏈接數據庫, 根據業務邏輯編寫業務代碼, 返回不一樣的數據

分頁功能,先後的如何交互

分頁功能分先後端

  1. 前端
    • 根據頁碼數,截取後臺返回的所有數據,進行分段展現
  2. 先後端配合
    • 傳遞頁碼數給後臺,後臺作出處理後返回給前臺

cookie和session區別

session是區別於數據庫存在的一種服務器臨時存儲技術, 它主要存儲一些無需持久化的數據, 好比臨時的登陸狀態信息等 cookie是存在於瀏覽器上的一種瀏覽器本地存儲的方式, 同域名下的cookie不一樣標籤頁能夠共享, 默認過時時間是瀏覽器關閉時, 並且在進行http請求時, 會自動帶上瀏覽器所有的cookie發給後臺, 後臺也能夠獲取cookie, 設置能夠在響應時, 想瀏覽器中設置cookie。

解決跨域

當ajax請求所在的域名或者接口和請求目標的域名或者接口有一個不一樣,即發生跨域

解決
  1. 若是可讓後臺改碼,可讓後臺開啓跨域支持/使用jsonp處理
  2. cors設置set.heaader
  3. webpack設置跨域

爲何進行模塊化

  1. 是目前前端的開發趨勢
  2. 有更好的維護性,可複用性等好處

模塊化和組件化的區別

  1. 組件化讓一些小功能通用性和可複用性來抽象組件
  2. 組件化更多的關注UI部分,好比用戶看到的彈出框,頁腳,確認按鈕等,這些組件能夠組合成新的組件,又能夠和其餘組件組合組合成新的組件
  3. 一些小模塊的複用

  1. 模塊化是按照業務邏輯劃分大模塊
  2. 模塊化側重於數據的封裝,一組相關的組件定義成一個模塊,一個json對象能夠是一個模塊

AMD 和 CMD

AMD 依賴前置 CMD 就近依賴

常見的web優化有哪些?

  1. 減小代碼重複
  2. 壓縮 css,js
  3. 減小圖片大小數量
  4. 減小http請求,合理設置緩存
  5. CDN加速
  6. 反向代理
  7. js減小DOM操做,編碼使用eval和function,減小做用域鏈查找

koa與express的區別?該如何選擇?

websocket是什麼

他是html5新增的協議,創建瀏覽器和服務器之間不受限制的雙向通道

websocket的優勢:
  1. 持雙向通訊,實時性更強。
  2. 減小通訊量,只要創建起websocket鏈接,就一直保持鏈接,在此期間能夠不斷的傳送消息,直到關閉請求。
  3. 節約帶寬。

爲何要進行先後端分離?

  1. 提高開發效率,由於能夠先後端並行開發,而不是像之前的強依賴
  2. 能夠實現真正的先後端解耦(前端能夠根據用戶不一樣時期的體驗需求迅速改版,後端對此毫無壓力。同理,後端進行的業務邏輯升級,數據持久方案變動,只要不影響到接口,前端能夠絕不知情。)、增長代碼的維護性及易讀性
  3. 先後端開發人員的職責更加專一:前端傾向於呈現,着重處理用戶體驗相關的問題;後端則傾向於業務邏輯、數據處理和持久化等。
相關文章
相關標籤/搜索