遇到過的前端面試題目
阿新 • • 發佈:2019-01-08
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十大特性:
- Default Parameters(預設引數) in ES6
- Template Literals (模板文字)in ES6
- Multi-line Strings (多行字串)in ES6
- Destructuring Assignment (解構賦值)in ES6
- Enhanced Object Literals (增強的物件文字)in ES6
- Arrow Functions (箭頭函式)in ES6
- Promises in ES6
- Block-Scoped Constructs Let and Const(塊作用域構造Let and Const)
- Classes(類) in ES6
- 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。 覺得我的答案不完整的話,可以自行查閱百度~