前端面試中,一定都會(huì)被問過項(xiàng)目中的難點(diǎn),但是很多人都答不出來(lái)。為了讓大家接下來(lái)的面試中有充足的準(zhǔn)備,給大家整理了一些有難度又高頻的面試題,希望你們求職順利。

我們先來(lái)匯總JavaScript的筆試題:
(1)介紹一下JS的基本數(shù)據(jù)類型:
Undefined、Null、Boolean、Number、String
(2)介紹一下JS有哪些內(nèi)置對(duì)象:
Object 是 JavaScript 中所有對(duì)象的父對(duì)象數(shù)據(jù)封裝類對(duì)象:Object、Array、Boolean、Number、String其他對(duì)象:Function、Argument、Math、Date、RegExp、Error
(3)列舉JS的基本代碼規(guī)范:
(1)不要在同一行聲明多個(gè)變量
(2)如果你不知道數(shù)組的長(zhǎng)度,使用 push
(3)請(qǐng)使用 ===/!== 來(lái)比較 true/false 或者數(shù)值
(4)對(duì)字符串使用單引號(hào) ''(因?yàn)榇蠖鄷r(shí)候我們的字符串。特別html會(huì)出現(xiàn)")(5)使用對(duì)象字面量替代 new Array 這種形式
(6)絕對(duì)不要在一個(gè)非函數(shù)塊里聲明一個(gè)函數(shù),把那個(gè)函數(shù)賦給一個(gè)變量。瀏覽器允許你這么做,但是它們解析不同
(7)不要使用全局函數(shù)
(8)總是使用 var 來(lái)聲明變量,如果不這么做將導(dǎo)致產(chǎn)生全局變量,我們要避免污染全局命名空間
(9)Switch 語(yǔ)句必須帶有 default 分支
(10)使用 /***/ 進(jìn)行多行注釋,包括描述,指定類型以及參數(shù)值和返回值(11)函數(shù)不應(yīng)該有時(shí)候有返回值,有時(shí)候沒有返回值
(12)語(yǔ)句結(jié)束一定要加分號(hào)
(13)for 循環(huán)必須使用大括號(hào)
(14)if 語(yǔ)句必須使用大括號(hào)
(15)for-in 循環(huán)中的變量應(yīng)該使用 var 關(guān)鍵字明確限定作用域,從而避免作用域污染
(16)避免單個(gè)字符名,讓你的變量名有描述意義
(17)當(dāng)命名對(duì)象、函數(shù)和實(shí)例時(shí)使用駝峰命名規(guī)則
(18)給對(duì)象原型分配方法,而不是用一個(gè)新的對(duì)象覆蓋原型,覆蓋原型會(huì)使繼承出現(xiàn)問題
(19)當(dāng)給事件附加數(shù)據(jù)時(shí),傳入一個(gè)哈希而不是原始值,這可以讓后面的貢獻(xiàn)者加入更多數(shù)據(jù)到事件數(shù)據(jù)里,而不用找出并更新那個(gè)事件的事件處理器
流式布局如何實(shí)現(xiàn),響應(yīng)式布局如何實(shí)現(xiàn)?
流式布局:也叫fluid,
上面一行的空間不夠容納新的 TextView 時(shí)候才開辟下一行的空間。場(chǎng)景:主要用于關(guān)鍵詞搜索或者熱門標(biāo)簽等場(chǎng)景;他主要是按照頁(yè)面元素的寬度按照屏幕分辨率進(jìn)行適配調(diào)整,但整體布局不變,使用%百分比定義寬度,高度大都是用 px 來(lái)固定,可以根據(jù)可視區(qū)域和父元素的實(shí)時(shí)尺寸來(lái)調(diào)整,盡可能適應(yīng)各種分辨率。
響應(yīng)式布局:主要是實(shí)現(xiàn)不同屏幕分辨率的終端上瀏覽網(wǎng)頁(yè)的不同展示方式, 通過響應(yīng)式設(shè)計(jì)能使網(wǎng)站在手機(jī)和平板電腦上有更好的瀏覽閱讀體驗(yàn);首先設(shè)置meta標(biāo)簽,通過媒體查詢來(lái)設(shè)置樣式Media Queries,然后再設(shè)置多種視圖寬度。
什么是 “use strict”,好處和壞處是什么?
ECMAscript 5 添加了第二種運(yùn)行模式:"嚴(yán)格模式"(strict mode)。顧名思義,這種模式使得 Javascript 在更嚴(yán)格的條件下運(yùn)行。
好處:消除 Javascript 語(yǔ)法的一些不合理、不嚴(yán)謹(jǐn)之處,減少一些怪異行為;消除代碼運(yùn)行的一些不安全之處,保證代碼運(yùn)行的安全;提高編譯器效率,增加運(yùn)行速度;為未來(lái)新版本的 Javascript 做好鋪墊。 注:經(jīng)過測(cè)試 IE6,7,8,9 均不支持嚴(yán)格模式。
缺點(diǎn):現(xiàn)在網(wǎng)站的 JS 都會(huì)進(jìn)行壓縮,一些文件用了嚴(yán)格模式,而另一些沒有。這時(shí)這些本來(lái)是嚴(yán)格模式的文件,被 merge 后,這個(gè)串就到了文件的中間,不僅沒有指示嚴(yán)格模式,反而在壓縮后浪費(fèi)了字節(jié)。
介紹一下websocket
websocket 是一種網(wǎng)絡(luò)通信協(xié)議,是HTML5 開始提供的一種在單個(gè) TCP 連接上進(jìn)行全雙工通信的協(xié)議,這個(gè)對(duì)比著 http 協(xié)議來(lái)說,http 協(xié)議是一種無(wú)狀態(tài)的、無(wú)連接的、單向的應(yīng)用層協(xié)議,通信請(qǐng)求只能由客戶端發(fā)起,服務(wù)端對(duì)請(qǐng)求做出應(yīng)答處理。http 協(xié)議無(wú)法實(shí)現(xiàn)服務(wù)器主動(dòng)向客戶端發(fā)起消息,Websocket 連接允許客戶端和服務(wù)器之間進(jìn)行全雙工通信,以便任一方都可以通過建立的連接將數(shù)據(jù)推送到另一端。WebSocket 只需要建立一次連接,就可以一直保持連接狀態(tài)。
單頁(yè)面應(yīng)用有什么SEO方案?
原因:較之于傳統(tǒng)頁(yè)面,單頁(yè)應(yīng)用需要先下載框架(數(shù)據(jù) / 模板),然后才能開始加載數(shù)據(jù)、
方案:服務(wù)器端渲染首屏(SSR 基于 vue 的服務(wù)端下載);讓服務(wù)端把首屏的數(shù)據(jù)渲染在頁(yè)面上;進(jìn)行基本的 css 模板 js 的編譯合并;減少請(qǐng)求次數(shù),使用 gulp 工具,把 css 打包成一個(gè)文件, js 打包成一個(gè)文件, 模板打包成一個(gè) js 文件($templateCache) 可以和 js 文件打包成一起(促使模板 JS 文件和 JS 文件一次性請(qǐng)求);代碼分塊,如果首屏不需要的塊,就不用加載了;路由組件懶加載。當(dāng)打包構(gòu)建應(yīng)用時(shí),Javascript 包會(huì)變得非常大,影響頁(yè)面加載。如果我們能把不同路由對(duì)應(yīng)的組件分割成不同的代碼塊,然后當(dāng)路由被訪問的時(shí)候才加載對(duì)應(yīng)組件,這樣更加高效;如果有大量圖片使用懶加載。
面試官詢問項(xiàng)目中的難點(diǎn)和亮點(diǎn)的目的,是希望通過這個(gè)問題,了解你前面應(yīng)對(duì)過什么樣的復(fù)雜問題,重要的是面對(duì)問題的解決思路
回到之前實(shí)習(xí)電面的時(shí)候,面試官也問了這個(gè)。然后馬上就想起來(lái)之前有個(gè)比較大的項(xiàng)目里的頭部下拉功能的實(shí)現(xiàn)。當(dāng)時(shí)項(xiàng)目里下拉除了復(fù)雜交互和復(fù)雜的下拉界面之外,還有個(gè)變態(tài)的需求是移動(dòng)端(響應(yīng)式)的交互和樣式是完全另外一套,同樣的結(jié)構(gòu)搞兩套完全不同的交互和樣式,做了兩三天才搞定。然后
簡(jiǎn)單的跟面試官介紹需求,跟他說線上地址,可以讓他看下實(shí)際效果,然后介紹自己解決問題的思路。
比如說我的簡(jiǎn)歷上是vue的項(xiàng)目,然后面試官經(jīng)常會(huì)問項(xiàng)目遇到過哪些問題或困難,印象比較深刻的地方。
像這種問題該怎么回答呢?感覺遇到的問題都是剛接觸框架初期遇到的小問題,也不是多大的技術(shù)難點(diǎn)啊,說出來(lái)怕比較簡(jiǎn)單,算不上難點(diǎn),顯的沒有水平。
回答:
這種一般就是考核你解決、處理問題的能力,當(dāng)然,有的也是跟風(fēng)隨便問問。
你可以例舉一些項(xiàng)目中遇到的坑,或者耗時(shí)較長(zhǎng)的一些部分,以及自己的解決方案。
主要涉及到,問題的提出,問題的處理,以及處理方式(是看官方文檔,請(qǐng)教他人,團(tuán)隊(duì)解決 還是其他)。
如果業(yè)務(wù)確實(shí)太簡(jiǎn)單,可以如實(shí)告知,比如 「由于之前的業(yè)務(wù)相對(duì)常規(guī),沒有遇到過大的困難,但是也比較期待再今后工作中遇到一些難題,因?yàn)檫@樣才會(huì)有成長(zhǎng)?!?/p>