国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

2019前端面試題匯總(主要為Vue)

開發(fā) 前端
剛來3天,面試了幾家公司,有些規(guī)模比較小,有些是創(chuàng)業(yè)公司,也有些已經(jīng)發(fā)展的不錯了;今天把最近的面試題目做個匯總,也給自己復個盤,由于我的技術(shù)棧主要為Vue,所以大部分題目都是Vue開發(fā)相關(guān)的。

畢業(yè)之后就在一直合肥小公司工作,沒有老司機、沒有技術(shù)氛圍,在技術(shù)的道路上我只能獨自摸索。老板也只會畫餅充饑,前途一片迷茫看不到任何希望。于是乎,我果斷辭職,在新年開工之際來到杭州,這里的互聯(lián)網(wǎng)公司應該是合肥的幾十倍吧。。。。

剛來3天,面試了幾家公司,有些規(guī)模比較小,有些是創(chuàng)業(yè)公司,也有些已經(jīng)發(fā)展的不錯了;今天把最近的面試題目做個匯總,也給自己復個盤,由于我的技術(shù)棧主要為Vue,所以大部分題目都是Vue開發(fā)相關(guān)的。

1. 談談你對MVVM開發(fā)模式的理解

MVVM分為Model、View、ViewModel三者。

Model 代表數(shù)據(jù)模型,數(shù)據(jù)和業(yè)務邏輯都在Model層中定義;

View 代表UI視圖,負責數(shù)據(jù)的展示;

ViewModel 負責監(jiān)聽 Model 中數(shù)據(jù)的改變并且控制視圖的更新,處理用戶交互操作;

Model 和 View 并無直接關(guān)聯(lián),而是通過 ViewModel 來進行聯(lián)系的,Model 和 ViewModel 之間有著雙向數(shù)據(jù)綁定的聯(lián)系。因此當 Model 中的數(shù)據(jù)改變時會觸發(fā) View 層的刷新,View 中由于用戶交互操作而改變的數(shù)據(jù)也會在 Model 中同步。

這種模式實現(xiàn)了 Model 和 View 的數(shù)據(jù)自動同步,因此開發(fā)者只需要專注對數(shù)據(jù)的維護操作即可,而不需要自己操作 dom。

2. Vue 有哪些指令?

v-html、v-show、v-if、v-for等等

3. v-if 和 v-show 有什么區(qū)別?

v-show 僅僅控制元素的顯示方式,將 display 屬性在 block 和 none 來回切換;而v-if會控制這個 DOM 節(jié)點的存在與否。當我們需要經(jīng)常切換某個元素的顯示/隱藏時,使用v-show會更加節(jié)省性能上的開銷;當只需要一次顯示或隱藏時,使用v-if更加合理。

4. 簡述Vue的響應式原理

當一個Vue實例創(chuàng)建時,vue會遍歷data選項的屬性,用 Object.defineProperty 將它們轉(zhuǎn)為 getter/setter并且在內(nèi)部追蹤相關(guān)依賴,在屬性被訪問和修改時通知變化。

每個組件實例都有相應的 watcher 程序?qū)嵗鼤诮M件渲染的過程中把屬性記錄為依賴,之后當依賴項的 setter 被調(diào)用時,會通知 watcher 重新計算,從而致使它關(guān)聯(lián)的組件得以更新。

5. Vue中如何在組件內(nèi)部實現(xiàn)一個雙向數(shù)據(jù)綁定?

假設(shè)有一個輸入框組件,用戶輸入時,同步父組件頁面中的數(shù)據(jù)

具體思路:父組件通過 props 傳值給子組件,子組件通過 $emit 來通知父組件修改相應的props值,具體實現(xiàn)如下: 

  1. import Vue from 'vue'  
  2. const component = {  
  3.   props: ['value'],  
  4.   template: `  
  5.     <div>  
  6.       <input type="text" @input="handleInput" :value="value">  
  7.     </div>  
  8.   `,  
  9.   data () {  
  10.     return {  
  11.     }  
  12.   },  
  13.   methods: {  
  14.     handleInput (e) {  
  15.       this.$emit('input', e.target.value)  
  16.     }  
  17.   } 
  18. }  
  19. new Vue({  
  20.   components: {  
  21.     CompOne: component  
  22.   },  
  23.   el: '#root',  
  24.   template: `  
  25.     <div>  
  26.       <comp-one :value1="value" @input="value = arguments[0]"></comp-one>  
  27.     </div>  
  28.   `,  
  29.   data () {  
  30.     return {  
  31.       value: '123'  
  32.     }  
  33.   }  
  34. }) 

可以看到,當輸入數(shù)據(jù)時,父子組件中的數(shù)據(jù)是同步改變的:

我們在父組件中做了兩件事,一是給子組件傳入props,二是監(jiān)聽input事件并同步自己的value屬性。那么這兩步操作能否再精簡一下呢?答案是可以的,你只需要修改父組件: 

  1. template: `  
  2.     <div>  
  3.       <!--<comp-one :value1="value" @input="value = arguments[0]"></comp-one>-->  
  4.       <comp-one v-model="value"></comp-one>  
  5.     </div>  
  6.   ` 

v-model 實際上會幫我們完成上面的兩步操作。

6. Vue中如何監(jiān)控某個屬性值的變化?

比如現(xiàn)在需要監(jiān)控data中,obj.a 的變化。Vue中監(jiān)控對象屬性的變化你可以這樣: 

  1. watch: {  
  2.       obj: {  
  3.       handler (newValue, oldValue) {  
  4.         console.log('obj changed')  
  5.       },  
  6.       deep: true  
  7.     }  
  8.   } 

deep屬性表示深層遍歷,但是這么寫會監(jiān)控obj的所有屬性變化,并不是我們想要的效果,所以做點修改: 

  1. watch: {  
  2.    'obj.a': {  
  3.       handler (newName, oldName) {  
  4.         console.log('obj.a changed')  
  5.       }  
  6.    }  
  7.   } 

還有一種方法,可以通過computed 來實現(xiàn),只需要: 

  1. computed: {  
  2.     a1 () {  
  3.       return this.obj.a  
  4.     }  

利用計算屬性的特性來實現(xiàn),當依賴改變時,便會重新計算一個新值。

7. Vue中給data中的對象屬性添加一個新的屬性時會發(fā)生什么,如何解決?

示例: 

  1. <template>  
  2.   <div>  
  3.     <ul>  
  4.       <li v-for="value in obj" :key="value">  
  5.         {{value}}  
  6.       </li>  
  7.     </ul>  
  8.     <button @click="addObjB">添加obj.b</button>  
  9.   </div>  
  10. </template>  
  11. <script>  
  12. export default {  
  13.   data () {  
  14.     return {  
  15.       obj: {  
  16.         a: 'obj.a'  
  17.       }  
  18.     }  
  19.   },  
  20.   methods: {  
  21.     addObjB () {  
  22.       this.obj.b = 'obj.b'  
  23.       console.log(this.obj)  
  24.     }  
  25.   }  
  26. }  
  27. </script>  
  28. <style></style> 

點擊button會發(fā)現(xiàn),obj.b 已經(jīng)成功添加,但是視圖并未刷新:

原因在于在Vue實例創(chuàng)建時,obj.b并未聲明,因此就沒有被Vue轉(zhuǎn)換為響應式的屬性,自然就不會觸發(fā)視圖的更新,這時就需要使用Vue的全局api $set(): 

  1. addObjB () {  
  2.       // this.obj.b = 'obj.b'  
  3.       this.$set(this.obj, 'b', 'obj.b')  
  4.       console.log(this.obj)  
  5.     } 

$set()方法相當于手動的去把obj.b處理成一個響應式的屬性,此時視圖也會跟著改變了:

8. delete和Vue.delete刪除數(shù)組的區(qū)別

delete只是被刪除的元素變成了 empty/undefined 其他的元素的鍵值還是不變。

Vue.delete直接刪除了數(shù)組 改變了數(shù)組的鍵值。   

  1. var a=[1,2,3,4]  
  2.    var b=[1,2,3,4]  
  3.    delete a[1]  
  4.    console.log(a)  
  5.    this.$delete(b,1)  
  6.    console.log(b) 

9.如何優(yōu)化SPA應用的首屏加載速度慢的問題?

  •  將公用的JS庫通過script標簽外部引入,減小app.bundel的大小,讓瀏覽器并行下載資源文件,提高下載速度;
  •  在配置 路由時,頁面和組件使用懶加載的方式引入,進一步縮小 app.bundel 的體積,在調(diào)用某個組件時再加載對應的js文件;
  •  加一個首屏 loading 圖,提升用戶體驗;

10. 前端如何優(yōu)化網(wǎng)站性能?

    1. 減少 HTTP 請求數(shù)量

在瀏覽器與服務器進行通信時,主要是通過 HTTP 進行通信。瀏覽器與服務器需要經(jīng)過三次握手,每次握手需要花費大量時間。而且不同瀏覽器對資源文件并發(fā)請求數(shù)量有限(不同瀏覽器允許并發(fā)數(shù)),一旦 HTTP 請求數(shù)量達到一定數(shù)量,資源請求就存在等待狀態(tài),這是很致命的,因此減少 HTTP 的請求數(shù)量可以很大程度上對網(wǎng)站性能進行優(yōu)化。

  •  CSS Sprites:國內(nèi)俗稱 CSS 精靈,這是將多張圖片合并成一張圖片達到減少 HTTP 請求的一種解決方案,可以通過 CSS background 屬性來訪問圖片內(nèi)容。這種方案同時還可以減少圖片總字節(jié)數(shù)。
  •  合并 CSS 和 JS 文件:現(xiàn)在前端有很多工程化打包工具,如:grunt、gulp、webpack等。為了減少 HTTP 請求數(shù)量,可以通過這些工具再發(fā)布前將多個 CSS 或者 多個 JS 合并成一個文件。
  •  采用 lazyLoad:俗稱懶加載,可以控制網(wǎng)頁上的內(nèi)容在一開始無需加載,不需要發(fā)請求,等到用戶操作真正需要的時候立即加載出內(nèi)容。這樣就控制了網(wǎng)頁資源一次性請求數(shù)量。

    1. 控制資源文件加載優(yōu)先級

瀏覽器在加載 HTML 內(nèi)容時,是將 HTML 內(nèi)容從上至下依次解析,解析到 link 或者 script 標簽就會加載 href 或者 src 對應鏈接內(nèi)容,為了***時間展示頁面給用戶,就需要將 CSS 提前加載,不要受 JS 加載影響。

一般情況下都是 CSS 在頭部,JS 在底部。

    1. 利用瀏覽器緩存

    瀏覽器緩存是將網(wǎng)絡(luò)資源存儲在本地,等待下次請求該資源時,如果資源已經(jīng)存在就不需要到服務器重新請求該資源,直接在本地讀取該資源。

    2. 減少重排(Reflow)

    基本原理:重排是 DOM 的變化影響到了元素的幾何屬性(寬和高),瀏覽器會重新計算元素的幾何屬性,會使渲染樹中受到影響的部分失效,瀏覽器會驗證 DOM 樹上的所有其它結(jié)點的 visibility 屬性,這也是 Reflow 低效的原因。如果 Reflow 的過于頻繁,CPU 使用率就會急劇上升。

減少 Reflow,如果需要在 DOM 操作時添加樣式,盡量使用 增加 class 屬性,而不是通過 style 操作樣式。

  1.  減少 DOM 操作
  2.  圖標使用 IconFont 替換

11. 網(wǎng)頁從輸入網(wǎng)址到渲染完成經(jīng)歷了哪些過程?

大致可以分為如下7步:

  1.  輸入網(wǎng)址;
  2.  發(fā)送到DNS服務器,并獲取域名對應的web服務器對應的ip地址;
  3.  與web服務器建立TCP連接;
  4.  瀏覽器向web服務器發(fā)送http請求;
  5.  web服務器響應請求,并返回指定url的數(shù)據(jù)(或錯誤信息,或重定向的新的url地址);
  6.  瀏覽器下載web服務器返回的數(shù)據(jù)及解析html源文件;
  7.  生成DOM樹,解析css和js,渲染頁面,直至顯示完成;

12. jQuery獲取的dom對象和原生的dom對象有何區(qū)別?

js原生獲取的dom是一個對象,jQuery對象就是一個數(shù)組對象,其實就是選擇出來的元素的數(shù)組集合,所以說他們兩者是不同的對象類型不等價。

  •  原生DOM對象轉(zhuǎn)jQuery對象: 
  1. var box = document.getElementById('box');  
  2. var $box = $(box); 
  •  jQuery對象轉(zhuǎn)原生DOM對象: 
  1. var $box = $('#box');  
  2. var box = $box[0]; 

13. jQuery如何擴展自定義方法 

  1. (jQuery.fn.myMethod=function () {  
  2.        alert('myMethod');  
  3. })  
  4. // 或者:  
  5. (function ($) {  
  6.         $.fn.extend({  
  7.              myMethod : function () {  
  8.                   alert('myMethod');  
  9.              }  
  10.         })  
  11. })(jQuery) 

使用: 

  1. $("#div").myMethod(); 

目前來看公司面試的問題還是比較基礎(chǔ)的,但是對于某些只追求會用并不研究其原理的同學來說可能就沒那么容易了。所以大家不僅要追求學習的廣度,更要追求深度。

OK,希望自己能早日拿到心儀的offer.

責任編輯:龐桂玉 來源: segmentfault
相關(guān)推薦

2023-05-19 08:21:40

MarginCSS

2022-07-27 08:27:34

Call前端

2022-02-09 07:40:42

JavaScript前端面試題

2022-01-18 08:16:52

Web 前端JavaScript

2023-08-27 15:57:28

前端開發(fā)

2021-02-02 06:12:39

JavaScript 前端面試題

2020-06-04 14:40:40

面試題Vue前端

2009-06-16 14:03:16

Hibernate面試Hibernate面試

2018-03-08 18:40:47

Java百度面試題

2022-07-08 08:21:26

JSbind 方法

2009-06-02 15:11:11

Hibernate面試題查詢

2017-08-29 14:12:16

Java面試題

2015-07-23 14:13:43

前端開發(fā)面試題

2017-09-06 09:13:24

2023-12-12 07:40:52

JavaScript面試題前端

2019-11-20 15:00:53

JqueryAjax前端

2024-02-26 15:35:44

2020-09-16 14:17:42

flat方法

2023-04-27 09:08:19

JavaScript隱式類型轉(zhuǎn)換

2020-11-06 09:05:18

前端web開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號

国产精品99久久99久久久| 又爽又大又黄a级毛片在线视频| 国产精品jk白丝蜜臀av小说| 色域天天综合网| 欧美肥臀大乳一区二区免费视频| 色婷婷av在线| 伊人手机在线| 日本a级不卡| 最好看的2019年中文视频| 久草在线青青草| 国产精品私人影院| 九九久久九九久久| 欧美在线网站| 91精品国产91久久久久| 超级白嫩亚洲国产第一| 91久久久免费一区二区| 肥女人的一级毛片| 99久久777色| 日韩欧美一区二区在线观看 | 你懂的免费在线观看| ww亚洲ww在线观看国产| 亚洲va久久久噜噜噜久久狠狠 | 国产精品中文久久久久久久| 日韩中文在线电影| 91av资源在线| 中文字幕中文字幕在线一区| 亚洲最新在线| 亚洲精品色图| 99在线视频播放| 999视频精品| 国产成人精品午夜| 人人精品视频| 91精品国产91久久久久久最新 | 91精品视频一区二区| 日韩精品免费看| 黄色在线观看网站| 色女孩综合影院| 亚洲福利视频网| 美女三级99| 亚洲精选久久| 国产偷久久久精品专区| 欧美体内she精视频在线观看| 成人日韩在线电影| 一区二区免费不卡在线| 91九色蝌蚪成人| 欧美淫片网站| 久久一区二区三区欧美亚洲| 久久成人在线| 在线一区亚洲| 波多野结衣视频一区| 国产综合av在线| 国产亚洲欧美激情| 99热手机在线观看| 亚洲综合激情网| 影音先锋电影在线观看| 欧美色中文字幕| 一区二区三区伦理| 亚洲欧美成人一区二区在线电影| 欧美日韩视频免费观看| 蜜臀久久99精品久久久无需会员| 久久久精品区| 国产精品美女久久久久久免费| 国产精品久久久久蜜臀| 国产精品久久久对白| 视频一区在线视频| 免费高清一区二区三区| 中文字幕乱码一区二区免费| 伊人发布在线| 日韩一级二级三级精品视频| 亚洲风情在线资源| 欧美精品国产精品日韩精品| 日韩dvd碟片| 久久久久久高清| 粉嫩欧美一区二区三区高清影视| 先锋影音资源综合在线播放av| 亚洲成在线观看| 国产日产一区二区| 久久久国产一区二区| 精品成人影院| 久久国产主播精品| 97国产一区二区| 免费理论片在线观看播放老| 亚洲第一视频在线观看| 欧美爱爱视频| 国产97在线|亚洲| 噜噜噜在线观看免费视频日韩| 日韩精品综合在线| 一区二区三区日韩在线观看| a中文在线播放| 亚洲欧美制服第一页| 九九综合在线| 一区二区在线不卡| 一区二区在线观看视频| 久草在线新免费首页资源站| 91精品国产一区| 亚洲欧美春色| 欧美亚洲日本在线观看| 色偷偷成人一区二区三区91| japanese23hdxxxx日韩| 国产在线一区二区三区| 激情欧美一区二区| 91网页在线看| 亚洲日韩欧美视频一区| 外国成人激情视频| 成人黄色av片| 欧美喷水一区二区| 精品自拍偷拍| 欧美一区激情视频在线观看| 国产精品成人免费在线| 888av在线视频| 成人在线视频网| 99久久综合国产精品| 91青青在线视频| 久久久免费精品视频| 久久黄色影院| 最后生还者第二季在线观看| 少妇高潮久久77777| 亚洲区国产区| 黄色激情网站| 久久精品视频va| 日韩中文字幕区一区有砖一区| 99不卡视频| 色噜噜久久综合伊人一本| 亚洲欧美成人| 在线观看国产视频| 久久久视频精品| 国产成人免费xxxxxxxx| caoporn97在线视频| 国产在线观看一区二区三区 | 精品国产亚洲一区二区三区| 欧美日韩大片一区二区三区 | 国产亚洲午夜高清国产拍精品 | 亚洲精品乱码久久久久久| 精品福利在线| 亚洲精品国产精品国自产| 天天亚洲美女在线视频| 精品按摩偷拍| 少妇高清精品毛片在线视频| 亚洲女人被黑人巨大进入| 亚洲一区视频| av电影在线观看网址| 国产日韩欧美在线播放| 中文字幕一区视频| 91精品国产自产在线丝袜啪 | 亚洲激情视频| 美女网站在线| 91精品91久久久久久| wwwwxxxxx欧美| 欧洲av不卡| 国产四区在线观看| 日韩欧美成人午夜| 免费欧美日韩| 在线观看h网| 日本视频一区二区不卡| 制服.丝袜.亚洲.中文.综合| 一二三区精品| 国产黄大片在线观看画质优化| 高清av免费一区中文字幕| 一本久久综合亚洲鲁鲁五月天 | 一区二区在线观看免费| 综合久久成人| 国产精品v日韩精品v在线观看| 久久久国产一区| 久久久久久久久久久久久女国产乱| 在线观看欧美| 激情 小说 亚洲 图片: 伦| 欧美激情一二三| 国产精品护士白丝一区av| 在线一级成人| 亚洲成人男人天堂| 国产精品视频免费观看| 欧美一区二区三区在线观看| 日韩av在线发布| 电影亚洲精品噜噜在线观看| 亚洲美免无码中文字幕在线 | 精品久久久久久综合日本| 欧美放荡的少妇| 久久精品国产99| 成人视屏在线观看| 黄色a级片免费| 青青精品视频播放| 日韩欧美在线视频免费观看| 韩日欧美一区| 国产色播av在线| 欧美在线一区视频| 性色av一区二区三区免费| 亚洲不卡av一区二区三区| 欧美精品日韩| 国产精品一品| av黄色在线网站| 国产精品色午夜在线观看| 欧美日韩精品免费观看视频 | 亚洲专区免费| 欧美激情喷水| 先锋成人影院| 精品免费国产| 久久影视电视剧免费网站清宫辞电视| 亚洲老司机在线| 日韩二区三区四区| 欧洲大片精品免费永久看nba|