月想月樂(lè)
今天小編要跟大家分享的文章是關(guān)于2020年Web前端面試題匯總。由于內(nèi)容較多小編分開(kāi)為大家介紹,今天首先來(lái)和小編一起看一看第一部分的內(nèi)容,希望這些面試題能夠?qū)φ郎?zhǔn)備找Web前端相關(guān)工作的小伙伴們有所幫助。1.說(shuō)幾條寫(xiě)JavaScript的基本規(guī)范?1)不要在同一行聲明多個(gè)變量;2)請(qǐng)使用===/!==來(lái)比較true/false或者數(shù)值;3)使用對(duì)象字面量替代newObject這種形式;4)減少使用全局函數(shù),全局變量;5)switch語(yǔ)句必須帶有default分支;6)if語(yǔ)句必須使用大括號(hào);7)for-in循環(huán)中的變量;應(yīng)該使用var關(guān)鍵字明確限定作用域;從而避免作用域全局污染。2.說(shuō)說(shuō)平衡二叉樹(shù)?平衡二叉搜索樹(shù)(Self-balancingbinarysearchtree)又被稱(chēng)為AVL樹(shù)。具有以下性質(zhì):1)它是一棵空樹(shù)或它的左右兩個(gè)子樹(shù)的高度差的絕對(duì)值不超過(guò)1,并且左右兩個(gè)子樹(shù)都是一棵平衡二叉樹(shù)。2)平衡二叉樹(shù)必定是二叉搜索樹(shù),反之則不一定。3)平衡二叉樹(shù)的常用實(shí)現(xiàn)方法有紅黑樹(shù)、AVL、替罪羊樹(shù)、Treap、伸展樹(shù)等。最小二叉平衡樹(shù)的節(jié)點(diǎn)的公式如下:F(n)=F(n-1)+F(n-2)+1備注:1是根節(jié)點(diǎn),F(xiàn)(n-1)是左子樹(shù)的節(jié)點(diǎn)數(shù)量,F(xiàn)(n-2)是右子樹(shù)的節(jié)點(diǎn)數(shù)量。3.清除浮動(dòng)和解決垂直外邊距重疊的解決方案?問(wèn)題描述:1)父元素沒(méi)有設(shè)置寬高,尺寸由子元素?fù)纹?子元素一旦浮動(dòng),父元素高度會(huì)發(fā)生塌陷。2)子元素設(shè)置margin-top會(huì)作用的父元素的margin-top;此時(shí)會(huì)造成垂直外邊距重疊。.clearfix::after,.clearfix::before{content:'';display:table;clear:both;}、localStorage和cookie?相同點(diǎn):都用于瀏覽器端存儲(chǔ)的緩存數(shù)據(jù);不同點(diǎn):1)存儲(chǔ)內(nèi)容是否發(fā)送到服務(wù)器端當(dāng)設(shè)置了Cookie后,數(shù)據(jù)會(huì)發(fā)送到服務(wù)器端,造成一定的寬帶浪費(fèi);xxxstorage則會(huì)將數(shù)據(jù)保存到本地,不會(huì)造成寬帶浪費(fèi);2)數(shù)據(jù)存儲(chǔ)大小不同Cookie數(shù)據(jù)不能超過(guò)4K,適用于會(huì)話(huà)標(biāo)識(shí);xxxstorage數(shù)據(jù)存儲(chǔ)可以達(dá)到5M;3)數(shù)據(jù)存儲(chǔ)的有效期限不同cookie只在設(shè)置了Cookid過(guò)期時(shí)間之前一直有效,即使關(guān)閉窗口或者瀏覽器;sessionStorage,僅在關(guān)閉瀏覽器之前有效;localStorage,數(shù)據(jù)存儲(chǔ)永久有效;4)作用域不同cookie和localStorage是在同源同窗口中都是共享的;sessionStorage不在不同的瀏覽器窗口中共享,即使是同一個(gè)頁(yè)面;5.判斷一個(gè)單詞是否是回文?回文是指把相同的詞匯或句子,在下文中調(diào)換位置或顛倒過(guò)來(lái),產(chǎn)生首尾回環(huán)的情景,叫做回文,也叫回環(huán)。比如cacac,redivider。letcheckPalindrom=(str)=>{returnstr===('').reverse().join('');}6.不借助臨時(shí)變量,進(jìn)行兩個(gè)整數(shù)的交換?輸入a=3,b=1,輸出a=1,b=3letswap=(a,b)=>{b=b-a;a=a+b;b=a-b;return[a,b];}7.請(qǐng)寫(xiě)出至少5個(gè)html5新增的標(biāo)簽,并說(shuō)明其語(yǔ)義和應(yīng)用場(chǎng)景?section:定義文檔中的一個(gè)章節(jié);nav:定義只包含導(dǎo)航鏈接的章節(jié);header:定義頁(yè)面或章節(jié)的頭部;它經(jīng)常包含logo、頁(yè)面標(biāo)題和導(dǎo)航性的目錄。footer:定義頁(yè)面或章節(jié)的尾部;它經(jīng)常包含版權(quán)信息、法律信息鏈接和反饋建議用的地址。aside:定義和頁(yè)面內(nèi)容關(guān)聯(lián)度較低的內(nèi)容,如果被刪除,剩下的內(nèi)容仍然很合理。和post請(qǐng)求在緩存方面的區(qū)別?get請(qǐng)求類(lèi)似于查找的過(guò)程,用戶(hù)獲取數(shù)據(jù),可以不用每次都與數(shù)據(jù)庫(kù)連接,所以可以使用緩存。post不同,post做的一般是修改和刪除的工作,所以必須與數(shù)據(jù)庫(kù)交互,所以不能使用緩存。因此get請(qǐng)求適合于請(qǐng)求緩存。9.如何解決異步回調(diào)地獄?promise、generator、async/await10.圖片的懶加載和預(yù)加載?預(yù)加載:提前加載圖片,當(dāng)用戶(hù)需要查看時(shí)可直接從本地緩存中渲染。懶加載:懶加載的主要目的是作為服務(wù)器前端的優(yōu)化,減少請(qǐng)求數(shù)或延遲請(qǐng)求數(shù)。兩種技術(shù)的本質(zhì):兩者的行為是相反的,一個(gè)是提前加載,一個(gè)是遲緩甚至不加載。懶加載對(duì)服務(wù)器前端有一定的緩解壓力作用,預(yù)加載則會(huì)增加服務(wù)器前端壓力。,apply,call的區(qū)別?通過(guò)apply和call改變函數(shù)的this指向,這兩個(gè)函數(shù)的第一個(gè)參數(shù)都是一樣的,表示要改變指向的那個(gè)對(duì)象,第二個(gè)參數(shù),apply是數(shù)組,而call則是arg1,arg2...這種形式。通過(guò)bind改變this作用域會(huì)返回一個(gè)新的函數(shù),這個(gè)函數(shù)不會(huì)馬上執(zhí)行。怎么控制一次加載一張圖片,加載完后再加載下一張?方法一:varobj=newImage();"#/";(){("pic").innnerHTML="";}加載中
小雨后噠晴天
去哪兒網(wǎng)的面試題目主要還是偏向JS方面,對(duì)JS的基礎(chǔ)要求比較高,側(cè)重原理方面,比如閉包原理、作用域原理、面向?qū)ο罄^承原理等。
建議你去看看【決勝前端】最合適不過(guò)了,里面有幾百道前端面試真題,而且每道題都有詳細(xì)的剖析。
優(yōu)質(zhì)工程師考試問(wèn)答知識(shí)庫(kù)