cao死我好湿好紧好爽动态视屏|精选久久久久久久久久|中文无码精品一区二区三区四季|AAA国语精品刺激对白视频|

當(dāng)前位置:首頁 > 軟件開放 > 正文內(nèi)容

高級前端開發(fā)面試題150道(高級前端開發(fā)面試題150道題)

軟件開放2年前 (2023-01-19)1172

今天給各位分享高級前端開發(fā)面試題150道的知識(shí),其中也會(huì)對高級前端開發(fā)面試題150道題進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!

本文目錄一覽:

WEB前端面試題

第二章 面試題基礎(chǔ)篇

2.1 HTML面試題

面試題:行內(nèi)元素有哪些?塊級元素有哪些? 空(void)元素有那些?

面試題:頁面導(dǎo)入樣式時(shí),使用link和@import有什么區(qū)別?

面試題:title與h1的區(qū)別、b與strong的區(qū)別、i與em的區(qū)別?

面試題:img標(biāo)簽的title和alt有什么區(qū)別?

面試題:png、jpg、gif 這些圖片格式解釋一下,分別什么時(shí)候用?

2.2 CSS面試題

面試題:css背景紋路

面試題:介紹一下CSS的盒子模型

面試題:CSS選擇符有哪些?哪些屬性可以繼承?

面試題:CSS優(yōu)先級算法如何計(jì)算?

面試題:用CSS畫一個(gè)三角形

面試題:一個(gè)盒子不給寬度和高度如何水平垂直居中?

面試題:display有哪些值?說明他們的作用。

面試題:對BFC規(guī)范(塊級格式化上下文:block formatting context)的理解?

面試題:清除浮動(dòng)有哪些方式?

面試題:在網(wǎng)頁中的應(yīng)該使用奇數(shù)還是偶數(shù)的字體?為什么呢?

面試題:寫一個(gè)左中右布局占滿屏幕,其中左、右倆塊固定寬200,中間自適應(yīng)寬,要求先加載中間塊,請寫出結(jié)構(gòu)及樣式。

面試題:什么是CSS reset?

面試題:css sprite是什么,有什么優(yōu)缺點(diǎn)

面試題:display: none;與visibility: hidden;的區(qū)別

面試題:position有哪些值?有什么作用? 【特別多公司問】

面試題:line-height和height有什么區(qū)別?

面試題:opacity 和 rgba區(qū)別

2.3 JavaScript基礎(chǔ)面試題

面試題:延遲加載JS有哪些方式?

面試題:JS數(shù)據(jù)類型有哪些?

面試題:null和undefined的區(qū)別

面試題:JS數(shù)據(jù)類型考題

面試題:==和===有什么不同

面試題:JS微任務(wù)和宏任務(wù)

面試題:JS作用域考題

面試題:JS對象考題

面試題:JS作用域+this指向+原型 考題

面試題:JS判斷變量是不是數(shù)組,你能寫出哪些方法?

面試題:slice是干嘛的、splice是否會(huì)改變原數(shù)組

面試題:JS數(shù)組去重

面試題:找出多維數(shù)組最大值

面試題:給字符串新增方法實(shí)現(xiàn)功能

面試題:找出字符串出現(xiàn)最多次數(shù)的字符以及次數(shù)

2.4 真正移動(dòng)端 —— H5/C3面試題

面試題:什么是語義化標(biāo)簽

面試題:::before 和 :after中雙冒號(hào)和單冒號(hào) 有什么區(qū)別?解釋一下這2個(gè)偽元素的作用。

面試題:如何關(guān)閉iOS鍵盤首字母自動(dòng)大寫

面試題:怎么讓Chrome支持小于12px 的文字?

面試題:rem和em有什么樣區(qū)別

面試題:ios系統(tǒng)中元素被觸摸時(shí)產(chǎn)生的半透明灰色遮罩怎么去掉

面試題:webkit表單輸入框placeholder的顏色值能改變嗎?

面試題:禁止ios 長按時(shí)不觸發(fā)系統(tǒng)的菜單,禁止iosandroid長按時(shí)下載圖片

面試題:禁止ios和android用戶選中文字

面試題:自適應(yīng) [淘寶無線適配]

面試題:響應(yīng)式

第三章 面試題進(jìn)階篇

3.1 JavaScript進(jìn)階面試題

面試題:new操作符具體做了什么

面試題:閉包 【必須會(huì)】

面試題:原型鏈 【必須會(huì)】

面試題: JS繼承有哪些方式

面試題:說一下call、apply、bind區(qū)別

面試題:sort背后原理是什么?

面試題:深拷貝和淺拷貝

面試題:localstorage、sessionstorage、cookie的區(qū)別

3.2 ES6面試題

面試題:var、let、const區(qū)別

面試題:作用域考題

面試題:將下列對象進(jìn)行合并

面試題:箭頭函數(shù)和普通函數(shù)有什么區(qū)別?

面試題:Promise有幾種狀態(tài)

面試題:find和filter的區(qū)別 【大廠】

面試題:some和every的區(qū)別 【大廠】

3.3 webpack面試題

面試題:webpack插件

3.4 Git面試題

面試題:git常用命令

面試題:解決沖突

面試題:GitFlow

第四章 面試題框架篇

4.1 區(qū)分初中高級的 —— Vue面試題

面試題:Vue2.x 生命周期有哪些?

1.系統(tǒng)自帶八個(gè)

2.當(dāng)一旦進(jìn)入到某個(gè)組件會(huì)執(zhí)行哪些生命周期

3.$el和$data在哪個(gè)階段有

4.如果使用keep-alive會(huì)多倆個(gè)生命周期

5.如果加入keep-alive第一次進(jìn)入組件會(huì)執(zhí)行哪些生命周期

6.如果加入keep-alive第二次或者第N進(jìn)入該組件會(huì)執(zhí)行哪些生命周期

面試題:談?wù)勀銓eep-alive的了解

面試題:v-if和v-show區(qū)別

面試題:v-if和v-for優(yōu)先級 2.x

面試題:ref是什么?

面試題:nextTick是什么?

面試題:Vue中如何做樣式穿透

面試題:scoped原理

面試題:Vuex是單向數(shù)據(jù)流還是雙向數(shù)據(jù)流?

面試題:講一下MVVM

面試題:雙向綁定原理

面試題:什么是虛擬DOM

面試題:key是干什么?

面試題:diff算法

面試題:Vue組件傳值

面試題:props和data優(yōu)先級誰高?

面試題:computed、methods、watch有什么區(qū)別?

面試題:Vuex

面試題:Vue路由

面試題:Vue項(xiàng)目打包后出現(xiàn)空白頁

4.2 微信小程序面試題

面試題:如何自定義頭部?

面試題:如何自定義底部?

4.3 uni-app面試題

面試題:生命周期

面試題:條件編譯

第五章 面試題性能優(yōu)化篇

Web前端面試的常見面試題匯總

今天小編要跟大家分享的文章是關(guān)于參加Web前端面試的常見面試題匯總。準(zhǔn)備參加Web前端面試的小伙伴們來和小編一起看一看吧,希望本篇文章能夠?qū)Υ蠹矣兴鶐椭?/p>

1.漸進(jìn)增強(qiáng)與優(yōu)雅降級

漸進(jìn)增強(qiáng)

并不是一種技術(shù),而是一種設(shè)計(jì)思想。各個(gè)瀏覽器的渲染能力各不相同,要做一個(gè)每個(gè)人都能看到的網(wǎng)頁、感受到的體驗(yàn)都一致的網(wǎng)站幾乎不可能。但還是得網(wǎng)站的可訪問性,保證用戶在任何環(huán)境下都能正常訪問網(wǎng)頁得核心內(nèi)容或能使用基本功能(避免網(wǎng)頁打不開、排版錯(cuò)誤等),并為他們提供當(dāng)前條件下最好的體驗(yàn),這就是漸進(jìn)增強(qiáng)得核心思想。

優(yōu)雅降級也是一種設(shè)計(jì)思想,為了保證在高版本瀏覽器中提供最好的體驗(yàn),碰到低版本瀏覽器再降級進(jìn)行兼容處理,使其能正常瀏覽。

這兩種思想的區(qū)別在于:

1.漸進(jìn)增強(qiáng)是向上兼容,優(yōu)雅降級是向下兼容;

2.漸進(jìn)增強(qiáng)是從簡單到復(fù)雜,優(yōu)雅降級是從復(fù)雜到簡單;

3.漸進(jìn)增強(qiáng)關(guān)注的是內(nèi)容(保證核心內(nèi)容),優(yōu)雅降級關(guān)注的是瀏覽體驗(yàn)(為了兼容低版本瀏覽器)

2.DOCTYPE

作用

DTD(DocumentTypeDefinition,文檔類型定義)是一系列的語法規(guī)則,用來定義XML或(X)HTML

的文檔類型。瀏覽器會(huì)使用它來判斷文檔類型,決定何種協(xié)議來解析,以及切換瀏覽模式。

DOCTYPE是用來聲明文檔類型和DTD

規(guī)范的,一個(gè)主要的用途便是文件的合法性驗(yàn)證。如果文檔代碼不合法,那么瀏覽器解析時(shí)便會(huì)出現(xiàn)一些差錯(cuò)。

HTML5的文檔類型聲明:

HTML4.01Strict(HTML4.01嚴(yán)格模式)的DTD包含所有HTML

元素和屬性,但不包括展示性的和棄用的元素(如font),它的文檔類型聲明:

-//W3C//DTDXHTML1.0Strict//EN"

""

標(biāo)準(zhǔn)模式與怪異模式

怪異模式(Quirks

Mode)用于模擬舊瀏覽器的行為。早期的網(wǎng)站并不會(huì)遵循完整的規(guī)范,隨著瀏覽器支持越來越多的規(guī)范,在那些舊的瀏覽器中開發(fā)的頁面在顯示時(shí)會(huì)被破壞。為了向后兼容,瀏覽器發(fā)明了怪異模式,一行錯(cuò)誤或無效的

DOCTYPE都會(huì)觸發(fā)怪異模式。

瀏覽器使用文件開頭的DOCTYPE來決定用怪異模式處理或標(biāo)準(zhǔn)模式處理。DOCTYPE

可以確保不同瀏覽器以相同的方式解析文檔,以及執(zhí)行相同的渲染模式。

怪異模式與標(biāo)準(zhǔn)模式的主要區(qū)別:

1.怪異模式的寬度和高度會(huì)包含padding和border。標(biāo)準(zhǔn)模式不包含,標(biāo)準(zhǔn)模式下可以通過設(shè)置box-sizing:

border-box將標(biāo)準(zhǔn)盒模型轉(zhuǎn)化成怪異模式下的盒模型。

2.怪異模式下,當(dāng)內(nèi)容超出容器高度時(shí),會(huì)將容器拉伸,而不是溢出。

3.怪異模式下,在表格中的字體樣式(如font-size)不會(huì)繼承。

4.怪異模式下顏色值必須使用十六進(jìn)制標(biāo)記法。

3.語義化

HTML5

中的語義化就是讓元素、屬性或?qū)傩灾涤泻x,更準(zhǔn)確地標(biāo)記特定類型的內(nèi)容。對元素語義化的目的是為了讓元素的語義和呈現(xiàn)分離,元素只負(fù)責(zé)文檔內(nèi)容的結(jié)構(gòu)與含義,而CSS

樣式控制內(nèi)容的呈現(xiàn),像元素,沒有語義但卻能將字體變粗,這類元素違背了語義化的目的,將會(huì)被廢棄。

優(yōu)點(diǎn)

·使得HTML文檔結(jié)構(gòu)清晰、布局合理、主體突出、可讀性更強(qiáng)。

·有利于SEO,搜索引擎根據(jù)標(biāo)簽來確定上下文和各個(gè)關(guān)鍵字的權(quán)重。

·方便其他設(shè)備解析,如盲人閱讀器根據(jù)語義渲染網(wǎng)頁。

·有利于開發(fā)和維護(hù),語義化更具可讀性,代碼更好維護(hù),與CSS3關(guān)系更和諧。

語義化標(biāo)簽

·定義文檔的頁眉區(qū)域,應(yīng)作為介紹內(nèi)容或者導(dǎo)航鏈接欄的容器;

·footer內(nèi)容的頁腳,通常包含該章節(jié)作者、版權(quán)數(shù)據(jù)或者與文檔相關(guān)的鏈接等信息;

·article

文檔、頁面、應(yīng)用或網(wǎng)站中的獨(dú)立結(jié)構(gòu),是可獨(dú)立分配的、可復(fù)用的結(jié)構(gòu),如在發(fā)布中,它可能是論壇帖子、雜志或新聞文章、博客、用戶提交的評論、交互式組件,或者其他獨(dú)立的內(nèi)容項(xiàng)目;

·nav描述一個(gè)含有多個(gè)超鏈接的區(qū)域,該區(qū)域包含跳轉(zhuǎn)到其他頁面或頁面內(nèi)部其他部分的鏈接列表;

·section表示文檔中的一個(gè)區(qū)域(或節(jié)),比如,內(nèi)容中的一個(gè)專題組;

·main定義文檔的主要內(nèi)容,該內(nèi)容在文檔中應(yīng)當(dāng)是獨(dú)一無二的,不包含任何在文檔中重復(fù)的內(nèi)容,比如側(cè)邊欄,導(dǎo)航欄鏈接,版權(quán)信息,網(wǎng)站

logo,搜索框(搜索框作為文檔的主要內(nèi)容);

·aside

表示一個(gè)和其余頁面內(nèi)容幾乎無關(guān)的部分,被認(rèn)為是獨(dú)立于該內(nèi)容的一部分且可以被單獨(dú)的拆分出來而不會(huì)影響整體。通常表現(xiàn)為側(cè)邊欄或嵌入內(nèi)容。

4.超鏈接偽類

:link、:visited、:active和:hover的聲明順序是怎樣的?

:link表示未訪問的鏈接狀態(tài);

:visited表示已訪問狀態(tài);:active表示激活狀態(tài)(鼠標(biāo)按下);:hover表示懸停狀態(tài)。

推薦順序是LVHA,即:link:visited:hover:active。理由如下:

·當(dāng)鼠標(biāo)懸停在未訪問的鏈接上時(shí),:link和:hover都會(huì)命中,如果:hover在:link

之前聲明,那么(:hover)就會(huì)被覆蓋;

·當(dāng)鼠標(biāo)懸停在已訪問的連接上時(shí),:visited和:hover都會(huì)命中,如果:hover在:visited

之前聲明,那么(:hover)就會(huì)被覆蓋;

·當(dāng)鼠標(biāo)單擊鏈接時(shí),:active和:hover都會(huì)命中,我們大多是想讓:hover只在懸停時(shí)展示樣式,按下鼠標(biāo)時(shí)使用:active

樣式,因此:active在:hover之后聲明;

·綜上,:hover應(yīng)在:link和:visited之后,在:active之前,因此active在最后。而:link和

:visited兩者的順序無所謂,互不影響。

5.CSS常見的長度單位

CSS中除了px長度單位之外,還有下面幾個(gè)長度單位:

·pc六分之一英寸,1pc=12pt=1/6*1in=16px;

·pt一磅,72分之一英寸。1pt=1/12_1pc=1/72_1in≈1.33px;

·in一英寸,1in=2.54cm=96px;

·ex在含有“X”字母的字體中,它是該字體的小寫字母的高度。對于很多字體來說,1ex≈0.5em;

·em1em等于父級元素的字體大小,2em就是父級元素字體大小的二倍;

·rem當(dāng)用在根元素()的font-size上面時(shí),它代表了它的初始值;

·ch代表元素所用字體font中“0”這一字形的寬度;

·vh1vh相當(dāng)于視口高度的1%,100vh就是視口的高度;

·vw1vw相當(dāng)于視口寬度的1%,100vw就是視口的寬度;

·vmax視口高度vw和寬度vh兩者中的最小值

·vmin視口高度vw和寬度vh兩種中的最大值;

·%相對于父級元素的大小來確定;

參考:CSS[1]

CSSpercentage[2]

6.事件對象

冒泡與捕獲

事件冒泡與捕獲是事件處理的兩種機(jī)制,主要描述當(dāng)在一個(gè)元素上有兩個(gè)相同類型的事件處理器被激活會(huì)發(fā)生什么。

在點(diǎn)擊子元素時(shí),瀏覽器運(yùn)行了兩種不同的階段:捕獲階段和冒泡階段。捕獲階段的行為:

·瀏覽器檢查元素的最外層祖先,是否在捕獲階段中注冊了一個(gè)onclick事件處理程序,如果是,則運(yùn)行它;

·

然后,它移動(dòng)到中單擊元素的下一個(gè)祖先元素,并執(zhí)行相同的操作,然后是單擊元素再下一個(gè)祖先元素,依此類推,直到到達(dá)實(shí)際點(diǎn)擊的元素;

而冒泡與捕獲恰恰相反:

·瀏覽器檢查實(shí)際點(diǎn)擊的元素是否在冒泡階段中注冊了一個(gè)onclick事件處理程序,如果是,則運(yùn)行它;

·然后它移動(dòng)到下一個(gè)直接的祖先元素,并做同樣的事情,然后是下一個(gè),等等,直到它到達(dá)元素;

而現(xiàn)代瀏覽器在默認(rèn)情況下,所有事件處理程序都在冒泡階段進(jìn)行注冊。因此上面代碼在點(diǎn)擊子元素時(shí)會(huì)先執(zhí)行子元素綁定的事件,然后向上冒泡,觸發(fā)父元素綁定的事件。

addEventListener函數(shù)的第三個(gè)參數(shù)是個(gè)布爾值。含義:

·當(dāng)布爾值是false時(shí)(這也是默認(rèn)值),表示向上冒泡觸發(fā)事件;

·當(dāng)布爾值是true時(shí),表示向下捕獲觸發(fā)事件;

不能冒泡的事件

有些事件是不會(huì)冒泡的。比如:

·blur元素失去焦點(diǎn)時(shí)觸發(fā),focusout事件也是失去焦點(diǎn)時(shí)觸發(fā),但可以冒泡;

·focus元素獲取焦點(diǎn)時(shí)觸發(fā);

·mouseenter鼠標(biāo)移動(dòng)到元素上時(shí)會(huì)觸發(fā)該事件,與之對應(yīng)的是mouseover事件,但會(huì)冒泡;

·mouseleave鼠標(biāo)離開元素時(shí)觸發(fā),與之對應(yīng)的是mouseout,但會(huì)冒泡;

事件冒泡可以讓我們利用事件委托,尤其是處理大量子元素時(shí),如果給每個(gè)子元素都綁定事件,這是不優(yōu)雅的,可以將事件綁定到父元素上,并讓子節(jié)點(diǎn)上發(fā)生的事件冒泡到父節(jié)點(diǎn)上,利用

e.target屬性可以獲取到當(dāng)前觸發(fā)事件的子元素。

事件對象中的方法

·stopPropagation()阻止事件冒泡,當(dāng)設(shè)置后,點(diǎn)擊該元素時(shí)父元素綁定的事件就不會(huì)再觸發(fā);

·preventDefault()阻止默認(rèn)事件的發(fā)生;

·stopImmediatePropagation()它用來阻止監(jiān)聽同一事件的其他事件監(jiān)聽器被調(diào)用以及阻止事件冒泡,比如給同一個(gè)div

元素綁定多個(gè)click事件(使用addEventListener方法可以注冊多個(gè)),當(dāng)在第二個(gè)事件函數(shù)中調(diào)用

stopImmediatePropagation方法時(shí),點(diǎn)擊div元素時(shí),后面注冊的click將不會(huì)被觸發(fā),而且還會(huì)阻止事件冒泡;

比如下面的例子,給p綁定多個(gè)click事件,在第二個(gè)事件函數(shù)中調(diào)用stopImmediatePropagation,第三個(gè)click

事件就不會(huì)觸發(fā),因?yàn)橐沧柚沽嗣芭?,因此父元素的click事件也不會(huì)觸發(fā)。

paragraph




document.querySelector("div").addEventListener("click",(event)=>{


alert("我是div元素,我是p元素的上層元素");


//p元素的click事件沒有向上冒泡,該函數(shù)不會(huì)被執(zhí)行


},false);


constp=document.querySelector('p')


p.addEventListener("click",(event)=>{


alert("我是p元素上被綁定的第一個(gè)監(jiān)聽函數(shù)");


},false);


p.addEventListener("click",(event)=>{


alert("我是p元素上被綁定的第二個(gè)監(jiān)聽函數(shù)");


event.stopImmediatePropagation();


//執(zhí)行stopImmediatePropagation方法,阻止click事件冒泡,并且阻止p元素上綁定的其他click
事件的事件監(jiān)聽函數(shù)的執(zhí)行.


},false);


p.addEventListener("click",(event)=>{


alert("我是p元素上被綁定的第三個(gè)監(jiān)聽函數(shù)");


//該監(jiān)聽函數(shù)排在上個(gè)函數(shù)后面,該函數(shù)不會(huì)被執(zhí)行


},false);


在IE瀏覽器中,使用e.cancelBubble=true也可以取消事件冒泡;使用e.returnValue=false

也能阻止默認(rèn)事件的發(fā)生。

target與currentTarget

target屬性指向的是事件目標(biāo),而currentTarget屬性指向的是正在處理當(dāng)前事件的對象,它總是指向事件綁定的元素。而target

指向的可能不是定義時(shí)的事件目標(biāo)。

例如:

div.addEventListener('click',(e)={

console.log(e.target,e.currentTarget);

},false);

e.target可能指向div元素,也可能指向它的子元素。而e.currentTarget總是指向div元素。

以上就是小編今天為大家分享的關(guān)于參加Web前端面試的常見面試題匯總的文章,希望本篇文章能夠?qū)φ郎?zhǔn)備參加前端面試的小伙伴們有所幫助,想要了解更多Web前端知識(shí)記得關(guān)注北大青鳥Web前端培訓(xùn)官網(wǎng),最后祝愿小伙伴們工作順利,成為一名優(yōu)秀的Web前端工程師。

參考資料

[1]

CSSlength:#/zh-CN/docs/Web/CSS/length

[2]

CSSpercentage:

#/zh-CN/docs/Web/CSS/percentage

前端常見面試題

前端開發(fā)可能問到的問題:

自我介紹(一定要對項(xiàng)目很熟悉)

ui-app web前端技術(shù)體系?

響應(yīng)式怎么做?

render跟狀態(tài)的差異

類組件的生命周期?

阻止冒泡,阻止事件默認(rèn)行為

文本垂直居中。 line-height設(shè)置為元素高度。

用reduce講數(shù)組中的對象進(jìn)行合并

解釋localstorage sessionstorage cookie

eventbus滿足event.on('eventname', callback)

display有幾個(gè)值?默認(rèn)值?

position有幾個(gè)值?默認(rèn)值?

div水平垂直居中?

position有哪些值

react相關(guān)問題(概念理解、通訊組件等)、react常用內(nèi)置

React-router

html+css

頁面增刪改查

position的值 absolute relative fixed static

工作中是怎么聯(lián)調(diào)和上線的(現(xiàn)場想合適的前后端聯(lián)調(diào)方式,能和webpack環(huán)境切換聯(lián)系起來)

antd的Form shouldUpdate增量更新方式,性能優(yōu)化。

對Hooks的理解

3:操作dom點(diǎn)擊事件向服務(wù)器上傳數(shù)據(jù),在上傳未完成之前不可重復(fù)操作事件

4:日期格式化,日期不足前兩位補(bǔ)0(2021-06-06 06:06:00)

用css寫一個(gè)布局,左側(cè)固定寬度,右側(cè)自適應(yīng)

你看

前端經(jīng)典面試題(60道前端面試題包含JS、CSS、React、瀏覽器等)

防抖

節(jié)流

誤區(qū):我們經(jīng)常說get請求參數(shù)的大小存在限制,而post請求的參數(shù)大小是無限制的。

實(shí)際上HTTP 協(xié)議從未規(guī)定 GET/POST 的請求長度限制是多少。對get請求參數(shù)的限制是來源與瀏覽器或web服務(wù)器,瀏覽器或web服務(wù)器限制了url的長度。為了明確這個(gè)概念,我們必須再次強(qiáng)調(diào)下面幾點(diǎn):

補(bǔ)充補(bǔ)充一個(gè)get和post在緩存方面的區(qū)別:

可從IIFE、AMD、CMD、CommonJS、UMD、webpack(require.ensure)、ES Module、

vue和react都是采用diff算法來對比新舊虛擬節(jié)點(diǎn),從而更新節(jié)點(diǎn)。在vue的diff函數(shù)中(建議先了解一下diff算法過程)。在交叉對比中,當(dāng)新節(jié)點(diǎn)跟舊節(jié)點(diǎn) 頭尾交叉對比 沒有結(jié)果時(shí),會(huì)根據(jù)新節(jié)點(diǎn)的key去對比舊節(jié)點(diǎn)數(shù)組中的key,從而找到相應(yīng)舊節(jié)點(diǎn)(這里對應(yīng)的是一個(gè)key = index 的map映射)。如果沒找到就認(rèn)為是一個(gè)新增節(jié)點(diǎn)。而如果沒有key,那么就會(huì)采用遍歷查找的方式去找到對應(yīng)的舊節(jié)點(diǎn)。一種一個(gè)map映射,另一種是遍歷查找。相比而言。map映射的速度更快。vue部分源碼如下:

創(chuàng)建map函數(shù)

遍歷尋找

在React中, 如果是由React引發(fā)的事件處理(比如通過onClick引發(fā)的事件處理),調(diào)用setState不會(huì)同步更新this.state,除此之外的setState調(diào)用會(huì)同步執(zhí)行this.state 。所謂“除此之外”,指的是繞過React通過addEventListener直接添加的事件處理函數(shù),還有通過setTimeout/setInterval產(chǎn)生的異步調(diào)用。

**原因:**在React的setState函數(shù)實(shí)現(xiàn)中,會(huì)根據(jù)一個(gè)變量isBatchingUpdates判斷是直接更新this.state還是放到隊(duì)列中回頭再說,而isBatchingUpdates默認(rèn)是false,也就表示setState會(huì)同步更新this.state,但是, 有一個(gè)函數(shù)batchedUpdates,這個(gè)函數(shù)會(huì)把isBatchingUpdates修改為true,而當(dāng)React在調(diào)用事件處理函數(shù)之前就會(huì)調(diào)用這個(gè)batchedUpdates,造成的后果,就是由React控制的事件處理過程setState不會(huì)同步更新this.state 。

虛擬dom相當(dāng)于在js和真實(shí)dom中間加了一個(gè)緩存,利用dom diff算法避免了沒有必要的dom操作,從而提高性能。

具體實(shí)現(xiàn)步驟如下:

用 JavaScript 對象結(jié)構(gòu)表示 DOM 樹的結(jié)構(gòu);然后用這個(gè)樹構(gòu)建一個(gè)真正的 DOM 樹,插到文檔當(dāng)中

當(dāng)狀態(tài)變更的時(shí)候,重新構(gòu)造一棵新的對象樹。然后用新的樹和舊的樹進(jìn)行比較,記錄兩棵樹差異

把2所記錄的差異應(yīng)用到步驟1所構(gòu)建的真正的DOM樹上,視圖就更新了。

結(jié)構(gòu):display:none: 會(huì)讓元素完全從渲染樹中消失,渲染的時(shí)候不占據(jù)任何空間, 不能點(diǎn)擊, visibility: hidden:不會(huì)讓元素從渲染樹消失,渲染元素繼續(xù)占據(jù)空間,只是內(nèi)容不可見,不能點(diǎn)擊 opacity: 0: 不會(huì)讓元素從渲染樹消失,渲染元素繼續(xù)占據(jù)空間,只是內(nèi)容不可見,可以點(diǎn)擊

繼承:display: none:是非繼承屬性,子孫節(jié)點(diǎn)消失由于元素從渲染樹消失造成,通過修改子孫節(jié)點(diǎn)屬性無法顯示。visibility: hidden:是繼承屬性,子孫節(jié)點(diǎn)消失由于繼承了hidden,通過設(shè)置visibility: visible;可以讓子孫節(jié)點(diǎn)顯式。

性能:displaynone : 修改元素會(huì)造成文檔回流,讀屏器不會(huì)讀取display: none元素內(nèi)容,性能消耗較大 visibility:hidden: 修改元素只會(huì)造成本元素的重繪,性能消耗較少讀屏器讀取visibility: hidden元素內(nèi)容 opacity: 0 :修改元素會(huì)造成重繪,性能消耗較少

聯(lián)系:它們都能讓元素不可見

常用的一般為三種 .clearfix , clear:both , overflow:hidden ;

比較好是 .clearfix ,偽元素萬金油版本,后兩者有局限性.

clear:both :若是用在同一個(gè)容器內(nèi)相鄰元素上,那是賊好的,有時(shí)候在容器外就有些問題了, 比如相鄰容器的包裹層元素塌陷

overflow:hidden :這種若是用在同個(gè)容器內(nèi),可以形成 BFC 避免浮動(dòng)造成的元素塌陷

概念:將多個(gè)小圖片拼接到一個(gè)圖片中。通過 background-position 和元素尺寸調(diào)節(jié)需要顯示的背景圖案。

優(yōu)點(diǎn):

缺點(diǎn):

block 元素特點(diǎn):

1.處于常規(guī)流中時(shí),如果 width 沒有設(shè)置,會(huì)自動(dòng)填充滿父容器 2.可以應(yīng)用 margin/padding 3.在沒有設(shè)置高度的情況下會(huì)擴(kuò)展高度以包含常規(guī)流中的子元素 4.處于常規(guī)流中時(shí)布局時(shí)在前后元素位置之間(獨(dú)占一個(gè)水平空間) 5.忽略 vertical-align

inline 元素特點(diǎn)

1.水平方向上根據(jù) direction 依次布局

2.不會(huì)在元素前后進(jìn)行換行

3.受 white-space 控制

4. margin/padding 在豎直方向上無效,水平方向上有效

5. width/height 屬性對非替換行內(nèi)元素?zé)o效,寬度由元素內(nèi)容決定

6.非替換行內(nèi)元素的行框高由 line-height 確定,替換行內(nèi)元素的行框高由 height , margin , padding , border 決定 7.浮動(dòng)或絕對定位時(shí)會(huì)轉(zhuǎn)換為 block 8. vertical-align 屬性生效

GIF :

JPEG :

PNG :

七種數(shù)據(jù)類型

(ES6之前)其中5種為基本類型: string , number , boolean , null , undefined ,

ES6出來的 Symbol 也是原始數(shù)據(jù)類型 ,表示獨(dú)一無二的值

Object 為引用類型(范圍挺大),也包括數(shù)組、函數(shù),

輸出結(jié)果是:

工廠模式

簡單的工廠模式可以理解為解決多個(gè)相似的問題;

單例模式

只能被實(shí)例化(構(gòu)造函數(shù)給實(shí)例添加屬性與方法)一次

沙箱模式

將一些函數(shù)放到自執(zhí)行函數(shù)里面,但要用閉包暴露接口,用變量接收暴露的接口,再調(diào)用里面的值,否則無法使用里面的值

1.字面量

2.Object構(gòu)造函數(shù)創(chuàng)建

3.使用工廠模式創(chuàng)建對象

4.使用構(gòu)造函數(shù)創(chuàng)建對象

HTML中與javascript交互是通過事件驅(qū)動(dòng)來實(shí)現(xiàn)的,例如鼠標(biāo)點(diǎn)擊事件onclick、頁面的滾動(dòng)事件onscroll等等,可以向文檔或者文檔中的元素添加事件偵聽器來預(yù)訂事件。想要知道這些事件是在什么時(shí)候進(jìn)行調(diào)用的,就需要了解一下“事件流”的概念。

什么是事件流:事件流描述的是從頁面中接收事件的順序,DOM2級事件流包括下面幾個(gè)階段。

addEventListener : addEventListener 是DOM2 級事件新增的指定事件處理程序的操作,這個(gè)方法接收3個(gè)參數(shù):要處理的事件名、作為事件處理程序的函數(shù)和一個(gè)布爾值。最后這個(gè)布爾值參數(shù)如果是true,表示在捕獲階段調(diào)用事件處理程序;如果是false,表示在冒泡階段調(diào)用事件處理程序。

IE只支持事件冒泡 。

獲取一個(gè)對象的原型,在chrome中可以通過__proto__的形式,或者在ES6中可以通過Object.getPrototypeOf的形式。

那么Function.proto是什么么?也就是說Function由什么對象繼承而來,我們來做如下判別。

我們發(fā)現(xiàn)Function的原型也是Function。

我們用圖可以來明確這個(gè)關(guān)系:

這里來舉個(gè)栗子,以 Object 為例,我們常用的 Object 便是一個(gè)構(gòu)造函數(shù),因此我們可以通過它構(gòu)建實(shí)例。

則此時(shí), 實(shí)例為instance , 構(gòu)造函數(shù)為Object ,我們知道,構(gòu)造函數(shù)擁有一個(gè) prototype 的屬性指向原型,因此原型為:

這里我們可以來看出三者的關(guān)系:

在 JS 中,繼承通常指的便是 原型鏈繼承 ,也就是通過指定原型,并可以通過原型鏈繼承原型上的屬性或者方法。

在函數(shù)式編程中,函數(shù)是一等公民。那么函數(shù)柯里化是怎樣的呢?

函數(shù)柯里化指的是將能夠接收多個(gè)參數(shù)的函數(shù)轉(zhuǎn)化為接收單一參數(shù)的函數(shù),并且返回接收余下參數(shù)且返回結(jié)果的新函數(shù)的技術(shù)。

函數(shù)柯里化的主要作用和特點(diǎn)就是參數(shù)復(fù)用、提前返回和延遲執(zhí)行。

在一個(gè)函數(shù)中,首先填充幾個(gè)參數(shù),然后再返回一個(gè)新的函數(shù)的技術(shù),稱為函數(shù)的柯里化。通??捎糜谠诓磺秩牒瘮?shù)的前提下,為函數(shù) 預(yù)置通用參數(shù) ,供多次重復(fù)調(diào)用。

call 和 apply 都是為了解決改變 this 的指向。作用都是相同的,只是傳參的方式不同。

除了第一個(gè)參數(shù)外, call 可以接收一個(gè)參數(shù)列表, apply 只接受一個(gè)參數(shù)數(shù)組。

bind 和其他兩個(gè)方法作用也是一致的,只是該方法會(huì)返回一個(gè)函數(shù)。并且我們可以通過 bind 實(shí)現(xiàn)柯里化。

如何實(shí)現(xiàn)一個(gè) bind 函數(shù)

對于實(shí)現(xiàn)以下幾個(gè)函數(shù),可以從幾個(gè)方面思考

如何實(shí)現(xiàn)一個(gè)call函數(shù)

如何實(shí)現(xiàn)一個(gè)apply函數(shù)

箭頭函數(shù)其實(shí)是沒有 this 的,這個(gè)函數(shù)中的 this 只取決于他外面的第一個(gè)不是箭頭函數(shù)的函數(shù)的 this 。在這個(gè)例子中,因?yàn)檎{(diào)用 a 符合前面代碼中的第一個(gè)情況,所以 this 是 window 。并且 this 一旦綁定了上下文,就不會(huì)被任何代碼改變。

關(guān)于 let 的是否存在變量提升,我們何以用下面的例子來驗(yàn)證:

let 變量如果不存在變量提升, console.log(name) 就會(huì)輸出 ConardLi ,結(jié)果卻拋出了 ReferenceError ,那么這很好的說明了, let 也存在變量提升,但是它存在一個(gè)“暫時(shí)死區(qū)”,在變量未初始化或賦值前不允許訪問。

變量的賦值可以分為三個(gè)階段:

關(guān)于 let 、 var 和 function :

依次輸出:undefined - 10 - 20

答案: D

colorChange 方法是靜態(tài)的。靜態(tài)方法僅在創(chuàng)建它們的構(gòu)造函數(shù)中存在,并且不能傳遞給任何子級。由于 freddie 是一個(gè)子級對象,函數(shù)不會(huì)傳遞,所以在 freddie 實(shí)例上不存在 freddie 方法:拋出 TypeError 。

1.使用第一次push,obj對象的push方法設(shè)置 obj[2]=1;obj.length+=1 2.使用第二次push,obj對象的push方法設(shè)置 obj[3]=2;obj.length+=1 3.使用console.log輸出的時(shí)候,因?yàn)閛bj具有 length 屬性和 splice 方法,故將其作為數(shù)組進(jìn)行打印 4.打印時(shí)因?yàn)閿?shù)組未設(shè)置下標(biāo)為 0 1 處的值,故打印為empty,主動(dòng) obj[0] 獲取為 undefined

undefined {n:2}

首先,a和b同時(shí)引用了{(lán)n:2}對象,接著執(zhí)行到a.x = a = {n:2}語句,盡管賦值是從右到左的沒錯(cuò),但是.的優(yōu)先級比=要高,所以這里首先執(zhí)行a.x,相當(dāng)于為a(或者b)所指向的{n:1}對象新增了一個(gè)屬性x,即此時(shí)對象將變?yōu)閧n:1;x:undefined}。之后按正常情況,從右到左進(jìn)行賦值,此時(shí)執(zhí)行a ={n:2}的時(shí)候,a的引用改變,指向了新對象{n:2},而b依然指向的是舊對象。之后執(zhí)行a.x = {n:2}的時(shí)候,并不會(huì)重新解析一遍a,而是沿用最初解析a.x時(shí)候的a,也即舊對象,故此時(shí)舊對象的x的值為{n:2},舊對象為 {n:1;x:{n:2}},它被b引用著。后面輸出a.x的時(shí)候,又要解析a了,此時(shí)的a是指向新對象的a,而這個(gè)新對象是沒有x屬性的,故訪問時(shí)輸出undefined;而訪問b.x的時(shí)候,將輸出舊對象的x的值,即{n:2}。

在比較相等性,原始類型通過它們的值進(jìn)行比較,而對象通過它們的引用進(jìn)行比較。 JavaScript 檢查對象是否具有對內(nèi)存中相同位置的引用。

我們作為參數(shù)傳遞的對象和我們用于檢查相等性的對象在內(nèi)存中位于不同位置,所以它們的引用是不同的。

這就是為什么 { age: 18 } === { age: 18 } 和 { age: 18 } == { age: 18 } 返回 false 的原因。

所有對象鍵(不包括 Symbols )都會(huì)被存儲(chǔ)為字符串,即使你沒有給定字符串類型的鍵。這就是為什么 obj.hasOwnProperty('1') 也返回 true 。

上面的說法不適用于 Set 。在我們的 Set 中沒有 “1” : set.has('1') 返回 false 。它有數(shù)字類型 1 , set.has(1) 返回 true 。

這題考察的是對象的鍵名的轉(zhuǎn)換。

catch 塊接收參數(shù) x 。當(dāng)我們傳遞參數(shù)時(shí),這與變量的 x 不同。這個(gè)變量 x 是屬于 catch 作用域的。

之后,我們將這個(gè)塊級作用域的變量設(shè)置為 1 ,并設(shè)置變量 y 的值。現(xiàn)在,我們打印塊級作用域的變量 x ,它等于 1 。

在 catch 塊之外, x 仍然是 undefined ,而 y 是 2 。當(dāng)我們想在 catch 塊之外的 console.log(x) 時(shí),它返回 undefined ,而 y 返回 2 。

有哪些經(jīng)典的前端開發(fā)面試題及答案解析

行元素與塊元素的區(qū)別;

如何清除浮動(dòng);

定位方式當(dāng)中,absolute與fixed、relative的區(qū)別;

事件的兼容問題;

Ajax是什么;

如何優(yōu)化你的頁面;

響應(yīng)式布局是什么等等。

經(jīng)典的前端面試題至少有近百道,在這里也沒辦法全部給你列出來,你可以看看這個(gè)(小-程序),里面有好幾百道面試真題,也有比較好的答案解析。

Web前端崗位面試題有哪些

前端面試題匯總,基本上會(huì)有四大類問題,具體如下:

一、HTML

1、Doctype作用?嚴(yán)格模式與混雜模式如何區(qū)分?它們有何意義?

2、HTML5 為什么只需要寫 !DOCTYPE HTML?

3、行內(nèi)元素有哪些?塊級元素有哪些? 空(void)元素有那些?

4、頁面導(dǎo)入樣式時(shí),使用link和@import有什么區(qū)別?

5、介紹一下你對瀏覽器內(nèi)核的理解?

6、常見的瀏覽器內(nèi)核有哪些?

7、html5有哪些新特性、移除了那些元素?如何處理HTML5新標(biāo)簽的瀏覽器兼容問題?如何區(qū)分 HTML 和 HTML5?

8、簡述一下你對HTML語義化的理解?

9、HTML5的離線儲(chǔ)存怎么使用,工作原理能不能解釋一下?

10、瀏覽器是怎么對HTML5的離線儲(chǔ)存資源進(jìn)行管理和加載的呢?

11、請描述一下 cookies,sessionStorage 和 localStorage 的區(qū)別?

12、iframe有那些缺點(diǎn)?

13、Label的作用是什么?是怎么用的?(加 for 或 包裹)

14、HTML5的form如何關(guān)閉自動(dòng)完成功能?

15、如何實(shí)現(xiàn)瀏覽器內(nèi)多個(gè)標(biāo)簽頁之間的通信? (阿里)

16、webSocket如何兼容低瀏覽器?(阿里)

17、頁面可見性(Page Visibility)API 可以有哪些用途?

18、如何在頁面上實(shí)現(xiàn)一個(gè)圓形的可點(diǎn)擊區(qū)域?

19、實(shí)現(xiàn)不使用 border 畫出1px高的線,在不同瀏覽器的Quirksmode和CSSCompat模式下都能保持同一效果。

20、網(wǎng)頁驗(yàn)證碼是干嘛的,是為了解決什么安全問題?

21、tite與h1的區(qū)別、b與strong的區(qū)別、i與em的區(qū)別?

二、css

1、介紹一下標(biāo)準(zhǔn)的CSS的盒子模型?與低版本IE的盒子模型有什么不同的?

2、CSS選擇符有哪些?哪些屬性可以繼承?

3、CSS優(yōu)先級算法如何計(jì)算?

4、CSS3新增偽類有那些?

5、如何居中div?如何居中一個(gè)浮動(dòng)元素?如何讓絕對定位的div居中?

6、display有哪些值?說明他們的作用。

7、position的值relative和absolute定位原點(diǎn)是?

8、CSS3有哪些新特性?

9、請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?

10、用純CSS創(chuàng)建一個(gè)三角形的原理是什么?

11、一個(gè)滿屏 品 字布局 如何設(shè)計(jì)?

三、常見兼容性問題?

1、li與li之間有看不見的空白間隔是什么原因引起的?有什么解決辦法?

2、經(jīng)常遇到的瀏覽器的兼容性有哪些?原因,解決方法是什么,常用hack的技巧 ?

3、為什么要初始化CSS樣式。

4、absolute的containing block計(jì)算方式跟正常流有什么不同?

5、CSS里的visibility屬性有個(gè)collapse屬性值是干嘛用的?在不同瀏覽器下以后什么區(qū)別?

6、position跟display、margin collapse、overflow、float這些特性相互疊加后會(huì)怎么樣?

7、對BFC規(guī)范(塊級格式化上下文:block formatting context)的理解?

8、CSS權(quán)重優(yōu)先級是如何計(jì)算的?

9、請解釋一下為什么會(huì)出現(xiàn)浮動(dòng)和什么時(shí)候需要清除浮動(dòng)?清除浮動(dòng)的方式

10、移動(dòng)端的布局用過媒體查詢嗎?

11、使用 CSS 預(yù)處理器嗎?喜歡那個(gè)?

12、CSS優(yōu)化、提高性能的方法有哪些?

13、瀏覽器是怎樣解析CSS選擇器的?

14、在網(wǎng)頁中的應(yīng)該使用奇數(shù)還是偶數(shù)的字體?為什么呢?

15、margin和padding分別適合什么場景使用?

16、抽離樣式模塊怎么寫,說出思路,有無實(shí)踐經(jīng)驗(yàn)?[阿里航旅的面試題]

17、元素豎向的百分比設(shè)定是相對于容器的高度嗎?

18、全屏滾動(dòng)的原理是什么?用到了CSS的那些屬性?

19、什么是響應(yīng)式設(shè)計(jì)?響應(yīng)式設(shè)計(jì)的基本原理是什么?如何兼容低版本的IE?

20、視差滾動(dòng)效果,如何給每頁做不同的動(dòng)畫?(回到頂部,向下滑動(dòng)要再次出現(xiàn),和只出現(xiàn)一次分別怎么做?)

21、::before 和 :after中雙冒號(hào)和單冒號(hào) 有什么區(qū)別?解釋一下這2個(gè)偽元素的作用。

22、如何修改chrome記住密碼后自動(dòng)填充表單的黃色背景 ?

23、你對line-height是如何理解的?

24、設(shè)置元素浮動(dòng)后,該元素的display值是多少?(自動(dòng)變成display:block)

25、怎么讓Chrome支持小于12px 的文字?

26、讓頁面里的字體變清晰,變細(xì)用CSS怎么做?(-webkit-font-smoothing: antialiased;)

27、font-style屬性可以讓它賦值為“oblique” oblique是什么意思?

28、position:fixed;在android下無效怎么處理?

29、如果需要手動(dòng)寫動(dòng)畫,你認(rèn)為最小時(shí)間間隔是多久,為什么?(阿里)

30、display:inline-block 什么時(shí)候會(huì)顯示間隙?(攜程)

31、overflow: scroll時(shí)不能平滑滾動(dòng)的問題怎么處理?

32、有一個(gè)高度自適應(yīng)的div,里面有兩個(gè)div,一個(gè)高度100px,希望另一個(gè)填滿剩下的高度。

33、png、jpg、gif 這些圖片格式解釋一下,分別什么時(shí)候用。有沒有了解過webp?

34、什么是Cookie 隔離?(或者說:請求資源的時(shí)候不要讓它帶cookie怎么做)

35、style標(biāo)簽寫在body后與body前有什么區(qū)別?

四、JavaScript

1、介紹JavaScript的基本數(shù)據(jù)類型。

2、說說寫JavaScript的基本規(guī)范?

3、JavaScript原型,原型鏈 ? 有什么特點(diǎn)?

4、JavaScript有幾種類型的值?(堆:原始數(shù)據(jù)類型和 棧:引用數(shù)據(jù)類型),你能畫一下他們的內(nèi)存圖嗎?

5、Javascript如何實(shí)現(xiàn)繼承?

6、Javascript創(chuàng)建對象的幾種方式?

7、Javascript作用鏈域?

8、談?wù)凾his對象的理解。

9、eval是做什么的?

10、什么是window對象? 什么是document對象?

11、null,undefined的區(qū)別?

12、寫一個(gè)通用的事件偵聽器函數(shù)(機(jī)試題)。

13、[“1”, “2”, “3”].map(parseInt) 答案是多少?

14、關(guān)于事件,IE與火狐的事件機(jī)制有什么區(qū)別? 如何阻止冒泡?

15、什么是閉包(closure),為什么要用它?

16、javascript 代碼中的”use strict”;是什么意思 ? 使用它區(qū)別是什么?

17、如何判斷一個(gè)對象是否屬于某個(gè)類?

18、new操作符具體干了什么呢?

19、用原生JavaScript的實(shí)現(xiàn)過什么功能嗎?

20、Javascript中,有一個(gè)函數(shù),執(zhí)行時(shí)對象查找時(shí),永遠(yuǎn)不會(huì)去查找原型,這個(gè)函數(shù)是?

21、對JSON的了解?

22、[].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.random()*(124))).toString(16) }) 能解釋一下這段代碼的意思嗎?

23、js延遲加載的方式有哪些?

24、Ajax 是什么? 如何創(chuàng)建一個(gè)Ajax?

25、同步和異步的區(qū)別?

26、如何解決跨域問題?

27、頁面編碼和被請求的資源編碼如果不一致如何處理?

28、模塊化開發(fā)怎么做?

29、AMD(Modules/Asynchronous-Definition)、CMD(Common Module

Definition)規(guī)范區(qū)別?

30、requireJS的核心原理是什么?(如何動(dòng)態(tài)加載的?如何避免多次加載的?如何 緩存的?)

31、讓你自己設(shè)計(jì)實(shí)現(xiàn)一個(gè)requireJS,你會(huì)怎么做?

32、談一談你對ECMAScript6的了解?

33、ECMAScript6 怎么寫class么,為什么會(huì)出現(xiàn)class這種東西?

34、異步加載的方式有哪些?

35、documen.write和 innerHTML的區(qū)別?

36、DOM操作——怎樣添加、移除、移動(dòng)、復(fù)制、創(chuàng)建和查找節(jié)點(diǎn)?

37、.call() 和 .apply() 的含義和區(qū)別?

38、數(shù)組和對象有哪些原生方法,列舉一下?

39、JS 怎么實(shí)現(xiàn)一個(gè)類。怎么實(shí)例化這個(gè)類

40、JavaScript中的作用域與變量聲明提升?

41、如何編寫高性能的Javascript?

42、那些操作會(huì)造成內(nèi)存泄漏?

43、JQuery的源碼看過嗎?能不能簡單概況一下它的實(shí)現(xiàn)原理?

44、jQuery.fn的init方法返回的this指的是什么對象?為什么要返回this?

45、jquery中如何將數(shù)組轉(zhuǎn)化為json字符串,然后再轉(zhuǎn)化回來?

46、jQuery 的屬性拷貝(extend)的實(shí)現(xiàn)原理是什么,如何實(shí)現(xiàn)深拷貝?

47、jquery.extend 與 jquery.fn.extend的區(qū)別?

48、jQuery 的隊(duì)列是如何實(shí)現(xiàn)的?隊(duì)列可以用在哪些地方?

49、談一下Jquery中的bind(),live(),delegate(),on()的區(qū)別?

50、JQuery一個(gè)對象可以同時(shí)綁定多個(gè)事件,這是如何實(shí)現(xiàn)的?

51、是否知道自定義事件。jQuery里的fire函數(shù)是什么意思,什么時(shí)候用?

52、jQuery 是通過哪個(gè)方法和 Sizzle 選擇器結(jié)合的?(jQuery.fn.find()進(jìn)入Sizzle)

53、針對 jQuery性能的優(yōu)化方法?

54、Jquery與jQuery UI有啥區(qū)別?

55、JQuery的源碼看過嗎?能不能簡單說一下它的實(shí)現(xiàn)原理?

56、jquery 中如何將數(shù)組轉(zhuǎn)化為json字符串,然后再轉(zhuǎn)化回來?

57、jQuery和Zepto的區(qū)別?各自的使用場景?

58、針對 jQuery 的優(yōu)化方法?

59、Zepto的點(diǎn)透問題如何解決?

60、jQueryUI如何自定義組件?

61、需求:實(shí)現(xiàn)一個(gè)頁面操作不會(huì)整頁刷新的網(wǎng)站,并且能在瀏覽器前進(jìn)、后退時(shí)正確響應(yīng)。給出你的技術(shù)實(shí)現(xiàn)方案?

62、如何判斷當(dāng)前腳本運(yùn)行在瀏覽器還是node環(huán)境中?(阿里)

63、移動(dòng)端最小觸控區(qū)域是多大?

64、jQuery 的 slideUp動(dòng)畫 ,如果目標(biāo)元素是被外部事件驅(qū)動(dòng), 當(dāng)鼠標(biāo)快速地連續(xù)觸發(fā)外部元素事件, 動(dòng)畫會(huì)滯后的反復(fù)執(zhí)行,該如何處理呢?

65、把 Script 標(biāo)簽 放在頁面的最底部的body封閉之前 和封閉之后有什么區(qū)別?瀏覽器會(huì)如何解析它們?

66、移動(dòng)端的點(diǎn)擊事件的有延遲,時(shí)間是多久,為什么會(huì)有? 怎么解決這個(gè)延時(shí)?(click 有 300ms 延遲,為了實(shí)現(xiàn)safari的雙擊事件的設(shè)計(jì),瀏覽器要知道你是不是要雙擊操作。)

67、知道各種JS框架(Angular, Backbone, Ember, React, Meteor, Knockout…)么? 能講出他們各自的優(yōu)點(diǎn)和缺點(diǎn)么?

68、Underscore 對哪些 JS 原生對象進(jìn)行了擴(kuò)展以及提供了哪些好用的函數(shù)方法?

69、解釋JavaScript中的作用域與變量聲明提升?

70、那些操作會(huì)造成內(nèi)存泄漏?

71、JQuery一個(gè)對象可以同時(shí)綁定多個(gè)事件,這是如何實(shí)現(xiàn)的?

72、Node.js的適用場景?

(如果會(huì)用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么?

73、解釋一下 Backbone 的 MVC 實(shí)現(xiàn)方式?

74、什么是“前端路由”?什么時(shí)候適合使用“前端路由”? “前端路由”有哪些優(yōu)點(diǎn)和缺點(diǎn)?

75、知道什么是webkit么? 知道怎么用瀏覽器的各種工具來調(diào)試和debug代碼么?

76、如何測試前端代碼么? 知道BDD, TDD, Unit Test么? 知道怎么測試你的前端工程么(mocha, sinon, jasmin, qUnit..)?

77、前端templating(Mustache, underscore, handlebars)是干嘛的, 怎么用?

78、簡述一下 Handlebars 的基本用法?

79、簡述一下 Handlerbars 的對模板的基本處理流程, 如何編譯的?如何緩存的?

80、用js實(shí)現(xiàn)千位分隔符?(來源:前端農(nóng)民工,提示:正則+replace)

檢測瀏覽器版本版本有哪些方式?

81、我們給一個(gè)dom同時(shí)綁定兩個(gè)點(diǎn)擊事件,一個(gè)用捕獲,一個(gè)用冒泡,你來說下會(huì)執(zhí)行幾次事件,然后會(huì)先執(zhí)行冒泡還是捕獲

高級前端開發(fā)面試題150道的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于高級前端開發(fā)面試題150道題、高級前端開發(fā)面試題150道的信息別忘了在本站進(jìn)行查找喔。

掃描二維碼推送至手機(jī)訪問。

版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。

本文鏈接:http://www.smallwaterjetsystem.com/post/4660.html

“高級前端開發(fā)面試題150道(高級前端開發(fā)面試題150道題)” 的相關(guān)文章

工行軟件開發(fā)中心(工行軟件開發(fā)中心怎么樣)

工行軟件開發(fā)中心(工行軟件開發(fā)中心怎么樣)

今天給各位分享工行軟件開發(fā)中心的知識(shí),其中也會(huì)對工行軟件開發(fā)中心怎么樣進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、中國工商銀行總行軟件開發(fā)中心屬于什么級別單位 2、杭州工商銀行軟件開發(fā)中心外包怎么樣 3、工商銀行軟件開發(fā)中心校招容易嗎 4、珠...

如何自己做一個(gè)軟件(想做一個(gè)軟件怎么做)

如何自己做一個(gè)軟件(想做一個(gè)軟件怎么做)

今天給各位分享如何自己做一個(gè)軟件的知識(shí),其中也會(huì)對想做一個(gè)軟件怎么做進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、如何自己制作一個(gè)app? 2、如何自己編程序做軟件? 3、如何制作開發(fā)一個(gè)軟件? 如何自己制作一個(gè)app? app怎么制作詳情如下:...

手機(jī)直播軟件開發(fā)(手機(jī)直播軟件開發(fā)價(jià)格)

手機(jī)直播軟件開發(fā)(手機(jī)直播軟件開發(fā)價(jià)格)

今天給各位分享手機(jī)直播軟件開發(fā)的知識(shí),其中也會(huì)對手機(jī)直播軟件開發(fā)價(jià)格進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、直播App軟件開發(fā)功能模塊有哪些? 2、直播App軟件開發(fā)功能模塊有哪些? 3、想做直播軟件開發(fā),如何進(jìn)行直播平臺(tái)搭建?。?直播Ap...

手機(jī)搬磚游戲賺錢的手游2022(2021能搬磚賺人民幣的手游)

手機(jī)搬磚游戲賺錢的手游2022(2021能搬磚賺人民幣的手游)

本篇文章給大家談?wù)勈謾C(jī)搬磚游戲賺錢的手游2022,以及2021能搬磚賺人民幣的手游對應(yīng)的知識(shí)點(diǎn),希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、2022年4月14日最靠譜良心手游賺現(xiàn)金版有那些 2、賺錢手游排行榜2022 3、適合一臺(tái)手機(jī)搬磚的手游 2022年4月14日最靠譜...

網(wǎng)頁源碼獲取什么意思(網(wǎng)站源碼是什么東西)

網(wǎng)頁源碼獲取什么意思(網(wǎng)站源碼是什么東西)

本篇文章給大家談?wù)劸W(wǎng)頁源碼獲取什么意思,以及網(wǎng)站源碼是什么東西對應(yīng)的知識(shí)點(diǎn),希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、網(wǎng)頁里源碼是什么 2、什么是網(wǎng)頁源代碼? 3、網(wǎng)頁制作源代碼是什么意思? 4、網(wǎng)頁源代碼指什么 5、網(wǎng)站的源代碼是什么意思? 6、網(wǎng)頁源代碼是...

手游交易平臺(tái)哪個(gè)好5173(手游交易平臺(tái)哪個(gè)好2022)

手游交易平臺(tái)哪個(gè)好5173(手游交易平臺(tái)哪個(gè)好2022)

本篇文章給大家談?wù)勈钟谓灰灼脚_(tái)哪個(gè)好5173,以及手游交易平臺(tái)哪個(gè)好2022對應(yīng)的知識(shí)點(diǎn),希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、游戲賬號(hào)在哪個(gè)網(wǎng)站交易比較好? 2、正規(guī)靠譜的游戲賬號(hào)交易平臺(tái)有哪些? 3、賬號(hào)交易平臺(tái)哪個(gè)好? 4、十大手游交易平臺(tái)排行榜 游戲賬號(hào)...