前言 由于最近在整理前端常見面試題,整理的文章標(biāo)題可能有些亂,導(dǎo)致后期不好查找,特此總結(jié)目錄,目錄會(huì)與面試題同步更新。 使用谷歌瀏覽器的可以根據(jù)關(guān)鍵字使用F3搜索功能進(jìn)行查找。 目錄 一、前端常見面試題 (一)@郝晨光 1. HTML5有哪些新特性?如何處理HTML5新標(biāo)簽的瀏覽器兼容問(wèn)題?如何區(qū)分HTML和HTML5? 2. css3中的transform有哪些屬性?分別用來(lái)實(shí)現(xiàn)什么效果? 3. localStorage、sessionStorage、cookie有什么區(qū)別? 4. 什么是同源策略?你都知道哪些解決跨域的方法? 5. 列舉JavaScript的基本數(shù)據(jù)類型和引用數(shù)據(jù)類型 6. Vue2.0的生命周期有哪些?分別解釋其意思 7. 詳述組件通信 8. 詳述導(dǎo)航守衛(wèi) 9. v-show和v-if有什么區(qū)別?及使用場(chǎng)景 10. v-for和v-if的優(yōu)先級(jí) 二、前端常見面試題(二)@郝晨光 1. Vue常用的指令 2. Vue常用修飾符 3. v-on可以監(jiān)聽多個(gè)方法嗎? 4. Vue中key值的作用 5. Vue組件中的data為什么必須是函數(shù) 三、前端常見面試題(三)@郝晨光 1. keep-alive組件的作用 2. 單頁(yè)面應(yīng)用和多頁(yè)面應(yīng)用區(qū)別及優(yōu)缺點(diǎn) 3. 什么是計(jì)算屬性?什么情況使用? 4. computed、methods的區(qū)別 5. 什么是自定義指令,有哪些鉤子函數(shù)及自定義指令的使用場(chǎng)景 6. 父組件獲取異步動(dòng)態(tài)數(shù)據(jù)傳遞給子組件,報(bào)錯(cuò)如何解決? 7. vue-router參數(shù)傳遞方法詳述及區(qū)別 四、前端常見面試題(四)@郝晨光 1. 什么是Vuex?詳述Vuex的工作流程 2. 詳述Vuex的核心屬性及使用 3. Vue和Jquery的區(qū)別 4. Vue中的slot是什么? 5. SPA首屏加載慢,該如何解決? 五、前端常見面試題(五)@郝晨光 1. 對(duì)MVC、MVP、MVVM的理解 2. 談?wù)剬?duì)$nextTick的理解及使用場(chǎng)景 3. 漸進(jìn)式框架的理解 4. 組件樣式屬性 scoped 問(wèn)題及解決方法 5. Vue中的雙向數(shù)據(jù)綁定是如何實(shí)現(xiàn)的 6. 詳述虛擬DOM中的diff算法 7. Vue提供了幾種腳手架模板 8. 常見的幾種MVVM的實(shí)現(xiàn)方式 六、前端常見面試題(六)@郝晨光 1. Vue路由的實(shí)現(xiàn)原理 2. SPA 路由history模式上線后刷新404 3. router的區(qū)別 4. 自定義過(guò)濾器詳解 5. assets和static/public的區(qū)別 七、前端常見面試題(七)@郝晨光 1. 簡(jiǎn)述同步和異步的區(qū)別 2. 數(shù)組去重(手寫代碼) 3. 在JavaScript中什么是偽數(shù)組?如何將偽數(shù)組轉(zhuǎn)化為標(biāo)準(zhǔn)數(shù)組 4. SPA路由history模式,打包上線都遇到了哪些問(wèn)題?你是如何解決的? 5. JavaScript中callee和caller的作用 八、前端常見面試題(八)@郝晨光 1. ES5/ES6 的繼承除了寫法以外還有什么區(qū)別? 2. http狀態(tài)碼有哪些?分別是什么意思? 3. 瀏覽器是如何渲染頁(yè)面的? 4. typeof 和 instanceof 相同點(diǎn)與不同點(diǎn) 5. 如何解決回調(diào)地獄?請(qǐng)手寫代碼 九、前端常見面試題(九)@郝晨光 1. 請(qǐng)?jiān)斀庖苿?dòng)端點(diǎn)透,為什么會(huì)發(fā)生點(diǎn)透?描述發(fā)生的場(chǎng)景及解決方案 2. 移動(dòng)端為什么會(huì)有一像素問(wèn)題?如何解決? 3. 你還知不知道其他移動(dòng)端的常見問(wèn)題? 十、前端常見面試題(十)@郝晨光 1. new操作符干了什么? 2. null和undefined的區(qū)別? 3. eval是做什么的? 4. iframe的優(yōu)缺點(diǎn) 十一、前端常見面試題(十一)@郝晨光 1. 什么是事件委托?為什么要用事件委托? 2. 你如何優(yōu)化自己的代碼? 3. 什么是盒模型? 4. 行內(nèi)、塊元素、空元素分別舉例 5. src和href的區(qū)別 十二、前端常見面試題(十二)@郝晨光 1. link和@import的區(qū)別 2. HTML5為什么只需要寫<!DOCTYPE HTML>? 3. Doctype作用,標(biāo)準(zhǔn)模式和兼容模式有什么區(qū)別 4. 請(qǐng)寫出html5新增的API 5. CSS優(yōu)先級(jí)算法如何計(jì)算? 十三、前端常見面試題(十三)@郝晨光 1. 列舉三種強(qiáng)制類型轉(zhuǎn)換和兩種隱式類型轉(zhuǎn)換 2. JavaScript typeof返回哪些數(shù)據(jù)類型 3. window.onload 和document.ready的區(qū)別 4. == 和 === 的區(qū)別 5. style標(biāo)簽寫在body前和body后有什么區(qū)別 十四、前端常見面試題(十四)@郝晨光 1. 怎樣添加、移除、復(fù)制、創(chuàng)建、查找節(jié)點(diǎn) 2. JQuery的事件委托on、live、delegate之間有什么區(qū)別 3. 描述一次完整的http請(qǐng)求過(guò)程(輸入url敲回車發(fā)生了什么) 十五、前端常見面試題(十五)@郝晨光 1. 什么是函數(shù)防抖和函數(shù)節(jié)流?有什么區(qū)別? 2. 什么是函數(shù)柯里化及有什么用? 3. 談?wù)勀K化開發(fā) 4. 談?wù)勀銓?duì)作用域鏈的理解 5. 什么是深拷貝?什么是淺拷貝?如何實(shí)現(xiàn)一個(gè)深拷貝函數(shù)? 十六、前端常見面試題(十六)@郝晨光 1. 用正則和非正則,實(shí)現(xiàn)一個(gè)字符串轉(zhuǎn)為駝峰 2. 判斷一個(gè)字符串中出現(xiàn)次數(shù)最多的字符,并統(tǒng)計(jì)這個(gè)次數(shù) 3. 寫一個(gè)獲取非行間樣式的函數(shù) 4. 字符串反轉(zhuǎn),如將 '12345678' 變成 '87654321' 5. 將數(shù)字 12345678 轉(zhuǎn)化成 RMB 形式 如: 12,345,678 十七、前端常見面試題(十七)@郝晨光 1. 解釋jsonp的原理 2. 在工作中你是如何優(yōu)化自己的代碼的? 3. axios是什么?如何使用?描述其實(shí)現(xiàn)登錄的流程 十八、前端常見面試題(十八)@郝晨光 1. 手寫promise封裝axios 2. 詳述前端性能優(yōu)化的手段 3. 瀏覽器輸入網(wǎng)址回車發(fā)生了什么 4. 列舉你知道的瀏覽器內(nèi)核 十九、前端常見面試題(十九)@郝晨光 1. 實(shí)現(xiàn)三欄布局,左右兩欄固定寬度100px,中間欄自適應(yīng)寬度,實(shí)現(xiàn)三列自適應(yīng)等高 2. 隨機(jī)選取 10 - 50 之間的 10 個(gè)數(shù)字,存入一個(gè)數(shù)組,并排序,并不能有重復(fù) 3. 寫一個(gè)閉包的應(yīng)用例子 4. 如何把函數(shù)add(1,2,3,4)的調(diào)用方式改為add(1)(2)(3)(4); 5. 在javascript中什么是偽數(shù)組?如何把偽數(shù)組轉(zhuǎn)換為真實(shí)數(shù)組? 6. 異步加載JS的方式有哪些? 7. 什么是Polyfill? 8. 封裝一個(gè)簡(jiǎn)單的ajax,返回Promise對(duì)象 9. 寫一個(gè)簡(jiǎn)單的jsonp的實(shí)現(xiàn)。 二十、前端常見面試題(二十)@郝晨光 1. js的特性不包括; 2. 在javascript中,以下變量命名非法的是; 3. 下列正則表達(dá)式中,匹配首位是小寫字母,其他位數(shù)是小寫字母或者數(shù)字的最少兩位字符串的是; 4. 以下代碼輸出結(jié)果為; 5. 在javascript中,以下代碼的運(yùn)行結(jié)果是; 6. 關(guān)于git和svn的說(shuō)法正確的是? 7. 在JQuery中,對(duì)于以下代碼; 8. 在javascript中,執(zhí)行下面的代碼后,結(jié)果是; 9. axios指的是什么?如何使用?描述其實(shí)現(xiàn)注冊(cè)功能流程。 10. 通過(guò)npm run build打包部署到服務(wù)器上有時(shí)會(huì)出現(xiàn)頁(yè)面空白的問(wèn)題,一般是什么原因?請(qǐng)具體描述;如果打包后沒(méi)有部署在服務(wù)器根目錄,而是在H5-page中進(jìn)行部署,需要做哪些操作。 11. 實(shí)現(xiàn)下圖的效果,獲取今天的日期,以及隨后六天的日期,并對(duì)應(yīng)是周幾。 12. 用YYYY-MM-DD hh:mm:ss 的方式輸出當(dāng)前的時(shí)間,比如當(dāng)前時(shí)間是 2018年4月18日17時(shí)42分23秒,則輸出2018-04-18 17:42:23 13. 定義一個(gè)字符串,并輸出這個(gè)字符串中的逗號(hào)和數(shù)字的個(gè)數(shù) 二十一、前端常見面試題(二十一)@郝晨光 1. URL轉(zhuǎn)對(duì)象 2. 不使用循環(huán)返回?cái)?shù)組 3. 事件委托的實(shí)現(xiàn) 4. 冒泡排序 5. 輸出字符串中出現(xiàn)次數(shù)最多的字符及其出現(xiàn)次數(shù) 6. 判斷是否是回文 7. 千分符,將數(shù)字格式化成RMB格式 8. 字符串轉(zhuǎn)駝峰 9. 找出數(shù)組最大的差值,最大值減最小值的差 10. 數(shù)組去重 11. 獲取非行間樣式 12. 斐波那契數(shù)列 二十二、前端常見面試題(二十二)@郝晨光 1. vw、vh、rem、em、px的區(qū)別 2. 前端安全:xss攻擊和CSRF攻擊 3. http和https的區(qū)別 4. 優(yōu)雅降級(jí)和逐漸增強(qiáng) 5. 什么是堆和棧 6. 什么是BFC 7. 什么是閉包,閉包的優(yōu)缺點(diǎn),內(nèi)存泄露怎么處理,閉包的使用場(chǎng)景 8. 內(nèi)存泄露 9. 將多維數(shù)組轉(zhuǎn)化為一維數(shù)組 10. JS繼承的方法及優(yōu)缺點(diǎn) 結(jié)言 感謝您的查閱,本文由郝晨光整理并總結(jié),代碼冗余或者有錯(cuò)誤的地方望不吝賜教;菜鳥一枚,請(qǐng)多關(guān)照。