當前位置:
首頁 > 知識 > 2019前端框架面試題 —— Round one

2019前端框架面試題 —— Round one

1.說說MVC和MVVM分別是什麼?

MVC全名是Model View 。是Controller模型(model)-視圖(view)-控制器(controller)的縮寫。MVC是比較直觀的架構模式,用戶操作->View(負責接收用戶的輸入操作)->Controller(業務邏輯處理)->Model(數據持久化)->View(將結果反饋給View)。

MVVM是Model-View-ViewModel的簡寫,MVVM是將「數據模型數據雙向綁定」的思想作為核心,因此在View和Model之間沒有聯繫,通過ViewModel進行交互,而且Model和ViewModel之間的交互是雙向的,因此視圖的數據的變化會同時修改數據源,而數據源數據的變化也會立即反應view。

2.請描述你所熟悉的Web伺服器框架(如Django)作為一個成熟的Web框架,需要提供哪些重要的功能模塊?

提供了網站開發的常用模塊:處理用戶請求、操作資料庫、模板渲染、配置文件管理等

2019前端框架面試題 —— Round one

image.png


Node

3.Node.js的適用場景?

  • 高並發、聊天、實時消息推送
  • 實時應用:如在線聊天,實時通知推送等等(如socket.io)
  • 分散式應用:通過高效的並行I/O使用已有的數據
  • 工具類應用:海量的工具,小到前端壓縮部署(如grunt),大到桌面圖形界面應用程序
  • 遊戲類應用:遊戲領域對實時和並發有很高的要求(如網易的pomelo框架)
  • 利用穩定介面提升Web渲染能力
  • 前後端編程語言環境統一:前端開發人員可以非常快速地切入到伺服器端的開發(如著名的純Javascript全棧式MEAN架構)

?g是什麼?

在Node.js中-g表示全局安裝模塊

4.了解npm,spm,nodejs嗎,請簡要描述?

NPM便於JavaScript開發者共享和重用代碼,它可以很容易地更新你的代碼;再分享。是全球最大的開源庫生態系統。

SPM是淘寶社區電商業務(xTao)為外部合作夥伴(外站)提供的一套跟蹤引導成交效果數據的解決方案。

Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。它使我們能夠在本地運行javascript。

(如果會用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么?

伺服器Node.js和瀏覽器js的區別是什麼?Node.js把js從客戶端遷移了到服務端、主要做了哪些工作?為什麼說Node.js適合做高並發的互聯網應用?

Node採用一系列「非阻塞」庫來支持事件循環的方式。本質上就是為文件系統、資料庫之類的資源提供介面。Node.js 使用事件驅動,非阻塞I/O 模型而得以輕量和高效,非常適合在分散式設備上運行數據密集型的實時應用。

對Node的優點和缺點提出了自己的看法?

*(優點)因為Node是基於事件驅動和無阻塞的,所以非常適合處理並發請求,

因此構建在Node上的代理伺服器相比其他技術實現(如Ruby)的伺服器表現要好得多。

此外,與Node代理伺服器交互的客戶端代碼是由javascript語言編寫的,

因此客戶端和伺服器端都用同一種語言編寫,這是非常美妙的事情。

*(缺點)Node是一個相對新的開源項目,所以不太穩定,它總是一直在變,

而且缺少足夠多的第三方庫支持。看起來,就像是Ruby/Rails當年的樣子。

2019前端框架面試題 —— Round one

image.png


React

react虛擬DOM運行機制是什麼?

在React中,render執行的結果得到的並不是真正的DOM節點,結果僅僅是輕量級的JavaScript對象,我們稱之為virtual DOM(虛擬dom)

react中prop和state的區別?

需要理解的是,props是一個父組件傳遞給子組件的數據流,這個數據流可以一直傳遞到子孫組件。而state代表的是一個組件內部自身的狀態(可以是父組件、子孫組件)。

redux的原理?

Redux 把一個應用程序中,所有應用模塊之間需要共享訪問的數據,都應該放在 State 對象中。這個應用模塊可能是指 React Components,也可能是你自己訪問 AJAX API 的代理模塊,具體是什麼並沒有一定的限制。State 以 「樹形」 的方式保存應用程序的不同部分的數據。這些數據可能來自於網路調用、本地資料庫查詢、甚至包括當前某個 UI 組件的臨時執行狀態(只要是需要被不同模塊訪問)

react和vue有哪些不同,說說你對這兩個框架的看法

相同點

  • 都支持伺服器端渲染
  • 都有Virtual DOM,組件化開發,通過props參數進行父子組件數據的傳遞,都實現webComponent規範
  • 數據驅動視圖
  • 都有支持native的方案,React的React native,Vue的weex

不同點

  • React嚴格上只針對MVC的view層,Vue則是MVVM模式
  • virtual DOM不一樣,vue會跟蹤每一個組件的依賴關係,不需要重新渲染整個組件樹.而對於React而言,每當應用的狀態被改變時,全部組件都會重新渲染,所以react中會需要shouldComponentUpdate這個生命周期函數方法來進行控制
  • 組件寫法不一樣, React推薦的做法是 JSX + inline style, 也就是把HTML和CSS全都寫進JavaScript了,即』all in js』; Vue推薦的做法是webpack+vue-loader的單文件組件格式,即html,css,js寫在同一個文件;
  • 數據綁定: vue實現了數據的雙向綁定,react數據流動是單向的
  • state對象在react應用中不可變的,需要使用setState方法更新狀態;在vue中,state對象不是必須的,數據由data屬性在vue對象中管理

2019前端框架面試題 —— Round one

image.png


Vue

怎麼定義vue-router的動態路由?怎麼獲取傳過來的動態參數?

在router目錄下的index.js文件中,對path屬性加上/:id。 使用router對象的params.id

vue-router有哪幾種導航鉤子?

三種,一種是全局導航鉤子:router.beforeEach(to,from,next),作用:跳轉前進行判斷攔截。第二種:組件內的鉤子;第三種:單獨路由獨享組件

vuex是什麼?怎麼使用?哪種功能場景使用它?

vue框架中狀態管理。在main.js引入store,注入。新建了一個目錄store,….. export 。場景有:單頁應用中,組件之間的狀態。音樂播放、登錄狀態、加入購物車

Vue的雙向數據綁定原理是什麼?

vue.js 是採用數據劫持結合發布者-訂閱者模式的方式,通過Object.defineProperty()來劫持各個屬性的setter,getter,在數據變動時發布消息給訂閱者,觸發相應的監聽回調。

請詳細說下你對vue生命周期的理解?

總共分為8個階段創建前/後,載入前/後,更新前/後,銷毀前/後。

  • 創建前/後: 在beforeCreated階段,vue實例的掛載元素

    $el和數據對象data都為undefined,還未初始化。在created階段,vue實例的數據對象data有了,$el還沒有。

  • 載入前/後:在beforeMount階段,vue實例的$el和data都初始化了,但還是掛載之前為虛擬的dom節點,data.message還未替換。在mounted階段,vue實例掛載完成,data.message成功渲染。
  • 更新前/後:當data變化時,會觸發beforeUpdate和updated方法。
  • 銷毀前/後:在執行destroy方法後,對data的改變不會再觸發周期函數,說明此時vue實例已經解除了事件監聽以及和dom的綁定,但是dom結構依然存在

說下vue組件之間的通信?

非父子組件間通信,Vue 有提供 Vuex,以狀態共享方式來實現同信,對於這一點,應該注意考慮平衡,從整體設計角度去考量,確保引入她的必要。

父傳子: this.$refs.xxx 子傳父: this.$parent.xxx

還可以通過$emit方法出發一個消息,然後$on接收這個消息

什麼是RESTful API?怎麼使用?

是一個api的標準,無狀態請求。請求的路由地址是固定的,如果是tp5則先路由配置中把資源路由配置好。標準有:.post .put .delete

2019前端框架面試題 —— Round one

image.png


Webpack

談談你對webpack的看法

WebPack 是一個模塊打包工具,你可以使用WebPack管理你的模塊依賴,並編繹輸出模塊們所需的靜態文件。它能夠很好地管理、打包Web開發中所用到的HTML、JavaScript、CSS以及各種靜態文件(圖片、字體等),讓開發過程更加高效。對於不同類型的資源,webpack有對應的模塊載入器。webpack模塊打包器會分析模塊間的依賴關係,最後 生成了優化且合併後的靜態資源。

webpack的兩大特色:

  • code splitting(可以自動完成)
  • loader 可以處理各種類型的靜態文件,並且支持串聯操作
  • webpack 是以commonJS的形式來書寫腳本滴,但對 AMD/CMD 的支持也很全面,方便舊項目進行代碼遷移。

webpack具有requireJs和browserify的功能,但仍有很多自己的新特性:

  • 對 CommonJS 、 AMD 、ES6的語法做了兼容
  • 對js、css、圖片等資源文件都支持打包
  • 串聯式模塊載入器以及插件機制,讓其具有更好的靈活性和擴展性,例如提供對CoffeeScript、ES6的支持
  • 有獨立的配置文件webpack.config.js
  • 可以將代碼切割成不同的chunk,實現按需載入,降低了初始化時間
  • 支持 SourceUrls 和 SourceMaps,易於調試
  • 具有強大的Plugin介面,大多是內部插件,使用起來比較靈活
  • webpack 使用非同步 IO 並具有多級緩存。這使得 webpack 很快且在增量編譯上更加快

2019前端框架面試題 —— Round one

美圖分享

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 極客教程 的精彩文章:

可視化神器——Plotly
js設計模式之一-單例模式

TAG:極客教程 |