前端面試題總結(三)

1、AMD和CMD是什麼?他們的區別是什麼?
答:AMD和CMD都是模塊定義規範,AMD 是 RequireJS 在推廣過程中對模塊定義的規範化產,CMD 是 SeaJS 在推廣過程中對模塊定義的規範化產出。

兩者的區別:

1. 對於依賴的模塊,AMD 是提前執行,CMD 是延遲執行。不過 RequireJS 從 2.0 開始,也改成可以延遲執行(根據寫法不同,處理方式不同)。CMD 推崇 as lazy as possible.

2. CMD 推崇依賴就近,AMD 推崇依賴前置。

3. AMD 的 API 默認是一個當多個用,CMD 的 API 嚴格區分,推崇職責單一。比如 AMD 裏,require 分全局 require 和局部 require,都叫 require。CMD 裏,沒有全局 require,而是根據模塊系統的完備性,提供 seajs.use 來實現模塊系統的加載啓動。CMD 裏,每個 API 都簡單純粹。

2、關於cookie和session
cookie:當你在瀏覽網站時,WEB服務器會將一些資料放在你的計算機上,cookie會記錄你在網站上一些行爲,例如打字、選擇產品等等。等你下次再瀏覽同一個網站時WEB服務器會先看看有沒有它上次留下的cookie資料,有的話就會根據cookie的內容來判斷使用者,送出特定的網頁內容給你
session:當程序需要爲某個客戶端請求創建一個session時,服務器首先檢查這個客戶端請求裏是否包含一個session標識(稱爲session ID)如果已經包含說明以前已經爲此客戶端創建過session,服務器就按照session ID把這個session檢索出來,如果檢索不到就會新建一個session,如果客戶端不包含session ID,則爲此客戶端創建一個session並且生成一個與此session相關聯的sessionID


3、MVC 

MVC是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件裏面,在改進和個性化定製界面及用戶交互的同時,不需要重新編寫業務邏輯。


4、怎樣理解css盒子模型?

網頁設計中常聽的屬性名:內容(content)、填充(padding)、邊框(border)、邊界(margin), CSS盒子模式都具備這些屬性。
這些屬性我們可以用日常生活中的常見事物——盒子作一個比喻來理解,所以叫它盒子模式。CSS盒子模型就是在網頁設計中經常用到的CSS技術所使用的一種思維模型。

兩個上下方向相鄰的元素框垂直相遇時,外邊距會合並,合併後的外邊距的高度等於兩個發生合併的外邊距中較高的那個邊距值。需要注意的是:只有普通文檔流中塊框的垂直外邊距纔會發生外邊距合併。行內框、浮動框或絕對定位之間的外邊距不會合並。

另外與和模型有關的一個重要屬性box-sizing:
box-sizing : content-box|border-box|inherit;
(1) content-box ,默認值,可以使設置的寬度和高度值應用到元素的內容框,盒子的width只包含內容,即總寬度=margin+border+padding+width,所以設置width值,相當於設置元素內容的寬度。


(2) border-box , 設置的width值其實是除margin外的border+padding+element的總寬度。盒子的width包含border+padding+內容,即總寬度=margin+width。


(3) inherit , 規定應從父元素繼承 box-sizing 屬性的值


5、事件監聽機制


事件捕獲、捕獲目標、和事件冒泡,事件捕獲是從根標籤開始一層一層往下查找,直到捕獲到事件目標,事件冒泡是與之相反的過程,是事件從事件目標開始一層一層往上冒泡直到根元素。IE只支持事件冒泡,其他主流瀏覽器兩種都支持


6、DOM事件處理程序(也叫事件處理函數、事件句柄)


事件處理程序實際上就是事件的綁定函數。事件發生時會執行函數中相應代碼。事件處理程序分爲0級DOM事件處理程序和2級DOM事件處理程序
0級DOM分爲2個:一是在html標籤內寫onclick事件,二是在JS寫onlicke=function(){}函數。 (事件處理程序的名字以"on"開頭)
2級DOM:監聽方法,有兩個方法用來添加和移除事件處理程序:addEventListener()和removeEventListener()。它們都有三個參數:第一個參數是事件名(如click);第二個參數是事件處理程序函數;第三個參數如果是true則表示在捕獲階段調用,爲false表示在冒泡階段調用。addEventListener():可以爲元素添加多個事件處理程序,觸發時會按照添加順序依次調用。removeEventListener():不能移除匿名添加的函數。 (注意這裏的事件不需要加“on”開頭)
IE8及以下瀏覽器不支持addEventListener,但IE實現了與DOM中類似的兩個方法:attachEvent()和detachEvent()。這兩個方法接受相同的兩個參數:事件處理程序名稱與事件處理程序函數。由於IE8-瀏覽器只支持事件冒泡,所以通過attachEvent()添加的事件處理程序都會被添加到事件冒泡階段
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章