2021面試題

1.防抖和節(jié)流

  • 防抖:在事件被觸發(fā)n秒后在執(zhí)行回調(diào)咕娄,如果在這n秒內(nèi)事件在此被調(diào)用則重新計(jì)時(shí)。(總的來說费变,適合多次事件一次響應(yīng)的情況)

  • 實(shí)際舉例:在請(qǐng)求后臺(tái)數(shù)據(jù)時(shí)圣贸,由于網(wǎng)路慢的情況下吁峻,用戶多次點(diǎn)擊請(qǐng)求按鈕。

  • 節(jié)流:規(guī)定一個(gè)時(shí)間用含,在這個(gè)時(shí)間內(nèi)啄骇,只能有一次觸發(fā)事件的回調(diào)函數(shù)執(zhí)行,如果在同一個(gè)時(shí)間內(nèi)某事件被多次觸發(fā)痪寻,只有一次能生效。(總的來說壹蔓,適合大量事件按時(shí)間做平均分配觸發(fā)猫态。)

  • 實(shí)際舉例:當(dāng)實(shí)現(xiàn)dom拖拽功能時(shí)給拖拽元素綁定拖拽事件披摄,每當(dāng)元素稍微移動(dòng)一點(diǎn)就會(huì)觸發(fā)大量回調(diào)函數(shù),導(dǎo)致瀏覽器卡死义辕。

https://juejin.cn/post/6844903535125987335

2.js事件循環(huán)機(jī)制

  • js是單線程執(zhí)行
  • 宏任務(wù):script( 整體代碼)寓盗、setTimeout傀蚌、setInterval、I/O撩幽、UI 交互事件箩艺、setImmediate(Node.js 環(huán)境)
  • 微任務(wù):Promise、MutaionObserver榨惰、process.nextTick(Node.js 環(huán)境)
    js分為同步執(zhí)行和異步執(zhí)行兩個(gè)隊(duì)列静汤,當(dāng)同步執(zhí)行完畢,會(huì)執(zhí)行異步隊(duì)列恢暖。異步隊(duì)列中分為任務(wù)狰右、任務(wù)棋蚌。優(yōu)先執(zhí)行微任務(wù)等微任務(wù)全部執(zhí)行完畢后再執(zhí)行宏任務(wù)挨队。
console.log('1');

setTimeout(function() {
  console.log('2');
}, 0);

Promise.resolve().then(function() {
  console.log('3');
}).then(function() {
  console.log('4');
});

console.log('5');

執(zhí)行結(jié)果 1蒿往、5瓤漏、3、4蔬充、2
image.png
image.png

3.堆和棧

堆:隊(duì)列優(yōu)先饥漫,先出先進(jìn);動(dòng)態(tài)分配空間一般有程序員分配釋放积蜻,若程序員不釋放彻消,程序結(jié)束時(shí)又瀏覽器的垃圾回收機(jī)制進(jìn)行回收。(動(dòng)態(tài)分配的內(nèi)存如输,大小不定不會(huì)自動(dòng)釋放央勒;)
棧:先進(jìn)后出;由操作系統(tǒng)自動(dòng)分配釋放稳吮,存放函數(shù)的參數(shù)井濒,局部變量的值等瑞你。(自動(dòng)分配的內(nèi)存空間,它由系統(tǒng)自動(dòng)釋放者甲;)

  • 與前端相關(guān)的內(nèi)容:
    前端數(shù)據(jù)類型分為:
    1.復(fù)雜類型:對(duì)象,數(shù)組鲫懒,函數(shù)等
    2.簡單數(shù)據(jù)類型:undefined窥岩、null、 boolean晃洒、number朦乏、string
  • 簡單數(shù)據(jù)類型存放在中;復(fù)雜數(shù)據(jù)類型也存放在棧中,但是棧中存放的是指向堆中的地址值诲宇。因?yàn)閺?fù)雜類型數(shù)據(jù)大小不定不能存放在棧中惶翻,地址值的大小是確定的。
image.png

4.new操作符具體干了什么

1.創(chuàng)建空對(duì)象纺荧;
2.空對(duì)象的原型指針指向構(gòu)造函數(shù)的原型對(duì)象宙暇;
3.利用函數(shù)的call方法改變this指向议泵,在空對(duì)象上掛載屬性或方法;
4.返回對(duì)象型奥。

5.difft算法以及key

6.數(shù)組的方法

  • 增:push()
  • 刪:splice(); delete
  • 改:splice()碉京; slice()
  • 查:indexOf()谐宙、lastIndexOf()
  • 循環(huán):map,filter厘灼,find,forEach

7.felx布局的缺點(diǎn)

  • felx布局是css3中的新特性舰讹。兼容性差闪朱,IE9及以上瀏覽器不支持。

8.vue的優(yōu)化

  • 路由懶加載
  • keep-alive緩存頁面
  • 使用v-show復(fù)用DOM
  • v-for遍歷避免同事使用v-if
  • 事件的銷毀
  • 圖片懶加載
  • 第三方插件按需引入(像element-ui這樣的第三方組件庫可以按需引入避免體積太大)

9.vue中data為什么是function不是object

  • 對(duì)象是引用類型锄开,當(dāng)同一個(gè)組件被多次引用萍悴,它們的data都指向同一個(gè)內(nèi)存地址寓免,換句話說,所有的組件共享一組data數(shù)據(jù)撕予。
  • 將data設(shè)置成一個(gè)函數(shù)蜈首,該函數(shù)會(huì)返回一個(gè)初始數(shù)據(jù)對(duì)象欢策,用function return其實(shí)就相當(dāng)于申明了薪的變量,相當(dāng)于獨(dú)立踩寇。

10.vue的響應(yīng)式原理

  • 當(dāng)你把一個(gè)普通的對(duì)象傳入Vue實(shí)力作為data選項(xiàng)姑荷,Vue將遍歷此對(duì)象所有的property,并使用Object.defineProperty把這些propert全部轉(zhuǎn)為getter/setter這些getter/setter對(duì)于用戶來說是不可見的添寺,但是在內(nèi)部它們讓Vue能夠追蹤依賴懈费,在property被訪問和修改時(shí)通知變更,每個(gè)組件實(shí)例都對(duì)應(yīng)一個(gè)watcher吃力票罐,它會(huì)在組件渲染的過程中把“接觸”過的數(shù)據(jù)property記錄為依賴该押。之后當(dāng)依賴項(xiàng)的setter出發(fā)時(shí),會(huì)通知watcher烟具,從而使他關(guān)聯(lián)的組件重新渲染奠蹬。

11.為什么vue檢測不到對(duì)象和數(shù)組的變化

  • 因?yàn)関ue無法檢測到propety增囤躁、刪,vue在初始化實(shí)例時(shí)會(huì)對(duì)propetty執(zhí)行g(shù)etter/setter言蛇,所以property必須在data對(duì)象上存在才能讓vue將它轉(zhuǎn)換為響應(yīng)式严沥。
  • 解決方法:this.$set()

12.new Vue()實(shí)例中中姜,data可以直接是一個(gè)對(duì)象丢胚,為什么在vue組建中,data必須是一個(gè)函數(shù)呢兔跌?

  • 因?yàn)榻M件是可以復(fù)用的,JS 里對(duì)象是引用關(guān)系,如果組件 data 是一個(gè)對(duì)象,那么子組件中的 data 屬性值會(huì)互相污染,產(chǎn)生副作用峡蟋。所以一個(gè)組件的 data 選項(xiàng)必須是一個(gè)函數(shù),因此每個(gè)實(shí)例可以維護(hù)一份被返回對(duì)象的獨(dú)立的拷貝蕊蝗。new Vue 的實(shí)例是不會(huì)被復(fù)用的,因此不存在以上問題。

13.computed 和 watch 有什么區(qū)別

  • computed計(jì)算屬性:依賴其它屬性值夸楣,只有他依賴的屬性值發(fā)生改變,下一次獲取computed的值時(shí)才會(huì)重新計(jì)算computed的值石洗,如果和上次計(jì)算結(jié)果不一致紧显,重新渲染頁面。
  • watch偵聽器:更多的是觀察的作用焦人,無緩存性花椭,類似于某些數(shù)據(jù)的監(jiān)聽回調(diào)房午,每當(dāng)監(jiān)聽的數(shù)據(jù)發(fā)生變化時(shí)都會(huì)執(zhí)行回調(diào)進(jìn)行后續(xù)操作郭厌。

computed和watch應(yīng)用場景

  • computed:當(dāng)我們需要進(jìn)行數(shù)值計(jì)算,并且依賴于其它數(shù)據(jù)時(shí)宾娜,應(yīng)該使用computed扇售,因?yàn)榭梢岳胏omputed的緩存特性,避免每次獲取值時(shí)华弓, 都要重新計(jì)算困乒。
  • watch:當(dāng)我們需要數(shù)據(jù)變化時(shí)執(zhí)行的操作時(shí)使用娜搂。

能使用箭頭函數(shù)定義computed和watch嗎?

  • 不能使用箭頭函數(shù)來定義watcher函數(shù)欧引,理由是箭頭函數(shù)綁定了父級(jí)作用域的上下文芝此,所以this將不會(huì)按照期望指向Vue實(shí)例,為undefined岸更。

14.v-if和v-for在同一個(gè)標(biāo)簽中的執(zhí)行順序

  • 當(dāng)它們處于同一節(jié)點(diǎn)膊升,v-for 的優(yōu)先級(jí)比 v-if 更高,這意味著 v-if 將分別重復(fù)運(yùn)行于每個(gè) v-for 循環(huán)中评肆。(官網(wǎng)文檔原話)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瓜挽,一起剝皮案震驚了整個(gè)濱河市征绸,隨后出現(xiàn)的幾起案子管怠,更是在濱河造成了極大的恐慌,老刑警劉巖祝拯,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佳头,死亡現(xiàn)場離奇詭異辕宏,居然都是意外死亡畜晰,警方通過查閱死者的電腦和手機(jī)砾莱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門瑞筐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人腊瑟,你說我怎么就攤上這事聚假。” “怎么了闰非?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵膘格,是天一觀的道長。 經(jīng)常有香客問我财松,道長瘪贱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任菜秦,我火速辦了婚禮甜害,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘球昨。我一直安慰自己尔店,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布主慰。 她就那樣靜靜地躺著嚣州,像睡著了一般。 火紅的嫁衣襯著肌膚如雪共螺。 梳的紋絲不亂的頭發(fā)上该肴,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音璃谨,去河邊找鬼沙庐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛佳吞,可吹牛的內(nèi)容都是我干的拱雏。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼底扳,長吁一口氣:“原來是場噩夢啊……” “哼铸抑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起衷模,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤鹊汛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后阱冶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刁憋,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年木蹬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了至耻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡镊叁,死狀恐怖尘颓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晦譬,我是刑警寧澤疤苹,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站敛腌,受9級(jí)特大地震影響卧土,放射性物質(zhì)發(fā)生泄漏惫皱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一尤莺、第九天 我趴在偏房一處隱蔽的房頂上張望逸吵。 院中可真熱鬧,春花似錦缝裁、人聲如沸扫皱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽韩脑。三九已至,卻和暖如春粹污,著一層夾襖步出監(jiān)牢的瞬間段多,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國打工壮吩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留进苍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓鸭叙,卻偏偏與公主長得像觉啊,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沈贝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容