6.null和undefined的區別?null是一個表示"無"的對象,轉為數值時為0;undefined是一個表示"無"的原始值,轉為數值時為NaN。undefined:(1)變量被聲明了,但沒有賦值時,就等于undefined。(2) 調用函數時,應該提供的參數沒有提供,該參數等于undefined。(3)對象沒有賦值的屬性,該屬性的值為undefined。(4)函數沒有返回值時,默認返回undefined。null:(1) 作為函數的參數,表示該函數的參數不是對象。(2) 作為對象原型鏈的終點。 7.new操作符具體干了什么呢?(1)創建一個空對象,并且 this 變量引用該對象,同時還繼承了該函數的原型。(2)屬性和方法被加入到 this 引用的對象中。(3)新創建的對象由 this 所引用,并且最后隱式的返回 this 。 8.JSON 的了解?JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它是基于JavaScript的一個子集。數據格式簡單, 易于讀寫, 占用帶寬小。格式:采用鍵值對,例如:{'age':'12', 'name':'back'} 9.call() 和 apply() 的區別和作用?apply()函數有兩個參數:第一個參數是上下文,第二個參數是參數組成的數組。如果上下文是null,則使用全局對象代替。如:function.apply(this,[1,2,3]);call()的第一個參數是上下文,后續是實例傳入的參數序列。如:function.call(this,1,2,3); 10.如何獲取UA?其他1.HTTP狀態碼知道哪些?100 Continue 繼續,一般在發送post請求時,已發送了http header之后服務端將返回此信息,表示確認,之后發送具體參數信息200 OK 正常返回信息201 Created 請求成功并且服務器創建了新的資源202 Accepted 服務器已接受請求,但尚未處理301 Moved Permanently 請求的網頁已永久移動到新位置。302 Found 臨時性重定向。303 See Other 臨時性重定向,且總是使用 GET 請求新的 URI。304 Not Modified 自從上次請求后,請求的網頁未修改過。400 Bad Request 服務器無法理解請求的格式,客戶端不應當嘗試再次使用相同的內容發起請求。401 Unauthorized 請求未授權。403 Forbidden 禁止訪問。404 Not Found 找不到如何與 URI 相匹配的資源。500 Internal Server Error 最常見的服務器端錯誤。503 Service Unavailable 服務器端暫時無法處理請求(可能是過載或維護)。2.你有哪些性能優化的方法?(1) 減少http請求次數:CSS Sprites, JS、CSS源碼壓縮、圖片大小控制合適;網頁Gzip,CDN托管,data緩存 ,圖片服務器。(2) 前端模板 JS+數據,減少由于HTML標簽導致的帶寬浪費,前端用變量保存Ajax請求結果,每次操作本地變量,不用請求,減少請求次數(3) 用innerHTML代替DOM操作,減少DOM操作次數,優化javascript性能。(4) 當需要設置的樣式很多時設置className而不是直接操作style。(5) 少用全局變量、緩存DOM節點查找的結果。減少IO讀取操作。(6) 避免使用CSS Expression(css表達式)又稱Dynamic properties(動態屬性)。(7) 圖片預加載,將樣式表放在頂部,將腳本放在底部 加上時間戳。3.什么叫優雅降級和漸進增強?優雅降級:Web站點在所有新式瀏覽器中都能正常工作,如果用戶使用的是老式瀏覽器,則代碼會檢查以確認它們是否能正常工作。由于IE獨特的盒模型布局問題,針對不同版本的IE的hack實踐過優雅降級了,為那些無法支持功能的瀏覽器增加候選方案,使之在舊式瀏覽器上以某種形式降級體驗卻不至于完全失效.漸進增強:從被所有瀏覽器支持的基本功能開始,逐步地添加那些只有新式瀏覽器才支持的功能,向頁面增加無害于基礎瀏覽器的額外樣式和功能的。當瀏覽器支持時,它們會自動地呈現出來并發揮作用。4.哪些常見操作會造成內存泄漏?內存泄漏指任何對象在您不再擁有或需要它之后仍然存在。垃圾回收器定期掃描對象,并計算引用了每個對象的其他對象的數量。如果一個對象的引用數量為 0(沒有其他對象引用過該對象),或對該對象的惟一引用是循環的,那么該對象的內存即可回收。setTimeout 的第一個參數使用字符串而非函數的話,會引發內存泄漏。閉包、控制臺日志、循環(在兩個對象彼此引用且彼此保留時,就會產生一個循環)5.線程與進程的區別一個程序至少有一個進程,一個進程至少有一個線程. 線程的劃分尺度小于進程,使得多線程程序的并發性高。 另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率。 線程在執行過程中與進程還是有區別的。每個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。從邏輯角度來看,多線程的意義在于一個應用程序中,有多個執行部分可以同時執行。但操作系統并沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。
HTML+CSS1.對WEB標準以及W3C的理解與認識標簽閉合、標簽小寫、不亂嵌套、提高搜索機器人搜索幾率、使用外 鏈css和js腳本、結構行為表現的分離、文件下載與頁面速度更快、內容能被更多的用戶所訪問、內容能被更廣泛的設備所訪問、更少的代碼和組件,容易維 護、改版方便,不需要變動頁面內容、提供打印版本而不需要復制內容、提高網站易用性;2.xhtml和html有什么區別HTML是一種基本的WEB網頁設計語言,XHTML是一個基于XML的置標語言最主要的不同:XHTML 元素必須被正確地嵌套。XHTML 元素必須被關閉。標簽名必須用小寫字母。XHTML 文檔必須擁有根元素。3.Doctype? 嚴格模式與混雜模式-如何觸發這兩種模式,區分它們有何意義? 用于聲明文檔使用那種規范(html/Xhtml)一般為 嚴格 過度 基于框架的html文檔加入XMl聲明可觸發,解析方式更改為IE5.5 擁有IE5.5的bug4.行內元素有哪些?塊級元素有哪些?CSS的盒模型?塊級元素:div p h1 h2 h3 h4 form ul行內元素: a b br i span input selectCss盒模型:內容,border ,margin,padding5.CSS引入的方式有哪些? link和@import的區別是?內聯 內嵌 外鏈 導入區別 :同時加載前者無兼容性,后者CSS2.1以下瀏覽器不支持Link 支持使用javascript改變樣式,后者不可6.CSS選擇符有哪些?哪些屬性可以繼承?優先級算法如何計算?內聯和important哪個優先級高?標簽選擇符 類選擇符 id選擇符繼承不如指定 Id>class>標簽選擇后者優先級高7.前端頁面有哪三層構成,分別是什么?作用是什么?結構層 Html 表示層 CSS 行為層 js8.css的基本語句構成是?選擇器{屬性1:值1;屬性2:值2;……}9.你做的頁面在哪些流覽器測試過?這些瀏覽器的內核分別是什么?Ie(Ie內核) 火狐(Gecko) 谷歌(webkit) opear(Presto)10.寫出幾種IE6 BUG的解決方法1.雙邊距BUG float引起的 使用display2.3像素問題 使用float引起的 使用dislpay:inline -3px3.超鏈接hover 點擊后失效 使用正確的書寫順序 link visited hover active4.Ie z-index問題 給父級添加position:relative5.Png 透明 使用js代碼 改6.Min-height 最小高度 !Important 解決’7.select 在ie6下遮蓋 使用iframe嵌套8.為什么沒有辦法定義1px左右的寬度容器(IE6默認的行高造成的,使用over:hidden,zoom:0.08 line-height:1px)11.標簽上title與alt屬性的區別是什么?Alt 當圖片不顯示是 用文字代表。Title 為該屬性提供信息12.描述css reset的作用和用途。Reset重置瀏覽器的css默認屬性 瀏覽器的品種不同,樣式不同,然后重置,讓他們統一13.解釋css sprites,如何使用。Css 精靈 把一堆小的圖片整合到一張大的圖片上,減輕服務器對圖片的請求數量14.瀏覽器標準模式和怪異模式之間的區別是什么?盒子模型 渲染模式的不同使用 window.top.document.compatMode 可顯示為什么模式15.你如何對網站的文件和資源進行優化?期待的解決方案包括:文件合并文件最小化/文件壓縮使用CDN托管緩存的使用16.什么是語義化的HTML?直觀的認識標簽 對于搜索引擎的抓取有好處17.清除浮動的幾種方式,各自的優缺點1.使用空標簽清除浮動 clear:both(理論上能清楚任何標簽,,,增加無意義的標簽)2.使用overflow:auto(空標簽元素清除浮動而不得不增加無意代碼的弊端,,使用zoom:1用于兼容IE)3.是用afert偽元素清除浮動(用于非IE瀏覽器)Javascript1.javascript的typeof返回哪些數據類型Object number function boolean underfind2.例舉3種強制類型轉換和2種隱式類型轉換?強制(parseInt,parseFloat,number)隱式(== – ===)3.split() join() 的區別前者是切割成數組的形式,后者是將數組轉換成字符串4.數組方法pop() push() unshift() shift()Push()尾部添加 pop()尾部刪除Unshift()頭部添加 shift()頭部刪除5.事件綁定和普通事件有什么區別6.IE和DOM事件流的區別1.執行順序不一樣、2.參數不一樣3.事件加不加on4.this指向問題7.IE和標準下有哪些兼容性的寫法Var ev = ev || window.eventdocument.documentElement.clientWidth || document.body.clientWidthVar target = ev.srcElement||ev.target8.ajax請求的時候get 和post方式的區別一個在url后面 一個放在虛擬載體里面有大小限制安全問題應用不同 一個是論壇等只需要請求的,一個是類似修改密碼的9.call和apply的區別Object.call(this,obj1,obj2,obj3)Object.apply(this,arguments)10.ajax請求時,如何解釋json數據使用eval parse 鑒于安全性考慮 使用parse更靠譜11.b繼承a的方法12.寫一個獲取非行間樣式的函數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.事件委托是什么讓利用事件冒泡的原理,讓自己的所觸發的事件,讓他的父元素代替執行!http://www.webasily.com/?p=78 例子可見此鏈接14.閉包是什么,有什么特性,對頁面有什么影響閉包就是能夠讀取其他函數內部變量的函數。http://blog.csdn.net/gaoshanwudi/article/details/7355794 此鏈接可查看(問這個問題的不是一個公司)15.如何阻止事件冒泡和默認事件canceBubble return false16.添加 刪除 替換 插入到某個接點的方法obj.appendChidl()obj.innersetBeforeobj.replaceChildobj.removeChild17.解釋jsonp的原理,以及為什么不是真正的ajax動態創建script標簽,回調函數Ajax是頁面無刷新請求數據操作18.javascript的本地對象,內置對象和宿主對象本地對象為array obj regexp等可以new實例化內置對象為gload Math 等不可以實例化的宿主為瀏覽器自帶的document,window 等19.document load 和document ready的區別Document.onload 是在結構和樣式加載完才執行jsDocument.ready原生種沒有這個方法,jquery中有 $().ready(function)20.”==”和“===”的不同前者會自動轉換類型后者不會21.javascript的同源策略一段腳本只能讀取來自于同一來源的窗口和文檔的屬性,這里的同一來源指的是主機名、協議和端口號的組合22.編寫一個數組去重的方法function oSort(arr){var result ={};var newArr=[];for(var i=0;i{if(!result[arr]){newArr.push(arr)result[arr]=1}}return newArr}來自IT公司面試手冊[HTML && CSS]1.Doctype嚴格模式與混雜模式-如何觸發這兩種模式,區分它們有何意義?嚴格模式:使用此類型的網頁,瀏覽器解析將相對嚴格,不允許使用任何表現樣式的標識和屬性,比如在元素中直接使用background-color背景色屬性。混雜模式:瀏覽器對XHTML的解析較為寬松。允許使用4.01中的標簽,但必須符合XHTML的語法。2:行內元素有哪些?塊級元素有哪些?CSS的盒模型?行內元素:span,a,var ,em,input,img,img,textarea,var,em,strong,select,塊級標簽:div,p,h1-h3,ul,ol,dl,li,dd,dt,table,td,tr,CSS的盒模型:CSS布局中的每一個元素,在瀏覽器的解析中,都被當做一個盒狀物。3.CSS引入的方式有哪些? link和@import的區別是?CSS引入的方式在html文檔的head部分加入:在html文檔的head部分直接寫入css文檔。直接在html標簽里寫入對這個標簽的css控制測試信息link和@import的區別是link寫在html頁面中,@import寫在CSS頁面中4.CSS選擇符有哪些?哪些屬性可以繼承?優先級算法如何計算?內聯和important哪個優先級高?CSS選擇符: 類選擇器 、 標簽名選擇器、 ID選擇器 、 后代選擇器(派生選擇器)、 群組選擇器可以繼承: 類選擇器 、 標簽名選擇器、 后代選擇器(派生選擇器)、群組選擇器優先級算法:標簽內直接定義:1000ID選擇器:100類選擇器 :10標簽名選擇器:1內聯和important中,important優先級高5:前端頁面有哪三層構成,分別是什么?作用是什么?結構層;主要指DOM節點;HTML/XHTML樣式層;主要是指頁面渲染;CSS腳本層:主要指頁面動畫效果;JS/AS6:css的基本語句構成是?選擇符、屬性、值8:你做的頁面在哪些流覽器測試過?這些瀏覽器的內核分別是什么?經常遇到的瀏覽器的兼容性有哪些?怎么會出現?解決方法是什么?IE6、7、8、FF、Opear、Safari、Chrome、MaxthonTrident:Windows 下的 IE 瀏覽器使用的內核代號。除 IE 外,眾多的 IE Shell(如 Maxthon )都使用這個內核。Gecko:Mozilla Firefox 瀏覽器使用的內核代號。Presto:Opera 瀏覽器使用的內核代號,這是目前公認網頁瀏覽速度最快的瀏覽器內核。KHTML/WebCore: Konqueror/Safari 瀏覽器使用的內核代號。經常遇到的瀏覽器兼容問題:1.在有的瀏覽器中,默認字體大小為12px,所以在設字體大小的時候,最小設為12px,如果在做的過程中,發現字體小于12,可直接作為圖片使用2.a標簽對里不能嵌套a標簽對3.若給a標簽內的內容樣式加上樣式,需要設置display:block;(在IE中如果設置寬高會自動變成塊,在FF中則不會),但如果設置了float屬性,就不需要設置display:block。4.ul,ol在FF默認情況下,有list-style-type樣式和padding值,dl在IE和FF默認情況下,有padding值,所以應該事先聲明ul,li,ol,dl,dd,dd{margin:0;padding:0}。5.作為外部 wrapper 的 div 不要定死高度, 最好還加上 overflow: hidden.以達到高度自適應6.關于手形光標. cursor: pointer. 而hand 只適用于 IE.7.css布局中的居中問題:在父級元素定義TEXT-ALIGN: center;這個的意思就是在父級元素內的內容居中;對于IE這樣設定就已經可以了。但在mozilla中不能居中。解決辦法就是在子元素定義時候設定時再加上“margin-right: auto;margin-left: auto; ”需要說明的是,如果你想用這個方法使整個頁面要居中,建議不要套在一個DIV里,你可以依次拆出多個div,只要在每個拆出的div里定義margin-right: auto;margin-left: auto; 就可以了。8.浮動ie產生的雙倍距離#box{ float:left; width:100px; margin:0 0 0 100px; //這種情況之下IE會產生200px的距離,這時需要設置display:inline; //使浮動忽略}9.如何居中一個浮動元素?對其設置margin:x auto;10.有沒有關注HTML5和CSS3?如有請簡單說一些您對它們的了解情況!有,HTML5的是目前正在為未來的HTML標準的主要修訂的發展。其前任一樣,4.01和XHTML 1.1的HTML,HTML5的是一個結構和提交萬維網內容的標準。新標準結合了諸如視頻播放,拖動和放下以前曾在第三方瀏覽器插件依賴例如Adobe Flash,微軟的Silverlight的功能,和谷歌齒輪。12:如果讓你來制作一個訪問量很高的大型網站,你會如何來管理所有CSS文件、JS與圖片?把所有的CSS文件都放入一個樣式表中,通過把所有的腳本放到一個文件中來減少HTTP請求的方法。js文件也采用同樣的方法。把所有的背景圖像都放到一個圖片文件中,然后通過CSS的background-image和background-position屬性來顯示圖片的不同部分。14:你對前端界面工程師這個職位是怎么樣理解的?它的前景會怎么樣?前端界面工程師:1. 與交互設計師、視覺設計師協作,根據設計圖完成頁面制作。 2. 維護及優化網站前端性能。前景: 長期以來,國內前端開發在整個軟件開發行業內占得比重較小,發展較晚。網站也多傾向于贏利最大化而輕視用戶體驗。前后端比例懸殊大。近幾年來,隨著 以用戶為中心 的思想普及發展。前端開發呈現出強勁的發展態勢,前端開發人員在項目中的重要性日益突出。前端開發人員呈現出嚴重的人員短缺現象。[Javascript]1:js是什么,js和html 的開發如何結合?js是一種基于對象和事件驅動,并具有安全性的腳本語言。可以html的三個地方編寫js腳本語言:一是在網頁文件的標簽對中直接編寫腳本程序代碼;二是將腳本程序代碼放置在一個單獨的文件中,在網頁文件中引用這個腳本程序語言;三是將腳本程序代碼作為某個元素的事件屬性值或超鏈接的href屬性值。div{margin: 0;padding: 0;border:1px red solid;}2.怎樣添加、移除、移動、復制、創建和查找節點添加:append刪除:remove移動:復制:創建:create查找:(1)創建新節點 createDocumentFragment() //創建一個DOM片段 createElement_x_x() //創建一個具體的元素 createTextNode() //創建一個文本節點(2)添加、移除、替換、插入 a() removeChild() replaceChild() insertBefore()(3)查找 getElementsByTagName_r() //通過標簽名稱 getElementsByName() //通過元素的Name屬性的值 getElementById() //通過元素Id,唯一性3.怎樣使用事件以及IE和DOM事件模型之間存在哪些主要差別4.面向對象編程:b怎么繼承a5.看看下面alert的結果是什么view sourceprint?1.function b(x, y, a) {.arguments[2] = 10;.alert(a);}b(1, 2, 3);如果函數體改成下面,結果又會是什么?a = 10;alert(arguments[2] );6.請編寫一個JavaScript函數 parseQueryString,它的用途是把URL參數解析為一個對象var obj = parseQueryString(url);alert(obj.key0) // 輸出07.ajax是什么? ajax的交互模型? 同步和異步的區別? 如何解決跨域問題?8.什么是閉包?下面這個ul,如何點擊每一列的時候alert其index?這是第一條這是第二條這是第三條閉包是可以包含自由(未綁定)變量的代碼塊;這些變量不是在這個代碼塊或者任何全局上下文中定義的,而是在定義代碼塊的環境中定義。9.最近看的一篇Javascript的文章是?10.常使用的庫有哪些?常用的前端開發工具?開發過什么應用或組件?最常用的庫:jquery-1.4.2.min.js常用的前端開發工具:firebug、photoshop、editplus、取色器、色板、eclipse11.說說YSlow(可以詳細一點)yslow是一個工具,也可以理解成是一個插件,是基于Mozilla Firefox上firebug插件的一個插件。它的出現的主要目的就是檢測我們的頁面性能。它讓用戶可以就近取得所需的內容,解決網絡擁擠的狀況,提高用戶訪問網站的響應速度;其次,yahoo在ETags配置上也有獨特之處,聲明過期,就是說,用戶從服務器取數據的時候,如果文件變化了,給他反饋新的文件,如果文件沒有變化,只需告訴客戶端沒有變化即可,不必再把文件取回來,這樣就節省了大量的網絡帶寬和資源。另外,只要將那些在加載過程中要執行的腳本放到底部,就可以實現最大的下載并行。小說網對其評價:(a) 從樣式表著手,避免CSS表達式。CSS表達式需要很多資源,有時甚至會造成頁面假死。(b) 緩存一下不常修改的文件,并開啟 GZIP壓縮,減少網絡傳輸時間(c) 減少DNS查找。YSlow認為一個頁面上2個以內的域名比較合理。有些網站掛了不少統計代碼,或者廣告代碼。統計拖累用戶速度、廣告影響用戶視覺。(d) 避免重定向(跳轉),我們在給鏈接地址的時候,一般會把鏈接地址寫成 http://xxx.cn/xxx 或者 http://xxx.cn/xxx/ ,有區別嗎?有!服務器如果接收到的URL是http://xxx.cn/xxx,它會自動重定向到http://xxx.cn/xxx/,雖然進入的都 是同一個頁面,但是前者比后者多走了一步,重定向,顯然多多少少浪費了一點時間。Google 對其評價:多數人可能認為GOOGLE沒什么值得借鑒的,畢竟整站就那么幾行代碼。但是這幾行代碼,每天要承受過億的用戶訪問量,在如此大的壓力下,運行流暢,有很大一個因素取決于Minify JS。通過查看它的源代碼可以發現,google不僅將JS進行了壓縮,連頁面代碼中也沒有不必要的空格和符號,使用了最短最簡潔的變量名。聯系到開發方 面,建議大家采用yuicompressor,在調試時使用便于開發的模式,調試完成后直接壓縮并發布。讓用戶得到最快捷的用戶體驗。百度:1、JavaScript有哪幾種數據類型2、中alt和tittle的區別3、下面css標簽在JavaScript中調用應如何拼寫,border-left-color,-moz-4、動態打印 yyyy-mm-dd hh:mm:ss5、如何提高網頁的運行速度6、JavaScript中如何對一個對象進行深度clone7、flash中ActionScript2.0和ActionScript3.0面向對象的異同答案見http://www.lihaihong.com/article/86.html第一題編寫一個方法 求一個字符串的字節長度第二題如何控制alert中的換行第三題解釋document.getElementByIdx_x_x_x(“ElementID”).style.fontSize=”1.5em”第四題將一個類似圖中的效果分離成css和html第五題按照格式 xxxx年xx月xx日xx時xx分xx秒動態顯示時間 要求不足10的補0第六題編寫一個方法 去掉一個數組的重復元素第七題說出3條以上ff和ie的腳本兼容問題第八題按要求寫一個簡單的ajax示例 簡單的沒意義 就不寫了騰訊:1.請實現,鼠標點擊頁面中的任意標簽,alert該標簽的名稱.(注意兼容性)HTML && CSS1.Doctype? 嚴格模式與混雜模式-如何觸發這兩種模式,區分它們有何意義? 行內元素有哪些?塊級元素有哪些?CSS的盒模型?2.CSS引入的方式有哪些? link和@import的區別?3.CSS選擇符有哪些?哪些屬性可以繼承?優先級?內聯和important哪個優先級高?4.經常遇到的瀏覽器的兼容性有哪些?怎么會出現?解決方法是什么?5.如何居中一個浮動元素?6.HTML5和CSS3的了解情況7.你怎么來實現下面這個設計圖Javascript1.怎樣添加、移除、移動、復制、創建和查找節點(1)創建新節點 createDocumentFragment() //創建一個DOM片段 createElement_x_x() //創建一個具體的元素 createTextNode() //創建一個文本節點(2)添加、移除、替換、插入 a() removeChild() replaceChild() insertBefore()(3)查找 getElementsByTagName_r() //通過標簽名稱 getElementsByName() //通過元素的Name屬性的值 getElementById() //通過元素Id,唯一性2.怎樣使用事件以及IE和DOM事件模型之間存在哪些主要差別3.面向對象編程:b怎么繼承a4.看看下面alert的結果是什么function b(x, y, a) {arguments[2] = 10;alert(a);}b(1, 2, 3);如果函數體改成下面,結果又會是什么?a = 10;alert(arguments[2] );5.請編寫一個JavaScript函數 parseQueryString,它的用途是把URL參數解析為一個對象,如:var url = ”http://www.taobao.com/index.php?key0=0&key1=1& key2=2…..”var obj = parseQueryString(url);alert(obj.key0) // 輸出0(來自淘寶網校園招聘筆試題)6.ajax是什么? ajax的交互模型? 同步和異步的區別? 如何解決跨域問題?7.什么是閉包?下面這個ul,如何點擊每一列的時候alert其index?這是第一條這是第二條這是第三條8.最近看的一篇Javascript的文章9.你如何去實現這個Tabview10.常使用的庫有哪些?常用的前端開發工具?開發過什么應用或組件?11.性能-Yslow[HTML && CSS]1.Doctype? 嚴格模式與混雜模式-如何觸發這兩種模式,區分它們有何意義?2:行內元素有哪些?塊級元素有哪些?CSS的盒模型?3.CSS引入的方式有哪些? link和@import的區別是?4.CSS選擇符有哪些?哪些屬性可以繼承?優先級算法如何計算?內聯和important哪個優先級高?5:前端頁面有哪三層構成,分別是什么?作用是什么?6:css的基本語句構成是?8:你做的頁面在哪些流覽器測試過?這些瀏覽器的內核分別是什么?經常遇到的瀏覽器的兼容性有哪些?怎么會出現?解決方法是什么?9.如何居中一個浮動元素?10.有沒有關注HTML5和CSS3?如有請簡單說一些您對它們的了解情況!11.你怎么來實現下面這個設計圖,主要講述思路 (效果圖省略)13:如果讓你來制作一個訪問量很高的大型網站,你會如何來管理所有CSS文件、JS與圖片?14:你對前端界面工程師這個職位是怎么樣理解的?它的前景會怎么樣?重申一下,上述這些知識點都應該是你應該“想都不用想”的東西。我一開始問的所有問題都是想摸清你對所有這些領域知識的掌握程度。雖然上面列出的這些知識點并沒有面面俱到,但我覺得你至少應該掌握這些,才有可能跟我坐到一間辦公室里來。少量提問我非常贊同面試者問的問題越少越好。反復問應聘者各種問題既不公平,也很無聊。我在任何一次面試中,通常只問三個大問題,但每個問題又會涉及我所能想到的多個方面?;卮鹈總€大問題一般要經過幾個步驟,這樣我就可以在每個步驟中穿插著問一些小問題。比如說:現在有一個正顯示著Yahoo!股票價格的頁面。頁面上有一個按鈕,你可以單擊它來刷新價格,但不會重新加載頁面。請你描述一下實現這個功能的過程,假設服務器會負責準備好正確的股票價格數據。這個問題牽扯到一組我想要考察的基本知識點:DOM結構、DOM操作、事件處理、XHR和JSON。如果我要求你對換一種處理股票價格的方式,或者讓你在頁面中顯示其他信息,就可以把更多的知識點包括進來。對于經驗比較豐富應聘者,我也可以自如地擴展要考察的知識范圍,最簡單像JOSN與XML的區別、安全問題、容量問題,等等。我還希望應聘者給出的任何解決方案中都不要使用庫。我想看到最原生態的代碼,你就當頁面中沒有包含任何庫。你說你對哪個庫了解多少多少,但我不能把關于庫的知識作為評判能力的因素,因為庫是會隨時間變化的。我需要的是真正理解庫背后的機制,特別是能夠徒手寫出一個自己的庫的人。解決問題做為一名前端工程師,最值得高興的事莫過于解決同一個問題會有很多種不同的方法,而你要做的就是找出最合適的方法來。我在提問的時候,經常會在應聘者解釋完一種方法后問他們還有沒有第二種方法。此時我會跟他們說,假設你的這個方法由于種種原因被否決了,那么你還能不能給出另一種方法。這樣做可以達到兩個目的。首先,可以測試出他們是否在毫無意義地復述書本中的東西。不能不承認,某些人確實有過目不忘的天賦,聽他們在那里滔滔不絕地講,你會覺得他們什么都明白??墒牵灰桓@些人談到怎么查找方案無效的原因,以及能否拿出一個新方案來,他們往往就傻眼了。這時候,如果我聽到“我不明白這個方案為什么不夠好”之類的反問,心里立刻就明白我的問題已經超出了他們的能力范圍,而他們只是想拿自己死記硬背的結論來蒙混過關。其次,可以測試出他們已經掌握的(還是那句話,“想都不用想”)瀏覽器技術知識。如果他們對瀏覽器平臺的核心知識有較好的理解,想出解決同一問題的不同方案根本沒有那么難。對一名前端工程師來說,這絕對是最重要的能力。前端工程師在工作中遇到本該如此卻并未如此的難題(說你啦,IE6),應該說是一件很平常的事。一個方案無效就無計可施的人,做不了前端工程師。考核應聘者解決問題能力的另一層原因,與我的個人喜好有關。在搞清楚應聘者知道什么不知道什么之后,我就會想著問一個他們知識領域之外的問題。這樣做的目的,就是想看看他們怎樣運用已有的知識解決新問題。在解決問題的每一步,我也準備了一些提示,以防有人會卡殼打艮(在我面前15分鐘一言不發,對我評價這個人毫無幫助)。我真正感興趣的,是他們能夠從上一步前進到下一步。我希望看到一個人就在我眼前學到新知識。注意:所有問題都與瀏覽器技術相關。我不相信出幾道抽象的邏輯題,就能夠考出某人解決Web技術問題的能力。在我看來,這無異于讓素描大師畫肖像(或者讓劉翔跟博爾特同場競技),沒有意義,也得不到任何有價值的信息。有激情要成為一名優秀的前端工程師,最重要的莫過于對自己做的事要有激情。我們技能都不是從學校中或者從研討會上學來的,因此前端工程師必須具備自學能力。瀏覽器技術的變化可謂日新月異,所以也只有不斷提升自己的技能才做得到與時俱進。我雖然不能強迫誰必須多看博客、不斷學習,但想應聘前端工程師的人恐怕還是必須這么做的。你怎么知道誰對這種工作有沒有激情?實際上非常簡單。我只問一個簡單的問題:“目前你對什么Web技術最感興趣?”這個問題永遠不會過期,而且也幾乎不可能出錯……除非你答不上來。就眼下來說,我希望你對這個問題給出的技術中包括WebSocket、HTML、WebGL、客戶端數據庫,等等。只有對Web開發充滿激情的人,才會堅持不懈地學習新知識、掌握新技能;這些人才是我真正想要的。當然,我會讓他們詳細解釋自己提到的技術,以保證他們不是隨口說了幾個時髦的新詞匯。最后一點計算機科學或者Web設計方面的知識當然也有用,但那都是基本知識之外的東西。只要基本知識在那兒了,一切就都有了基礎,想擴充知識面也不難??墒牵绻鹊秸缴习嘁院螅€得從頭學習基本技能,那種難度是不可同日而語的。另外,高級前端工程師與一般工程師相比,肯定需要掌握更多的技能。而面試幾乎沒有經驗大學畢業生,同樣也會有一套完全不同的程序。我在這篇文章里列出來的都是一些最基本的東西。對于那些還沒有多少面試經驗的人,我總是喜歡告訴他們,面試完了只要問自己一個問題就行:你想以后跟這個人在一起共事嗎?如果不管為什么,回答是不,那就是不。面試前端工程師對我來說是一件非常有意思的事,因為面試過程很大程度上也是自我提升的過程。無論大公司還是小公司,之所以在如何招聘到真正有能力的前端工程師方面會遇到同樣的問題,就是因為負責招聘的那些人不知道自己公司需要什么樣的人,結果問問題時也問不到點子上。經過這幾年在行業里的摸索,我總結出了自己的一套很有效的面試前端工程的方法。有的應聘者說我不好對付,但留給他們這樣的印象也并非我所愿。我覺得之所以他們說我不好對付,主要是因為我問他們問題時問得太細了。以前我曾專門寫過一些東西,告訴應聘者怎么才能通過我的面試(Surviving an interview with me)以及優秀的前面工程師應該具備什么樣的素質(What makes a good front end engineer?),而我的面試可以說完全是按照那兩篇文章的標準進行的。我不會問一些特別偏門的問題,也不認為出幾道邏輯題就能考出人的真實水平。我唯一的想法就是確定你能否勝任我們要招的這個職位。為此,我需要簡單地考察如下幾個方面?;局R我們生活在互聯網時代,你想知道的任何事情幾乎都能在15分鐘內找到相關信息??墒?,能找到信息并不等于你會使用它。我認為所有前端工程師至少都應該掌握某些基本的知識,才能有效地完成自己的工作。如果一遇到問題,就停下工作上網四處搜索解決方案,怎么可能保證按期完成工作呢?聽聽,還有誰在說“我不知道,但我可以上網搜到?!闭堖@些同學把手舉起來,讓大家認識一下(immediately raises a flag for me.)。下面我列出一些基本的知識點,這些都是我認為一名前端工程師(無論工作年頭長短)在沒有任何外來幫助的情況應該知道的。DOM結構——兩個節點之間可能存在哪些關系以及如何在節點之間任意移動。DOM操作——怎樣添加、移除、移動、復制、創建和查找節點。事件——怎樣使用事件以及IE和DOM事件模型之間存在哪些主要差別。xmlhttpRequest——這是什么、怎樣完整地執行一次GET請求、怎樣檢測錯誤。嚴格模式與混雜模式——如何觸發這兩種模式,區分它們有何意義。盒模型——外邊距、內邊距和邊框之間的關系,IE 8以下版本的瀏覽器中的盒模型有什么不同。塊級元素與行內元素——怎么用CSS控制它們、它們怎樣影響周圍的元素以及你覺得應該如何定義它們的樣式。浮動元素——怎么使用它們、它們有什么問題以及怎么解決這些問題。HTML與XHTML——二者有什么區別,你覺得應該使用哪一個并說出理由。JSON——它是什么、為什么應該使用它、到底該怎么使用它,說出實現細節來。重申一下,上述這些知識點都應該是你應該“想都不用想”的東西。我一開始問的所有問題都是想摸清你對所有這些領域知識的掌握程度。雖然上面列出的這些知識點并沒有面面俱到,但我覺得你至少應該掌握這些,才有可能跟我坐到一間辦公室里來。少量提問我非常贊同面試者問的問題越少越好。反復問應聘者各種問題既不公平,也很無聊。我在任何一次面試中,通常只問三個大問題,但每個問題又會涉及我所能想到的多個方面?;卮鹈總€大問題一般要經過幾個步驟,這樣我就可以在每個步驟中穿插著問一些小問題。比如說:現在有一個正顯示著Yahoo!股票價格的頁面。頁面上有一個按鈕,你可以單擊它來刷新價格,但不會重新加載頁面。請你描述一下實現這個功能的過程,假設服務器會負責準備好正確的股票價格數據。這個問題牽扯到一組我想要考察的基本知識點:DOM結構、DOM操作、事件處理、XHR和JSON。如果我要求你對換一種處理股票價格的方式,或者讓你在頁面中顯示其他信息,就可以把更多的知識點包括進來。對于經驗比較豐富應聘者,我也可以自如地擴展要考察的知識范圍,最簡單像JOSN與XML的區別、安全問題、容量問題,等等。我還希望應聘者給出的任何解決方案中都不要使用庫。我想看到最原生態的代碼,你就當頁面中沒有包含任何庫。你說你對哪個庫了解多少多少,但我不能把關于庫的知識作為評判能力的因素,因為庫是會隨時間變化的。我需要的是真正理解庫背后的機制,特別是能夠徒手寫出一個自己的庫的人。解決問題做為一名前端工程師,最值得高興的事莫過于解決同一個問題會有很多種不同的方法,而你要做的就是找出最合適的方法來。我在提問的時候,經常會在應聘者解釋完一種方法后問他們還有沒有第二種方法。此時我會跟他們說,假設你的這個方法由于種種原因被否決了,那么你還能不能給出另一種方法。這樣做可以達到兩個目的。首先,可以測試出他們是否在毫無意義地復述書本中的東西。不能不承認,某些人確實有過目不忘的天賦,聽他們在那里滔滔不絕地講,你會覺得他們什么都明白??墒牵灰桓@些人談到怎么查找方案無效的原因,以及能否拿出一個新方案來,他們往往就傻眼了。這時候,如果我聽到“我不明白這個方案為什么不夠好”之類的反問,心里立刻就明白我的問題已經超出了他們的能力范圍,而他們只是想拿自己死記硬背的結論來蒙混過關。其次,可以測試出他們已經掌握的(還是那句話,“想都不用想”)瀏覽器技術知識。如果他們對瀏覽器平臺的核心知識有較好的理解,想出解決同一問題的不同方案根本沒有那么難。對一名前端工程師來說,這絕對是最重要的能力。前端工程師在工作中遇到本該如此卻并未如此的難題(說你啦,IE6),應該說是一件很平常的事。一個方案無效就無計可施的人,做不了前端工程師。考核應聘者解決問題能力的另一層原因,與我的個人喜好有關。在搞清楚應聘者知道什么不知道什么之后,我就會想著問一個他們知識領域之外的問題。這樣做的目的,就是想看看他們怎樣運用已有的知識解決新問題。在解決問題的每一步,我也準備了一些提示,以防有人會卡殼打艮(在我面前15分鐘一言不發,對我評價這個人毫無幫助)。我真正感興趣的,是他們能夠從上一步前進到下一步。我希望看到一個人就在我眼前學到新知識。注意:所有問題都與瀏覽器技術相關。我不相信出幾道抽象的邏輯題,就能夠考出某人解決Web技術問題的能力。在我看來,這無異于讓素描大師畫肖像(或者讓劉翔跟博爾特同場競技),沒有意義,也得不到任何有價值的信息。有激情要成為一名優秀的前端工程師,最重要的莫過于對自己做的事要有激情。我們技能都不是從學校中或者從研討會上學來的,因此前端工程師必須具備自學能力。瀏覽器技術的變化可謂日新月異,所以也只有不斷提升自己的技能才做得到與時俱進。我雖然不能強迫誰必須多看博客、不斷學習,但想應聘前端工程師的人恐怕還是必須這么做的。你怎么知道誰對這種工作有沒有激情?實際上非常簡單。我只問一個簡單的問題:“目前你對什么Web技術最感興趣?”這個問題永遠不會過期,而且也幾乎不可能出錯……除非你答不上來。就眼下來說,我希望你對這個問題給出的技術中包括WebSocket、HTML、WebGL、客戶端數據庫,等等。只有對Web開發充滿激情的人,才會堅持不懈地學習新知識、掌握新技能;這些人才是我真正想要的。當然,我會讓他們詳細解釋自己提到的技術,以保證他們不是隨口說了幾個時髦的新詞匯。最后一點計算機科學或者Web設計方面的知識當然也有用,但那都是基本知識之外的東西。只要基本知識在那兒了,一切就都有了基礎,想擴充知識面也不難??墒?,如果等到正式上班以后,還得從頭學習基本技能,那種難度是不可同日而語的。另外,高級前端工程師與一般工程師相比,肯定需要掌握更多的技能。而面試幾乎沒有經驗大學畢業生,同樣也會有一套完全不同的程序。我在這篇文章里列出來的都是一些最基本的東西。對于那些還沒有多少面試經驗的人,我總是喜歡告訴他們,面試完了只要問自己一個問題就行:你想以后跟這個人在一起共事嗎?如果不管為什么,回答是不,那就是不。前端開發工程師面試題 Javascript1. 要動態改變層中內容可以使用的方法有(AB )a)innerHTMLb)innerTextc)通過設置層的隱藏和顯示來實現d)通過設置層的樣式屬性的display屬性2. 當按鍵盤A時,使用onKeyDown事件打印event.keyCode的結果是(A )a)65b)13c)97d)373. 在javascript里,下列選項中不屬于數組方法的是(B);a)sort()b)length()c)concat()d)reverse()4. 下列哪一個選項可以用來檢索被選定的選項的索引號?(B)a)disabledb)selectedIndexc)optiond)multiple5. 希望圖片具有”提交”按鈕同樣的功能,該如何編寫表單提交?(A )a)在圖片的onClick事件中手動提交b)在圖片上添加onSubmit事件c)在圖片的onSubmit事件中手動提交d)在表單中自動提交6. 使div層和文本框處在同一行的代碼正確的是(D );a)b)c)d)7. 下列選項中,描述正確的是(選擇兩項) 。( AD )a)options.add(new Option(‘a’,'A’))可以動態添加一個下拉列表選項b)option.add(new Option(‘a’,'A’))可以動態添加一個下拉列表選項c)new Option(‘a’,'A’)中’a'表示列表選項的值,’A'用于在頁面中顯示d)new Option(‘a’,'A’)中’A'表示列表選項的值,’a'用于在頁面中顯示8. 、 var emp = new Array(3);for(var i in emp)以下答案中能與for循環代碼互換的是: (選擇一項)。(D )A for(var i =0; iB for(var i =0; iC for(var i =0; iD for(var i =0; i9. 制作級聯菜單功能時調用的是下拉列表框的(A )事件。a)onChangeb)onFocusc)selectedd)onClick10. 下列聲明數組的語句中,錯誤的選項是( C )。a)Var arry= new Array()b)Var arry=new Array(3)c)Var arry[]=new Array(3)(4)d)Var arry=new Array(‘3’,’4’)11. 下列屬性哪一個能夠實現層的隱藏?(C )a)display:falsb)display:hiddenc)display:noned)display:” ”12. 下列哪一個選項不屬于document對象的方法?(D )a)focus()b)getElementById()c)getElementsByName()d)bgColor()13. 下列哪項是按下鍵盤事件(AB )a)onKeyDownb)onKeyPressc)keyCoded)onMouseOver14. javascript進行表單驗證的目的是(B )a)把用戶的正確信息提交給服務器b)檢查提交的數據必須符合實際c)使得頁面變得美觀、大方d)減輕服務器端的壓力15. 、 display屬性值的常用取值不包括(C )a)inlineb)blockc)hiddend)none16. 以下有關pixelTop屬性與top屬性的說法正確的是。(D )a)都是Location對象的屬性b)使用時返回值都是字符串c)都是返回以像素為單位的數值d)以上都不對17. 使用open方法打開具有瀏覽器工具條,地址欄,菜單欄的窗口,下列選項正確的是__D__a)open("x.html","HI","toolbas=1,scrollbars=1,status=1");b)open("HI","scrollbars=1,location=1,status=1");c)open("x.html","status=yes,menubar=1,location=1");d)open("x.html","HI","toolbas=yes,menubar=1,location=1");18. 下面關閉名為mydiv的層的代碼正確的是(C )a)document.getElementByIdx_x_x_x(mydiv).style.display="none";b)document.getElementByIdx_x_x_x("mydiv").style.display=none;c)document.getElementByIdx_x_x_x("mydiv").style.display="none";d)document.getElementByIdx_x_x_x("mydiv").style.display=="none";19. 為什么要使用Div+CSS布局形式與內容分離大大減少頁面代碼,提高頁面瀏覽速度結構清晰,有利于SEO縮短改版時間, 布局更方便一次設計,多次使用20. Block元素的特點是什么?哪些元素默認為Block元素總是在新行上開始;高度,行高以及頂和底邊距都可控制;寬度缺省是它的容器的100%,除非設定一個寬度是塊元素的有:,,,, 和21. 、 inline元素的特點是什么?哪些元素屬于inline元素?和其他元素都在一行上;高,行高及頂和底邊距不可改變;寬度就是它的文字或圖片的寬度,不可改變。
內聯元素(行內元素)內聯元素(inline element)* a - 錨點* abbr - 縮寫* acronym - 首字* b - 粗體(不推薦)* bdo - bidi override* big - 大字體* br - 換行* cite - 引用* code - 計算機代碼(在引用源碼的時候需要)* dfn - 定義字段* em - 強調* font - 字體設定(不推薦)* i - 斜體* img - 圖片* input - 輸入框* kbd - 定義鍵盤文本* label - 表格標簽* q - 短引用* s - 中劃線(不推薦)* samp - 定義范例計算機代碼* select - 項目選擇* small - 小字體文本* span - 常用內聯容器,定義文本內區塊* strike - 中劃線* strong - 粗體強調* sub - 下標* sup - 上標* textarea - 多行文本輸入框* tt - 電傳文本* u - 下劃線* var - 定義變量
塊元素(block element)* address - 地址* blockquote - 塊引用* center - 舉中對齊塊* dir - 目錄列表* div - 常用塊級容易,也是css layout的主要標簽* dl - 定義列表* fieldset - form控制組* form - 交互表單* h1 - 大標題* h2 - 副標題* h3 - 3級標題* h4 - 4級標題* h5 - 5級標題* h6 - 6級標題* hr - 水平分隔線* isindex - input prompt* menu - 菜單列表* noframes - frames可選內容,(對于不支持frame的瀏覽器顯示此區塊內容* noscript - )可選腳本內容(對于不支持script的瀏覽器顯示此內容)* ol - 排序表單* p - 段落* pre - 格式化文本* table - 表格* ul - 非排序列表22. 、 javascript中表達式parseInt(“X8X8”)+paseFloat(‘8’)的結果是什么?( C)a)8+8b)88c)16d)“8”+’823. String對象的方法不包括(C )a)charAt();b)substring()c)lengthd)toUpperCase()24. 關于setTimeout(“check”,10)中說法正確的是( D)a)程序循環執行10次b)Check函數每10秒執行一次c)10做為參數傳給函數checkd)Check函數每10毫秒執行一次25. 以下哪個單詞不屬于javascript關鍵字:(C)a)withb)parentc)classd)void 前言 本文總結了一些優質的前端面試題(多數源于網絡),初學者閱后也要用心鉆研其中的原理,重要知識需要系統學習,透徹學習,形成自己的知識鏈。萬不可投機取巧,只求面試過關是錯誤的!面試有幾點需注意:(來源程劭非老師 github:@wintercn)面試題目: 根據你的等級和職位變化,入門級到專家級:范圍↑、深度↑、方向↑。題目類型: 技術視野、項目細節、理論知識題,算法題,開放性題,案例題。進行追問: 可以確保問到你開始不懂或面試官開始不懂為止,這樣可以大大延展題目的區分度和深度,知道你的實際能力。因為這種關聯知識是長時期的學習,絕對不是臨時記得住的。回答問題再棒,面試官(可能是你的直接領導面試),會考慮我要不要這個人做我的同事?所以態度很重要。(感覺更像是相親)資深的工程師能把 absolute 和 relative 弄混,這樣的人不要也罷,因為團隊需要的你這個人具有可以依靠的才能(靠譜)。前端開發面試知識點大綱:HTML&CSS: 對Web標準的理解、瀏覽器內核差異、兼容性、hack、CSS基本功:布局、盒子模型、選擇器優先級及使用、HTML5、CSS3、移動端適應 JavaScript: 數據類型、面向對象、繼承、閉包、插件、作用域、跨域、原型鏈、模塊化、自定義事件、內存泄漏、事件機制、異步裝載回調、模板引擎、Nodejs、JSON、ajax等。其他: HTTP、安全、正則、優化、重構、響應式、移動端、團隊協作、可維護、SEO、UED、架構、職業生涯 作為一名前端工程師,無論工作年頭長短都應該必須掌握的知識點:此條由 王子墨 發表在 前端隨筆 1、DOM結構 —— 兩個節點之間可能存在哪些關系以及如何在節點之間任意移動。 2、DOM操作 ——如何添加、移除、移動、復制、創建和查找節點等。 3、事件 —— 如何使用事件,以及IE和標準DOM事件模型之間存在的差別。 4、XMLHttpRequest —— 這是什么、怎樣完整地執行一次GET請求、怎樣檢測錯誤。 5、嚴格模式與混雜模式 —— 如何觸發這兩種模式,區分它們有何意義。 6、盒模型 —— 外邊距、內邊距和邊框之間的關系,及IE8以下版本的瀏覽器中的盒模型 7、塊級元素與行內元素 —— 怎么用CSS控制它們、以及如何合理的使用它們 8、浮動元素——怎么使用它們、它們有什么問題以及怎么解決這些問題。 9、HTML與XHTML——二者有什么區別,你覺得應該使用哪一個并說出理由。 10、JSON —— 作用、用途、設計結構。
新聞熱點
疑難解答