1. 程式人生 > >遇到過的前端面試題目

遇到過的前端面試題目

1.什麼是閉包?

閉包是一個可以讀取其他函式內部變數的函式;本質上是將函式內部和函式外部嫁接起來的橋樑。優點是能讀取函式內部的變數,能保證這些變數永遠儲存在記憶體中。缺點:一是使用不當時會導致記憶體洩露,解決方法是在退出函式之前,將不使用的區域性變數全部刪除,二是會改變父級的值。

2.如何解決js的陣列去重。(百度上面有很多種,可以看看)

陣列遞迴去重

Array.prototype.distinct = function (){   var arr = this ,   
len = arr.length;   arr.sort( function (a,b){  //對陣列進行排序才能方便比較    return a - b;   })   function loop(index){    if (index >= 1){     if (arr[index] === arr[index-1]){
     arr.splice(index,1);     }     loop(index - 1); //遞迴loop函式進行去重    }   }   loop(len-1);   return arr; }; var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,56,45,56];
var b = a.distinct(); console.log(b.toString());  //1,2,3,4,5,6,45,56

3.如何優化前端效能?

(1).減少http請求(css雪碧圖)

(2).css放在頂部,js放在底部

(3).合併請求

4.ajax請求資料的方法?

(1)原生態方法

 1.建立XMLHTTPRequest物件

  2.使用open方法設定和伺服器的互動資訊

  3.設定傳送的資料,開始和伺服器端互動

  4.註冊事件

  5.更新介面

get請求:

//步驟一:建立非同步物件
var ajax = new XMLHttpRequest();
//步驟二:設定請求的url引數,引數一是請求的型別,引數二是請求的url,可以帶引數,動態的傳遞引數starName到服務端
ajax.open('get','getStar.php?starName='+name);
//步驟三:傳送請求
ajax.send();
//步驟四:註冊事件 onreadystatechange 狀態改變就會呼叫
ajax.onreadystatechange = function () {
if (ajax.readyState==4 &&ajax.status==200) { //步驟五 如果能夠進到這個判斷 說明 資料 完美的回來了,並且請求的頁面是存在的
    console.log(xml.responseText);//輸入相應的內容
  }
}

post請求:

//建立非同步物件  
var xhr = new XMLHttpRequest();
//設定請求的型別及url
//post請求一定要新增請求頭才行不然會報錯
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
 xhr.open('post', '02.post.php' );
//傳送請求
xhr.send('name=fox&age=18');
xhr.onreadystatechange = function () {
    // 這步為判斷伺服器是否正確響應
  if (xhr.readyState == 4 && xhr.status == 200) {
    console.log(xhr.responseText);
  } 
};

5.事件代理:

事件委託就是利用事件冒泡,只指定一個事件處理程式,就可以管理某一型別的所有事件。

6.es6十大特性:

  1. Default Parameters(預設引數) in ES6
  2. Template Literals (模板文字)in ES6
  3. Multi-line Strings (多行字串)in ES6
  4. Destructuring Assignment (解構賦值)in ES6
  5. Enhanced Object Literals (增強的物件文字)in ES6
  6. Arrow Functions (箭頭函式)in ES6
  7. Promises in ES6
  8. Block-Scoped Constructs Let and Const(塊作用域構造Let and Const)
  9. Classes(類) in ES6
  10. Modules(模組) in ES6

7.cookie和session的區別和用法


 

cookie和session都是用來跟蹤瀏覽器使用者身份的會話方式。

cookie與session的區別是, cookie資料儲存在客戶端,session資料儲存在伺服器端

session是放在伺服器上的,過期與否取決於服務期的設定,cookie是存在客戶端的,過去與否可以在cookie生成的時候設定進去。

(1)、cookie資料存放在客戶的瀏覽器上,
session資料放在伺服器上
(2)、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙
考慮到安全應當使用session
(3)、session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺服器的效能
考慮到減輕伺服器效能方面,應當使用COOKIE
(4)、單個cookie在客戶端的限制是3K,就是說一個站點在客戶端存放的COOKIE不能3K。
覺得我的答案不完整的話,可以自行查閱百度~