常見經典面試內容整理

如何提升網頁加載速度jquery

 

  1. 減小HTTP請求  網站建設中過多的圖片,CSS、script、flash,會增長內容加載的請求負擔,因此,建議您減小這類元素的使用。使用CSS合併圖片,避免出現直接插入原圖。ajax

  2. 使用Gzip壓縮文檔:GZIP編碼是用來改進網頁性能的方法,不只能夠減少存儲空間,還能夠減小傳輸所需的時間。將網站中的文件使用Gzip壓縮後,能夠顯著的增長網頁加載速度,同時也能夠下降網站的帶寬流量消耗。
  3. 設置合理的過時時間    儘量減少Cookie體積,可以很好的提升網頁內容加載效率;對靜態組件的Cookie讀取是一種資源的浪費。
  4. 減小圖片體積    建議你們能夠考慮將GIF轉爲PNG,同時您能夠在CSS Sprites中豎直並儘可能將顏色類似的圖片緊湊的排列在一塊兒能夠有效的減少圖片自己的大小,從而提升網站頁面圖片顯示速度。
  5. 樣式表文件放在外部調用:    把頁面中須要用到的JavaScript和CSS樣式表文件放在另外的文件夾中,這樣一來在打開網站其它頁面時就會緩存這些調用的文件,從而加快網站頁面的加載速度。
  6. 減小域名DNS查找時間:    用戶在瀏覽器的地址欄中鍵入域名後,瀏覽器就會經過DNS系統查找域名對應的IP地址,因此須要將DNS的時間設置在較低的水平,好比平均60-100毫秒進行一次DNS查詢。

 

JavaScript數據類型分那幾種? 編程

 

  1. Number 數字類型跨域

 

  2. String 字符串類型瀏覽器

 

  3. Boolean 布爾類型緩存

 

  4. Function 函數閉包

 

  5. Object 對象app

 

  6. Nulljquery插件

 

  7. Undefined 沒有定義類型異步

 

寫過jquery插件嗎?都寫過哪些?
 對原型瞭解多少  js怎麼實現一個類的繼承 

1.原型鏈繼承(將父的原型對象賦值給子的原型對象,再將子的constructor屬性的指針從新指向子的構造函數)
function Animal() {
this.feeling = 'happy';
}
function Dog(name, variety) {
this.name = name;
this.variety = variety;
}
Dog.prototype = new Animal();//Animal實例對象就是Dog原型對象(Animal實例對象的prototype屬性指向Animal的原型對象)
Dog.prototype.constructor = Dog;//給Dog原型對象的constructor屬性的指針從新指向構造函數Dog
var dog = new Dog('二狗', '哈士奇');
print(dog.feeling); // happy

缺點:

a、當父包含引用類型屬性時,該屬性會被全部實例對象共享,示例代碼以下:

function Animal() {
this.colors = ['red', 'green', 'blue'];
}
function Dog() {
}
// 繼承Animal
Dog.prototype = new Animal();
Dog.prototype.constructor = Dog;

var dog1 = new Dog();
dog1.colors.push('black');
print(dog1.colors); // red,green,blue,black

var dog2 = new Dog();
print(dog2.colors); // red,green,blue,black

b、不能在不影響全部實例對象的狀況下,向父級構造函數傳遞參數

2.構造函數繼承
function Dog(name, variety) {
Animal.apply(this, arguments);
this.name = name;
this.variety = variety;
}

var dog = new Dog('二狗', '哈士奇');
print(dog.feeling); // happy

使用apply或者call方法改變構造函數做用域,將父函數的構造函數綁定到子對象上。雖然解決了子對象向父對象傳遞參數的目的,可是藉助構造函數,方法都在構造函數中定義,函數的複用就無從談起

3.構造函數和原型鏈組合繼承

function Animal(name) {
this.name = name;
this.colors = ['red', 'green', 'blue'];
}
Animal.prototype.sayName = function() {
print(this.name);
};
function Dog(name, age) {
// 繼承屬性
Animal.call(this, name);
this.age = age;
}
// 繼承方法
Dog.prototype = new Animal();
Dog.prototype.constructor = Dog;
Dog.prototype.sayAge = function() {
print(this.age);
}

var dog1 = new Dog('二狗', 1);
dog1.colors.push('black');
print(dog1.colors); // red,green,blue,black
dog1.sayName(); // 二狗
dog1.sayAge(); // 1

var dog2 = new Dog('二牛', 2);
print(dog2.colors); // red,green,blue
dog2.sayName(); // 二牛
dog2.sayAge(); // 2

 

實現div元素水平居中和垂直居中的幾種方法 
 跨域的get方法和post方法怎麼實現 
 bind()、live()、delegate()、on()的區別
怎麼實現跨域
 解釋一下閉包?閉包是怎麼造成的?
 == 和 === 的區別
 你對迴流、重繪怎麼看
瞭解響應式設計嗎
ajax原理
ajax的優缺點
常見瀏覽器兼容問題
js的異步編程幾種方法
模塊化
相關文章
相關標籤/搜索