竟然忘了開屏幕錄製!!!!javascript
要氣死啦!!css
由於有挺多不錯的題目的~html
記一下記得的題吧前端
1. 哪些操做屬於es6的操做?html5
A var {foo:{bar}} = {baz:'baz'}java
B var x; {x} = {x:1};css3
C var [a,b,c] = [1,2,3]es6
D var [,,c] = [1,2,3]web
2. 下列說法中:數組
A 下載js腳本會阻塞渲染
B DOM樹與render樹是徹底對應的
C link節點不會阻塞瀏覽器渲染
D img標籤會阻塞渲染
3. 如下會引發BFC的是?
A visibility: hidden
B display: block;
C position: fixed;
D float: left;
解析:
對一個元素設置CSS,首先須要知道這個元素是block仍是inline類型。而BFC就是用來格式化塊級盒子,一樣管理inline類型的盒子還有IFC,以及其餘的FC
Formatting Context:指頁面中的一個渲染區域,而且擁有一套渲染規則,他決定了其子元素如何定位,以及與其餘元素的相互關係和做用
BFC:塊級格式化上下文,它是指一個獨立的塊級渲染區域,只有Block-level BOX參與,該區域擁有一套渲染規則來約束塊級盒子的佈局,且與區域外部無關。
既然上文提到BFC是一塊渲染區域,那這塊渲染區域到底在哪,它又是有多大,這些由生成BFC的元素決定,CSS2.1中規定知足下列CSS聲明之一的元素便會生成BFC。
看到有道友文章中把display:table也認爲能夠生成BFC,其實這裏的主要緣由在於Table會默認生成一個匿名的table-cell,正是這個匿名的table-ccell生成了BFC
瀏覽器對於BFC這塊區域的約束規則以下:
有道友對它作了分解,咱們直接拿來:
看到以上的幾條約束,讓我想起學習css時的幾條規則
參考: 我對BFC的理解
4. 下列說法
A a.domain.com和domain.com/b.html之間能夠共享cookie
B baidu.com和google.com之間能夠共享cookie
C sessionStorage能夠在本地長久存儲
二 問答題
1. ie中float和margin產生
2. 對html5和css3的理解
3. html語義化的理解(至少三條)
4. 實現兩個div的垂直水平居中
5. -webkit-下的border-radius
6. 至少舉出5個塊級元素和內聯元素, 解釋css中的盒模型
7. 前端角度,怎麼優化SEO?
8. css sprites是什麼?有什麼優缺點?
9. CSS hack: 實現不一樣ie版本下的顯示不同
選擇題:
1. js如何判斷嚴格一個變量a是否是一個對象obj的實例? 假設它有屬性"name"
A if( a instanceof obj)
B if( a.constructor === obj)
C if("name" in a);
D if(a.name)
解析:
在這裏我主要在糾結前兩個選項,不知道哪一個更嚴格
2. js文件實現延遲加載的方法
A <script type="text/javascript" src="a.js" defer></script>
B <script type="text/javascript" src="a.js" async></script>
C var scr = document.createElement("script");
scr.src = "a.js";
document.appendChild(scr);
解析:
還有一個選項忘記了.
查了一下相關知識,
<script src="http://yourdomain.com/script.js"></script>
<script src="file.js" defer></script>
<script src="file.js" async></script>
附加題(3道):
1. 使用js實現對象的深度克隆
我從網上抄的答案:
function cloneObject(obj){ var o = obj.constructor === Array ? [] : {}; for(var i in obj){ if(obj.hasOwnProperty(i)){ o[i] = typeof obj[i] === "object" ? cloneObject(obj[i]) : obj[i]; } } return o; }
參考:
2. 實現一個事件綁定函數和解綁函數
// target 是 DOM 元素 // eventName是事件 // handler 是事件處理函數 function on(target, eventName, handler){ //todo } function off(target,eventName, handler){ //todo //要求: 若是handler沒有傳入,則刪除全部經過on方法在對象上綁定的事件 }
大概題目就是以上,我參考js高程寫的,不知道對不對
function on(target, eventName, handler){ //發現我這裏原來寫錯了.. //target.events = target.event || new Array(); //存儲經過on方法綁定的事件 錯誤的 target[eventName] = target[evetnName] || new Array(); if(target.addEventListener){ target.addEventListener(eventName, handler); } else { target.attachEvent("on"+eventName, handler); } } function off(target, eventName, handler){ if(target.removeEventListener){ if(handler){ target.removeEventListener(eventName, handler); //這裏應該也刪除數組裏的對應函數...也沒有寫 for(var i = 0; i<target.events.length; i++){ if(target[eventName][i] == handler){ target[eventName].splice(i,1); } } } else { for(var i = 0; i<target.events.length; i++){ target.removeEventListener(eventName, target[eventName][i]); } target[eventName] = []; } } else { if(handler){ target.detachEvent(eventName, handler); //這裏應該也刪除數組裏的對應函數...也沒有寫 for(var i = 0; i<target.events.length; i++){ if(target[eventName][i] == handler){ target[eventName].splice(i,1); } } } else { for(var i = 0; i<target.events.length; i++){ target.detachEvent(eventName, target[eventName][i]); } target[eventName] = []; }
3. 實現一個導航條