「 CSS篇 」
1. CSS 盒子模型,絕對定位和相對定位
2. 清除浮動,什么時候需要清除浮動,清除浮動都有哪些方法
3. 如何保持浮層水平垂直居中
答:absolute + 負margin
absolute + transform
flex
grid
4. position 和 display 的取值和各自的意思和用法
答:position屬性取值:static(默認)、relative、absolute、fixed、inherit
display屬性取值:none、inline、inline-block、block、flex、inherit
5. 樣式的層級關系,選擇器優先級,樣式沖突,以及抽離樣式模塊怎么寫,說出思路,有無實踐經驗
6. css3動畫效果屬性,canvas、svg的區別,CSS3中新增偽類舉例
7. px和em和rem的區別,CSS中link 和@import的區別是?
5. 了解過flex嗎?
答:flex-direction
flex-wrap
justify-content
align-items
align-content
「 JavaScript 篇 」
JavaScript 基礎
1. JavaScript 里有哪些數據類型,解釋清楚 null 和 undefined,解釋清楚原始數據類型和引用數據類型。比如講一下 1 和 Number(1)的區別
2. 將一下 prototype 是什么東西,原型鏈的理解,什么時候用 prototype
答:js中,prototype是函數的原型。每個函數都是一個對象,並且擁有一個屬性prototype,該屬性也是一個對象,是屬性和方法的集合。
原型鏈:實例對象的原型__proto__指向new出該實例對象的構造函數原型prototype,再指向原始的對象原型Object.prototype,再指向null,形成原型鏈。
使用prototype的好處是不會產生額外的內存,所有實例化后的對象都會從原型上繼承這個屬性或方法。當一個子類需要擁有父類的某些屬性或方法,
該屬性或方法可以覆 蓋,又可以添加自己的屬性和方法,這個操作不影響父類,這個時候使用prototype。
3. 函數里的this什么含義,什么情況下,怎么用。
答:通常在構造函數中使用,就是通過這個函數生成一個新對象(object)。這時,this就指這個新對象。
function test(){
this.x = 1;
}
var o = new test();
alert(o.x); // 1
運行結果為1。為了表明這時this不是全局對象,對代碼做一些改變:
var x = 2;
function test(){
this.x = 1;
}
var o = new test();
alert(x); //2
運行結果為2,表明全局變量x的值沒變。
4. apply和 call 什么含義,什么區別?什么時候用。
答:function add(c,d){
console.log(this.a + this.b + c + d);
}
var o ={a:1,b:3};
add.call(o,5,7); //1+3+5+7=16
//傳參的時候是扁平的把每個參數傳進去
add.apply(o,[10,20]); //1+3+10+20=34
//傳參的時候是把參數作為一個數組傳進去
//什么時候使用call或者apply
function bar(){
console.log(Object.prototype.toString.call(this));
// 用來調用一些無法直接調用的方法
}
bar.call(7); //"[object Number]"
5. 數組和對象有哪些原生方法,列舉一下,分別是什么含義,比如連接兩個數組用哪個方法,刪除數組的指定項和重新組裝數組(操作數據的重點)。
答:數組:
length設置或返回 數組中元素的數目。
push() :向數組的末尾添加一個或多個元素,並返回新的長度,也就是添加元素后的數組長度。
shift():用於把數組的第一個元素從其中刪除,並返回第一個元素的值。
unshift():向數組的開頭添加一個或更多元素,並返回新的長度。
pop():用於刪除並返回數組的最后一個元素。
splice():用於插入、刪除或替換數組的元素。
concat():方法用於連接兩個或多個數組。
join():用於把數組中的所有元素放入一個字符串。元素是通過指定的分隔符進行分隔的。
toString():方法可把數組轉換為字符串,並返回結果。
reverse():方法用於顛倒數組中元素的順序。
slice():方法可從已有的數組中返回選定的元素。
sort():方法用於對數組的元素進行排序(從小到大)。
indexOf():返回獲取項在數組中的索引
lastIndexOf():返回獲取項在數組中出現的最后一次索引
forEach():循環遍歷數組 參數是一個匿名函數 默認返回為undefined
map():循環遍歷數組 參數是一個匿名函數
對象:
charAt(): 返回在指定位置的字符。
charCodeAt(): 返回在指定的位置的字符的 Unicode 編碼。
concat():連接字符串。
indexOf():檢索字符串。
match(): 找到一個或多個正則表達式的匹配。
replace():替換與正則表達式匹配的子串。
search(): 檢索與正則表達式相匹配的值。
slice(): 提取字符串的片斷,並在新的字符串中返回被提取的部分。
split(): 把字符串分割為字符串數組。
toLocaleLowerCase(): 把字符串轉換為小寫。
toLocaleUpperCase(): 把字符串轉換為大寫。
toLowerCase(): 把字符串轉換為小寫。
toUpperCase(): 把字符串轉換為大寫。
substr(): 從起始索引號提取字符串中指定數目的字符。
substring(): 提取字符串中兩個指定的索引號之間的字符。
6. 怎樣避免全局變量污染?ES5嚴格模式的作用,ES6箭頭函數和ES5普通函數一樣嗎?
答:避免污染個人常用模塊化解決
箭頭函數和普通函數區別在於this的使用
由於箭頭函數使得this從“動態”變成“靜態”,下面兩個場合不應該使用箭頭函數。
第一個場合是定義函數的方法,且該方法內部包括this
第二個場合是需要動態this的時候,也不應使用箭頭函數。
JavaScript 的面向對象
1. JS 模塊包裝格式都用過哪些,CommonJS、AMD、CMD。定義一個JS 模塊代碼,最精簡的格式是怎樣。
2. JS 怎么實現一個類。怎么實例化這個類。
3. 理解閉包嗎?請講一講閉包在實際開發中的作用;閉包建議頻繁使用嗎?
4. 說一下了解的js 設計模式,解釋一下單例、工廠、觀察者。
5. ajax 跨域有哪些方法,jsonp 的原理是什么,如果頁面編碼和被請求的資源編碼不一致如何處理?
作者:前端攻城小牛
鏈接:https://www.jianshu.com/p/eb0f269098d5
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。