js工程師面試題及答案
互聯(lián)網(wǎng)行業(yè)的技術(shù)崗位java工程師,是很多的工作夢(mèng)想,然而卻在面試這一關(guān)無(wú)法達到要求,下面小編帶來(lái)了js工程師面試題及答案,供大家參考。
HTML+CSS
1.對WEB標準以及W3C的理解與認識標簽閉合、標簽小寫(xiě)、不亂嵌套、提高搜索機器人搜索幾率、使用外 鏈css和js腳本、結構行為表現的分離、文件下載與頁(yè)面速度更快、內容能被更多的用戶(hù)所訪(fǎng)問(wèn)、內容能被更廣泛的設備所訪(fǎng)問(wèn)、更少的代碼和組件,容易維 護、改版方便,不需要變動(dòng)頁(yè)面內容、提供打印版本而不需要復制內容、提高網(wǎng)站易用性;
2.xhtml和html有什么區別
HTML是一種基本的WEB網(wǎng)頁(yè)設計語(yǔ)言,XHTML是一個(gè)基于XML的置標語(yǔ)言最主要的不同:
XHTML 元素必須被正確地嵌套。
XHTML 元素必須被關(guān)閉。標簽名必須用小寫(xiě)字母。
XHTML 文檔必須擁有根元素。
3.Doctype? 嚴格模式與混雜模式-如何觸發(fā)這兩種模式,區分它們有何意義? 用于聲明文檔使用那種規范(html/Xhtml)一般為 嚴格 過(guò)度 基于框架的html文檔加入XMl聲明可觸發(fā),解析方式更改為IE5.5 擁有IE5.5的bug
4.行內元素有哪些?塊級元素有哪些?CSS的盒模型?塊級元素:div p h1 h2 h3 h4 form ul行內元素: a b br i span input select Css盒模型:內容,border ,margin,padding
5.CSS引入的方式有哪些? link和@import的區別是?內聯(lián) 內嵌 外鏈 導入區別 :同時(shí)加載前者無(wú)兼容性,后者CSS2.1以下瀏覽器不支持 Link 支持使用javascript改變樣式,后者不可。
6.CSS選擇符有哪些?哪些屬性可以繼承?優(yōu)先級算法如何計算?內聯(lián)和important哪個(gè)優(yōu)先級高?標簽選擇符 類(lèi)選擇符 id選擇符繼承不如指定 Id>class>標簽選擇后者優(yōu)先級高
7.前端頁(yè)面有哪三層構成,分別是什么?作用是什么?結構層 Html 表示層 CSS 行為層 js
8.css的基本語(yǔ)句構成是?選擇器{屬性1:值1;屬性2:值2;……}
9.你做的頁(yè)面在哪些流覽器測試過(guò)?這些瀏覽器的內核分別是什么?
Ie(Ie內核) 火狐(Gecko) 谷歌(webkit) opear(Presto)
10.寫(xiě)出幾種IE6 BUG的解決方法
1.雙邊距BUG float引起的 使用display
2.3像素問(wèn)題 使用float引起的 使用dislpay:inline -3px
3.超鏈接hover 點(diǎn)擊后失效 使用正確的書(shū)寫(xiě)順序 link visited hover active
4.Ie z-index問(wèn)題 給父級添加position:relative
5.Png 透明 使用js代碼 改
6.Min-height 最小高度 !Important 解決’
7.select 在ie6下遮蓋 使用iframe嵌套
8.為什么沒(méi)有辦法定義1px左右的寬度容器(IE6默認的行高造成的,使用over:hidden,zoom:0.08 line-height:1px)
11.標簽上title與alt屬性的區別是什么?
Alt 當圖片不顯示是 用文字代表。
Title 為該屬性提供信息
12.描述css reset的作用和用途。
Reset重置瀏覽器的css默認屬性 瀏覽器的品種不同,樣式不同,然后重置,讓他們統一
13.解釋css sprites,如何使用。
Css 精靈 把一堆小的圖片整合到一張大的圖片上,減輕服務(wù)器對圖片的請求數量
14.瀏覽器標準模式和怪異模式之間的區別是什么?盒子模型 渲染模式的不同使用 window.top.document.compatMode 可顯示為什么模式
15.你如何對網(wǎng)站的文件和資源進(jìn)行優(yōu)化?期待的解決方案包括:文件合并文件最小化/文件壓縮使用CDN托管緩存的使用
16.什么是語(yǔ)義化的HTML?直觀(guān)的認識標簽 對于搜索引擎的抓取有好處
17.清除浮動(dòng)的幾種方式,各自的優(yōu)缺點(diǎn)
1.使用空標簽清除浮動(dòng) clear:both(理論上能清楚任何標簽,,,增加無(wú)意義的標簽)
2.使用overflow:auto(空標簽元素清除浮動(dòng)而不得不增加無(wú)意代碼的弊端,,使用zoom:1用于兼容IE)
3.是用afert偽元素清除浮動(dòng)(用于非IE瀏覽器)
Javascript
1.javascript的typeof返回哪些數據類(lèi)型
Object number function boolean underfind
2.例舉3種強制類(lèi)型轉換和2種隱式類(lèi)型轉換?強制(parseInt,parseFloat,number)隱式(== – ===)
3.split() join() 的區別前者是切割成數組的形式,后者是將數組轉換成字符串
4.數組方法pop() push() unshift() shift()
Push()尾部添加 pop()尾部刪除
Unshift()頭部添加 shift()頭部刪除
5.事件綁定和普通事件有什么區別
6.IE和DOM事件流的區別
1.執行順序不一樣、
2.參數不一樣
3.事件加不加on
4.this指向問(wèn)題
7.IE和標準下有哪些兼容性的'寫(xiě)法
Var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
Var target = ev.srcElement||ev.target
8.ajax請求的時(shí)候get 和post方式的區別一個(gè)在url后面 一個(gè)放在虛擬載體里面有大小限制安全問(wèn)題應用不同 一個(gè)是論壇等只需要請求的,一個(gè)是類(lèi)似修改密碼的
9.call和apply的區別
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)
10.ajax請求時(shí),如何解釋json數據使用eval parse 鑒于安全性考慮 使用parse更靠譜
11.b繼承a的方法
12.寫(xiě)一個(gè)獲取非行間樣式的函數
function getStyle(obj,attr,value)
{
if(!value)
{
if(obj.currentStyle)
{
return obj.currentStyle(attr)
}
else
{
obj.getComputedStyle(attr,false)
}
}
else
{
obj.style[attr]=value
}
}
13.事件委托是什么讓利用事件冒泡的原理,讓自己的所觸發(fā)的事件,讓他的父元素代替執行!
http://www.webasily.com/?p=78 例子可見(jiàn)此鏈接
14.閉包是什么,有什么特性,對頁(yè)面有什么影響閉包就是能夠讀取其他函數內部變量的函數。
http://blog.csdn.net/gaoshanwudi/article/details/7355794 此鏈接可查看(問(wèn)這個(gè)問(wèn)題的不是一個(gè)公司)
15.如何阻止事件冒泡和默認事件
canceBubble return false
16.添加 刪除 替換 插入到某個(gè)接點(diǎn)的方法
obj.appendChidl()
obj.innersetBefore
obj.replaceChild
obj.removeChild
17.解釋jsonp的原理,以及為什么不是真正的ajax動(dòng)態(tài)創(chuàng )建script標簽,回調函數
Ajax是頁(yè)面無(wú)刷新請求數據操作
18.javascript的本地對象,內置對象和宿主對象本地對象為array obj regexp等可以new實(shí)例化內置對象為gload Math 等不可以實(shí)例化的宿主為瀏覽器自帶的document,window 等
19.document load 和document ready的區別
Document.onload 是在結構和樣式加載完才執行js
Document.ready原生種沒(méi)有這個(gè)方法,jquery中有 $().ready(function)
20.”==”和“===”的不同前者會(huì )自動(dòng)轉換類(lèi)型后者不會(huì )
21.javascript的同源策略一段腳本只能讀取來(lái)自于同一來(lái)源的窗口和文檔的屬性,這里的同一來(lái)源指的是主機名、協(xié)議和端口號的組合
22.編寫(xiě)一個(gè)數組去重的方法
function oSort(arr)
{
var result ={};
var newArr=[];
for(var i=0;i
{
if(!result[arr])
{
newArr.push(arr)
result[arr]=1
}
}
return newArr
}
重申一下,上述這些知識點(diǎn)都應該是你應該“想都不用想”的東西。我一開(kāi)始問(wèn)的所有問(wèn)題都是想摸清你對所有這些領(lǐng)域知識的掌握程度。雖然上面列出的這些知識點(diǎn)并沒(méi)有面面俱到,但我覺(jué)得你至少應該掌握這些,才有可能跟我坐到一間辦公室里來(lái)。
少量提問(wèn)
我非常贊同面試者問(wèn)的問(wèn)題越少越好。反復問(wèn)應聘者各種問(wèn)題既不公平,也很無(wú)聊。我在任何一次面試中,通常只問(wèn)三個(gè)大問(wèn)題,但每個(gè)問(wèn)題又會(huì )涉及我所能想到的多個(gè)方面;卮鹈總(gè)大問(wèn)題一般要經(jīng)過(guò)幾個(gè)步驟,這樣我就可以在每個(gè)步驟中穿插著(zhù)問(wèn)一些小問(wèn)題。比如說(shuō):
現在有一個(gè)正顯示著(zhù)Yahoo!股票價(jià)格的頁(yè)面。頁(yè)面上有一個(gè)按鈕,你可以單擊它來(lái)刷新價(jià)格,但不會(huì )重新加載頁(yè)面。請你描述一下實(shí)現這個(gè)功能的過(guò)程,假設服務(wù)器會(huì )負責準備好正確的股票價(jià)格數據。
這個(gè)問(wèn)題牽扯到一組我想要考察的基本知識點(diǎn):DOM結構、DOM操作、事件處理、XHR和JSON。如果我要求你對換一種處理股票價(jià)格的方式,或者讓你在頁(yè)面中顯示其他信息,就可以把更多的知識點(diǎn)包括進(jìn)來(lái)。對于經(jīng)驗比較豐富應聘者,我也可以自如地擴展要考察的知識范圍,最簡(jiǎn)單像JOSN與XML的區別、安全問(wèn)題、容量問(wèn)題,等等。
我還希望應聘者給出的任何解決方案中都不要使用庫。我想看到最原生態(tài)的代碼,你就當頁(yè)面中沒(méi)有包含任何庫。你說(shuō)你對哪個(gè)庫了解多少多少,但我不能把關(guān)于庫的知識作為評判能力的因素,因為庫是會(huì )隨時(shí)間變化的。我需要的是真正理解庫背后的機制,特別是能夠徒手寫(xiě)出一個(gè)自己的庫的人。
解決問(wèn)題
做為一名前端工程師,最值得高興的事莫過(guò)于解決同一個(gè)問(wèn)題會(huì )有很多種不同的方法,而你要做的就是找出最合適的方法來(lái)。我在提問(wèn)的時(shí)候,經(jīng)常會(huì )在應聘者解釋完一種方法后問(wèn)他們還有沒(méi)有第二種方法。此時(shí)我會(huì )跟他們說(shuō),假設你的這個(gè)方法由于種種原因被否決了,那么你還能不能給出另一種方法。這樣做可以達到兩個(gè)目的。
首先,可以測試出他們是否在毫無(wú)意義地復述書(shū)本中的東西。不能不承認,某些人確實(shí)有過(guò)目不忘的天賦,聽(tīng)他們在那里滔滔不絕地講,你會(huì )覺(jué)得他們什么都明白?墒,只要一跟這些人談到怎么查找方案無(wú)效的原因,以及能否拿出一個(gè)新方案來(lái),他們往往就傻眼了。這時(shí)候,如果我聽(tīng)到“我不明白這個(gè)方案為什么不夠好”之類(lèi)的反問(wèn),心里立刻就明白我的問(wèn)題已經(jīng)超出了他們的能力范圍,而他們只是想拿自己死記硬背的結論來(lái)蒙混過(guò)關(guān)。
其次,可以測試出他們已經(jīng)掌握的(還是那句話(huà),“想都不用想”)瀏覽器技術(shù)知識。如果他們對瀏覽器平臺的核心知識有較好的理解,想出解決同一問(wèn)題的不同方案根本沒(méi)有那么難。
對一名前端工程師來(lái)說(shuō),這絕對是最重要的能力。前端工程師在工作中遇到本該如此卻并未如此的難題(說(shuō)你啦,IE6),應該說(shuō)是一件很平常的事。一個(gè)方案無(wú)效就無(wú)計可施的人,做不了前端工程師。
考核應聘者解決問(wèn)題能力的另一層原因,與我的個(gè)人喜好有關(guān)。在搞清楚應聘者知道什么不知道什么之后,我就會(huì )想著(zhù)問(wèn)一個(gè)他們知識領(lǐng)域之外的問(wèn)題。這樣做的目的,就是想看看他們怎樣運用已有的知識解決新問(wèn)題。在解決問(wèn)題的每一步,我也準備了一些提示,以防有人會(huì )卡殼打艮(在我面前15分鐘一言不發(fā),對我評價(jià)這個(gè)人毫無(wú)幫助)。我真正感興趣的,是他們能夠從上一步前進(jìn)到下一步。我希望看到一個(gè)人就在我眼前學(xué)到新知識。
注意:所有問(wèn)題都與瀏覽器技術(shù)相關(guān)。我不相信出幾道抽象的邏輯題,就能夠考出某人解決Web技術(shù)問(wèn)題的能力。在我看來(lái),這無(wú)異于讓素描大師畫(huà)肖像(或者讓劉翔跟博爾特同場(chǎng)競技),沒(méi)有意義,也得不到任何有價(jià)值的信息。
有激情
要成為一名優(yōu)秀的前端工程師,最重要的莫過(guò)于對自己做的事要有激情。我們技能都不是從學(xué)校中或者從研討會(huì )上學(xué)來(lái)的,因此前端工程師必須具備自學(xué)能力。瀏覽器技術(shù)的變化可謂日新月異,所以也只有不斷提升自己的技能才做得到與時(shí)俱進(jìn)。我雖然不能強迫誰(shuí)必須多看博客、不斷學(xué)習,但想應聘前端工程師的人恐怕還是必須這么做的。
你怎么知道誰(shuí)對這種工作有沒(méi)有激情?實(shí)際上非常簡(jiǎn)單。我只問(wèn)一個(gè)簡(jiǎn)單的問(wèn)題:“目前你對什么Web技術(shù)最感興趣?”這個(gè)問(wèn)題永遠不會(huì )過(guò)期,而且也幾乎不可能出錯……除非你答不上來(lái)。就眼下來(lái)說(shuō),我希望你對這個(gè)問(wèn)題給出的技術(shù)中包括WebSocket、HTML、WebGL、客戶(hù)端數據庫,等等。只有對Web開(kāi)發(fā)充滿(mǎn)激情的人,才會(huì )堅持不懈地學(xué)習新知識、掌握新技能;這些人才是我真正想要的。當然,我會(huì )讓他們詳細解釋自己提到的技術(shù),以保證他們不是隨口說(shuō)了幾個(gè)時(shí)髦的新詞匯。
最后一點(diǎn)
計算機科學(xué)或者Web設計方面的知識當然也有用,但那都是基本知識之外的東西。只要基本知識在那兒了,一切就都有了基礎,想擴充知識面也不難?墒,如果等到正式上班以后,還得從頭學(xué)習基本技能,那種難度是不可同日而語(yǔ)的。另外,高級前端工程師與一般工程師相比,肯定需要掌握更多的技能。而面試幾乎沒(méi)有經(jīng)驗大學(xué)畢業(yè)生,同樣也會(huì )有一套完全不同的程序。我在這篇文章里列出來(lái)的都是一些最基本的東西。
對于那些還沒(méi)有多少面試經(jīng)驗的人,我總是喜歡告訴他們,面試完了只要問(wèn)自己一個(gè)問(wèn)題就行:你想以后跟這個(gè)人在一起共事嗎?如果不管為什么,回答是不,那就是不。
面試前端工程師對我來(lái)說(shuō)是一件非常有意思的事,因為面試過(guò)程很大程度上也是自我提升的過(guò)程。無(wú)論大公司還是小公司,之所以在如何招聘到真正有能力的前端工程師方面會(huì )遇到同樣的問(wèn)題,就是因為負責招聘的那些人不知道自己公司需要什么樣的人,結果問(wèn)問(wèn)題時(shí)也問(wèn)不到點(diǎn)子上。經(jīng)過(guò)這幾年在行業(yè)里的摸索,我總結出了自己的一套很有效的面試前端工程的方法。
有的應聘者說(shuō)我不好對付,但留給他們這樣的印象也并非我所愿。我覺(jué)得之所以他們說(shuō)我不好對付,主要是因為我問(wèn)他們問(wèn)題時(shí)問(wèn)得太細了。以前我曾專(zhuān)門(mén)寫(xiě)過(guò)一些東西,告訴應聘者怎么才能通過(guò)我的面試(Surviving an interview with me)以及優(yōu)秀的前面工程師應該具備什么樣的素質(zhì)(What makes a good front end engineer?),而我的面試可以說(shuō)完全是按照那兩篇文章的標準進(jìn)行的。我不會(huì )問(wèn)一些特別偏門(mén)的問(wèn)題,也不認為出幾道邏輯題就能考出人的真實(shí)水平。我唯一的想法就是確定你能否勝任我們要招的這個(gè)職位。為此,我需要簡(jiǎn)單地考察如下幾個(gè)方面。
基本知識
我們生活在互聯(lián)網(wǎng)時(shí)代,你想知道的任何事情幾乎都能在15分鐘內找到相關(guān)信息?墒,能找到信息并不等于你會(huì )使用它。我認為所有前端工程師至少都應該掌握某些基本的知識,才能有效地完成自己的工作。如果一遇到問(wèn)題,就停下工作上網(wǎng)四處搜索解決方案,怎么可能保證按期完成工作呢?聽(tīng)聽(tīng),還有誰(shuí)在說(shuō)“我不知道,但我可以上網(wǎng)搜到!闭堖@些同學(xué)把手舉起來(lái),讓大家認識一下(immediately raises a flag for me.)。下面我列出一些基本的知識點(diǎn),這些都是我認為一名前端工程師(無(wú)論工作年頭長(cháng)短)在沒(méi)有任何外來(lái)幫助的情況應該知道的。
DOM結構——兩個(gè)節點(diǎn)之間可能存在哪些關(guān)系以及如何在節點(diǎn)之間任意移動(dòng)。
DOM操作——怎樣添加、移除、移動(dòng)、復制、創(chuàng )建和查找節點(diǎn)。
事件——怎樣使用事件以及IE和DOM事件模型之間存在哪些主要差別。
XMLHttpRequest——這是什么、怎樣完整地執行一次GET請求、怎樣檢測錯誤。
嚴格模式與混雜模式——如何觸發(fā)這兩種模式,區分它們有何意義。
盒模型——外邊距、內邊距和邊框之間的關(guān)系,IE 8以下版本的瀏覽器中的盒模型有什么不同。
塊級元素與行內元素——怎么用CSS控制它們、它們怎樣影響周?chē)脑匾约澳阌X(jué)得應該如何定義它們的樣式。
浮動(dòng)元素——怎么使用它們、它們有什么問(wèn)題以及怎么解決這些問(wèn)題。
HTML與XHTML——二者有什么區別,你覺(jué)得應該使用哪一個(gè)并說(shuō)出理由。
JSON——它是什么、為什么應該使用它、到底該怎么使用它,說(shuō)出實(shí)現細節來(lái)。
前端開(kāi)發(fā)面試知識點(diǎn)大綱:
HTML&CSS:
對Web標準的理解、瀏覽器內核差異、兼容性、hack、CSS基本功:布局、盒子模型、選擇器優(yōu)先級及使用、HTML5、CSS3、移動(dòng)端適應
JavaScript:
數據類(lèi)型、面向對象、繼承、閉包、插件、作用域、跨域、原型鏈、模塊化、自定義事件、內存泄漏、事件機制、異步裝載回調、模板引擎、Nodejs、JSON、ajax等。
其他:
HTTP、安全、正則、優(yōu)化、重構、響應式、移動(dòng)端、團隊協(xié)作、可維護、SEO、UED、架構、職業(yè)生涯
作為一名前端工程師,無(wú)論工作年頭長(cháng)短都應該必須掌握的知識點(diǎn):
1、DOM結構 —— 兩個(gè)節點(diǎn)之間可能存在哪些關(guān)系以及如何在節點(diǎn)之間任意移動(dòng)。
2、DOM操作 ——如何添加、移除、移動(dòng)、復制、創(chuàng )建和查找節點(diǎn)等。
3、事件 —— 如何使用事件,以及IE和標準DOM事件模型之間存在的差別。
4、XMLHttpRequest —— 這是什么、怎樣完整地執行一次GET請求、怎樣檢測錯誤。
5、嚴格模式與混雜模式 —— 如何觸發(fā)這兩種模式,區分它們有何意義。
6、盒模型 —— 外邊距、內邊距和邊框之間的關(guān)系,及IE8以下版本的瀏覽器中的盒模型
7、塊級元素與行內元素 —— 怎么用CSS控制它們、以及如何合理的使用它們
8、浮動(dòng)元素——怎么使用它們、它們有什么問(wèn)題以及怎么解決這些問(wèn)題。
9、HTML與XHTML——二者有什么區別,你覺(jué)得應該使用哪一個(gè)并說(shuō)出理由。
10、JSON —— 作用、用途、設計結構。
【js工程師面試題及答案】相關(guān)文章:
經(jīng)典面試題及答案分析08-13
醫學(xué)檢驗面試題及答案06-09
最新財務(wù)面試題目及答案05-27
情景模擬面試題及參考答案06-07
競聘上崗面試題及答案05-14
高職單招面試題目及答案03-09
醫患關(guān)系的面試題及參考答案06-14
2021事業(yè)單位面試題目及答案12-16
教師招聘結構化面試題目及答案09-09
壓力面試題及解答技巧08-13