


The latest front-end development interview questions in 2014 (question list, answers, full version)_html/css_WEB-ITnose
Jun 24, 2016 pm 12:06 PM
前言
本文總結(jié)了一些優(yōu)質(zhì)的前端面試題(多數(shù)源于網(wǎng)絡(luò)),初學(xué)者閱后也要用心鉆研其中的原理,重要知識需要系統(tǒng)學(xué)習(xí),透徹學(xué)習(xí),形成自己的知識鏈。萬不可投機(jī)取巧,只求面試過關(guān)是錯誤的!
面試有幾點(diǎn)需注意:(來源程劭非老師 github:@wintercn)
-
面試題目: 根據(jù)你的等級和職位變化,入門級到專家級:范圍↑、深度↑、方向↑。
-
題目類型: 技術(shù)視野、項(xiàng)目細(xì)節(jié)、理論知識題,算法題,開放性題,案例題。
-
進(jìn)行追問: 可以確保問到你開始不懂或面試官開始不懂為止,這樣可以大大延展題目的區(qū)分度和深度,知道你的實(shí)際能力。因?yàn)檫@種關(guān)聯(lián)知識是長時期的學(xué)習(xí),絕對不是臨時記得住的。
-
回答問題再棒,面試官(可能是你的直接領(lǐng)導(dǎo)面試),會考慮我要不要這個人做我的同事?所以態(tài)度很重要。(感覺更像是相親)
-
資深的工程師能把 absolute 和 relative 弄混,這樣的人不要也罷,因?yàn)閳F(tuán)隊(duì)需要的你這個人具有可以依靠的才能(靠譜)。
前端開發(fā)面試知識點(diǎn)大綱:
HTML&CSS: 對Web標(biāo)準(zhǔn)的理解、瀏覽器內(nèi)核差異、兼容性、hack、CSS基本功:布局、盒子模型、選擇器優(yōu)先級及使用、HTML5、CSS3、移動端適應(yīng) JavaScript: 數(shù)據(jù)類型、面向?qū)ο?、繼承、閉包、插件、作用域、跨域、原型鏈、模塊化、自定義事件、內(nèi)存泄漏、事件機(jī)制、異步裝載回調(diào)、模板引擎、Nodejs、JSON、ajax等。其他: HTTP、安全、正則、優(yōu)化、重構(gòu)、響應(yīng)式、移動端、團(tuán)隊(duì)協(xié)作、可維護(hù)、SEO、UED、架構(gòu)、職業(yè)生涯
作為一名前端工程師,無論工作年頭長短都應(yīng)該必須掌握的知識點(diǎn):
此條由 王子墨 發(fā)表在 前端隨筆
1、DOM結(jié)構(gòu) ?? 兩個節(jié)點(diǎn)之間可能存在哪些關(guān)系以及如何在節(jié)點(diǎn)之間任意移動。 2、DOM操作 ??如何添加、移除、移動、復(fù)制、創(chuàng)建和查找節(jié)點(diǎn)等。 3、事件 ?? 如何使用事件,以及IE和標(biāo)準(zhǔn)DOM事件模型之間存在的差別。 4、XMLHttpRequest ?? 這是什么、怎樣完整地執(zhí)行一次GET請求、怎樣檢測錯誤。 5、嚴(yán)格模式與混雜模式 ?? 如何觸發(fā)這兩種模式,區(qū)分它們有何意義。 6、盒模型 ?? 外邊距、內(nèi)邊距和邊框之間的關(guān)系,及IE8以下版本的瀏覽器中的盒模型 7、塊級元素與行內(nèi)元素 ?? 怎么用CSS控制它們、以及如何合理的使用它們 8、浮動元素??怎么使用它們、它們有什么問題以及怎么解決這些問題。 9、HTML與XHTML??二者有什么區(qū)別,你覺得應(yīng)該使用哪一個并說出理由。 10、JSON ?? 作用、用途、設(shè)計(jì)結(jié)構(gòu)。
備注:
根據(jù)自己需要選擇性閱讀,面試題是對理論知識的總結(jié),讓自己學(xué)會應(yīng)該如何表達(dá)。
資料答案不夠正確和全面,歡迎補(bǔ)充答案、題目;最好是現(xiàn)在網(wǎng)上沒有的。
格式不斷修改更新中。
HTML
Doctype 作用? 嚴(yán)格模式與混雜模式如何區(qū)分?它們有何意義?
(1)、<!DOCTYPE> 聲明位于文檔中的最前面,處于 <html> 標(biāo)簽之前。告知瀏覽器的解析器, 用什么文檔類型 規(guī)范來解析這個文檔。 (2)、嚴(yán)格模式的排版和 JS 運(yùn)作模式是 以該瀏覽器支持的最高標(biāo)準(zhǔn)運(yùn)行。(3)、在混雜模式中,頁面以寬松的向后兼容的方式顯示。模擬老式瀏覽器的行為以防止站點(diǎn)無法工作。(4)、DOCTYPE不存在或格式不正確會導(dǎo)致文檔以混雜模式呈現(xiàn)。
行內(nèi)元素有哪些?塊級元素有哪些? 空(void)元素有那些?
(1)CSS規(guī)范規(guī)定,每個元素都有display屬性,確定該元素的類型,每個元素都有默認(rèn)的display值, 比如div默認(rèn)display屬性值為“block”,成為“塊級”元素; span默認(rèn)display屬性值為“inline”,是“行內(nèi)”元素。 (2)行內(nèi)元素有:a b span img input select strong(強(qiáng)調(diào)的語氣) 塊級元素有:div ul ol li dl dt dd h1 h2 h3 h4…p (3)知名的空元素: <br> <hr> <img> <input> <link> <meta> 鮮為人知的是: <area> <base> <col> <command> <embed> <keygen> <param> <source> <track> <wbr>
link 和@import 的區(qū)別是?
(1)link屬于XHTML標(biāo)簽,而@import是CSS提供的;(2)頁面被加載的時,link會同時被加載,而@import引用的CSS會等到頁面被加載完再加載;(3)import只在IE5以上才能識別,而link是XHTML標(biāo)簽,無兼容問題;(4)link方式的樣式的權(quán)重 高于@import的權(quán)重.
瀏覽器的內(nèi)核分別是什么?
* IE瀏覽器的內(nèi)核Trident、Mozilla的Gecko、Chrome的Blink(WebKit的分支)、Opera內(nèi)核原為Presto,現(xiàn)為Blink;
常見兼容性問題?
* png24位的圖片在iE6瀏覽器上出現(xiàn)背景,解決方案是做成PNG8.* 瀏覽器默認(rèn)的margin和padding不同。解決方案是加一個全局的*{margin:0;padding:0;}來統(tǒng)一。* IE6雙邊距bug:塊屬性標(biāo)簽float后,又有橫行的margin情況下,在ie6顯示margin比設(shè)置的大。 浮動ie產(chǎn)生的雙倍距離 #box{ float:left; width:10px; margin:0 0 0 100px;} 這種情況之下IE會產(chǎn)生20px的距離,解決方案是在float的標(biāo)簽樣式控制中加入 ??_display:inline;將其轉(zhuǎn)化為行內(nèi)屬性。(_這個符號只有ie6會識別) 漸進(jìn)識別的方式,從總體中逐漸排除局部。 首先,巧妙的使用“\9”這一標(biāo)記,將IE游覽器從所有情況中分離出來。 接著,再次使用“+”將IE8和IE7、IE6分離開來,這樣IE8已經(jīng)獨(dú)立識別。 css
.bb{ background-color:#f1ee18;/*所有識別*/ .background-color:#00deff\9; /*IE6、7、8識別*/ +background-color:#a200ff;/*IE6、7識別*/ _background-color:#1e0bd1;/*IE6識別*/ }
* IE下,可以使用獲取常規(guī)屬性的方法來獲取自定義屬性, 也可以使用getAttribute()獲取自定義屬性; Firefox下,只能使用getAttribute()獲取自定義屬性. 解決方法:統(tǒng)一通過getAttribute()獲取自定義屬性. * IE下,even對象有x,y屬性,但是沒有pageX,pageY屬性; Firefox下,event對象有pageX,pageY屬性,但是沒有x,y屬性. * 解決方法:(條件注釋)缺點(diǎn)是在IE瀏覽器下可能會增加額外的HTTP請求數(shù)。 * Chrome 中文界面下默認(rèn)會將小于 12px 的文本強(qiáng)制按照 12px 顯示, 可通過加入 CSS 屬性 -webkit-text-size-adjust: none; 解決. 超鏈接訪問過后hover樣式就不出現(xiàn)了 被點(diǎn)擊訪問過的超鏈接樣式不在具有hover和active了解決方法是改變CSS屬性的排列順序: L-V-H-A : a:link {} a:visited {} a:hover {} a:active {}
html5有哪些新特性、移除了那些元素?如何處理HTML5新標(biāo)簽的瀏覽器兼容問題?如何區(qū)分 HTML 和 HTML5?
* HTML5 現(xiàn)在已經(jīng)不是 SGML 的子集,主要是關(guān)于圖像,位置,存儲,多任務(wù)等功能的增加。* 繪畫 canvas 用于媒介回放的 video 和 audio 元素 本地離線存儲 localStorage 長期存儲數(shù)據(jù),瀏覽器關(guān)閉后數(shù)據(jù)不丟失; sessionStorage 的數(shù)據(jù)在瀏覽器關(guān)閉后自動刪除 語意化更好的內(nèi)容元素,比如 article、footer、header、nav、section 表單控件,calendar、date、time、email、url、search 新的技術(shù)webworker, websockt, Geolocation* 移除的元素純表現(xiàn)的元素:basefont,big,center,font, s,strike,tt,u;對可用性產(chǎn)生負(fù)面影響的元素:frame,frameset,noframes;支持HTML5新標(biāo)簽:* IE8/IE7/IE6支持通過document.createElement方法產(chǎn)生的標(biāo)簽, 可以利用這一特性讓這些瀏覽器支持HTML5新標(biāo)簽, 瀏覽器支持新標(biāo)簽后,還需要添加標(biāo)簽?zāi)J(rèn)的樣式:* 當(dāng)然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架 <!--[if lt IE 9]> <script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script> <![endif]--> 如何區(qū)分: DOCTYPE聲明\新增的結(jié)構(gòu)元素\功能元素
語義化的理解?
用正確的標(biāo)簽做正確的事情!html語義化就是讓頁面的內(nèi)容結(jié)構(gòu)化,便于對瀏覽器、搜索引擎解析;在沒有樣式CCS情況下也以一種文檔格式顯示,并且是容易閱讀的。搜索引擎的爬蟲依賴于標(biāo)記來確定上下文和各個關(guān)鍵字的權(quán)重,利于 SEO。使閱讀源代碼的人對網(wǎng)站更容易將網(wǎng)站分塊,便于閱讀維護(hù)理解。
HTML5的離線儲存?
localStorage 長期存儲數(shù)據(jù),瀏覽器關(guān)閉后數(shù)據(jù)不丟失;sessionStorage 數(shù)據(jù)在瀏覽器關(guān)閉后自動刪除。
(寫)描述一段語義的html代碼吧。
(HTML5中新增加的很多標(biāo)簽(如:<article>、<nav>、<header>和<footer>等) 就是基于語義化設(shè)計(jì)原則) < div id="header"> < h1>標(biāo)題< /h1> < h2>專注Web前端技術(shù)< /h2> < /div>
iframe有那些缺點(diǎn)?
*iframe會阻塞主頁面的Onload事件;*iframe和主頁面共享連接池,而瀏覽器對相同域的連接有限制,所以會影響頁面的并行加載。使用iframe之前需要考慮這兩個缺點(diǎn)。如果需要使用iframe,最好是通過javascript動態(tài)給iframe添加src屬性值,這樣可以可以繞開以上兩個問題。
請描述一下 cookies,sessionStorage 和 localStorage 的區(qū)別?
cookie在瀏覽器和服務(wù)器間來回傳遞。 sessionStorage和localStorage不會sessionStorage和localStorage的存儲空間更大;sessionStorage和localStorage有更多豐富易用的接口;sessionStorage和localStorage各自獨(dú)立的存儲空間;
CSS
介紹一下CSS的盒子模型?
(1)有兩種, IE 盒子模型、標(biāo)準(zhǔn) W3C 盒子模型;IE的content部分包含了 border 和 pading;(2)盒模型: 內(nèi)容(content)、填充(padding)、邊界(margin)、 邊框(border).
CSS 選擇符有哪些?哪些屬性可以繼承?優(yōu)先級算法如何計(jì)算? CSS3新增偽類有那些?
* 1.id選擇器( # myid) 2.類選擇器(.myclassname) 3.標(biāo)簽選擇器(div, h1, p) 4.相鄰選擇器(h1 + p) 5.子選擇器(ul < li) 6.后代選擇器(li a) 7.通配符選擇器( * ) 8.屬性選擇器(a[rel = "external"]) 9.偽類選擇器(a: hover, li: nth - child)* 可繼承的樣式: font-size font-family color, UL LI DL DD DT;* 不可繼承的樣式:border padding margin width height ;* 優(yōu)先級就近原則,同權(quán)重情況下樣式定義最近者為準(zhǔn);* 載入樣式以最后載入的定位為準(zhǔn);
優(yōu)先級為:
!important > id > class > tag important 比 內(nèi)聯(lián)優(yōu)先級高
CSS3新增偽類舉例:
p:first-of-type 選擇屬于其父元素的首個 <p> 元素的每個 <p> 元素。p:last-of-type 選擇屬于其父元素的最后 <p> 元素的每個 <p> 元素。p:only-of-type 選擇屬于其父元素唯一的 <p> 元素的每個 <p> 元素。p:only-child 選擇屬于其父元素的唯一子元素的每個 <p> 元素。p:nth-child(2) 選擇屬于其父元素的第二個子元素的每個 <p> 元素。:enabled :disabled 控制表單控件的禁用狀態(tài)。:checked 單選框或復(fù)選框被選中。
如何居中div?如何居中一個浮動元素?
給div設(shè)置一個寬度,然后添加margin:0 auto屬性
div{ width:200px; margin:0 auto; }
居中一個浮動元素
確定容器的寬高 寬500 高 300 的層 設(shè)置層的外邊距
.div { Width:500px ; height:300px;//高度可以不設(shè) Margin: -150px 0 0 -250px; position:relative;相對定位 background-color:pink;//方便看效果 left:50%; top:50%;}
列出display的值,說明他們的作用。position的值, relative和absolute定位原點(diǎn)是?
1. block 象塊類型元素一樣顯示。 none 缺省值。象行內(nèi)元素類型一樣顯示。 inline-block 象行內(nèi)元素一樣顯示,但其內(nèi)容象塊類型元素一樣顯示。 list-item 象塊類型元素一樣顯示,并添加樣式列表標(biāo)記。 2. *absolute 生成絕對定位的元素,相對于 static 定位以外的第一個父元素進(jìn)行定位。 *fixed (老IE不支持) 生成絕對定位的元素,相對于瀏覽器窗口進(jìn)行定位。 *relative 生成相對定位的元素,相對于其正常位置進(jìn)行定位。 * static 默認(rèn)值。沒有定位,元素出現(xiàn)在正常的流中 *(忽略 top, bottom, left, right z-index 聲明)。 * inherit 規(guī)定從父元素繼承 position 屬性的值。
CSS3有哪些新特性?
CSS3實(shí)現(xiàn)圓角(border-radius:8px),陰影(box-shadow:10px), 對文字加特效(text-shadow、),線性漸變(gradient),旋轉(zhuǎn)(transform) transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);//旋轉(zhuǎn),縮放,定位,傾斜 增加了更多的CSS選擇器 多背景 rgba
一個滿屏 品 字布局 如何設(shè)計(jì)?
經(jīng)常遇到的CSS的兼容性有哪些?原因,解決方法是什么?
為什么要初始化CSS樣式。
- 因?yàn)闉g覽器的兼容問題,不同瀏覽器對有些標(biāo)簽的默認(rèn)值是不同的,如果沒對CSS初始化往往會出現(xiàn)瀏覽器之間的頁面顯示差異。- 當(dāng)然,初始化樣式會對SEO有一定的影響,但魚和熊掌不可兼得,但力求影響最小的情況下初始化。*最簡單的初始化方法就是: * {padding: 0; margin: 0;} (不建議)淘寶的樣式初始化:
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; }h1, h2, h3, h4, h5, h6{ font-size:100%; }address, cite, dfn, em, var { font-style:normal; }code, kbd, pre, samp { font-family:couriernew, courier, monospace; }small{ font-size:12px; }ul, ol { list-style:none; }a { text-decoration:none; }a:hover { text-decoration:underline; }sup { vertical-align:text-top; }sub{ vertical-align:text-bottom; }legend { color:#000; }fieldset, img { border:0; }button, input, select, textarea { font-size:100%; }table { border-collapse:collapse; border-spacing:0; }
absolute的containing block計(jì)算方式跟正常流有什么不同?
position跟display、margin collapse、overflow、float這些特性相互疊加后會怎么樣?
對BFC規(guī)范的理解?
(W3C CSS 2.1 規(guī)范中的一個概念,它決定了元素如何對其內(nèi)容進(jìn)行定位,以及與其他元素的關(guān) 系和相互作用。)
css定義的權(quán)重
以下是權(quán)重的規(guī)則:標(biāo)簽的權(quán)重為1,class的權(quán)重為10,id的權(quán)重為100,以下例子是演示各種定義的權(quán)重值:
/*權(quán)重為1*/div{}/*權(quán)重為10*/.class1{}/*權(quán)重為100*/#id1{}/*權(quán)重為100+1=101*/#id1 div{}/*權(quán)重為10+1=11*/.class1 div{}/*權(quán)重為10+10+1=21*/.class1 .class2 div{}
如果權(quán)重相同,則最后定義的樣式會起作用,但是應(yīng)該避免這種情況出現(xiàn)
解釋下浮動和它的工作原理?清除浮動的技巧
用過媒體查詢,針對移動端的布局嗎?
使用 CSS 預(yù)處理器嗎?喜歡那個?
SASS
JavaScript
JavaScript原型,原型鏈 ? 有什么特點(diǎn)?
eval是做什么的?
它的功能是把對應(yīng)的字符串解析成JS代碼并運(yùn)行;應(yīng)該避免使用eval,不安全,非常耗性能(2次,一次解析成js語句,一次執(zhí)行)。
null,undefined 的區(qū)別?
寫一個通用的事件偵聽器函數(shù)。
// event(事件)工具集,來源:github.com/markyun markyun.Event = { // 頁面加載完成后 readyEvent : function(fn) { if (fn==null) { fn=document; } var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = fn; } else { window.onload = function() { oldonload(); fn(); }; } }, // 視能力分別使用dom0||dom2||IE方式 來綁定事件 // 參數(shù): 操作的元素,事件名稱 ,事件處理程序 addEvent : function(element, type, handler) { if (element.addEventListener) { //事件類型、需要執(zhí)行的函數(shù)、是否捕捉 element.addEventListener(type, handler, false); } else if (element.attachEvent) { element.attachEvent('on' + type, function() { handler.call(element); }); } else { element['on' + type] = handler; } }, // 移除事件 removeEvent : function(element, type, handler) { if (element.removeEnentListener) { element.removeEnentListener(type, handler, false); } else if (element.datachEvent) { element.detachEvent('on' + type, handler); } else { element['on' + type] = null; } }, // 阻止事件 (主要是事件冒泡,因?yàn)镮E不支持事件捕獲) stopPropagation : function(ev) { if (ev.stopPropagation) { ev.stopPropagation(); } else { ev.cancelBubble = true; } }, // 取消事件的默認(rèn)行為 preventDefault : function(event) { if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } }, // 獲取事件目標(biāo) getTarget : function(event) { return event.target || event.srcElement; }, // 獲取event對象的引用,取到事件的所有信息,確保隨時能使用event; getEvent : function(e) { var ev = e || window.event; if (!ev) { var c = this.getEvent.caller; while (c) { ev = c.arguments[0]; if (ev && Event == ev.constructor) { break; } c = c.caller; } } return ev; } };
Node.js的適用場景?
高并發(fā)、聊天、實(shí)時消息推送
介紹js的基本數(shù)據(jù)類型。
number,string,boolean,object,undefined
Javascript如何實(shí)現(xiàn)繼承?
通過原型和構(gòu)造器
["1", "2", "3"].map(parseInt) 答案是多少?
[1, NaN, NaN] 因?yàn)?parseInt 需要兩個參數(shù) (val, radix) 但 map 傳了 3 個 (element, index, array)
如何創(chuàng)建一個對象? (畫出此對象的內(nèi)存圖)
function Person(name, age) { this.name = name; this.age = age; this.sing = function() { alert(this.name) } }
談?wù)凾his對象的理解。
this是js的一個關(guān)鍵字,隨著函數(shù)使用場合不同,this的值會發(fā)生變化。但是有一個總原則,那就是this指的是調(diào)用函數(shù)的那個對象。this一般情況下:是全局對象Global。 作為方法調(diào)用,那么this就是指這個對象
事件是?IE與火狐的事件機(jī)制有什么區(qū)別? 如何阻止冒泡?
1. 我們在網(wǎng)頁中的某個操作(有的操作對應(yīng)多個事件)。例如:當(dāng)我們點(diǎn)擊一個按鈕就會產(chǎn)生一個事件。是可以被 JavaScript 偵測到的行為。 2. 事件處理機(jī)制:IE是事件冒泡、火狐是 事件捕獲; 3. ev.stopPropagation();
什么是閉包(closure),為什么要用它?
執(zhí)行say667()后,say667()閉包內(nèi)部變量會存在,而閉包內(nèi)部函數(shù)的內(nèi)部變量不會存在.使得Javascript的垃圾回收機(jī)制GC不會收回say667()所占用的資源,因?yàn)閟ay667()的內(nèi)部函數(shù)的執(zhí)行需要依賴say667()中的變量。這是對閉包作用的非常直白的描述.
function say667() { // Local variable that ends up within closure var num = 666; var sayAlert = function() { alert(num); } num++; return sayAlert;} var sayAlert = say667(); sayAlert()//執(zhí)行結(jié)果應(yīng)該彈出的667
"use strict";是什么意思 ? 使用它的好處和壞處分別是什么?
如何判斷一個對象是否屬于某個類?
使用instanceof (待完善) if(a instanceof Person){ alert('yes'); }
new操作符具體干了什么呢?
1、創(chuàng)建一個空對象,并且 this 變量引用該對象,同時還繼承了該函數(shù)的原型。 2、屬性和方法被加入到 this 引用的對象中。 3、新創(chuàng)建的對象由 this 所引用,并且最后隱式的返回 this 。var obj = {};obj.__proto__ = Base.prototype;Base.call(obj);
Javascript中,有一個函數(shù),執(zhí)行時對象查找時,永遠(yuǎn)不會去查找原型,這個函數(shù)是?
hasOwnProperty
JSON 的了解?
JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。它是基于JavaScript的一個子集。數(shù)據(jù)格式簡單, 易于讀寫, 占用帶寬小{'age':'12', 'name':'back'}
js延遲加載的方式有哪些?
defer和async、動態(tài)創(chuàng)建DOM方式(用得最多)、按需異步載入js
ajax 是什么?
同步和異步的區(qū)別?
如何解決跨域問題?
jsonp、 iframe、window.name、window.postMessage、服務(wù)器上設(shè)置代理頁面
模塊化怎么做?
立即執(zhí)行函數(shù),不暴露私有成員
var module1 = (function(){ var _count = 0; var m1 = function(){ //... }; var m2 = function(){ //... }; return { m1 : m1, m2 : m2 }; })();
AMD(Modules/Asynchronous-Definition)、CMD(Common Module Definition)規(guī)范區(qū)別?
異步加載的方式有哪些?
(1) defer,只支持IE (2) async: (3) 創(chuàng)建script,插入到DOM中,加載完畢后callBack
documen.write和 innerHTML的區(qū)別
document.write只能重繪整個頁面
innerHTML可以重繪頁面的一部分
.call() 和 .apply() 的區(qū)別?
例子中用 add 來替換 sub,add.call(sub,3,1) == add(3,1) ,所以運(yùn)行結(jié)果為:alert(4); 注意:js 中的函數(shù)其實(shí)是對象,函數(shù)名是對 Function 對象的引用。
function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call(sub,3,1);
Jquery與jQuery UI 有啥區(qū)別?
*jQuery是一個js庫,主要提供的功能是選擇器,屬性修改和事件綁定等等。*jQuery UI則是在jQuery的基礎(chǔ)上,利用jQuery的擴(kuò)展性,設(shè)計(jì)的插件。 提供了一些常用的界面元素,諸如對話框、拖動行為、改變大小行為等等
JQuery的源碼看過嗎?能不能簡單說一下它的實(shí)現(xiàn)原理?
jquery 中如何將數(shù)組轉(zhuǎn)化為json字符串,然后再轉(zhuǎn)化回來?
jQuery中沒有提供這個功能,所以你需要先編寫兩個jQuery的擴(kuò)展:
$.fn.stringifyArray = function(array) { return JSON.stringify(array) } $.fn.parseArray = function(array) { return JSON.parse(array) }
然后調(diào)用:
$("").stringifyArray(array)
針對 jQuery 的優(yōu)化方法?
*基于Class的選擇性的性能相對于Id選擇器開銷很大,因?yàn)樾璞闅v所有DOM元素。*頻繁操作的DOM,先緩存起來再操作。用Jquery的鏈?zhǔn)秸{(diào)用更好。 比如:var str=$("a").attr("href");*for (var i = size; i < arr.length; i++) {} for 循環(huán)每一次循環(huán)都查找了數(shù)組 (arr) 的.length 屬性,在開始循環(huán)的時候設(shè)置一個變量來存儲這個數(shù)字,可以讓循環(huán)跑得更快: for (var i = size, length = arr.length; i < length; i++) {}
JavaScript中的作用域與變量聲明提升?
如何編寫高性能的Javascript?
那些操作會造成內(nèi)存泄漏?
內(nèi)存泄漏指任何對象在您不再擁有或需要它之后仍然存在。垃圾回收器定期掃描對象,并計(jì)算引用了每個對象的其他對象的數(shù)量。如果一個對象的引用數(shù)量為 0(沒有其他對象引用過該對象),或?qū)υ搶ο蟮奈┮灰檬茄h(huán)的,那么該對象的內(nèi)存即可回收。setTimeout 的第一個參數(shù)使用字符串而非函數(shù)的話,會引發(fā)內(nèi)存泄漏。閉包、控制臺日志、循環(huán)(在兩個對象彼此引用且彼此保留時,就會產(chǎn)生一個循環(huán))
JQuery一個對象可以同時綁定多個事件,這是如何實(shí)現(xiàn)的?
其他問題
你遇到過比較難的技術(shù)問題是?你是如何解決的?
常使用的庫有哪些?常用的前端開發(fā)工具?開發(fā)過什么應(yīng)用或組件?
頁面重構(gòu)怎么操作?
列舉IE 與其他瀏覽器不一樣的特性?
99%的網(wǎng)站都需要被重構(gòu)是那本書上寫的?
什么叫優(yōu)雅降級和漸進(jìn)增強(qiáng)?
WEB應(yīng)用從服務(wù)器主動推送Data到客戶端有那些方式?
對Node的優(yōu)點(diǎn)和缺點(diǎn)提出了自己的看法?
*(優(yōu)點(diǎn))因?yàn)镹ode是基于事件驅(qū)動和無阻塞的,所以非常適合處理并發(fā)請求, 因此構(gòu)建在Node上的代理服務(wù)器相比其他技術(shù)實(shí)現(xiàn)(如Ruby)的服務(wù)器表現(xiàn)要好得多。 此外,與Node代理服務(wù)器交互的客戶端代碼是由javascript語言編寫的, 因此客戶端和服務(wù)器端都用同一種語言編寫,這是非常美妙的事情。*(缺點(diǎn))Node是一個相對新的開源項(xiàng)目,所以不太穩(wěn)定,它總是一直在變, 而且缺少足夠多的第三方庫支持??雌饋?,就像是Ruby/Rails當(dāng)年的樣子。
你有哪些性能優(yōu)化的方法?
(看雅虎14條性能優(yōu)化原則)。 (1) 減少http請求次數(shù):CSS Sprites, JS、CSS源碼壓縮、圖片大小控制合適;網(wǎng)頁Gzip,CDN托管,data緩存 ,圖片服務(wù)器。 (2) 前端模板 JS+數(shù)據(jù),減少由于HTML標(biāo)簽導(dǎo)致的帶寬浪費(fèi),前端用變量保存AJAX請求結(jié)果,每次操作本地變量,不用請求,減少請求次數(shù) (3) 用innerHTML代替DOM操作,減少DOM操作次數(shù),優(yōu)化javascript性能。 (4) 當(dāng)需要設(shè)置的樣式很多時設(shè)置className而不是直接操作style。 (5) 少用全局變量、緩存DOM節(jié)點(diǎn)查找的結(jié)果。減少IO讀取操作。 (6) 避免使用CSS Expression(css表達(dá)式)又稱Dynamic properties(動態(tài)屬性)。 (7) 圖片預(yù)加載,將樣式表放在頂部,將腳本放在底部 加上時間戳。 (8) 避免在頁面的主體布局中使用table,table要等其中的內(nèi)容完全下載之后才會顯示出來,顯示比div+css布局慢。
http狀態(tài)碼有那些?分別代表是什么意思?
100-199 用于指定客戶端應(yīng)相應(yīng)的某些動作。 200-299 用于表示請求成功。 300-399 用于已經(jīng)移動的文件并且常被包含在定位頭信息中指定新的地址信息。 400-499 用于指出客戶端的錯誤。400 1、語義有誤,當(dāng)前請求無法被服務(wù)器理解。401 當(dāng)前請求需要用戶驗(yàn)證 403 服務(wù)器已經(jīng)理解請求,但是拒絕執(zhí)行它。500-599 用于支持服務(wù)器錯誤。 503 ? 服務(wù)不可用
一個頁面從輸入 URL 到頁面加載顯示完成,這個過程中都發(fā)生了什么?(流程說的越詳細(xì)越好)
查找瀏覽器緩存 DNS解析、查找該域名對應(yīng)的IP地址、重定向(301)、發(fā)出第二個GET請求 進(jìn)行HTTP協(xié)議會話 客戶端發(fā)送報(bào)頭(請求報(bào)頭) 服務(wù)器回饋報(bào)頭(響應(yīng)報(bào)頭) html文檔開始下載 文檔樹建立,根據(jù)標(biāo)記請求所需指定MIME類型的文件 文件顯示 [ 瀏覽器這邊做的工作大致分為以下幾步: 加載:根據(jù)請求的URL進(jìn)行域名解析,向服務(wù)器發(fā)起請求,接收文件(HTML、JS、CSS、圖象等)。 解析:對加載到的資源(HTML、JS、CSS等)進(jìn)行語法解析,建議相應(yīng)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(比如HTML的DOM樹,JS的(對象)屬性表,CSS的樣式規(guī)則等等) }
除了前端以外還了解什么其它技術(shù)么?你最最厲害的技能是什么?
你常用的開發(fā)工具是什么,為什么?
對前端界面工程師這個職位是怎么樣理解的?它的前景會怎么樣?
前端是最貼近用戶的程序員,比后端、數(shù)據(jù)庫、產(chǎn)品經(jīng)理、運(yùn)營、安全都近。 1、實(shí)現(xiàn)界面交互 2、提升用戶體驗(yàn) 3、有了Node.js,前端可以實(shí)現(xiàn)服務(wù)端的一些事情前端是最貼近用戶的程序員,前端的能力就是能讓產(chǎn)品從 90分進(jìn)化到 100 分,甚至更好, 參與項(xiàng)目,快速高質(zhì)量完成實(shí)現(xiàn)效果圖,精確到1px; 與團(tuán)隊(duì)成員,UI設(shè)計(jì),產(chǎn)品經(jīng)理的溝通; 做好的頁面結(jié)構(gòu),頁面重構(gòu)和用戶體驗(yàn); 處理hack,兼容、寫出優(yōu)美的代碼格式; 針對服務(wù)器的優(yōu)化、擁抱最新前端技術(shù)。
加班的看法?
加班就像借錢,原則應(yīng)當(dāng)是------救急不救窮
平時如何管理你的項(xiàng)目?
先期團(tuán)隊(duì)必須確定好全局樣式(globe.css),編碼模式(utf-8) 等 編寫習(xí)慣必須一致(例如都是采用繼承式的寫法,單樣式都寫成一行); 標(biāo)注樣式編寫人,各模塊都及時標(biāo)注(標(biāo)注關(guān)鍵樣式調(diào)用的地方); 頁面進(jìn)行標(biāo)注(例如 頁面 模塊 開始和結(jié)束); CSS跟HTML 分文件夾并行存放,命名都得統(tǒng)一(例如style.css) JS 分文件夾存放 命民以該JS 功能為準(zhǔn)英文翻譯; 圖片采用整合的 images.png png8 格式文件使用 盡量整合在一起使用方便將來的管理
如何設(shè)計(jì)突發(fā)大規(guī)模并發(fā)架構(gòu)?
說說最近最流行的一些東西吧?常去哪些網(wǎng)站?
Node.js、Mongodb、npm、MVVM、MEAN、three.js
移動端(Android IOS)怎么做好用戶體驗(yàn)?
清晰的視覺縱線、信息的分組、極致的減法、 利用選擇代替輸入、標(biāo)簽及文字的排布方式、 依靠明文確認(rèn)密碼、合理的鍵盤利用、
你在現(xiàn)在的團(tuán)隊(duì)處于什么樣的角色,起到了什么明顯的作用?
你認(rèn)為怎樣才是全端工程師(Full Stack developer)?
介紹一個你最得意的作品吧?
你的優(yōu)點(diǎn)是什么?缺點(diǎn)是什么?
如何管理前端團(tuán)隊(duì)?
最近在學(xué)什么?能談?wù)勀阄磥?,5年給自己的規(guī)劃嗎?
想問公司的問題?
問公司問題: 目前關(guān)注哪些最新的Web前端技術(shù)(未來的發(fā)展方向)? 前端團(tuán)隊(duì)如何工作的(實(shí)現(xiàn)一個產(chǎn)品的流程)? 公司的薪資結(jié)構(gòu)是什么樣子的?
優(yōu)質(zhì)網(wǎng)站推薦
- 前端周刊:?http://www.feweekly.com/issues
-
夢想天空:?
-
極客頭條:?http://geek.csdn.net/
-
Startup News:http://news.dbanotes.net/
-
Hacker News:?https://news.ycombinator.com/news
-
InfoQ: http://www.infoq.com/
-
w3cplus: http://www.w3cplus.com/
-
Stack Overflow: http://stackoverflow.com/
-
Atp: http://atp-posts.b0.upaiyun.com/posts/
Source: 2014 latest front-end development interview questions (full version of question list and answers)

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

To use HTML button elements to achieve clickable buttons, you must first master its basic usage and common precautions. 1. Create buttons with tags and define behaviors through type attributes (such as button, submit, reset), which is submitted by default; 2. Add interactive functions through JavaScript, which can be written inline or bind event listeners through ID to improve maintenance; 3. Use CSS to customize styles, including background color, border, rounded corners and hover/active status effects to enhance user experience; 4. Pay attention to common problems: make sure that the disabled attribute is not enabled, JS events are correctly bound, layout occlusion, and use the help of developer tools to troubleshoot exceptions. Master this

Metadata in HTMLhead is crucial for SEO, social sharing, and browser behavior. 1. Set the page title and description, use and keep it concise and unique; 2. Add OpenGraph and Twitter card information to optimize social sharing effects, pay attention to the image size and use debugging tools to test; 3. Define the character set and viewport settings to ensure multi-language support is adapted to the mobile terminal; 4. Optional tags such as author copyright, robots control and canonical prevent duplicate content should also be configured reasonably.

TolearnHTMLin2025,chooseatutorialthatbalanceshands-onpracticewithmodernstandardsandintegratesCSSandJavaScriptbasics.1.Prioritizehands-onlearningwithstep-by-stepprojectslikebuildingapersonalprofileorbloglayout.2.EnsureitcoversmodernHTMLelementssuchas,

How to make HTML mail templates with good compatibility? First, you need to build a structure with tables to avoid using div flex or grid layout; secondly, all styles must be inlined and cannot rely on external CSS; then the picture should be added with alt description and use a public URL, and the buttons should be simulated with a table or td with background color; finally, you must test and adjust the details on multiple clients.

Using HTML sums allows for intuitive and semantic clarity to add caption text to images or media. 1. Used to wrap independent media content, such as pictures, videos or code blocks; 2. It is placed as its explanatory text, and can be located above or below the media; 3. They not only improve the clarity of the page structure, but also enhance accessibility and SEO effect; 4. When using it, you should pay attention to avoid abuse, and apply to content that needs to be emphasized and accompanied by description, rather than ordinary decorative pictures; 5. The alt attribute that cannot be ignored, which is different from figcaption; 6. The figcaption is flexible and can be placed at the top or bottom of the figure as needed. Using these two tags correctly helps to build semantic and easy to understand web content.

When there is no backend server, HTML form submission can still be processed through front-end technology or third-party services. Specific methods include: 1. Use JavaScript to intercept form submissions to achieve input verification and user feedback, but the data will not be persisted; 2. Use third-party serverless form services such as Formspree to collect data and provide email notification and redirection functions; 3. Use localStorage to store temporary client data, which is suitable for saving user preferences or managing single-page application status, but is not suitable for long-term storage of sensitive information.

class, id, style, data-, and title are the most commonly used global attributes in HTML. class is used to specify one or more class names to facilitate style setting and JavaScript operations; id provides unique identifiers for elements, suitable for anchor jumps and JavaScript control; style allows for inline styles to be added, suitable for temporary debugging but not recommended for large-scale use; data-properties are used to store custom data, which is convenient for front-end and back-end interaction; title is used to add mouseover prompts, but its style and behavior are limited by the browser. Reasonable selection of these attributes can improve development efficiency and user experience.

Native lazy loading is a built-in browser function that enables lazy loading of pictures by adding loading="lazy" attribute to the tag. 1. It does not require JavaScript or third-party libraries, and is used directly in HTML; 2. It is suitable for pictures that are not displayed on the first screen below the page, picture gallery scrolling add-ons and large picture resources; 3. It is not suitable for pictures with first screen or display:none; 4. When using it, a suitable placeholder should be set to avoid layout jitter; 5. It should optimize responsive image loading in combination with srcset and sizes attributes; 6. Compatibility issues need to be considered. Some old browsers do not support it. They can be used through feature detection and combined with JavaScript solutions.
