一、html 部分 1,請闡述你對WEB標準以及W3C的理解與認識標簽閉合、標簽小寫、不亂嵌套、提高搜索機器人搜索幾率、使用外 鏈css和js腳本、結(jié)構(gòu)行為表現(xiàn)的分離、文件下載與頁面速度更快、內(nèi)容能被更多的用戶所訪問、內(nèi)容能被更廣泛的設(shè)備所訪問、更少的代碼和組件,容易維 護、改版方便,不需要變動頁面內(nèi)容、提供打印版本而不需要復(fù)制內(nèi)容、提高網(wǎng)站易用性; 2,請描述一個網(wǎng)頁從開始請求到最終顯示的完整過程?一般可分為7個步驟: 1).在瀏覽器中輸入網(wǎng)址; 2).發(fā)送至DNS服務(wù)器并獲得域名對應(yīng)的WEB服務(wù)器的IP地址; 3).與WEB服務(wù)器建立TCP連接; 4).瀏覽器向WEB服務(wù)器的IP地址發(fā)送相應(yīng)的HTTP請求; 5).WEB服務(wù)器響應(yīng)請求并返回指定的URL的數(shù)據(jù),或錯誤信息,如果設(shè)定重定向,則重定向到新的URL地址。 6).瀏覽器下載數(shù)據(jù)后解析HTML源文件,解析的過程中實現(xiàn)對頁面的排版,解析完成后在瀏覽器中顯示基礎(chǔ)頁面。 7).分析頁面中的超鏈接并顯示在當前頁面,重復(fù)以上過程直至無超鏈接需要發(fā)送,完成全部顯示。 3,xhtml和html有什么區(qū)別HTML是一種基本的WEB網(wǎng)頁設(shè)計語言,XHTML是一個基于XML的置標語言最主要的不同:XHTML 元素必須被正確地嵌套。XHTML 元素必須被關(guān)閉。標簽名必須用小寫字母。XHTML 文檔必須擁有根元素。 4,DOCTYPE聲明的作用是什么?嚴格模式與混雜模式如何區(qū)分?HTML語言已經(jīng)存在太久了,目前必然會有一些不同版本的文檔存在。為了能夠讓瀏覽器清楚你的文檔的版本、類型和風(fēng)格,需要在文檔的起始用DOCTYPE聲明指定當前文檔的版本和風(fēng)格。如果在網(wǎng)頁中提供了版本信息,則可以有利于驗證頁面中的代碼是否符合當前的版本和風(fēng)格。<!DOCTYPE>聲明位于文檔中的最前面,處于標簽之前,告知瀏覽器的解析器,用什么文檔類型規(guī)范來解析這個文檔。在嚴格模式(標準模式)中,瀏覽器根據(jù)規(guī)范呈現(xiàn)頁面;在混雜模式中,頁面以向后兼容的方式顯示,以防止老站點無法工作。如果HTML文檔包含形式完整的DOCTYPE,那么它一般以標準模式呈現(xiàn)。對于HTML4.01文檔,包含嚴格DTD的DOCTYPE常常導(dǎo)致頁面以標準模式呈現(xiàn)。DOCTYPE不存在或格式不正確會導(dǎo)致文檔以混雜模式呈現(xiàn)。 5,行內(nèi)元素有哪些?塊級元素有哪些?行內(nèi)元素:a、b、span、img、input、strong、select、label、em、button、textarea塊級元素:div、ul、li、dl、dt、dd、p、h1-h6、blockquote空元素:即系沒有內(nèi)容的HTML元素,例如:br、meta、hr、link、input、img 6,img標簽上title與alt屬性的區(qū)別是什么?Alt 當圖片不顯示是 用文字代表。Title 為該屬性提供信息 7,前端頁面有哪三層構(gòu)成,分別是什么?作用是什么?結(jié)構(gòu)層 Html 表示層 CSS 行為層 js 8,簡要描述常見的瀏覽器內(nèi)核。IE,火狐Firefox,谷歌Chrome,opear,Safari瀏覽器內(nèi)核賦值對網(wǎng)頁語法的解釋并顯示網(wǎng)頁,它決定了瀏覽器如何顯示網(wǎng)頁的內(nèi)容以及頁面的格式信息。常見的瀏覽器內(nèi)核:IE瀏覽器內(nèi)核:TridentMozilla瀏覽器內(nèi)核,如Firefox:GeckoSafari瀏覽器內(nèi)核,也是Chrome瀏覽器的內(nèi)核:WebkitChrome瀏覽器和,Opera瀏覽器內(nèi)核:Blink 9,簡述一下src與href的區(qū)別href 是指向網(wǎng)絡(luò)資源所在位置,建立和當前元素(錨點)或當前文檔(鏈接)之間的鏈接,用于超鏈接。src是指向外部資源的位置,指向的內(nèi)容將會嵌入到文檔中當前標簽所在位置; 在請求src資源時會將其指向的資源下載并應(yīng)用到文檔內(nèi),例如js腳本,img圖片和frame等元素。 當瀏覽器解析到該元素時,會暫停其他資源的下載和處理,直到將該資源加載、編譯、執(zhí)行完畢, 圖片和框架等元素也如此,類似于將所指向資源嵌入當前標簽內(nèi)。這也是為什么將js腳本放在底部而不是頭部。 10,錨點的作用是什么?如何創(chuàng)建錨點?錨點是文檔中某行的一個記號,類似于書簽,用于鏈接到文檔中的某個位置。當定義錨點后,我們可以創(chuàng)建直接跳至該錨點(比如頁面中某個小節(jié))的鏈接,這樣使用者就無需不停地滾動頁面來尋找他們需要的信息了。在使用元素創(chuàng)建錨點時,需要使用name屬性為其命名,代碼如下所示:錨點一然后就可以創(chuàng)建鏈接,直接跳轉(zhuǎn)到錨點,代碼如下所示:回到錨點一二、html5 部分 1,HTML5為什么只需要寫?HTML5不基于SGML,因此不需要對DTD進行引用,但是需要DOCTYPE來規(guī)范瀏覽器的行為(讓瀏覽器按照它們應(yīng)該的方式來運行);HTML4.01基于SGML,所以需要對DTD進行引用,才能讓瀏覽器知道該文檔所使用的文檔類型。 2,新的 HTML5 文檔類型和字符集分別是什么?HTML5 文檔類型很簡單:HTML5 使用 UTF-8 編碼示例: 3, HTML5 的Canvas 元素有什么用?Canvas 元素用于在網(wǎng)頁上繪制圖形,該元素標簽強大之處在于可以直接在 HTML 上進行圖形操作,
4,HTML5 有哪些新增的表單元素?HTML5 新增了很多表單元素讓開發(fā)者構(gòu)建更優(yōu)秀的 Web 應(yīng)用程序。? ● datalist? ● datetime? ● output? ● keygen? ● date? ● month? ● week? ● time? ● color? ● number? ● range? ● email? ● url? 5,HTML5 廢棄了哪些 HTML4 標簽?HTML5 廢棄了一些過時的,不合理的 HTML 標簽:? ● frame? ● frameset? ● noframe? ● applet? ● big? ● center? ● basefront? 6,HTML5 標準提供了哪些新的 API?HTML5 提供的應(yīng)用程序 API 主要有:? ● Media API? ● Text Track API? ● Application Cache API? ● User Interaction? ● Data Transfer API? ● Command API? ● Constraint Validation API? ● History API? 7,HTML5 應(yīng)用程序緩存和瀏覽器緩存有什么區(qū)別?應(yīng)用程序緩存是 HTML5 的重要特性之一,提供了離線使用的功能,讓應(yīng)用程序可以獲取本地的網(wǎng)站內(nèi)容,例如 HTML、CSS、圖片以及 JavaScript。這個特性可以提高網(wǎng)站性能,它的實現(xiàn)借助于 manifest 文件,如下:…..與傳統(tǒng)瀏覽器緩存相比,它不強制用戶訪問的網(wǎng)站內(nèi)容被緩存。三、css 部分? 1,什么是盒子模型?在網(wǎng)頁中,一個元素占有空間的大小由幾個部分構(gòu)成,其中包括元素的內(nèi)容(content),元素的內(nèi)邊距(padding),元素的邊框(border),元素的外邊距(margin)四個部分。這四個部分占有的空間中,有的部分可以顯示相應(yīng)的內(nèi)容,而有的部分只用來分隔相鄰的區(qū)域或區(qū)域。4個部分一起構(gòu)成了css中元素的盒模型。? 2,什么是CSS Hack?一般來說是針對不同的瀏覽器寫不同的CSS,就是 CSS Hack。IE瀏覽器Hack一般又分為三種,條件Hack、屬性級Hack、選擇符Hack(詳細參考CSS文檔:css文檔)。例如:// 1、條件Hack// 2、屬性Hack.test{color:#090\9; /* For IE8+ */*color:#f00;? /* For IE7 and earlier */_color:#ff0;? /* For IE6 and earlier */}// 3、選擇符Hack* html .test{color:#090;}? ? ? /* For IE6 and earlier */* + html .test{color:#ff0;}? ? /* For IE7 */? 3,清除浮動的幾種方式,各自的優(yōu)缺點1.使用空標簽清除浮動 clear:both(理論上能清楚任何標簽,,,增加無意義的標簽)2.使用overflow:auto(空標簽元素清除浮動而不得不增加無意代碼的弊端,,使用zoom:1用于兼容IE)3.是用afert偽元素清除浮動(用于非IE瀏覽器)? 4,CSS引入的方式有哪些? link和@import的區(qū)別是?內(nèi)聯(lián) 內(nèi)嵌 外鏈 導(dǎo)入?yún)^(qū)別 :同時加載前者無兼容性,后者CSS2.1以下瀏覽器不支持Link 支持使用javascript改變樣式,后者不可? 5,px和em有什么區(qū)別?px和em都是長度單位,區(qū)別是,px的值是固定的,指定是多少就是多少,計算比較容易。em得值不是固定的,并且em會繼承父級元素的字體大小。瀏覽器的默認字體高都是16px。所以未經(jīng)調(diào)整的瀏覽器都符合: 1em=16px。那么12px=0.75em, 10px=0.625em四、javascript 部分? 1,解釋jsonp的原理,以及為什么不是真正的ajaxjsonp是動態(tài)創(chuàng)建script標簽,回調(diào)函數(shù)。而Ajax是頁面無刷新請求數(shù)據(jù)操作。利用在頁面中創(chuàng)建節(jié)點的方法向不同域提交HTTP請求的方法稱為JSONP,這項技術(shù)可以解決跨域提交Ajax請求的問題。JSONP的工作原理如下所述: 假設(shè)在http://example1.com/index.php這個頁面中向http://example2.com/getinfo.php提交GET請求,我們可以將下面的JavaScript代碼放在http://example1.com/index.php這個頁面中來實現(xiàn): var eleScript= document.createElement("script"); eleScript.type = "text/javascript"; eleScript.src = "http://example2.com/getinfo.php"; document.getElementsByTagName("HEAD")[0].appendChild(eleScript);當GET請求從http://example2.com/getinfo.php返回時,可以返回一段JavaScript代碼,這段代碼會自動執(zhí)行,可以用來負責(zé)調(diào)用http://example1.com/index.php頁面中的一個callback函數(shù)。 JSONP的最基本的原理是:動態(tài)添加一個標簽,而script標簽的src屬性是沒有跨域的限制的。這樣說來,這種跨域方式其實與ajax XmlHttpRequest協(xié)議無關(guān)了。? 2,解釋javascript的本地對象,內(nèi)置對象和宿主對象本地對象為array obj regexp等可以new實例化內(nèi)置對象為gload Math 等不可以實例化的宿主為瀏覽器自帶的document,window 等? 3, 列舉流行的 Ajax 框架?說明 Ajax 實現(xiàn)原理是什么及 json 在 Ajax 中起什么作用?流行的 Ajax 框架有 jQuery,Prototype,Dojo,MooTools。Ajax 的工作原理是一個頁面的指定位置可以加載另一個頁面所有的輸出內(nèi)容,這樣就實現(xiàn)了一個靜態(tài)頁面也能獲取到數(shù)據(jù)庫中的返回數(shù)據(jù)信息了。所以 Ajax 技術(shù)實現(xiàn)了一個靜態(tài)網(wǎng)頁在不刷新整個頁面的情況下與服務(wù)器通信,減少了用戶等待時間,同時也從而降低了網(wǎng)絡(luò)流量,增強了客戶體驗的友好程度。在使用 Ajax 時,涉及到數(shù)據(jù)傳輸,即將數(shù)據(jù)從服務(wù)器返回到客戶端,服務(wù)器端和客戶端分別使用不同的腳步語言來處理數(shù)據(jù),這就需要一種通用的數(shù)據(jù)格式,XML 和 json 就是最常用的兩種,而 json 比 XML 更簡單。? 4,請寫出ajax的優(yōu)點和缺點優(yōu)點:無數(shù)新更新數(shù)據(jù)、異步與服務(wù)器通信、前端和后端負載平衡、基于標準被廣泛支持、界面與應(yīng)用分離缺點:安全問題、對搜索引擎支持較弱、破壞程序的異常處理機制、違背URL和資源定位的初衷、? ? ? AJAX不能很好支持移動設(shè)備、客戶端過肥,太多客戶端代碼造成開發(fā)上的成本? 5,事件委托是什么?利用冒泡的原理,把事件加到父級上,觸發(fā)執(zhí)行效果。通俗的講,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是讓別人來做,這個事件本來是加在某些元素上的,然而你卻加到別人身上來做,完成這個事件。五、jquery 部分? 1、Jquery的美元符號$有什么作用?美元符號$只是”jQuery”的別名,它是jQuery的選擇器,如下代碼:? $(document).ready(function(){? ? ? });當然你也可以用jQuery來代替$,如下代碼:? jQuery(document).ready(function(){? ? ? });jQuery中就是通過這個美元符號來實現(xiàn)各種靈活的DOM元素選擇的,例如$(“#main”)即選中id為main的元素。? 2、body中的onload()函數(shù)和jQuery中的document.ready()有什么區(qū)別?onload()和document.ready()的區(qū)別有以下兩點:1)、我們可以在頁面中使用多個document.ready(),但只能使用一次onload()。2)、document.ready()函數(shù)在頁面DOM元素加載完以后就會被調(diào)用,而onload()函數(shù)則要在所有的關(guān)聯(lián)資源(包括圖像、音頻)加載完畢后才會調(diào)用。? 3、Jquery中有哪幾種類型的選擇器?從我自己的角度來講,可以有3種類型的選擇器,如下:1)、基本選擇器:直接根據(jù)id、css類名、元素名返回匹配的dom元素。2)、層次選擇器:也叫做路徑選擇器,可以根據(jù)路徑層次來選擇相應(yīng)的DOM元素。3)、過濾選擇器:在前面的基礎(chǔ)上過濾相關(guān)條件,得到匹配的dom元素。4)、請使用jQuery將頁面上的所有元素邊框設(shè)置為2px寬的虛線?代碼如下:? ? ? ? ? ? ? ? $("*").css("border", "2px dotted red");4、如何使用jQuery實現(xiàn)點擊按鈕彈出一個對話框?代碼如下:html:jQuery:$(document).ready(function ()
{
$(‘#Button1′).click(function () { alert($(‘#inputField’).attr(“value”));
} );
5、$(document).ready() 是個什么函數(shù)?為什么要用它?
ready() 函數(shù)用于在文檔進入ready狀態(tài)時執(zhí)行代碼。
當DOM 完全加載(例如HTML被完全解析DOM樹構(gòu)建完成時),jQuery允許你執(zhí)行代碼。
使用$(document).ready()的最大好處在于它適用于所有瀏覽器,jQuery幫你解決了跨瀏覽器的難題。
6、你如何使用jQuery設(shè)置一個屬性值?
$('#obj').attr(name, value)
7、你如何利用jQuery來向一個元素中添加和移除CSS類?
通過利用 addClass() 和 removeClass() 這兩個 jQuery 方法。
動態(tài)的改變元素的class屬性可以很簡單例如. 使用類“.active"來標記它們的未激活和激活狀態(tài),等等.
8、jQuery.get() 和 jQuery.ajax() 方法之間的區(qū)別是什么?
ajax() 方法更強大,更具可配置性, 讓你可以指定等待多久,以及如何處理錯誤。
get() 方法是一個只獲取一些數(shù)據(jù)的專門化方法。
9、你是如何將一個 HTML 元素添加到 DOM 樹中的?
你可以用 jQuery 方法 appendTo() 將一個 HTML 元素添加到 DOM 樹中。
這是 jQuery 提供的眾多操控 DOM 的方法中的一個。
你可以通過 appendTo() 方法在指定的 DOM 元素末尾添加一個現(xiàn)存的元素或者一個新的 HTML 元素。
10、jQuery 里的 each() 是什么函數(shù)?你是如何使用它的?
each() 函數(shù)就像是 Java 里的一個 Iterator,它允許你遍歷一個元素集合。
你可以傳一個函數(shù)給 each() 方法,被調(diào)用的 jQuery 對象會在其每個元素上執(zhí)行傳入的函數(shù)。
有時這個問題會緊接著上面一個問題,舉個例子,如何在 alert 框里顯示所有選中項。
我們可以用上面的選擇器代碼找出所有選中項,然后我們在 alert 框中用 each() 方法來一個個打印它們,代碼如下:
$('[name=NameOfSelectedTag] :selected').each(function(selected) {
alert($(selected).text());
});
六、PHP 部分
1、雙引號和單引號的區(qū)別。
● 雙引號解釋變量,單引號不解釋變量
● 雙引號里插入單引號,其中單引號里如果有變量的話,變量解釋
● 雙引號的變量名后面必須要有一個非數(shù)字、字母、下劃線的特殊字符,或者用講變量括起來,否則會將變量名后面的部分當做一個整體,引起語法錯誤
● 雙引號解釋轉(zhuǎn)義字符,單引號不解釋轉(zhuǎn)義字符,但是解釋'\和\\
● 能使單引號字符盡量使用單引號,單引號的效率比雙引號要高(因為雙引號要先遍歷一遍,判斷里面有沒有變量,然后再進行操作,而單引號則不需要判斷)
2、常用的超全局變量(8個)。
● $_GET ----->get傳送方式
● $_POST ----->post傳送方式
● $_REQUEST ----->可以接收到get和post兩種方式的值
--------------------------------------------------------------------------------
● $GLOBALS ----->所有的變量都放在里面
● $_FILE ----->上傳文件使用
● $_SERVER ----->系統(tǒng)環(huán)境變量
--------------------------------------------------------------------------------
● $_SESSION ----->會話控制的時候會用到
● $_COOKIE ----->會話控制的時候會用到
3、HTTP中POST、GET、PUT、DELETE方式的區(qū)別。
HTTP定義了與服務(wù)器交互的不同的方法,最基本的是POST、GET、PUT、DELETE,
與其比不可少的URL的全稱是資源描述符,我們可以這樣理解:url描述了一個網(wǎng)絡(luò)上資源,
而post、get、put、delete就是對這個資源進行增、刪、改、查的操作!
4、PHP介紹。
Hypertext Preprocessor----超文本預(yù)處理器
Personal Home Page 原始名稱
目標用途: 允許web開發(fā)人員快速編寫動態(tài)生成的web頁面,與其他頁面相比,PHP是將程序嵌入到HTML文檔中去執(zhí)行,效率比完全生成HTML編輯的CGI高很多
HTML: Hypertext Markup Language
創(chuàng)始人: 拉姆斯勒·勒多夫Rasmus Lerdorf,1968年生,加拿大滑鐵盧大學(xué)
勒多夫最開始是為了維護個人網(wǎng)頁,用prel語言寫了維護程序,之后又用c進行了重寫,最終衍生出php/fi
時間軸:
● 1995.06.08將PHP/FI公開釋出
● 1995 php2.0,加入了對MySQL的支持
● 1997 php3.0
● 2000 php4.0
● 2008 php5.0
● 由于php6.0沒有完全解決Unicode編碼,所以基本沒有生產(chǎn)線上的應(yīng)用,基本只是一款概念產(chǎn)品,很多功能已經(jīng)在php5.3.3和php5.3.4上實現(xiàn)
常見的IDE(Intergrated Development Environment): 集成開發(fā)環(huán)境
● Coda(mac)
● PHPStrom
● Adobe Dreamweaver
● NetBeans
常見文本編輯器,具備代碼高亮:
● NodePad++
● SublimeText
PHP優(yōu)勢
PHP特性:
● php獨特混合了C,Java,Prel以及PHP自創(chuàng)的語法
● 可以比CGI或者Prel更快速去執(zhí)行動態(tài)網(wǎng)頁,與其他變成語言相比,PHP是講程序嵌入到HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML編輯的CGI要高很多,所有的CGI都能實現(xiàn)
● 支持幾乎所有流行的數(shù)據(jù)庫以及操作系統(tǒng)
● PHP可以使用C,C++進行程序的擴展
PHP優(yōu)勢:
● 開放源代碼
● 免費性
● 快捷性
● 跨平臺強
● 效率高
● 圖形處理
● 面向?qū)ο?/p>
● 專業(yè)專注
PHP技術(shù)應(yīng)用:
● 靜態(tài)頁面生成
● 數(shù)據(jù)庫緩存
● 過程緩存
● div+css w3c標準
● 大負荷
● 分布式
● flex
● 支持MVC
● Smarty模塊引擎
PHP認證級別
● 初級 IFE:Index Front Engineer 前端工程師
● 中級 IPE:Index PHP Engineer PHP工程師
● 高級 IAE:Index Architecture Engineer 架構(gòu)工程師
5、echo、print_r、print、var_dump之間的區(qū)別。
* echo、print是php語句,var_dump和print_r是函數(shù)
* echo 輸出一個或多個字符串,中間以逗號隔開,沒有返回值是語言結(jié)構(gòu)而不是真正的函數(shù),因此不能作為表達式的一部分使用
* print也是php的一個關(guān)鍵字,有返回值 只能打印出簡單類型變量的值(如int,string),如果字符串顯示成功則返回true,否則返回false
* print_r 可以打印出復(fù)雜類型變量的值(如數(shù)組、對象)以列表的形式顯示,并以array、object開頭,但print_r輸出布爾值和NULL的結(jié)果沒有意義,因為都是打印"\n",因此var_dump()函數(shù)更適合調(diào)試
* var_dump() 判斷一個變量的類型和長度,并輸出變量的數(shù)值
6、HTTP狀態(tài)碼。
常見的HTTP狀態(tài)碼:
● 200 - 請求成功
● 301 - 資源(網(wǎng)頁等)被永久轉(zhuǎn)義到其他URL
● 404 - 請求的資源(網(wǎng)頁等)不存在
● 505 - 內(nèi)部服務(wù)器錯誤
HTTP狀態(tài)碼分類:
● 1** - 信息,服務(wù)器收到的請求,需要請求者繼續(xù)執(zhí)行操作
● 2** - 成功,操作被成功接收并處理
● 3** - 重定向,需要進一步的操作以完成請求
● 4** - 客戶端錯誤,請求包含語法錯誤或者無法完成請求
● 5** 服務(wù)器錯誤,服務(wù)器在處理請求的過程 中發(fā)生了錯誤
7、什么是魔術(shù)引號。
魔術(shù)引號是一個將自動將進入PHP腳本的數(shù)據(jù)進行轉(zhuǎn)義的過程,最好在編碼時不要轉(zhuǎn)義而在運行時根據(jù)需要而轉(zhuǎn)義
在一個項目中,魔術(shù)引號若是打開的話,所有的反斜線(\)、單引號(')、雙引號(")、NULL 字符都會被自動加上一個反斜線進行轉(zhuǎn)義,
這和 addslashes() 作用完全相同。
與之相關(guān)的函數(shù):set_magic_quotes_runtime、magic_quotes_gpc、addslashes、stripslashes。
8、如何獲取客戶端的ip(要求取得一個int)和服務(wù)器ip的代碼。
客戶端:$_SERVER["REMOTE_ADDR"];或者getenv('REMOTE_ADDR') ip2long進行轉(zhuǎn)換 服務(wù)器端:gethostbyname('www.baidu.com')
9、使用那些工具進行版本控制。
cvs,svn,git
10、語句include和require的區(qū)別是什么?為避免多次包含同一文件,可以用(?)語句代替他們。
● require是無條件包含,也就是如果一個流程里加入require,無論條件成立與否都會先執(zhí)行require,當文件不存在或者無法打開的時候,會提示錯誤,并且會終止程序執(zhí)行
● include有返回值,而require沒有(可能因為如此require的速度比include快),如果被包含的文件不存在的化,那么會提示一個錯誤,但是程序會繼續(xù)執(zhí)行下去
注意:包含文件不存在或者語法錯誤的時候require是致命的,而include不是
● require_once表示了只包含一次,避免了重復(fù)包含