遇到過的前端面試題目(js,css3,html5,vue)

1.什麼是閉包?(js)

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

2.如何解決js的數組去重。(百度上面有很多種,可以看看)(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).使用組件防止代碼冗餘

4.ajax請求數據的方法?(js)

(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.事件代理:(js)

事件委託就是利用事件冒泡,只指定一個事件處理程序,就可以管理某一類型的所有事件。(通過子級查找父級,通過父級進行代碼的操作)

事件冒泡:鼠標事件一級一級向上傳遞到document

6.es6十大特性:

箭頭函數,定義變量的let,定義常量的const,解構賦值,

 

7.cookie和session的區別和用法 (js)

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。

localstorage存儲的數據窗口關閉之後會一直存到瀏覽器,除非手動清除,sessionstorage存儲的數據窗口關閉之後就會清掉

8.原型和原型鏈(js)

9.css3有什麼新的屬性

box-shadow,陰影,border-radius,圓角,transform:

rotate旋轉 scale 變形,animation,動畫

10.html5有什麼新的特性

語義化標籤(nav,header,footer)

增強型表單(如color,date,datetime,email)

視頻和音頻(audio,video )

canvas繪圖等

11.vue路由,跳轉頁面,router.push()  router.go()

12.vue中8種組件通信方式

1.prop - $emit 父子組件傳值

prop(父組件向子組件傳值)

$emit(子組件向父組件傳值)

2.$children/$parent

3.provide/reject

4.ref

5.eventBus

6.Vuex(狀態管理機制)

7.localStorage  / sessionStorage

13.vue開發中常用的指令有哪些?

v-model 用於表單輸入,實現表單控件和數據的雙向綁定

v-show 與 v-if: 條件渲染, 注意二者區別

使用了v-if的時候,如果值爲false,那麼頁面將不會有這個html標籤生成。 v-show則是不管值爲true還是false,html元素都會存在,只是CSS中的display顯示或隱藏

v-bind 當表達式的值改變時,將其產生的連帶影響,響應式地作用於 DOM

v-on:click 可以簡寫爲@click,@綁定一個事件。如果事件觸發了,就可以指定事件的處理函數

v-for:基於源數據多次渲染元素或模板塊

 

14.vue的生命週期

創建前beforecreate

創建後created

掛載前beforemounte

掛載後mounted

beforeupdate更新前

updated更新後

beforedestroy銷燬前

destroyed銷燬後

15.關於methods,computed,watch這三者之間博主的看法

methods是用來定義方法的,computed用於計算數據的,watch和methods或者computed一起使用,可以動態監聽methods或者computed的值

打個比方,(實際工作項目中用到了,其實之前也不是很懂的,分享給大家,說的不對可以指出來哦~)

當你需要判斷你的名字和電話號碼是否輸入且輸入正確時,你在watch中定義一個和computed中的方法一樣的名稱,類似於

computed: {
    ifNext(){
       //這裏輸入你需要的代碼
       if(this.username!=''&&this.phone!=''){
            console.log("aaa")
        }
    }
},
watch: {
    ifNext(val1,val2){
       this.username = val1
        this.phone = val2
    }
}

這樣你就可以判斷你的名字和電話號碼是否輸入且輸入正確時,再進行操作下一步

 

 

 

待續~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章