前端常見面試題

根據(jù)自己的面試經(jīng)驗整理出一些常見的問題, 答案是自己寫的, 有些不一定正確或存在疏漏, 僅供參考

1. promise相關(guān)

講一講你對promise的理解?

promise是ES6新增的語言標(biāo)準(zhǔn),主要是為了解決異步執(zhí)行的回調(diào)地獄('回調(diào)金字塔').

所謂回調(diào)地獄,就是:在原始的異步執(zhí)行中,異步操作需要放在回調(diào)函數(shù)中,才能確保順序執(zhí)行,但如果有多個回調(diào)函數(shù),會造成層層嵌套的情況,這就是回調(diào)地獄.

promise是一個對象,有三個狀態(tài):pending,fullfilled和rejected狀態(tài),提供了兩個回調(diào)函數(shù)reslove和reject.

promise在es7中的新語法?

async function a(){
     await ......//一個promise對象
}

promise多個任務(wù)如何并發(fā)執(zhí)行?

promise.all([promise對象1,promise對象2,promise對象3...])

2. vue的生命周期相關(guān)

簡述一下vue的生命周期和鉤子函數(shù)?

創(chuàng)建 beforeCreate created

掛載 beforeMount mounted

更新 beforeUpdate updated

刪除 beforeDestory destoryed

你一般在哪個周期執(zhí)行代碼,為什么?

3. 深拷貝與淺拷貝

深拷貝與淺拷貝的區(qū)別?如何實現(xiàn)?

淺拷貝和直接賦值還是有區(qū)別的;

針對引用類型來說,直接賦值是直接將整個obj對象的地址賦值給新的obj,當(dāng)原obj中的屬性發(fā)生變化時,被復(fù)制的對象也會被修改;

淺拷貝是遍歷原obj中的每個值,并將其賦值給新obj,修改原obj中的基本類型屬性,新obj的屬性不會被改變.修改原obj中的引用類型屬性,新obj的屬性值會發(fā)生改變.淺拷貝有四種實現(xiàn)方法:

a.obj.assign()

b.遍歷

c.數(shù)組api concat和splice

d.剩余參數(shù) var arr2=[...arr1]

深拷貝

原obj發(fā)生改變時,復(fù)制的obj不會發(fā)生任何變化.深拷貝有以下實現(xiàn)方式:

a.json.stringify

b.遞歸遍歷

4. es6新特性相關(guān)

你知道哪些es6新特性?

  • let,const和塊級作用域;
  • 箭頭函數(shù)
  • 模板字符串
  • arguments
  • promise
  • 數(shù)組的新的api
  • 數(shù)組解構(gòu)與參數(shù)解構(gòu)

你用過哪些es6新特性?

5. 組件傳參

組件傳參的方式有哪些?能介紹一下嗎?

  • props
  • 路由傳參
  • commits
  • bus
  • vuex
  • ref

6. 路由守衛(wèi)

路由守衛(wèi)有哪幾類?

三類:全局守衛(wèi)(beforeEach,beforeReslove,afterEach),組件內(nèi)守衛(wèi)(beforeRouteEnter,beforeRouteUpdate,beforeRouteleave)和路由獨享守衛(wèi)(beforeEnter)

路由守衛(wèi)的觸發(fā)順序?

beforeEach -> beforeRouteEnter -> beforeReslove -> afterEach -> beforeRouteLeave

7. vue雙向綁定的原理

什么是mvvm模型?

mvvm模式是一種對前端代碼重新進(jìn)行劃分的模式,即

模型model:數(shù)據(jù)模型,包括了數(shù)據(jù)和方法

視圖view:即增強(qiáng)的html和css,可以實現(xiàn)分支和循環(huán)

視圖模型viewmodel:能自動將視圖中的對象與模型中的數(shù)據(jù)與方法進(jìn)行同步.

vue實現(xiàn)雙向綁定的原理是什么?

vue中,數(shù)據(jù)改變控制視圖改變主要通過數(shù)據(jù)劫持,即訪問者和觀察者模式,視圖改變控制視圖改變主要通過事件監(jiān)聽來實現(xiàn).

8. 閉包相關(guān)

談一談你對閉包的理解?
閉包是一種現(xiàn)象,具體寫法就是通過將內(nèi)層函數(shù)和內(nèi)層函數(shù)所需要全局變量包裹在一個外層函數(shù)中,通過調(diào)用外層函數(shù)返回出來,從而達(dá)到避免全局污染的效果.

閉包有哪些運用場景呢?

  • 閉包可以用來防止全局污染;
  • 閉包可以用來維持變量,比如函數(shù)軻里化

9. Vuex

談一談你對vuex的了解?

a.vuex是......

vuex有哪些屬性和方法?分別是做什么用的?

states:vuex中存儲數(shù)據(jù)的地方,相當(dāng)于data

mutations:對數(shù)據(jù)進(jìn)行操作的地方,相當(dāng)于methods

getters:vuex中的計算屬性,相當(dāng)于computed

actions:處理異步函數(shù)發(fā)送請求的地方

modules:擴(kuò)展類的東西

10. Token

談一談你對token的理解?你在項目中使用過token嗎?

token可以理解為加密的cookies,主要用來驗證用戶登錄狀態(tài),在服務(wù)器中生成加密token,跟隨網(wǎng)絡(luò)請求在前后端傳遞,在客戶端存儲在webstroage中

11. 箭頭函數(shù)

箭頭函數(shù)和匿名函數(shù)有什么區(qū)別?

  • 箭頭函數(shù)的this指向上下文,匿名函數(shù)的this指向上下文;
  • 箭頭函數(shù)的參數(shù)使用...res,匿名函數(shù)的參數(shù)使用arguments;
  • 箭頭函數(shù)的原型不是function.

12. 數(shù)組去重

說一說數(shù)組去重的方法

  • 數(shù)組遍歷去重;
  • Set()對象;
  • 對象去重.

13. js判斷數(shù)據(jù)類型

談一談js中有哪些判斷數(shù)據(jù)類型的方法

  • typeof
  • instance of
  • Object.prototype.toString().call(obj)

14. 原型鏈相關(guān)

談?wù)勀銓υ玩湹睦斫?/strong>

15. flex相關(guān)

flex的后面的參數(shù)是什么,分別有什么含義?

flex:flex-grow flex-shrink flex-basis;
/*     增長        減少     基寬    */

flex項目如何垂直居中?

align-items:center;

你在項目中是如何使用flex的?

做頁面適配時要用;

16. jsonp跨域

17. axios同步執(zhí)行

如何讓axios同步執(zhí)行?

async await方法

18. dom優(yōu)化

你在平時是如何優(yōu)化DOM的?

  • 查找元素優(yōu)化,優(yōu)先使用類選擇器和類選擇器
  • 改變dom時,使用托盤
  • 修改dom樣式時,使用domobj.style.cssText=" ...一些樣式 ";
  • 批量修改DOM元素時,從文檔流中摘除該元素
  • 減少iframs的使用,因為會消耗大量時間,并阻塞下載
  • 把js文件寫在</body>中,<script>寫在header中

19. css居中

css中有哪些方式可以給元素居中?

20. http緩存的兩種方式

http緩存有哪些方式?分別是什么?

21. vue優(yōu)化

你是如何優(yōu)化你的vue項目的?

  • v-once;
  • 懶加載;
  • 為v-for添加key;

22. 組件封裝

...

23. element-ui如何引入(全局引入和局部引入)

如何實現(xiàn)element的全局和局部引入?

24. 跨域

什么是跨域?

你在編程過程中有沒有遇到過跨域問題,你是怎么解決的?有哪些方法可以解決跨域問題?

25. 高度坍塌

什么是高度坍塌?

子元素浮動脫離文檔流,從而導(dǎo)致高度不能被撐開,稱為高度坍塌

高度坍塌的解決方案?

  • 使用:after偽類,設(shè)置清除浮動;
  • 父元素定高;
  • 父元素設(shè)置overflow;

26. h5新特性

27. c3新特性

28. let和var的區(qū)別

  • var 定義的變量會出現(xiàn)聲明提前(變量提升),let不會.
  • var定義的變量沒有塊級作用域(大括號就是塊級作用域),let具有塊級作用域
  • var可以重復(fù)聲明同一個變量,但let不可以

29. 數(shù)組遍歷的方式

  • for(var i=0;i<arr.lrngth;i++)
  • for(var key in arr)
  • for(var elem of arr)
  • arr.foreach()
  • arr.reduce/every/some/map...

30. watch和computed的區(qū)別

  • 返回值不同,computed返回的是一個屬性,主要被當(dāng)作屬性來使用,watch保存的是操作,主要被當(dāng)做方法來使用
  • 操作不同,computed是藉其他的依賴值來計算目標(biāo)值.而watch是監(jiān)聽目標(biāo)值的變化而進(jìn)行一系列操作
  • 寫法不同,computed中的目標(biāo)值后面不需要加()來調(diào)用,而watch中的需要

31. v-if和v-show的區(qū)別

v-if控制的是元素是否存在,如果值為false,則該元素從DOM樹上移除了;

v-show控制的是元素的display,如果值為false,則該元素的display成為none.

31. nexttick的使用場景

nexttick是異步任務(wù)的一種,屬于異步任務(wù)的微任務(wù),且優(yōu)先級極高,所以如果你想在完成某些異步任務(wù)后立即執(zhí)行操作,應(yīng)該使用nexttick.

vue.nexttick有兩種主要使用場景:

  • 在created鉤子函數(shù)中,DOM樹還未構(gòu)建完成,此時你若想對Dom樹進(jìn)行操作,應(yīng)該使用nexttick以在DOM樹加載完成之后立即執(zhí)行;
  • 因為vue的數(shù)據(jù)更新與視圖更新是異步的,因此,若想對試圖修改后的DOM元素進(jìn)行立即操作,應(yīng)使用nexttick.

33. bootstrap是css/scss還是less

scss

34. get和post的區(qū)別

  • get請求在URL中傳送的參數(shù)是有長度限制的,而post沒有;
  • 對參數(shù)的數(shù)據(jù)類型,get只接受ASCII字符别厘,而post沒有限制;
  • get比post更不安全(不是說post安全),因為參數(shù)直接暴露在URL上拥诡,所以不能用來傳遞敏感信息;
  • get參數(shù)通過URL傳遞触趴,post放在request body中。

35. 數(shù)組解構(gòu)與對象解構(gòu)

36. 單頁面應(yīng)用的優(yōu)缺點

優(yōu)點:

  • 用戶瀏覽體驗好;
  • 前后端分離
  • 減輕服務(wù)器壓力
  • 多個終端共用一套后臺

缺點:

  • 搜索引擎優(yōu)化比較難
  • 首頁加載比較慢
  • 前進(jìn)后退需要自己寫堆棧

37. vue自帶組件

  • keep-alive 主要用于保留組件狀態(tài)或避免重新渲染,包裹動態(tài)組件時渴肉,會緩存不活動的組件實例冗懦,而不是銷毀它們。
  • component 渲染一個“元組件”為動態(tài)組件仇祭。依 is 的值披蕉,來決定哪個組件被渲染。
  • transition 作為單個元素/組件的過渡效果
  • transition-group 作為多個元素/組件的過渡效果
  • slot 插槽

38. 事件修飾符?

<button @click.stop="inner">點擊我(^_^)</button>
  • .stop:等同于JavaScript中的event.stopPropagation()乌奇,防止事件冒泡
  • .prevent:等同于JavaScript中的event.preventDefault()没讲,防止執(zhí)行預(yù)設(shè)的行為(如果事件可取消,則取消該事件礁苗,而不停止事件的進(jìn)一步傳播)
  • .capture:與事件冒泡的方向相反爬凑,事件捕獲由外到內(nèi)
  • .self:只會觸發(fā)自己范圍內(nèi)的事件,不包含子元素
  • .once:只會觸發(fā)一次

39. v-for為什么不能和v-if同時使用?

v-for的優(yōu)先級高于v-if,如果v-if為false的話,v-for扔會執(zhí)行,這也就造成了不必要的內(nèi)存損耗

40. v-for你一般用什么方法設(shè)置key,這有什么劣勢?如何改進(jìn)?

一般用index,但index在刪除某個元素后,會自動變更,如原來有5個元素,刪除3號后,便變?yōu)榱?234,而我們的期望是1245,也就是說,index沒有實現(xiàn)為每個元素添加唯一索引的目的,因此,我們常用的方法是維數(shù)組中的每個對象添加其特有的id屬性,將其賦給key

41. 如果直接為data中的對象設(shè)置屬性會怎么樣?應(yīng)該如何解決?

會無法實現(xiàn)數(shù)據(jù)綁定,需要使用vue中的$set方法,寫法如下

this.$set(Object, key, value)
this.$set(Array, index, newValue)

42. 要求父元素div包裹兩個子元素div,第一個子元素固定為100px;第二個子元素自動填充剩余元素,你要怎么才能寫出一個兼容性佳的代碼?

.parent {
    position: relative;
}
.left {
    position: absolute;
    top: 0;
    left: 0;
    width: 100px;
}
.right {
    position: absolute;
    top: 0;
    right: 0;
    left: 100px;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寂屏,一起剝皮案震驚了整個濱河市贰谣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌迁霎,老刑警劉巖吱抚,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異考廉,居然都是意外死亡秘豹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門昌粤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來既绕,“玉大人啄刹,你說我怎么就攤上這事∑喾罚” “怎么了誓军?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長疲扎。 經(jīng)常有香客問我昵时,道長,這世上最難降的妖魔是什么椒丧? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任壹甥,我火速辦了婚禮,結(jié)果婚禮上壶熏,老公的妹妹穿的比我還像新娘句柠。我一直安慰自己,他們只是感情好棒假,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布溯职。 她就那樣靜靜地躺著,像睡著了一般淆衷。 火紅的嫁衣襯著肌膚如雪缸榄。 梳的紋絲不亂的頭發(fā)上渤弛,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天祝拯,我揣著相機(jī)與錄音,去河邊找鬼她肯。 笑死佳头,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晴氨。 我是一名探鬼主播康嘉,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼籽前!你這毒婦竟也來了亭珍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤枝哄,失蹤者是張志新(化名)和其女友劉穎肄梨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挠锥,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡众羡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蓖租。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粱侣。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡羊壹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出齐婴,到底是詐尸還是另有隱情油猫,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布柠偶,位于F島的核電站眨攘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嚣州。R本人自食惡果不足惜鲫售,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望该肴。 院中可真熱鬧情竹,春花似錦、人聲如沸匀哄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涎嚼。三九已至阱州,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間法梯,已是汗流浹背苔货。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留立哑,地道東北人夜惭。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像铛绰,于是被迫代替她去往敵國和親诈茧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348