国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【持續(xù)更新】匯總了一份前端領(lǐng)域必看面試題

這篇具有很好參考價(jià)值的文章主要介紹了【持續(xù)更新】匯總了一份前端領(lǐng)域必看面試題。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 寫在前面

??有時(shí)候一些其他領(lǐng)域的小伙伴,會(huì)私信問一些非博主領(lǐng)域相關(guān)觸及知識(shí)盲區(qū)的問題,什么C++,C#,大前端…

其中有很多朋友問面試相關(guān)的,我之前的文章內(nèi)有一篇關(guān)于Python領(lǐng)域面經(jīng)匯總的置頂文章,那篇文章在我有空的時(shí)候,有價(jià)值的問題也會(huì)持續(xù)更新收錄進(jìn)去,感興趣的可以去閱讀:

極具參考價(jià)值的Python面試題!從創(chuàng)業(yè)公司到一線大廠的真實(shí)面經(jīng)匯總(持續(xù)更新)

最近有幾位朋友問前端的面試題目,說實(shí)話,我很難從專業(yè)的角度去給出總結(jié),但是既然大家有需要,我還是在周末之余通過咨詢相關(guān)領(lǐng)域的朋友跟目前比較主流的一些問題進(jìn)行了一個(gè)匯總,于是有了這么一篇文章,希望它能夠幫到你

前端天花板確實(shí)低,VP很少見?盡頭小組長?撒一把米放鍵盤上?對于前端的梗很多,但是這都不重要!深耕自己的領(lǐng)域,你就是專家!

【持續(xù)更新】匯總了一份前端領(lǐng)域必看面試題,面試,前端,面試,vue

2. 前端面試匯總

2.0.1. 如何提?webpack的打包速度

  • 優(yōu)化Loader
    ??對于 Loader 來說,影響打包效率首當(dāng)其沖必屬 Babel 了。因?yàn)?Babel 會(huì)將代碼轉(zhuǎn)為字符串生成 AST,然后對 AST 繼續(xù)進(jìn)行轉(zhuǎn)變最后再生成新的代碼,項(xiàng)目越大,轉(zhuǎn)換代碼越多,效率就越低。當(dāng)然了,這是可以優(yōu)化的

首先優(yōu)化Loader的文件搜索范圍:

module.exports = {
  module: {
    rules: [
      {
        // js 文件才使用 babel
        test: /\.js$/,
        loader: 'babel-loader',
        // 只在 src 文件夾下查找
        include: [resolve('src')],
        // 不會(huì)去查找的路徑
        exclude: /node_modules/
      }
    ]
  }
}

對于 Babel 來說,希望只作用在 JS 代碼上的,然后 node_modules 中使用的代碼都是編譯過的,所以完全沒有必要再去處理一遍

當(dāng)然這樣做還不夠,還可以將 Babel 編譯過的文件緩存起來,下次只需要編譯更改過的代碼文件即可,這樣可以大幅度加快打包時(shí)間

2.0.2. 數(shù)組去重

??遍歷舊數(shù)組,然后拿著舊數(shù)組元素去查詢新數(shù)組,如果該元素在新數(shù)組里面沒有出現(xiàn)過,我們就添加,否則不添加。先封裝一個(gè)函數(shù),unique:

function unique(arr){
var newArr =\[]
for(var i =0; i< arr.length; i++){
if (newArr.indexOf(arr\[i] === -1){
newArr.push(arr\[i])
}
}
return newArr
}
var demo = unique(\[])
console.log(demo)

2.0.3. 前端有幾種緩存方式?

  • sessionStorage
    但當(dāng)頁面關(guān)閉后,sessionStorage 中的數(shù)據(jù)就會(huì)被清空。 indexdb、 50mb 允許儲(chǔ)存大量數(shù)據(jù),提供查找接口,支持異步操作,還能建立索引。indexDB缺點(diǎn)是:不支持DO操作;不能跨域
  • localStorage
    5M大小只能存儲(chǔ)字符串格式的數(shù)據(jù),所以最好在每次存儲(chǔ)時(shí)把數(shù)據(jù)轉(zhuǎn)換成json格式, 取出的時(shí)候再轉(zhuǎn)換回來 生命周期是永久的, 除非主動(dòng)刪除數(shù)據(jù),否則數(shù)據(jù)永遠(yuǎn)不會(huì)消失
  • cookiec
    當(dāng)在客戶端的瀏覽器上設(shè)置Cookie時(shí),它可以持續(xù)數(shù)天,數(shù)月甚至數(shù)年。這樣可以輕松保存用戶首選項(xiàng)和訪問信息 不需要任何服務(wù)器資源,并存儲(chǔ)在用戶的計(jì)算機(jī)上,因此不會(huì)給服務(wù)器帶來額外的負(fù)擔(dān)。 確實(shí)非常小,它的大小限制為4KB左右,不能儲(chǔ)存大數(shù)據(jù)且不易讀取

2.0.4. nextTick描述一下?

異步方法,異步渲染最后一步,與JS事件循環(huán)聯(lián)系緊密。主要使用了宏任務(wù)微任務(wù)(setTimeout、promise那些),定義了一個(gè)異步方法,多次調(diào)用nextTick會(huì)將方法存入隊(duì)列,通過異步方法清空當(dāng)前隊(duì)列

2.0.5. Webpack層面的優(yōu)化?

Webpack 對圖片進(jìn)行壓縮
減少 ES6 轉(zhuǎn)為 ES5 的冗余代碼
提取公共代碼
模板預(yù)編譯
提取組件的 CSS
優(yōu)化 SourceMap
構(gòu)建結(jié)果輸出分析
Vue 項(xiàng)目的編譯優(yōu)化

2.0.6. 代碼層面的優(yōu)化?

v-if 和 v-show 區(qū)分使用場景
computed 和 watch 區(qū)分使用場景
v-for 遍歷必須為 item 添加 key,且避免同時(shí)使用 v-if
長列表性能優(yōu)化
事件的銷毀
圖片資源懶加載
路由懶加載
第三方插件的按需引入
優(yōu)化無限列表性能
服務(wù)端渲染 SSR or 預(yù)渲染

2.0.7. Web 技術(shù)的優(yōu)化?

開啟gzip壓縮、瀏覽器緩存、CDN使用、使用Chrome Performance查找性能瓶頸

2.0.8. diff算法的優(yōu)化策略?

四種命中查找,四個(gè)指針

1、舊前與新前(先比開頭,后插入和刪除節(jié)點(diǎn)的這種情況)
2、舊后與新后(比結(jié)尾,前插入或刪除的情況)
3、舊前與新后(頭與尾比,此種發(fā)生了,涉及移動(dòng)節(jié)點(diǎn),那么新前指向的節(jié)點(diǎn),移動(dòng)到舊后之后)
4、舊后與新前(尾與頭比,此種發(fā)生了,涉及移動(dòng)節(jié)點(diǎn),那么新前指向的節(jié)點(diǎn),移動(dòng)到舊前之前)

2.0.9. 事件循環(huán)?它在JS中作用?

事件循環(huán)是JavaScript中處理異步代碼執(zhí)行的機(jī)制。它負(fù)責(zé)管理調(diào)度和執(zhí)行異步任務(wù),并將它們添加到執(zhí)行隊(duì)列中。
在JavaScript中,事件循環(huán)的作用是確保異步任務(wù)按照正確的順序執(zhí)行,并且不會(huì)阻塞主線程。它通過不斷地從執(zhí)行隊(duì)列中取出任務(wù)并執(zhí)行,以實(shí)現(xiàn)非阻塞的異步操作

2.1.0. 瀏覽器緩存及作用?

瀏覽器緩存是瀏覽器在本地存儲(chǔ)Web頁面和資源的副本,以便在后續(xù)訪問時(shí)可以快速加載。它的作用是減少對服務(wù)器的請求次數(shù)和網(wǎng)絡(luò)傳輸量,提高頁面加載速度和用戶體驗(yàn)。
瀏覽器緩存通過在首次請求時(shí)將資源保存到本地,并在后續(xù)請求時(shí)檢查資源是否已經(jīng)存在并且沒有過期來工作。如果資源已經(jīng)存在且未過期,瀏覽器會(huì)直接從緩存中加載資源,而不是從服務(wù)器重新下載

2.1.1. Web Workers作用?

Web Workers是一種瀏覽器提供的JavaScript API,用于在后臺(tái)線程中執(zhí)行耗時(shí)的計(jì)算任務(wù),以避免阻塞主線程。
Web Workers的作用是提高瀏覽器的響應(yīng)性能,使得在執(zhí)行復(fù)雜計(jì)算或處理大量數(shù)據(jù)時(shí),不會(huì)影響用戶界面的流暢性。
Web Workers通過將任務(wù)委托給后臺(tái)線程來實(shí)現(xiàn)并行處理,從而充分利用多核處理器的能力。它們可以與主線程進(jìn)行通信,但不能直接訪問DOM或執(zhí)行UI相關(guān)的操作

2.1.2. 瀏覽器垃圾回收機(jī)制?

瀏覽器的垃圾回收機(jī)制是一種自動(dòng)管理內(nèi)存的機(jī)制,用于檢測和回收不再使用的對象,以釋放內(nèi)存資源。
垃圾回收機(jī)制通過標(biāo)記-清除算法實(shí)現(xiàn)。它的工作原理如下:
標(biāo)記階段:垃圾回收器會(huì)從根對象(如全局對象)開始,遞歸遍歷所有對象,并標(biāo)記仍然可訪問的對象。
清除階段:垃圾回收器會(huì)掃描堆內(nèi)存,清除未被標(biāo)記的對象,并回收它們所占用的內(nèi)存空間。
垃圾回收機(jī)制的目標(biāo)是識(shí)別和回收不再使用的對象,以避免內(nèi)存泄漏和提高內(nèi)存利用率

2.1.3. 虛擬DOM實(shí)現(xiàn)原理?

虛擬DOM本質(zhì)上是JavaScript對象,是對真實(shí)DOM的抽象
狀態(tài)變更時(shí),記錄新樹和舊樹的差異
最后把差異更新到真正的dom中

3. CSS相關(guān)匯總

3.0.1. CSS中的層疊順序是如何工作的?

層疊順序(z-index)用于控制元素在垂直方向上的堆疊順序。具有較高層疊順序值的元素將顯示在較低層疊順序值的元素之上。默認(rèn)情況下,層疊順序值為auto

3.0.2. CSS中的偽類和偽元素的區(qū)別?示例?

偽類用于向選擇器添加特殊的狀態(tài),如:hover、:active等。偽元素用于向選擇器添加特殊的元素,如::before、::after

/* 偽類示例 */
a:hover {
  color: red;
}

/* 偽元素示例 */
p::before {
  content: "前綴";
}

3.0.3. v-if和v-for哪個(gè)優(yōu)先級(jí)更高

在vue2中,v-for的優(yōu)先級(jí)是高于v-if
vue3中則完全相反,v-if的優(yōu)先級(jí)高于v-for

3.0.4. CSS中的BFC它的作用是什么?

BFC(塊級(jí)格式化上下文)是CSS中的一種渲染模式,它創(chuàng)建了一個(gè)獨(dú)立的渲染環(huán)境,其中的元素按照一定的規(guī)則進(jìn)行布局和定位。BFC的作用包括:清除浮動(dòng)、防止外邊距重疊

3.0.5. CSS中的flexbox布局是什么,它有什么優(yōu)勢?

flexbox布局是一種用于創(chuàng)建靈活的、響應(yīng)式的布局的CSS模塊。它通過flex容器和flex項(xiàng)目的組合來實(shí)現(xiàn)強(qiáng)大的布局能力。其優(yōu)勢包括簡單易用、自適應(yīng)性強(qiáng)、對齊和分布控制靈活

3.0.6. CSS的盒模型是什么,描述一下?

CSS的盒模型是用于布局和定位元素的概念。它由內(nèi)容區(qū)域、內(nèi)邊距、邊框和外邊距組成,這些部分依次包裹在元素周圍

3.0.7. 描述一下CSS中的選擇器及其優(yōu)先級(jí)?

CSS選擇器用于選擇要應(yīng)用樣式的HTML元素。選擇器的優(yōu)先級(jí)規(guī)則是:內(nèi)聯(lián)樣式 > ID選擇器 > 類選擇器、屬性選擇器、偽類選擇器 > 元素選擇器 > 通用選擇器。同時(shí),使用!important可以提升樣式的優(yōu)先級(jí)

4. Vue相關(guān)匯總

4.0.1. v-if和v-for哪個(gè)優(yōu)先級(jí)更高?

??在vue2中,v-for的優(yōu)先級(jí)是高于v-if,把它們放在一起,輸出的渲染函數(shù)中可以看出會(huì)先執(zhí)行循環(huán)再判斷條件,哪怕我們只渲染列表中一小部分元素,也得在每次重渲染的時(shí)候遍歷整個(gè)列表,這會(huì)比較浪費(fèi);另外需要注意的是在vue3中則完全相反,v-if的優(yōu)先級(jí)高于v-for,所以v-if執(zhí)行時(shí),它調(diào)用的變量還不存在,就會(huì)導(dǎo)致異常

4.0.2. 3.0特性描述一下?

  • 監(jiān)測機(jī)制的改變
    3.0 將帶來基于代理 Proxy 的 observer 實(shí)現(xiàn),提供全語言覆蓋的反應(yīng)性跟蹤。這消除了 Vue 2 當(dāng)中基于 Object.defineProperty 的實(shí)現(xiàn)所存在的很多限制:(只能監(jiān)測屬性,不能監(jiān)測對象、檢測屬性的添加和刪除、檢測數(shù)組索引和長度的變更、支持 Map、Set、WeakMap 和 WeakSet)
  • 模板
    模板方面沒有大的變更,只改了作用域插槽,2.x 的機(jī)制導(dǎo)致作用域插槽變了,父組件會(huì)重新渲染,而 3.0 把作用域插槽改成了函數(shù)的方式,這樣只會(huì)影響子組件的重新渲染,提升了渲染的性能。
    同時(shí),對于 render 函數(shù)的方面,vue3.0 也會(huì)進(jìn)行一系列更改來方便習(xí)慣直接使用 api 來生成 vdom
  • 對象式的組件聲明方式
    vue2.x 中的組件是通過聲明的方式傳入一系列 option,和 TypeScript 的結(jié)合需要通過一些裝飾器的方式來做,雖然能實(shí)現(xiàn)功能,但是比較麻煩。3.0 修改了組件的聲明方式,改成了類式的寫法,這樣使得和 TypeScript 的結(jié)合變得很容易。
    此外,vue 的源碼也改用了 TypeScript 來寫。其實(shí)當(dāng)代碼的功能復(fù)雜之后,必須有一個(gè)靜態(tài)類型系統(tǒng)來做一些輔助管理。現(xiàn)在 vue3.0 也全面改用 TypeScript 來重寫了,更是使得對外暴露的 api 更容易結(jié)合 TypeScript。靜態(tài)類型系統(tǒng)對于復(fù)雜代碼的維護(hù)確實(shí)很有必要
  • 其它方面的更改
    (1)支持自定義渲染器,從而使得 weex 可以通過自定義渲染器的方式來擴(kuò)展,而不是直接 fork 源碼來改的方式
    (2)支持 Fragment(多個(gè)根節(jié)點(diǎn))和 Protal(在 dom 其他部分渲染組建內(nèi)容)組件,針對一些特殊的場景做了處理
    (3)基于 treeshaking 優(yōu)化,提供了更多的內(nèi)置功能

4.0.3. vue 中使用了哪些設(shè)計(jì)模式?

  • 工廠模式:虛擬 DOM 根據(jù)參數(shù)的不同返回基礎(chǔ)標(biāo)簽的 Vnode 和組件 Vnode

  • 單例模式:vuex 和 vue-router 的插件注冊方法 install 判斷如果系統(tǒng)存在實(shí)例就直接返回掉

  • 發(fā)布-訂閱模式 (vue 事件機(jī)制)

  • 觀察者模式 (響應(yīng)式數(shù)據(jù)原理)

  • 裝飾模式: (@裝飾器的用法)

  • 策略模式:指對象有某個(gè)行為,但是在不同的場景中,該行為有不同的實(shí)現(xiàn)方案-比如選項(xiàng)的合并策略

4.0.4. 模板編譯原理

Vue 的編譯過程就是將 template 轉(zhuǎn)化為 render 函數(shù)的過程 分為以下三步:

1、將模板字符串 轉(zhuǎn)換成 element ASTs(解析器)
2、對AST進(jìn)行靜態(tài)節(jié)點(diǎn)標(biāo)記,主要用來做虛擬DOM的渲染優(yōu)化(優(yōu)化器)
3、使用 element ASTs 生成 render 函數(shù)代碼字符串(代碼生成器)

export function compileToFunctions(template) {
  // 我們需要把html字符串變成render函數(shù)
  // 1.把html代碼轉(zhuǎn)成ast語法樹  ast用來描述代碼本身形成樹結(jié)構(gòu) 不僅可以描述html 也能描述css以及js語法
  // 很多庫都運(yùn)用到了ast 比如 webpack babel eslint等等
  let ast = parse(template);
  // 2.優(yōu)化靜態(tài)節(jié)點(diǎn)
  // 這個(gè)有興趣的可以去看源碼  不影響核心功能就不實(shí)現(xiàn)了
  //   if (options.optimize !== false) {
  //     optimize(ast, options);
  //   }

  // 3.通過ast 重新生成代碼
  // 我們最后生成的代碼需要和render函數(shù)一樣
  // 類似_c('div',{id:"app"},_c('div',undefined,_v("hello"+_s(name)),_c('span',undefined,_v("world"))))
  // _c代表創(chuàng)建元素 _v代表創(chuàng)建文本 _s代表文Json.stringify--把對象解析成文本
  let code = generate(ast);
  //   使用with語法改變作用域?yàn)閠his  之后調(diào)用render函數(shù)可以使用call改變this 方便code里面的變量取值
  let renderFn = new Function(`with(this){return ${code}}`);
  return renderFn;
}

4.0.5. 響應(yīng)式原理區(qū)別?

Vue3.x 改用 Proxy 替代 Object.defineProperty。因?yàn)?Proxy 可以直接監(jiān)聽對象和數(shù)組的變化,并且有多達(dá) 13 種攔截方法

import { mutableHandlers } from "./baseHandlers"; // 代理相關(guān)邏輯
import { isObject } from "./util"; // 工具方法

export function reactive(target) {
  // 根據(jù)不同參數(shù)創(chuàng)建不同響應(yīng)式對象
  return createReactiveObject(target, mutableHandlers);
}
function createReactiveObject(target, baseHandler) {
  if (!isObject(target)) {
    return target;
  }
  const observed = new Proxy(target, baseHandler);
  return observed;
}

const get = createGetter();
const set = createSetter();

function createGetter() {
  return function get(target, key, receiver) {
    // 對獲取的值進(jìn)行放射
    const res = Reflect.get(target, key, receiver);
    console.log("屬性獲取", key);
    if (isObject(res)) {
      // 如果獲取的值是對象類型,則返回當(dāng)前對象的代理對象
      return reactive(res);
    }
    return res;
  };
}
function createSetter() {
  return function set(target, key, value, receiver) {
    const oldValue = target[key];
    const hadKey = hasOwn(target, key);
    const result = Reflect.set(target, key, value, receiver);
    if (!hadKey) {
      console.log("屬性新增", key, value);
    } else if (hasChanged(value, oldValue)) {
      console.log("屬性值被修改", key, value);
    }
    return result;
  };
}
export const mutableHandlers = {
  get, // 當(dāng)獲取屬性時(shí)調(diào)用此方法
  set, // 當(dāng)修改屬性時(shí)調(diào)用此方法
};

4.0.6. 雙向數(shù)據(jù)綁定如何實(shí)現(xiàn)的?

Vue中的雙向數(shù)據(jù)綁定是通過v-model指令實(shí)現(xiàn)的。v-model可以在表單元素(如、、)上創(chuàng)建雙向數(shù)據(jù)綁定。當(dāng)用戶輸入改變表單元素的值時(shí),數(shù)據(jù)模型會(huì)自動(dòng)更新;反之,當(dāng)數(shù)據(jù)模型的值改變時(shí),表單元素也會(huì)自動(dòng)更新

4.0.7. 生命周期鉤子?執(zhí)行順序?

Vue中的生命周期鉤子包括beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy和destroyed。它們的執(zhí)行順序如下:

beforeCreate、created beforeMount、mounted、beforeUpdate、updated beforeDestroy、destroyed

4.0.8. 路由如何實(shí)現(xiàn)的?

Vue中的路由是通過Vue Router實(shí)現(xiàn)的。Vue Router是Vue.js官方提供的路由管理器,它允許開發(fā)者在Vue應(yīng)用中實(shí)現(xiàn)單頁面應(yīng)用(SPA)。Vue Router通過配置路由映射關(guān)系,將URL路徑與組件進(jìn)行關(guān)聯(lián),并提供導(dǎo)航功能,使用戶可以在不刷新頁面的情況下切換視圖

4.0.9. watch和computed區(qū)別是什么?

watch和computed都可以用于監(jiān)聽數(shù)據(jù)的變化,但它們的用法和實(shí)現(xiàn)方式略有不同。watch用于監(jiān)聽指定的數(shù)據(jù)變化,并在數(shù)據(jù)變化時(shí)執(zhí)行相應(yīng)的操作。computed用于根據(jù)依賴的數(shù)據(jù)動(dòng)態(tài)計(jì)算得出一個(gè)新的值,并將該值緩存起來,只有在依賴的數(shù)據(jù)發(fā)生變化時(shí)才會(huì)重新計(jì)算

4.1.0. 依賴注入是什么?它的應(yīng)用場景?

依賴注入是一種設(shè)計(jì)模式,用于將依賴關(guān)系從一個(gè)組件傳遞到另一個(gè)組件。在Vue中,依賴注入通過provide和inject選項(xiàng)實(shí)現(xiàn)。父組件通過provide提供數(shù)據(jù),然后子組件通過inject注入這些數(shù)據(jù)。它在跨多個(gè)層級(jí)的組件通信中非常有用

4.1.1. action和mutation的區(qū)別?

mutation中的操作是一系列的同步函數(shù),用于修改state中的變量的的狀態(tài)。當(dāng)使用vuex時(shí)需要通過commit來提交需要操作的內(nèi)容。mutation 非常類似于事件:每個(gè) mutation 都有一個(gè)字符串的 事件類型 (type) 和 一個(gè) 回調(diào)函數(shù) (handler)。這個(gè)回調(diào)函數(shù)就是實(shí)際進(jìn)行狀態(tài)更改的地方,并且它會(huì)接受 state 作為第一個(gè)參數(shù):

const store = new Vuex.Store({
  state: {
    count: 1
  },
  mutations: {
    increment (state) {
      state.count++      // 變更狀態(tài)
    }
  }
})

4.1.2. router和route的區(qū)別?

router是VueRouter的一個(gè)對象,通過Vue.use(VueRouter)和VueRouter構(gòu)造函數(shù)得到一個(gè)router的實(shí)例對象,這個(gè)對象中是一個(gè)全局的對象,包含了所有的路由包含了許多關(guān)鍵的對象和屬性。
route是一個(gè)跳轉(zhuǎn)的路由對象,每一個(gè)路由都會(huì)有一個(gè)route對象,是一個(gè)局部的對象,可以獲取對應(yīng)的name,path,params,query

4.1.3. 插槽是什么?具有命名插槽和作用域插槽的示例?

<!-- 父組件 -->
<template>
  <div>
    <slot name="header"></slot>
    <slot :data="data"></slot>
  </div>
</template>

<!-- 子組件 -->
<template>
  <div>
    <slot name="header">默認(rèn)標(biāo)題</slot>
    <slot :data="computedData">{{ computedData }}</slot>
  </div>
</template>

4.1.4. 動(dòng)畫系統(tǒng)是如何工作?簡單示例?

Vue.js的動(dòng)畫系統(tǒng)通過CSS過渡和動(dòng)畫類實(shí)現(xiàn)。通過在元素上添加過渡類或動(dòng)畫類,可以觸發(fā)相應(yīng)的過渡效果或動(dòng)畫效果。示例:

<transition name="fade">
  <div v-if="show">顯示內(nèi)容</div>
</transition>

<!-- CSS樣式 -->
<style>
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}
</style>

4.1.5. 錯(cuò)誤處理機(jī)制?如何捕獲?

Vue.js提供了全局的錯(cuò)誤處理機(jī)制和組件級(jí)別的錯(cuò)誤處理機(jī)制。全局錯(cuò)誤處理可以通過errorCaptured鉤子函數(shù)捕獲和處理錯(cuò)誤。組件級(jí)別的錯(cuò)誤處理可以通過errorCaptured鉤子函數(shù)或errorHandler選項(xiàng)捕獲和處理錯(cuò)誤

4.1.6. 響應(yīng)式數(shù)組有哪些限制?如何解決?

Vue.js的響應(yīng)式系統(tǒng)對于數(shù)組的變異方法(如push、pop、splice等)是無法追蹤的。為了解決這個(gè)限制,Vue提供了一些特殊的方法,如Vue.set、vm.$set和Array.prototype.splice。這些方法可以用于更新數(shù)組并保持響應(yīng)式

4.1.7. Composition API與Options API區(qū)別?

Composition API是Vue.js 3中引入的一種新的組織組件邏輯的方式。它允許開發(fā)者通過函數(shù)的方式組織和重用邏輯,而不是通過選項(xiàng)對象。相比之下,Options API是Vue.js 2中常用的組織組件邏輯的方式,通過選項(xiàng)對象中的屬性來定義組件的數(shù)據(jù)、方法

4.1.8. Suspense是什么?它的作用?

Suspense是Vue.js 3中引入的一種機(jī)制,用于處理異步組件的加載狀態(tài)。它可以在異步組件加載完成之前顯示一個(gè)占位符,并在加載完成后渲染異步組件的內(nèi)容。這樣可以更好地處理異步組件的加載過程,提供更好的用戶體驗(yàn)

4.1.9. provide和inject作用?請給出示例?

provide和inject用于實(shí)現(xiàn)組件之間的依賴注入。通過在父組件中使用provide提供數(shù)據(jù),然后在子組件中使用inject注入這些數(shù)據(jù)。示例:

// 父組件
const Parent = {
  provide: {
    message: 'Hello Spider!'
  },
  // ...
}

// 子組件
const Child = {
  inject: ['message'],
  created() {
    console.log(this.message); // 輸出:Hello Spider!
  },
  // ...
}

4.2.0. watchEffect和watch區(qū)別?如何使用?

watchEffect用于監(jiān)聽響應(yīng)式數(shù)據(jù)的變化,并在回調(diào)函數(shù)中執(zhí)行相應(yīng)的操作。它會(huì)自動(dòng)追蹤依賴,并在依賴變化時(shí)重新運(yùn)行回調(diào)函數(shù)。watch用于監(jiān)聽指定的響應(yīng)式數(shù)據(jù),并在其變化時(shí)執(zhí)行相應(yīng)的操作。它可以精確地指定要監(jiān)聽的數(shù)據(jù),并提供更多的配置選項(xiàng)。一般來說,如果只需要監(jiān)聽一個(gè)響應(yīng)式數(shù)據(jù)的變化并執(zhí)行相應(yīng)操作,可以使用watchEffect;如果需要更細(xì)粒度的控制,可以使用watch

5. React相關(guān)匯總

5.0.1. 核心概念是什么?

React是一個(gè)用于構(gòu)建用戶界面的JavaScript庫。它的核心概念是組件化和聲明式編程。React將用戶界面拆分為獨(dú)立的可重用組件,并使用聲明式語法描述組件的狀態(tài)和UI的關(guān)系,使得構(gòu)建復(fù)雜的UI變得簡單和可維護(hù)

5.0.2. 生命周期方法?列舉一些?

React生命周期方法是在組件不同階段執(zhí)行的特定方法。以下是一些常用的React生命周期方法:

**
componentDidMount:組件掛載后立即調(diào)用
componentDidUpdate:組件更新后調(diào)用
componentWillUnmount:組件卸載前調(diào)用
shouldComponentUpdate:決定組件是否需要重新渲染
getDerivedStateFromProps:根據(jù)props的變化來更新狀態(tài)**

5.0.3. React Context?作用?

React Context是一種用于在組件樹中共享數(shù)據(jù)的機(jī)制。它可以避免通過props一層層傳遞數(shù)據(jù),使得跨組件的數(shù)據(jù)共享變得更加簡單和高效。React Context提供了一個(gè)Provider和Consumer組件,用于提供和消費(fèi)共享的數(shù)據(jù)

5.0.4. React Router?作用?

React Router是React中用于處理路由的庫。它提供了一種在單頁面應(yīng)用中實(shí)現(xiàn)導(dǎo)航和路由功能的方式。React Router可以幫助開發(fā)者實(shí)現(xiàn)頁面之間的切換、URL參數(shù)的傳遞、嵌套路由等功能

5.0.5. React Hooks?作用?

React Hooks是React 16.8版本引入的一種特性,用于在函數(shù)組件中使用狀態(tài)和其他React特性。Hooks提供了一種無需編寫類組件的方式來管理狀態(tài)和處理副作用,使得函數(shù)組件具有類組件的能力

??好了,到這里又到了跟大家說再見的時(shí)候了。創(chuàng)作不易,幫忙點(diǎn)個(gè)贊再走吧。你的支持是我創(chuàng)作的動(dòng)力,希望能帶給大家更多優(yōu)質(zhì)的文章文章來源地址http://www.zghlxwxcb.cn/news/detail-751841.html

到了這里,關(guān)于【持續(xù)更新】匯總了一份前端領(lǐng)域必看面試題的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java集合面試題匯總【附答案】持續(xù)更新

    1:HashMap 的數(shù)據(jù)結(jié)構(gòu)? A:哈希表結(jié)構(gòu)(鏈表散列:數(shù)組+鏈表)實(shí)現(xiàn),結(jié)合數(shù)組和鏈表的優(yōu)點(diǎn)。當(dāng)鏈表長度超過 8 時(shí),鏈表轉(zhuǎn)換為紅黑樹。 transient NodeK,V[] table; 2:HashMap 的工作原理? HashMap 底層是 hash 數(shù)組和單向鏈表實(shí)現(xiàn),數(shù)組中的每個(gè)元素都是鏈表,由 Node 內(nèi)部類(實(shí)現(xiàn)

    2024年02月12日
    瀏覽(53)
  • React2023年面試題匯總~~~~持續(xù)更新中?。。?!

    這里總結(jié)的所有面試題都是從??途W(wǎng)找的各種大廠真實(shí)場景的面試題,并且做了匯總,各位看官看后做好總結(jié),絕對可以應(yīng)對88.8%React相關(guān)的面試題。 useState() : 允許在函數(shù)組件中使用狀態(tài)。使用useState() 聲明一個(gè)狀態(tài)變量,并使用它來 存儲(chǔ)組件的狀態(tài) 。每次更改狀態(tài)時(shí),組件

    2024年02月09日
    瀏覽(31)
  • 幫你梳理了一份前端知識(shí)架構(gòu)圖

    在上一篇文章中,我們簡要地總結(jié)了前端的學(xué)習(xí)路徑與方法,我們提到的第一個(gè)學(xué)習(xí)方法就是:建立知識(shí)框架。那么,今天我們就一起來列一份前端的知識(shí)框架圖。 在開始列框架之前,我想先來談?wù)勎覀兊哪繕?biāo)。實(shí)際上,我們在網(wǎng)上可以找到很多參考資料,比如 MDN 這樣的參

    2024年02月07日
    瀏覽(18)
  • 前端面試題(持續(xù)更新~~)

    前端面試題(持續(xù)更新~~)

    1、concat() 方法用于合并兩個(gè)或多個(gè)數(shù)組。此方法不會(huì)更改現(xiàn)有數(shù)組,而是返回一個(gè)新數(shù)組。 2、find() 方法返回?cái)?shù)組中滿足提供的測試函數(shù)的第一個(gè)元素的值。否則返回 undefined 。 語法: 數(shù)組名.find(function (item,index,arr) {}) item : 這個(gè)表示的是數(shù)組中的每一項(xiàng) index : 這個(gè)表示的是

    2024年01月20日
    瀏覽(18)
  • 2023前端面試題合集(附答案)持續(xù)更新中...

    2023前端面試題合集(附答案)持續(xù)更新中...

    (1).什么是原型鏈 答:原型鏈就是每個(gè)對象擁有一個(gè)原型對象,對象以其原型為模板、從原型繼承方法和屬性。原型對象也可能擁有原型,并從中繼承方法和屬性,一層一層、以此類推。這種關(guān)系就被稱為原型鏈。 簡單理解:原型鏈就是在當(dāng)前對象中找不到定義的話,會(huì)在當(dāng)前

    2024年02月07日
    瀏覽(26)
  • 前端vue常見60道面試題 重點(diǎn)簡潔?。?!【未完,文章持續(xù)更新中......】

    model 代表數(shù)據(jù)模型,數(shù)據(jù)和業(yè)務(wù)邏輯都在 model 層中定義 view 代表視圖,負(fù)責(zé)數(shù)據(jù)展示 view model 代表與界面對應(yīng)的 model MVVM 是 MVC 的變種進(jìn)階,在概念上真正將頁面與數(shù)據(jù)邏輯分離的模式,把數(shù)據(jù)綁定放到一個(gè) js 中去實(shí)現(xiàn),這個(gè) js 文件主要功能是完成數(shù)據(jù)的雙向綁定,把 mod

    2024年02月06日
    瀏覽(20)
  • 【前端vue3面試題】2023最新面試實(shí)錄vue3.0,高頻10問(持續(xù)更新...)

    前端vue3面試題 2023最新面試實(shí)錄vue3.0,高頻10問(持續(xù)更新…) 1問: vue3和vue2有哪些不同? 響應(yīng)式系統(tǒng)的重構(gòu),使用proxy替換Object.defineProperty屬性,優(yōu)勢: Proxy可直接監(jiān)聽 對象 添加/刪除 屬性; Proxy直接監(jiān)聽 數(shù)組的變化 Proxy監(jiān)聽的目標(biāo)是對象本身,不需要像Object.defineProperty那樣遍

    2023年04月14日
    瀏覽(33)
  • 持續(xù)不斷更新中... 自己整理的一些前端知識(shí)點(diǎn)以及前端面試題,包括vue2,vue3,js,ts,css,微信小程序等

    答: 在普通的前端項(xiàng)目工程中,在script標(biāo)簽中增加setup即可使用api 使用setup()鉤子函數(shù) 答: 不要在計(jì)算屬性中進(jìn)行異步請求或者更改DOM 不要直接修改computed的值 區(qū)別: 計(jì)算屬性值基于其響應(yīng)式依賴被緩存,意思就是只要他之前的依賴不發(fā)生變化,那么調(diào)用他只會(huì)返回之前緩

    2024年02月11日
    瀏覽(58)
  • AI領(lǐng)域常用大模型地址及下載方法(持續(xù)更新)

    現(xiàn)在大模型比較多,平時(shí)需要調(diào)試對比,就把這些大模型簡單一個(gè)收集。 不斷收集,不斷學(xué)習(xí) 目前,開原模型較多,一些能力弱的,沒啥意義 基座模型通常指的是一個(gè)通用的、預(yù)先訓(xùn)練好的語言模型,如GPT-3.5。這種模型在各種自然語言處理任務(wù)中表現(xiàn)出色,可以用作其他更

    2024年02月03日
    瀏覽(22)
  • 模擬IC方向面試??紗栴}及答案匯總,IC人必看

    模擬IC方向面試??紗栴}及答案匯總,IC人必看

    有不少小伙伴說想了解模擬IC方向的面試題目,這不就來了! (文末可領(lǐng)全部面試題目 ) 電流定律 :在集總電路中,任何時(shí)刻,對任一節(jié)點(diǎn),所有流出節(jié)點(diǎn)的支路電流的代數(shù)和恒等 于零。 電壓定律 :在集總電路中,任何時(shí)刻,沿任一回路,所有支路電壓的代數(shù)和恒等于零

    2024年02月08日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包