笑寒天下
Web前端主要是利用(X)HTML/CSS/JavaScript/DOM/Flash等各種Web技術(shù)進(jìn)行產(chǎn)品的界面開(kāi)發(fā),1、html結(jié)構(gòu)
;2、CSS樣式:盒子模型,float,定位;3、javascript里的 常用代碼,運(yùn)算符;表達(dá)式 ;語(yǔ)句 ;函數(shù) ;對(duì)象 ;事件;變量;4、dom,bom模型,要理解“樹(shù)根,枝,葉”的概念;5、flash的基本用法;Web前端工程師比網(wǎng)頁(yè)設(shè)計(jì)師知道更多,主要制作出有用戶體驗(yàn)的網(wǎng)站。這之上只是知識(shí)點(diǎn),能考的很多,櫻桃啃丸子:)
從以下五個(gè)方面做,可以輕松面對(duì)前端面試:一、基本知識(shí)DOM結(jié)構(gòu)——兩個(gè)節(jié)點(diǎn)之間可能存在哪些關(guān)系以及如何在節(jié)點(diǎn)之間任意移動(dòng)。DOM操作——怎樣添加、移除、移動(dòng)、復(fù)制、創(chuàng)建和查找節(jié)點(diǎn)。事件——怎樣使用事件以及IE和DOM事件模型之間存在哪些主要差別。XMLHttpRequest——這是什么、怎樣完整地執(zhí)行一次GET請(qǐng)求、怎樣檢測(cè)錯(cuò)誤。嚴(yán)格模式與混雜模式——如何觸發(fā)這兩種模式,區(qū)分它們有何意義。盒模型——外邊距、內(nèi)邊距和邊框之間的關(guān)系,IE8以下版本的瀏覽器中的盒模型有什么不同。塊級(jí)元素與行內(nèi)元素——怎么用CSS控制它們、它們?cè)鯓佑绊懼車(chē)脑匾约澳阌X(jué)得應(yīng)該如何定義它們的樣式。浮動(dòng)元素——怎么使用它們、它們有什么問(wèn)題以及怎么解決這些問(wèn)題。HTML與XHTML——二者有什么區(qū)別,你覺(jué)得應(yīng)該使用哪一個(gè)并說(shuō)出理由。JSON——它是什么、為什么應(yīng)該使用它、到底該怎么使用它,說(shuō)出實(shí)現(xiàn)細(xì)節(jié)來(lái)。二、少量提問(wèn)現(xiàn)在有一個(gè)正顯示著Yahoo!股票價(jià)格的頁(yè)面。頁(yè)面上有一個(gè)按鈕,你可以單擊它來(lái)刷新價(jià)格,但不會(huì)重新加載頁(yè)面。請(qǐng)你描述一下實(shí)現(xiàn)這個(gè)功能的過(guò)程,假設(shè)服務(wù)器會(huì)負(fù)責(zé)準(zhǔn)備好正確的股票價(jià)格數(shù)據(jù)。這個(gè)問(wèn)題牽扯到一組我想要考察的基本知識(shí)點(diǎn):DOM結(jié)構(gòu)、DOM操作、事件處理、XHR和JSON。如果我要求你對(duì)換一種處理股票價(jià)格的方式,或者 讓你在頁(yè)面中顯示其他信息,就可以把更多的知識(shí)點(diǎn)包括進(jìn)來(lái)。對(duì)于經(jīng)驗(yàn)比較豐富應(yīng)聘者,我也可以自如地?cái)U(kuò)展要考察的知識(shí)范圍,最簡(jiǎn)單像JOSN與XML的區(qū)別、安全問(wèn)題、容量問(wèn)題等等。我還希望應(yīng)聘者給出的任何解決方案中都不要使用庫(kù)。我想看到最原生態(tài)的代碼,你就當(dāng)頁(yè)面中沒(méi)有包含任何庫(kù)。你說(shuō)你對(duì)哪個(gè)庫(kù)了解多少多少,但我不能把關(guān)于庫(kù)的知識(shí)作為評(píng)判能力的因素,因?yàn)閹?kù)是會(huì)隨時(shí)間變化的。三、解決問(wèn)題做為一名前端工程師,最值得高興的事莫過(guò)于解決同一個(gè)問(wèn)題會(huì)有很多種不同的方法,而你要做的就是找出最合適的方法來(lái)。我在提問(wèn)的時(shí)候,經(jīng)常會(huì)在應(yīng)聘者解釋完一種方法后問(wèn)他們還有沒(méi)有第二種方法。此時(shí)我會(huì)跟他們說(shuō),假設(shè)你的這個(gè)方法由于種種原因被否決了,那么你還能不能給出另一種方法。這樣做可以達(dá)到 兩個(gè)目的。首先,可以測(cè)試出他們是否在毫無(wú)意義地復(fù)述書(shū)本中的東西。不能不承認(rèn),某些人確實(shí)有過(guò)目不忘的天賦,聽(tīng)他們?cè)谀抢锾咸喜唤^地講,你會(huì)覺(jué)得他們什么都明白??墒?,只要一跟這些人談到怎么查找方案無(wú)效的原因,以及能否拿出一個(gè)新方案來(lái),他們往往就傻眼了。這時(shí)候,如果我聽(tīng)到“我不明白這個(gè)方案為什么不夠 好”之類(lèi)的反問(wèn),心里立刻就明白我的問(wèn)題已經(jīng)超出了他們的能力范圍,而他們只是想拿自己死記硬背的結(jié)論來(lái)蒙混過(guò)關(guān)。其次,可以測(cè)試出他們已經(jīng)掌握的(還是那句話,“想都不用想”)瀏覽器技術(shù)知識(shí)。如果他們對(duì)瀏覽器平臺(tái)的核心知識(shí)有較好的理解,想出解決同一問(wèn)題的不同方案根本沒(méi)有那么難。注意:所有問(wèn)題都與瀏覽器技術(shù)相關(guān)。我不相信出幾道抽象的邏輯題,就能夠考出某人解決Web技術(shù)問(wèn)題的能力。在我看來(lái),這無(wú)異于讓素描大師畫(huà)肖像,沒(méi)有意義,也得不到任何有價(jià)值的信息。四、有激情要成為一名優(yōu)秀的前端工程師,最重要的莫過(guò)于對(duì)自己做的事要有激情。我們技能都不是從學(xué)校中或者從研討會(huì)上學(xué)來(lái)的,因此前端工程師必須具備自學(xué)能力。瀏覽器技術(shù)的變化可謂日新月異,所以也只有不斷提升自己的技能才做得到與時(shí)俱進(jìn)。我雖然不能強(qiáng)迫誰(shuí)必須多看博客、不斷學(xué)習(xí),但想應(yīng)聘前端工程師的人恐怕還是必須這么做的。你怎么知道誰(shuí)對(duì)這種工作有沒(méi)有激情?實(shí)際上非常簡(jiǎn)單。我只問(wèn)一個(gè)簡(jiǎn)單的問(wèn)題:“目前你對(duì)什么Web技術(shù)最感興趣?”這個(gè)問(wèn)題永遠(yuǎn)不會(huì)過(guò)期,而且也幾乎不可能出錯(cuò)……除非你答不上來(lái)。就眼下來(lái)說(shuō),我希望你對(duì)這個(gè)問(wèn)題給出的技術(shù)中包括WebSocket、HTML、WebGL、客戶端數(shù)據(jù)庫(kù),等等。只有 對(duì)Web開(kāi)發(fā)充滿激情的人,才會(huì)堅(jiān)持不懈地學(xué)習(xí)新知識(shí)、掌握新技能;五、最后一點(diǎn)計(jì)算機(jī)科學(xué)或者Web設(shè)計(jì)方面的知識(shí)當(dāng)然也有用,但那都是基本知識(shí)之外的東西。只要基本知識(shí)在那兒了,一切就都有了基礎(chǔ),想擴(kuò)充知識(shí)面也不難。可是,如果等到正式上班以后,還得從頭學(xué)習(xí)基本技能,那種難度是不可同日而語(yǔ)的。
雜草公主/yl
今天小編要跟大家分享的文章是關(guān)于參加Web前端面試的常見(jiàn)面試題匯總。準(zhǔn)備參加Web前端面試的小伙伴們來(lái)和小編一起看一看吧,希望本篇文章能夠?qū)Υ蠹矣兴鶐椭?.漸進(jìn)增強(qiáng)與優(yōu)雅降級(jí)漸進(jìn)增強(qiáng)并不是一種技術(shù),而是一種設(shè)計(jì)思想。各個(gè)瀏覽器的渲染能力各不相同,要做一個(gè)每個(gè)人都能看到的網(wǎng)頁(yè)、感受到的體驗(yàn)都一致的網(wǎng)站幾乎不可能。但還是得網(wǎng)站的可訪問(wèn)性,保證用戶在任何環(huán)境下都能正常訪問(wèn)網(wǎng)頁(yè)得核心內(nèi)容或能使用基本功能(避免網(wǎng)頁(yè)打不開(kāi)、排版錯(cuò)誤等),并為他們提供當(dāng)前條件下最好的體驗(yàn),這就是漸進(jìn)增強(qiáng)得核心思想。優(yōu)雅降級(jí)也是一種設(shè)計(jì)思想,為了保證在高版本瀏覽器中提供最好的體驗(yàn),碰到低版本瀏覽器再降級(jí)進(jìn)行兼容處理,使其能正常瀏覽。這兩種思想的區(qū)別在于:1.漸進(jìn)增強(qiáng)是向上兼容,優(yōu)雅降級(jí)是向下兼容;2.漸進(jìn)增強(qiáng)是從簡(jiǎn)單到復(fù)雜,優(yōu)雅降級(jí)是從復(fù)雜到簡(jiǎn)單;3.漸進(jìn)增強(qiáng)關(guān)注的是內(nèi)容(保證核心內(nèi)容),優(yōu)雅降級(jí)關(guān)注的是瀏覽體驗(yàn)(為了兼容低版本瀏覽器)作用DTD(DocumentTypeDefinition,文檔類(lèi)型定義)是一系列的語(yǔ)法規(guī)則,用來(lái)定義XML或(X)HTML的文檔類(lèi)型。瀏覽器會(huì)使用它來(lái)判斷文檔類(lèi)型,決定何種協(xié)議來(lái)解析,以及切換瀏覽模式。DOCTYPE是用來(lái)聲明文檔類(lèi)型和DTD規(guī)范的,一個(gè)主要的用途便是文件的合法性驗(yàn)證。如果文檔代碼不合法,那么瀏覽器解析時(shí)便會(huì)出現(xiàn)一些差錯(cuò)。HTML5的文檔類(lèi)型聲明:(嚴(yán)格模式)的DTD包含所有HTML元素和屬性,但不包括展示性的和棄用的元素(如font),它的文檔類(lèi)型聲明:"">標(biāo)準(zhǔn)模式與怪異模式怪異模式(QuirksMode)用于模擬舊瀏覽器的行為。早期的網(wǎng)站并不會(huì)遵循完整的規(guī)范,隨著瀏覽器支持越來(lái)越多的規(guī)范,在那些舊的瀏覽器中開(kāi)發(fā)的頁(yè)面在顯示時(shí)會(huì)被破壞。為了向后兼容,瀏覽器發(fā)明了怪異模式,一行錯(cuò)誤或無(wú)效的DOCTYPE都會(huì)觸發(fā)怪異模式。瀏覽器使用文件開(kāi)頭的DOCTYPE來(lái)決定用怪異模式處理或標(biāo)準(zhǔn)模式處理。DOCTYPE可以確保不同瀏覽器以相同的方式解析文檔,以及執(zhí)行相同的渲染模式。怪異模式與標(biāo)準(zhǔn)模式的主要區(qū)別:1.怪異模式的寬度和高度會(huì)包含padding和border。標(biāo)準(zhǔn)模式不包含,標(biāo)準(zhǔn)模式下可以通過(guò)設(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.語(yǔ)義化HTML5中的語(yǔ)義化就是讓元素、屬性或?qū)傩灾涤泻x,更準(zhǔn)確地標(biāo)記特定類(lèi)型的內(nèi)容。對(duì)元素語(yǔ)義化的目的是為了讓元素的語(yǔ)義和呈現(xiàn)分離,元素只負(fù)責(zé)文檔內(nèi)容的結(jié)構(gòu)與含義,而CSS樣式控制內(nèi)容的呈現(xiàn),像元素,沒(méi)有語(yǔ)義但卻能將字體變粗,這類(lèi)元素違背了語(yǔ)義化的目的,將會(huì)被廢棄。優(yōu)點(diǎn)·使得HTML文檔結(jié)構(gòu)清晰、布局合理、主體突出、可讀性更強(qiáng)?!び欣赟EO,搜索引擎根據(jù)標(biāo)簽來(lái)確定上下文和各個(gè)關(guān)鍵字的權(quán)重?!し奖闫渌O(shè)備解析,如盲人閱讀器根據(jù)語(yǔ)義渲染網(wǎng)頁(yè)?!び欣陂_(kāi)發(fā)和維護(hù),語(yǔ)義化更具可讀性,代碼更好維護(hù),與CSS3關(guān)系更和諧。語(yǔ)義化標(biāo)簽·定義文檔的頁(yè)眉區(qū)域,應(yīng)作為介紹內(nèi)容或者導(dǎo)航鏈接欄的容器;·footer內(nèi)容的頁(yè)腳,通常包含該章節(jié)作者、版權(quán)數(shù)據(jù)或者與文檔相關(guān)的鏈接等信息;·article文檔、頁(yè)面、應(yīng)用或網(wǎng)站中的獨(dú)立結(jié)構(gòu),是可獨(dú)立分配的、可復(fù)用的結(jié)構(gòu),如在發(fā)布中,它可能是論壇帖子、雜志或新聞文章、博客、用戶提交的評(píng)論、交互式組件,或者其他獨(dú)立的內(nèi)容項(xiàng)目;·nav描述一個(gè)含有多個(gè)超鏈接的區(qū)域,該區(qū)域包含跳轉(zhuǎn)到其他頁(yè)面或頁(yè)面內(nèi)部其他部分的鏈接列表;·section表示文檔中的一個(gè)區(qū)域(或節(jié)),比如,內(nèi)容中的一個(gè)專題組;·main定義文檔的主要內(nèi)容,該內(nèi)容在文檔中應(yīng)當(dāng)是獨(dú)一無(wú)二的,不包含任何在文檔中重復(fù)的內(nèi)容,比如側(cè)邊欄,導(dǎo)航欄鏈接,版權(quán)信息,網(wǎng)站logo,搜索框(搜索框作為文檔的主要內(nèi)容);·aside表示一個(gè)和其余頁(yè)面內(nèi)容幾乎無(wú)關(guān)的部分,被認(rèn)為是獨(dú)立于該內(nèi)容的一部分且可以被單獨(dú)的拆分出來(lái)而不會(huì)影響整體。通常表現(xiàn)為側(cè)邊欄或嵌入內(nèi)容。4.超鏈接偽類(lèi):link、:visited、:active和:hover的聲明順序是怎樣的?:link表示未訪問(wèn)的鏈接狀態(tài);:visited表示已訪問(wèn)狀態(tài);:active表示激活狀態(tài)(鼠標(biāo)按下);:hover表示懸停狀態(tài)。推薦順序是LVHA,即:link:visited:hover:active。理由如下:·當(dāng)鼠標(biāo)懸停在未訪問(wèn)的鏈接上時(shí),:link和:hover都會(huì)命中,如果:hover在:link之前聲明,那么(:hover)就會(huì)被覆蓋;·當(dāng)鼠標(biāo)懸停在已訪問(wèn)的連接上時(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兩者的順序無(wú)所謂,互不影響。常見(jiàn)的長(zhǎng)度單位CSS中除了px長(zhǎng)度單位之外,還有下面幾個(gè)長(zhǎng)度單位:·pc六分之一英寸,1pc=12pt=1/6*1in=16px;·pt一磅,72分之一英寸。1pt=1/12_1pc=1/72_1in≈;·in一英寸,1in=;·ex在含有“X”字母的字體中,它是該字體的小寫(xiě)字母的高度。對(duì)于很多字體來(lái)說(shuō),1ex≈;·em1em等于父級(jí)元素的字體大小,2em就是父級(jí)元素字體大小的二倍;·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兩種中的最大值;·%相對(duì)于父級(jí)元素的大小來(lái)確定;參考:CSS[1]CSSpercentage[2]6.事件對(duì)象冒泡與捕獲事件冒泡與捕獲是事件處理的兩種機(jī)制,主要描述當(dāng)在一個(gè)元素上有兩個(gè)相同類(lèi)型的事件處理器被激活會(huì)發(fā)生什么。在點(diǎn)擊子元素時(shí),瀏覽器運(yùn)行了兩種不同的階段:捕獲階段和冒泡階段。捕獲階段的行為:·瀏覽器檢查元素的最外層祖先,是否在捕獲階段中注冊(cè)了一個(gè)onclick事件處理程序,如果是,則運(yùn)行它;·然后,它移動(dòng)到中單擊元素的下一個(gè)祖先元素,并執(zhí)行相同的操作,然后是單擊元素再下一個(gè)祖先元素,依此類(lèi)推,直到到達(dá)實(shí)際點(diǎn)擊的元素;而冒泡與捕獲恰恰相反:·瀏覽器檢查實(shí)際點(diǎn)擊的元素是否在冒泡階段中注冊(cè)了一個(gè)onclick事件處理程序,如果是,則運(yùn)行它;·然后它移動(dòng)到下一個(gè)直接的祖先元素,并做同樣的事情,然后是下一個(gè),等等,直到它到達(dá)元素;而現(xiàn)代瀏覽器在默認(rèn)情況下,所有事件處理程序都在冒泡階段進(jìn)行注冊(cè)。因此上面代碼在點(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ā)該事件,與之對(duì)應(yīng)的是mouseover事件,但會(huì)冒泡;·mouseleave鼠標(biāo)離開(kāi)元素時(shí)觸發(fā),與之對(duì)應(yīng)的是mouseout,但會(huì)冒泡;事件冒泡可以讓我們利用事件委托,尤其是處理大量子元素時(shí),如果給每個(gè)子元素都綁定事件,這是不優(yōu)雅的,可以將事件綁定到父元素上,并讓子節(jié)點(diǎn)上發(fā)生的事件冒泡到父節(jié)點(diǎn)上,利用屬性可以獲取到當(dāng)前觸發(fā)事件的子元素。事件對(duì)象中的方法·stopPropagation()阻止事件冒泡,當(dāng)設(shè)置后,點(diǎn)擊該元素時(shí)父元素綁定的事件就不會(huì)再觸發(fā);·preventDefault()阻止默認(rèn)事件的發(fā)生;·stopImmediatePropagation()它用來(lái)阻止監(jiān)聽(tīng)同一事件的其他事件監(jiān)聽(tīng)器被調(diào)用以及阻止事件冒泡,比如給同一個(gè)div元素綁定多個(gè)click事件(使用addEventListener方法可以注冊(cè)多個(gè)),當(dāng)在第二個(gè)事件函數(shù)中調(diào)用stopImmediatePropagation方法時(shí),點(diǎn)擊div元素時(shí),后面注冊(cè)的click將不會(huì)被觸發(fā),而且還會(huì)阻止事件冒泡;比如下面的例子,給p綁定多個(gè)click事件,在第二個(gè)事件函數(shù)中調(diào)用stopImmediatePropagation,第三個(gè)click事件就不會(huì)觸發(fā),因?yàn)橐沧柚沽嗣芭荩虼烁冈氐腸lick事件也不會(huì)觸發(fā)。paragraph
("div").addEventListener("click",(event)=>{
alert("我是div元素,我是p元素的上層元素");
//p元素的click事件沒(méi)有向上冒泡,該函數(shù)不會(huì)被執(zhí)行
},false);
constp=('p')
("click",(event)=>{
alert("我是p元素上被綁定的第一個(gè)監(jiān)聽(tīng)函數(shù)");
},false);
("click",(event)=>{
alert("我是p元素上被綁定的第二個(gè)監(jiān)聽(tīng)函數(shù)");
();
//執(zhí)行stopImmediatePropagation方法,阻止click事件冒泡,并且阻止p元素上綁定的其他click
事件的事件監(jiān)聽(tīng)函數(shù)的執(zhí)行.
},false);
("click",(event)=>{
alert("我是p元素上被綁定的第三個(gè)監(jiān)聽(tīng)函數(shù)");
//該監(jiān)聽(tīng)函數(shù)排在上個(gè)函數(shù)后面,該函數(shù)不會(huì)被執(zhí)行
},false);
“在IE瀏覽器中,使用也可以取消事件冒泡;使用也能阻止默認(rèn)事件的發(fā)生。target與currentTargettarget屬性指向的是事件目標(biāo),而currentTarget屬性指向的是正在處理當(dāng)前事件的對(duì)象,它總是指向事件綁定的元素。而target指向的可能不是定義時(shí)的事件目標(biāo)。例如:('click',(e)=>{();},false);可能指向div元素,也可能指向它的子元素。而總是指向div元素。以上就是小編今天為大家分享的關(guān)于參加Web前端面試的常見(jiàn)面試題匯總的文章,希望本篇文章能夠?qū)φ郎?zhǔn)備參加前端面試的小伙伴們有所幫助,想要了解更多Web前端知識(shí)記得關(guān)注北大青鳥(niǎo)Web前端培訓(xùn)官網(wǎng),最后祝愿小伙伴們工作順利,成為一名優(yōu)秀的Web前端工程師。參考資料[1]CSSlength:#/zh-CN/docs/Web/CSS/length[2]CSSpercentage:#/zh-CN/docs/Web/CSS/percentage
優(yōu)質(zhì)工程師考試問(wèn)答知識(shí)庫(kù)