1、HTML與XHTML——二者有什么區(qū)別
區(qū)別:
1.所有的標(biāo)記都必須要有一個(gè)相應(yīng)的結(jié)束標(biāo)記
2.所有標(biāo)簽的元素和屬性的名字都必須使用小寫
3.所有的XML標(biāo)記都必須合理嵌套
4.所有的屬性必須用引號""括起來
5.把所有<和&特殊符號用編碼表示
6.給所有屬性賦一個(gè)值
7.不要在注釋內(nèi)容中使“--”
8.圖片必須有說明文字
2、DOM操作——怎樣添加页衙、移除薯酝、移動(dòng)腿堤、復(fù)制椰憋、創(chuàng)建和查找節(jié)點(diǎn)。
1)創(chuàng)建新節(jié)點(diǎn)
createDocumentFragment() //創(chuàng)建一個(gè)DOM片段
createElement() //創(chuàng)建一個(gè)具體的元素
createTextNode() //創(chuàng)建一個(gè)文本節(jié)點(diǎn)
2)添加或辖、移除瘾英、替換、插入
appendChild()
removeChild()
replaceChild()
insertBefore() //并沒有insertAfter()
3)查找
getElementsByTagName() //通過標(biāo)簽名稱
getElementsByName() //通過元素的Name屬性的值(IE容錯(cuò)能力較強(qiáng)颂暇,
會得到一個(gè)數(shù)組缺谴,其中包括id等于name值的)
getElementById() //通過元素Id,唯一性
3耳鸯、如何實(shí)現(xiàn)瀏覽器內(nèi)多個(gè)標(biāo)簽頁之間的通信?
調(diào)用localstorge湿蛔、cookies等本地存儲方式
4、html5有哪些新特性县爬、移除了那些元素阳啥?如何處理HTML5新標(biāo)簽的瀏覽器兼容問題?如何區(qū)分 HTML 和 HTML5捌省?
HTML5 現(xiàn)在已經(jīng)不是 SGML 的子集苫纤,主要是關(guān)于圖像碉钠,位置纲缓,存儲,多任務(wù)等功能的增加喊废。
拖拽釋放(Drag and drop) API
語義化更好的內(nèi)容標(biāo)簽(header,nav,footer,aside,article,section)
音頻祝高、視頻API(audio,video)
畫布(Canvas) API
地理(Geolocation) API
本地離線存儲 localStorage 長期存儲數(shù)據(jù),瀏覽器關(guān)閉后數(shù)據(jù)不丟失污筷;
sessionStorage 的數(shù)據(jù)在瀏覽器關(guān)閉后自動(dòng)刪除
表單控件工闺,calendar、date瓣蛀、time陆蟆、email、url惋增、search
新的技術(shù)webworker, websocket, 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)簽,
當(dāng)然最好的方式是直接使用成熟的框架胸嘁、使用最多的是html5shim框架
<!--[if lt IE 9]>
<script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>
<![endif]-->
如何區(qū)分: DOCTYPE聲明\新增的結(jié)構(gòu)元素\功能元素
5瓶摆、null和undefined的區(qū)別?
null是一個(gè)表示"無"的對象性宏,轉(zhuǎn)為數(shù)值時(shí)為0群井;undefined是一個(gè)表示"無"的原始值,轉(zhuǎn)為數(shù)值時(shí)為NaN毫胜。
當(dāng)聲明的變量還未被初始化時(shí)书斜,變量的默認(rèn)值為undefined。
null用來表示尚未存在的對象酵使,常用來表示函數(shù)企圖返回一個(gè)不存在的對象荐吉。
undefined表示"缺少值",就是此處應(yīng)該有一個(gè)值口渔,但是還沒有定義样屠。典型用法是:
(1)變量被聲明了,但沒有賦值時(shí)缺脉,就等于undefined痪欲。
(2) 調(diào)用函數(shù)時(shí),應(yīng)該提供的參數(shù)沒有提供攻礼,該參數(shù)等于undefined业踢。
(3)對象沒有賦值的屬性,該屬性的值為undefined礁扮。
(4)函數(shù)沒有返回值時(shí)知举,默認(rèn)返回undefined。
null表示"沒有對象"太伊,即該處不應(yīng)該有值雇锡。典型用法是:
(1) 作為函數(shù)的參數(shù),表示該函數(shù)的參數(shù)不是對象僚焦。
(2) 作為對象原型鏈的終點(diǎn)锰提。
6、new操作符具體干了什么呢?
1叠赐、創(chuàng)建一個(gè)空對象欲账,并且 this 變量引用該對象,同時(shí)還繼承了該函數(shù)的原型芭概。
2赛不、屬性和方法被加入到 this 引用的對象中。
3罢洲、新創(chuàng)建的對象由 this 所引用踢故,并且最后隱式的返回 this 文黎。
var obj = {};
obj.__proto__ = Base.prototype;
Base.call(obj);
7、js延遲加載的方式有哪些殿较?
defer和async耸峭、動(dòng)態(tài)創(chuàng)建DOM方式(創(chuàng)建script,插入到DOM中淋纲,加載完畢后callBack)劳闹、按需異步載入js
8、哪些操作會造成內(nèi)存泄漏洽瞬?
內(nèi)存泄漏指任何對象在您不再擁有或需要它之后仍然存在本涕。
垃圾回收器定期掃描對象,并計(jì)算引用了每個(gè)對象的其他對象的數(shù)量伙窃。如果一個(gè)對象的引用數(shù)量為 0(沒有其他對象引用過該對象)菩颖,或?qū)υ搶ο蟮奈┮灰檬茄h(huán)的,那么該對象的內(nèi)存即可回收为障。
setTimeout 的第一個(gè)參數(shù)使用字符串而非函數(shù)的話晦闰,會引發(fā)內(nèi)存泄漏。
閉包鳍怨、控制臺日志呻右、循環(huán)(在兩個(gè)對象彼此引用且彼此保留時(shí),就會產(chǎn)生一個(gè)循環(huán))
9京景、列舉IE 與其他瀏覽器不一樣的特性窿冯?
(1)IE支持currentStyle骗奖,F(xiàn)Irefox使用getComputStyle
(2)IE 使用innerText确徙,F(xiàn)irefox使用textContent
(3)濾鏡方面:IE:filter:alpha(opacity= num);Firefox:-moz-opacity:num
(4)事件方面:IE:attachEvent:火狐是addEventListener
(5)鼠標(biāo)位置:IE是event.clientX执桌;火狐是event.pageX
(6)IE使用event.srcElement鄙皇;Firefox使用event.target
(7)IE中消除list的原點(diǎn)僅需margin:0即可達(dá)到最終效果;FIrefox需要設(shè)置margin:0;padding:0以及l(fā)ist-style:none
(8)CSS圓角:ie7以下不支持圓角
10仰挣、對前端界面工程師這個(gè)職位是怎么樣理解的伴逸?它的前景會怎么樣?
前端是最貼近用戶的程序員膘壶,比后端错蝴、數(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ù)
11睦优、javascript對象的幾種創(chuàng)建方式
1渗常,工廠模式
2,構(gòu)造函數(shù)模式
3汗盘,原型模式
4皱碘,混合構(gòu)造函數(shù)和原型模式
5,動(dòng)態(tài)原型模式
6隐孽,寄生構(gòu)造函數(shù)模式
7癌椿,穩(wěn)妥構(gòu)造函數(shù)模式
12、javascript繼承的6種方法
1菱阵,原型鏈繼承
2踢俄,借用構(gòu)造函數(shù)繼承
3,組合繼承(原型+借用構(gòu)造)
4晴及,原型式繼承
5都办,寄生式繼承
6,寄生組合式繼承
13虑稼、異步加載和延遲加載
1.異步加載的方案: 動(dòng)態(tài)插入script標(biāo)簽
2.通過ajax去獲取js代碼琳钉,然后通過eval執(zhí)行
3.script標(biāo)簽上添加defer或者async屬性
4.創(chuàng)建并插入iframe,讓它異步執(zhí)行js
5.延遲加載:有些 js 代碼并不是頁面初始化的時(shí)候就立刻需要的蛛倦,而稍后的某些情況才需要的歌懒。
14、GET和POST的區(qū)別胰蝠,何時(shí)使用POST歼培?
GET:一般用于信息獲取震蒋,使用URL傳遞參數(shù),對所發(fā)送信息的數(shù)量也有限制躲庄,一般在2000個(gè)字符
POST:一般用于修改服務(wù)器上的資源查剖,對所發(fā)送的信息沒有限制。
GET方式需要使用Request.QueryString來取得變量的值噪窘,而POST方式通過Request.Form來獲取變量的值笋庄,
也就是說Get是通過地址欄來傳值,而Post是通過提交表單來傳值倔监。
然而直砂,在以下情況中,請使用 POST 請求:
無法使用緩存文件(更新服務(wù)器上的文件或數(shù)據(jù)庫)
向服務(wù)器發(fā)送大量數(shù)據(jù)(POST 沒有數(shù)據(jù)量限制)
發(fā)送包含未知字符的用戶輸入時(shí)浩习,POST 比 GET 更穩(wěn)定也更可靠
15静暂、事件、IE與火狐的事件機(jī)制有什么區(qū)別谱秽? 如何阻止冒泡洽蛀?
我們在網(wǎng)頁中的某個(gè)操作(有的操作對應(yīng)多個(gè)事件)。例如:當(dāng)我們點(diǎn)擊一個(gè)按鈕就會產(chǎn)生一個(gè)事件疟赊。是可以被 JavaScript 偵測到的行為郊供。
事件處理機(jī)制:IE是事件冒泡、firefox同時(shí)支持兩種事件模型近哟,也就是:捕獲型事件和冒泡型事件驮审。;
ev.stopPropagation()
;注意舊ie的方法ev.cancelBubble = true
;