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

(守望_2019)

1.說說MVC和MVVM分別是什么合溺?

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

MVVM是Model-View-ViewModel的簡寫鸟顺,MVVM是將“數(shù)據(jù)模型數(shù)據(jù)雙向綁定”的思想作為核心,因此在View和Model之間沒有聯(lián)系器虾,通過ViewModel進行交互讯嫂,而且Model和ViewModel之間的交互是雙向的,因此視圖的數(shù)據(jù)的變化會同時修改數(shù)據(jù)源兆沙,而數(shù)據(jù)源數(shù)據(jù)的變化也會立即反應view欧芽。

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

提供了網站開發(fā)的常用模塊:處理用戶請求千扔、操作數(shù)據(jù)庫憎妙、模板渲染、配置文件管理等

image.png

Node

3.Node.js的適用場景曲楚?

高并發(fā)尚氛、聊天、實時消息推送

實時應用:如在線聊天洞渤,實時通知推送等等(如socket.io)

分布式應用:通過高效的并行I/O使用已有的數(shù)據(jù)

工具類應用:海量的工具阅嘶,小到前端壓縮部署(如grunt),大到桌面圖形界面應用程序

游戲類應用:游戲領域對實時和并發(fā)有很高的要求(如網易的pomelo框架)

利用穩(wěn)定接口提升Web渲染能力

前后端編程語言環(huán)境統(tǒng)一:前端開發(fā)人員可以非吃仄快速地切入到服務器端的開發(fā)(如著名的純Javascript全棧式MEAN架構)

?g是什么讯柔?

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

4.了解npm,spm护昧,nodejs嗎魂迄,請簡要描述?

NPM便于JavaScript開發(fā)者共享和重用代碼惋耙,它可以很容易地更新你的代碼捣炬;再分享。是全球最大的開源庫生態(tài)系統(tǒng)绽榛。

SPM是淘寶社區(qū)電商業(yè)務(xTao)為外部合作伙伴(外站)提供的一套跟蹤引導成交效果數(shù)據(jù)的解決方案湿酸。

Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環(huán)境。Node.js 使用了一個事件驅動灭美、非阻塞式 I/O 的模型推溃,使其輕量又高效。它使我們能夠在本地運行javascript届腐。

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

服務器Node.js和瀏覽器js的區(qū)別是什么铁坎?Node.js把js從客戶端遷移了到服務端、主要做了哪些工作犁苏?為什么說Node.js適合做高并發(fā)的互聯(lián)網應用硬萍?

Node采用一系列“非阻塞”庫來支持事件循環(huán)的方式。本質上就是為文件系統(tǒng)围详、數(shù)據(jù)庫之類的資源提供接口朴乖。Node.js 使用事件驅動,非阻塞I/O 模型而得以輕量和高效短曾,非常適合在分布式設備上運行數(shù)據(jù)密集型的實時應用寒砖。

對Node的優(yōu)點和缺點提出了自己的看法?

*(優(yōu)點)因為Node是基于事件驅動和無阻塞的嫉拐,所以非常適合處理并發(fā)請求哩都,

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

此外婉徘,與Node代理服務器交互的客戶端代碼是由javascript語言編寫的漠嵌,

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

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

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

image.png

React

react虛擬DOM運行機制是什么掠手?

在React中,render執(zhí)行的結果得到的并不是真正的DOM節(jié)點狸捕,結果僅僅是輕量級的JavaScript對象喷鸽,我們稱之為virtual DOM(虛擬dom)

react中prop和state的區(qū)別?

需要理解的是灸拍,props是一個父組件傳遞給子組件的數(shù)據(jù)流做祝,這個數(shù)據(jù)流可以一直傳遞到子孫組件。而state代表的是一個組件內部自身的狀態(tài)(可以是父組件鸡岗、子孫組件)混槐。

redux的原理?

Redux 把一個應用程序中纤房,所有應用模塊之間需要共享訪問的數(shù)據(jù)纵隔,都應該放在 State 對象中翻诉。這個應用模塊可能是指 React Components炮姨,也可能是你自己訪問 AJAX API 的代理模塊,具體是什么并沒有一定的限制碰煌。State 以 “樹形” 的方式保存應用程序的不同部分的數(shù)據(jù)舒岸。這些數(shù)據(jù)可能來自于網絡調用、本地數(shù)據(jù)庫查詢芦圾、甚至包括當前某個 UI 組件的臨時執(zhí)行狀態(tài)(只要是需要被不同模塊訪問)

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

相同點

都支持服務器端渲染

都有Virtual DOM,組件化開發(fā),通過props參數(shù)進行父子組件數(shù)據(jù)的傳遞,都實現(xiàn)webComponent規(guī)范

數(shù)據(jù)驅動視圖

都有支持native的方案,React的React native,Vue的weex

不同點

React嚴格上只針對MVC的view層,Vue則是MVVM模式

virtual DOM不一樣,vue會跟蹤每一個組件的依賴關系,不需要重新渲染整個組件樹.而對于React而言,每當應用的狀態(tài)被改變時,全部組件都會重新渲染,所以react中會需要shouldComponentUpdate這個生命周期函數(shù)方法來進行控制

組件寫法不一樣, React推薦的做法是 JSX + inline style, 也就是把HTML和CSS全都寫進JavaScript了,即’all in js’; Vue推薦的做法是webpack+vue-loader的單文件組件格式,即html,css,js寫在同一個文件;

數(shù)據(jù)綁定: vue實現(xiàn)了數(shù)據(jù)的雙向綁定,react數(shù)據(jù)流動是單向的

state對象在react應用中不可變的,需要使用setState方法更新狀態(tài);在vue中,state對象不是必須的,數(shù)據(jù)由data屬性在vue對象中管理

image.png

Vue

怎么定義vue-router的動態(tài)路由?怎么獲取傳過來的動態(tài)參數(shù)?

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

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

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

vuex是什么茫经?怎么使用巷波?哪種功能場景使用它萎津?

vue框架中狀態(tài)管理。在main.js引入store抹镊,注入锉屈。新建了一個目錄store,….. export 垮耳。場景有:單頁應用中颈渊,組件之間的狀態(tài)。音樂播放终佛、登錄狀態(tài)儡炼、加入購物車

Vue的雙向數(shù)據(jù)綁定原理是什么?

vue.js 是采用數(shù)據(jù)劫持結合發(fā)布者-訂閱者模式的方式查蓉,通過Object.defineProperty()來劫持各個屬性的setter乌询,getter,在數(shù)據(jù)變動時發(fā)布消息給訂閱者豌研,觸發(fā)相應的監(jiān)聽回調妹田。

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

總共分為8個階段創(chuàng)建前/后鹃共,載入前/后鬼佣,更新前/后,銷毀前/后霜浴。

創(chuàng)建前/后: 在beforeCreated階段晶衷,vue實例的掛載元素$el和數(shù)據(jù)對象data都為undefined,還未初始化阴孟。在created階段晌纫,vue實例的數(shù)據(jù)對象data有了,$el還沒有永丝。

載入前/后:在beforeMount階段锹漱,vue實例的$el和data都初始化了,但還是掛載之前為虛擬的dom節(jié)點慕嚷,data.message還未替換哥牍。在mounted階段,vue實例掛載完成喝检,data.message成功渲染嗅辣。

更新前/后:當data變化時,會觸發(fā)beforeUpdate和updated方法挠说。

銷毀前/后:在執(zhí)行destroy方法后澡谭,對data的改變不會再觸發(fā)周期函數(shù),說明此時vue實例已經解除了事件監(jiān)聽以及和dom的綁定纺涤,但是dom結構依然存在

說下vue組件之間的通信译暂?

非父子組件間通信抠忘,Vue 有提供 Vuex,以狀態(tài)共享方式來實現(xiàn)同信外永,對于這一點崎脉,應該注意考慮平衡,從整體設計角度去考量伯顶,確保引入她的必要囚灼。

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

還可以通過$emit方法出發(fā)一個消息,然后$on接收這個消息

什么是RESTful API祭衩?怎么使用?

是一個api的標準灶体,無狀態(tài)請求。請求的路由地址是固定的掐暮,如果是tp5則先路由配置中把資源路由配置好蝎抽。標準有:.post .put .delete

image.png

Webpack

談談你對webpack的看法

WebPack 是一個模塊打包工具,你可以使用WebPack管理你的模塊依賴路克,并編繹輸出模塊們所需的靜態(tài)文件樟结。它能夠很好地管理、打包Web開發(fā)中所用到的HTML精算、JavaScript瓢宦、CSS以及各種靜態(tài)文件(圖片、字體等)灰羽,讓開發(fā)過程更加高效驮履。對于不同類型的資源,webpack有對應的模塊加載器廉嚼。webpack模塊打包器會分析模塊間的依賴關系玫镐,最后 生成了優(yōu)化且合并后的靜態(tài)資源。

webpack的兩大特色:

code splitting(可以自動完成)

loader 可以處理各種類型的靜態(tài)文件前鹅,并且支持串聯(lián)操作

webpack 是以commonJS的形式來書寫腳本滴摘悴,但對 AMD/CMD 的支持也很全面,方便舊項目進行代碼遷移舰绘。

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

對 CommonJS 葱椭、 AMD 捂寿、ES6的語法做了兼容

對js、css孵运、圖片等資源文件都支持打包

串聯(lián)式模塊加載器以及插件機制秦陋,讓其具有更好的靈活性和擴展性,例如提供對CoffeeScript治笨、ES6的支持

有獨立的配置文件webpack.config.js

可以將代碼切割成不同的chunk驳概,實現(xiàn)按需加載赤嚼,降低了初始化時間

支持 SourceUrls 和 SourceMaps,易于調試

具有強大的Plugin接口顺又,大多是內部插件更卒,使用起來比較靈活

webpack 使用異步 IO 并具有多級緩存。這使得 webpack 很快且在增量編譯上更加快

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末稚照,一起剝皮案震驚了整個濱河市蹂空,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌果录,老刑警劉巖上枕,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異弱恒,居然都是意外死亡辨萍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門返弹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來分瘦,“玉大人,你說我怎么就攤上這事琉苇〕懊担” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵并扇,是天一觀的道長去团。 經常有香客問我,道長穷蛹,這世上最難降的妖魔是什么土陪? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮肴熏,結果婚禮上鬼雀,老公的妹妹穿的比我還像新娘。我一直安慰自己蛙吏,他們只是感情好源哩,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鸦做,像睡著了一般励烦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泼诱,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天坛掠,我揣著相機與錄音,去河邊找鬼。 笑死屉栓,一個胖子當著我的面吹牛舷蒲,可吹牛的內容都是我干的。 我是一名探鬼主播友多,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼牲平,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了夷陋?” 一聲冷哼從身側響起欠拾,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎骗绕,沒想到半個月后藐窄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡酬土,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年荆忍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撤缴。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡刹枉,死狀恐怖,靈堂內的尸體忽然破棺而出屈呕,到底是詐尸還是另有隱情微宝,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布虎眨,位于F島的核電站蟋软,受9級特大地震影響,放射性物質發(fā)生泄漏嗽桩。R本人自食惡果不足惜岳守,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碌冶。 院中可真熱鬧湿痢,春花似錦、人聲如沸扑庞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嫩挤。三九已至害幅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岂昭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留约啊,地道東北人邑遏。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像恰矩,于是被迫代替她去往敵國和親记盒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內容