1.一分鐘自我介紹,兩個公司的題目有必定程度的重合,例如事件的委託代理,原型鏈等。jquery
2.jquery中事件綁定與事件代理怎麼寫,要寫出來哦,給全部li加點擊事件利用事件代理怎麼寫?web
事件綁定的方法主要有bind(),live(),on(),推薦使用on()ajax
事件委託的方法主要有delegate(),數組
$('ul').delegate('li',click,fun)瀏覽器
3.HTML5中的緩存機制,說出其優缺點?緩存
HTML5出來以前,一般使用cookie來存儲用戶數據,cookie只能存儲4K左右的數據,且不一樣瀏覽器的cookie數量都是有限的。cookie在每次請求時都會隨http傳輸到服務器,讓服務器知道請求是否來自同一個客戶端。服務器
HTML5緩存技術主要分爲兩類,本地緩存技術與離線緩存技術。cookie
本地緩存技術主要有sessionStorage和localStorage,它們都是客戶端存儲技術。localStorage存儲的數據,只要用戶沒有手動清理,就一直存在,同一瀏覽器之間localStorage能夠實現共享。sessionStorage時會話級別的存儲技術,瀏覽器關閉,客服端存儲的數據自動銷燬。網絡
離線緩存技術主要經過建立cache manifest文件來對web應用的靜態頁面進行緩存,讓web應用在沒有網絡的狀況下也能夠正常使用。可是隻限於頁面展現,對於頁面中的實時數據仍是須要利用網絡才能訪問。主要完成須要兩步:
session
1)服務器端建立mainfest文件,主要聲明語句有cache mainfest ,cache,network,fallback。
2)mainfest文件建立正確的MIME-TYPE:text/cache-manifest。
4.typeof,instanceof的做用是什麼?
typeof的做用是判斷變量的數據類型;
instanceof的做用是判斷左邊對象是否爲右邊構造函數的實例。
5.數組經常使用的方法有哪些?遍歷用哪一個?
參考阮老師的教程便可。
6.怎樣判斷一個對象的方法是本身定義的方法而不是繼承而來?
.hasOwnPropertyOf()返回true,表示爲對象自身定義的方法,false表示繼承而來的方法。
7.協商緩存瞭解嗎?講一下
瀏覽器緩存是指瀏覽器在本地磁盤對用戶最近訪問過的頁面進行存儲,當用戶再次訪問剛頁面時,瀏覽器就能夠直接從本地磁盤加載文檔。
瀏覽器在請求某一資源時,首先會獲取該資源的緩存的header信息,利用cache-control或Expires判斷是否命中強緩存,cache-control與Expires同時存在的話,cache-control的優先級高於Expires,cache-control中存儲的是相對時間,Expires中存儲的是絕對時間,若命中直接從緩存中獲取資源信息,包括緩存header信息,本次請求不會和服務器進行通訊,返回200;
若是沒有命中強緩存,瀏覽器會啓用協商緩存,首先檢查緩存header信息中是否包含Etag,若存在則再發送請求時攜帶If-Not-Match:Etag,Etag是當前資源在服務器端的惟一標識,若Etag未發生變化,返回304和Etag的值,因爲Etag的值從新生成過,即時和以前的相同,也會返回;上次請求以後請求頭還會存在last-Modified值,在未命中強緩存時,像服務器發送http請求時會攜帶If-Modified-Since,該字段的值爲緩存頭中的Last-Modified的值,服務器拿到該字段時會和服務器上該資源最近一次被修改的時間進行比較,若If-Modified-Since的值晚於服務上該資源最近修改時間,則認爲資源沒有變更,返回304;
Last-Modified與Etag能夠一塊兒使用,同時存在時會優先驗證Etag,Etag一致的時候,纔會對比Last-Modified,最後才決定是否返回304。
Etag出如今http1.1中,Last-Modified出如今http1.0,Etag出現的主要目的是爲解決一下幾個難題:
一些文件也許會週期性的修改,有可能內容並未修改,只是改寫了修改時間;其次,服務器有可能並不能獲取到文件的準確修改時間。
8.id選擇權,類選擇器,僞類選擇器,標籤選擇器優先級說一下?
id > class = 僞類 > 標籤
9.js中this指向是定義時決定仍是運行時決定?
this的指向實在程序實際運行時肯定的,this的最終指向是那個最終調用它的對象。
10.隱藏元素不刪除解構用什麼?
visibility:hidden
11.http狀態碼說一下?
200;301(永久重定向);302(暫時重定向);304(請求資源未修改,取緩存內容);
400(客戶端請求語法錯誤,服務器沒法理解);404(服務器沒法根據客戶端的請求獲取資源);
500(服務器內部錯誤,沒法完成請求)
12.封裝一個ajax,講一下ajax的做用?
ajax是與服務器交換數據的方式,它在不重載所有頁面的狀況下,實現了對網頁的部分刷新。
ajax的實現基於XMLHttpRequest對象,onreadystatechange用於監聽事件,readyState表明請求的變化(0,1,2,3,4),status表明http請求的狀態碼。
jquery中封裝了ajax的方法有$.get(),$.post(),$.ajax();三者的區別在於$.ajax()方法能夠進行多種狀態事件。
13.行內元素能夠設寬嗎?能夠設padding和margin嗎?
行內元素在一條直線上排列,默認寬度只與內容有關,在同一行水平排列;
行內元素設置寬高無用,設置margin上下及padding上下無效。
塊內元素各佔一行,默認寬度是它自己父容器的100%,垂直方向排列,塊級元素重新行開始,結束接着一個斷行。
14.閉包相關
閉包的理解:閉包就是能夠建立一個獨立的環境,每一個閉包裏面的環境都是獨立的,互不干擾;
閉包的建立:在一個函數中嵌套另一個函數,將被嵌套的函數return出去,將return出的函數保存在一個變量中,就建立了一個閉包。
閉包的做用:在函數外部訪問到函數的內部變量;使一個函數長久的存在於內存當中。
15.有關匿名函數
匿名函數沒法直接使用;
匿名函數能夠依附於一個變量,而且這個變量名就是匿名函數的名字;
匿名函數在綁定事件中的時候,當這個事件執行的時候這個匿名函數就會被執行;
若是將匿名函數放入到函數表達式中而且後面加上小括號會自動執行這個函數;
匿名函數不能加括號自動執行,除非依附於變量或者函數表達式;
16.js中的回收機制
js中定義的全局變量不會被銷燬;
函數中定義的變量的生命週期在執行完這個函數以後就銷燬,可是有時候須要用到函數執行結束以後的變量值,所以js須要判斷是否要保存上次執行結束後的變量值,當函數中的變量存在外部引用時,這個值就不會被銷燬,這也是閉包能夠訪問函數內部變量的緣由;
總結:若是一個對象不被引用,那麼這個對象就會被回收;
若是兩個對象相互引用,但沒有被第三個對象所引用,那麼這兩個相互引用的對象也會被回收。
17.js中的靜態屬性與原型屬性
實例對象不能調用靜態屬性,可是能夠調用原型屬性,當前實例對象上若不存在某一屬性,會在它的原型屬性上去查找;
實例對象的私有屬性>this上定義的屬性>prototype上的屬性
18.callee與caller
callee的意義在於使用匿名函數時能夠調用函數自己arguments.callee();
coller()的做用在於可以知道函數的調用者是誰。
19.數組去重的方法?
雙重循環判斷;
利用Set對象,Set中的值是不能重複的;
利用對象key/value,一個對象不能有多個同名屬性,若是相同最後一個會覆蓋前邊的一個。
20.怎樣判斷一個方法是對象自身的,而不是從原型鏈上繼承的?
利用hasOwnProperty()方法,返回true表示對象自身定義的方法,false爲原型鏈上的方法。
21.for in與for of的區別?
for in的使用方法爲let key in obj;for of的使用方法爲let key of Object.keys(obj);for in遍歷時不會過濾對象的原型屬性;for of方法會過濾原型屬性。