vue面試常被問到的問題整理

2022-08-25 13:48:29 字數 2368 閱讀 6612

答 : vue是採用資料劫持,並且使用發布-訂閱者的開發模式。原理是觀察者observer通過object.defineproperty()來劫持到各個屬性的gettersetter,在資料變動的時候,會被observer觀察到,會通過dep通知資料的訂閱者watcher,之後進行相應的檢視上面的變化

具體實現步驟,感興趣的可以看看

第一步:需要observe的資料物件進行遞迴遍歷,包括子屬性物件的屬性,都加上 setter和getter 

這樣的話,給這個物件的某個值賦值,就會觸發setter,那麼就能監聽到了資料變化

第二步:compile解析模板指令,將模板中的變數替換成資料,然後初始化渲染頁面檢視,並將每個指令對應的節點繫結更新函式,新增監聽資料的訂閱者,一旦資料有變動,收到通知,更新檢視

第三步:watcher訂閱者是observer和compile之間通訊的橋梁,主要做的事情是: 

1、在自身例項化時往屬性訂閱器(dep)裡面新增自己 

2、自身必須有乙個update()方法 

3、待屬性變動dep.notice()通知時,能呼叫自身的update()方法,並觸發compile中繫結的**,則功成身退。

第四步:mvvm作為資料繫結的入口,整合observer、compile和watcher三者,通過observer來監聽自己的model資料變化,通過compile來解析編譯模板指令,最終利用watcher搭起observer和compile之間的通訊橋梁,達到資料變化 -> 檢視更新;檢視互動變化(input) -> 資料model變更的雙向繫結效果

答 : 建立前/後,dom渲染前/後,更新前/後,銷毀前/後; 

對於各個週期的理解: 

建立前/後: 

beforecreated:此時的vue例項還沒有掛載元素$el,資料物件data也是undefiend; 

created:vue例項的資料物件data有了,但是$el還沒有 

載入前/後: 

beforemount:vue的例項的$el和data都初始化了,但還是掛載在之前虛擬的dom節點上面,data.message還未替換 

mounted :vue例項掛載完成,data.message成功渲染。 

更新前/後 

在data發生變化的時候,會觸發beforeupdate和updated方法。 

銷毀前/後: 

在destiory之後,對data的改變不會再觸發週期函式,說明此時vue例項已經解除了事件監聽以及和dom的繫結,但是dom結構依然存在

首先,元件可以提公升整個專案的開發效率。能夠把頁面抽象成多個相對獨立的模組,解決了我們傳統專案開發:效率低、難維護、復用性等問題。 

然後,使用vue.extend方法建立乙個元件,然後使用vue.component方法註冊元件。子元件需要資料,可以在props中接受定義。而子元件修改好資料後,想把資料傳遞給父元件。可以採用emit方法。

vue-router模組的router-link元件。

當有多層元件巢狀的時候,可以考慮巢狀路由實現 

因此我們需要在 vuerouter 的引數中使用 children 配置,這樣就可以很好的實現路由巢狀。 

可能還會問如何實現重定向: 

使用redirect配置

在router目錄下的index.js檔案中,對path屬性加上/:id。 

使用router物件的params.id。

三種; 

最常用的是乙個全域性導航鉤子,router.beforeeach(to,from,next),可以用作路由跳轉前進行判斷攔截 

第二種:元件內的鉤子 

第三種:單獨路由獨享元件

css的預編譯。 

使用步驟: 

第一步:用npm 下三個loader(sass-loader、css-loader、node-sass) 

第二步:在build目錄找到webpack.base.config.js,在那個extends屬性中加乙個拓展.scss 

第三步:還是在同乙個檔案,配置乙個module屬性 

第四步:然後在元件的style標籤加上lang屬性 ,例如:lang=」scss」

可以實現雙向繫結,指令(v-class、v-for、v-if、v-show、v-on)。vue的model層的data屬性。繫結事件:

axios:是請求後台資源的模組; 

因為vue-cli會建立乙個伺服器,那麼本地去用axios請求,會造成跨域;解決方法是通過vue-cli生成的框架的結構目錄下的config/index.js,去配置proxytable配置項; 

詳情可參照:

state、mutations、actions、getters四個屬性值

面試中常被問到的問題

我對程式設計比較感興趣,擅長資料結構的演算法,了解併發程式設計 設計模式等基本知識。對資料庫也有一些研究。善於專研,勤於學習,能夠團結他人,不懼怕困難。我的工作經驗不足,可能要花一些時間來適應工作環境 我可以接受加班。同時,我會提高我的工作效率,減少不必要的加班 按照招聘的工資給就行 我打算往高階軟...

面試中經常被問到的問題

1 請簡單解釋演算法是什麼?演算法是乙個定義良好的計算過程,它將一些值作為輸入並產生相應的輸出值。簡單來說,它是將輸入轉換為輸出的一系列計算步驟。2 解釋什麼是快速排序演算法?快速排序演算法能夠快速排序列表或查詢。它基於分割交換排序的原則,這種型別的演算法占用空間較小,它將待排序列表分為三個主要部分...

WinCE面試經常被問到的問題

技術問題 1 wince 下如何訪問一段物理記憶體 希望能聽到 ce5.0 與 ce6.0 各自不同的結果。2 執行緒同步機制有哪些 至少說出三種以上 3 setthreadpriority 和 cesetthreadpriority 的區別 4 volatile 有什麼含意?舉例說明 5 從 he...