前端面試常問的基礎問題大全


1、es6的新特性  參考:https://www.jianshu.com/p/390a65d7a353

  • 新增變量聲明方式:let 塊級作用域 const常量聲明
  • promise
  • 箭頭函數:不需要function關鍵字來創建函數,可以省略return關鍵字,繼承當前上下文的this關鍵字
  • Object.assign 淺拷貝
  • ...擴展符號  淺拷貝  let arr = [2,3,4]; let result = [...arr];
  • 函數參數可以直接設置默認值:function(name="xiao"){}
  • ``反斜號模板拼接,變量用${}
  • 結構賦值:let [a,b,c] = [1,2,3]
  •  Set 的成員具有唯一性: let set2 = new Set([4,5,6,5])
                               console.log('array to set 1:', set2) =>{4, 5, 6}

  • Array.from([1,2,3]) // 返回和原數組一致
  • 字符串操作
    • startsWith() 判斷字符串是否以 XX 開頭
    • endsWith() // 判斷字符串是否以 XX 結尾
    • includes //  let str = 'liaoke'; str.includes('ao');

  

2、h5的新特性

 

  • 語義標簽:header footer nav aside
  • 表單
  • 音頻 audio 視頻video
  • canvas繪畫
  • geolocation 定位
  • localstorage:長期存儲數據,瀏覽器關閉后數據不丟失;
  • sessionStorage 數據在瀏覽器關閉后自動刪除
  • websockt 消息推送
  • Drag 與Drop 拖放

 

 

3、css3的新特性

  • border-radius 圓角
  • box-shadow 邊框陰
  • transform
    • translate
    • rotate
    • scale
  • flex
  • 多媒體查詢@media
  • 動畫animation
  • 背景
    • background-image背景圖片
    • background-size:cover保持橫縱比與背景盒子最小大小,contain 保持橫縱比縮放成適合盒子最大大小

 

4、vue的生命周期

  1. beforeCreate:組件實例剛被創建
  2. created:組件實例創建完成,屬性已綁定,但是DOM還未生成
  3. beforeMount:模板編譯
  4. mounted:掛載
  5. beforeUpdate:
  6. updated:更新
  7. beforeDestroy:實例銷毀前
  8. destroyed:銷毀

 

5、vue的實現原理

  1. vue是一個典型的MVVM框架,模型Model是js對象,修改它則視圖VIEW自動更新。
  2. vue實現雙向數據綁定,需要三大模塊:
    1. Observer:能夠對數據對象的所有屬性進行監聽,如有變動可拿到最新值並通知訂閱者
    2. Compile:對每個元素節點的指令進行掃描和解析,根據指令模板替換數據,以及綁定想要的更新函數
    3. Watcher:作為鏈接Observer和Compile的橋梁,能夠訂閱並收到每個屬性變動的通知,執行指令綁定的相應回調函數,從而更新視圖。

 

6、原型,原型鏈

  • 原型鏈:javaScript中的每個對象都有一個prototype屬性,我們稱之為原型,而原型的值也是一個對象,因此它也有自己的原型,這樣就串聯起來了一條原型鏈。原型鏈的鏈頭是object,它的prototype畢竟特殊,值為null
  • 原型鏈的作用是用於對象繼承,函數A的原型屬性(prototype property)是一個對象,當這個函數被用作構造函數來創建實例時,該函數的原型屬性將被作為原型賦值給所有對象實例,比如我們新建一個數組,數組的方法便從數組的原型上繼承而來。

 

7、面向對象

  • 面向對象是一種編程思想,簡稱OOP
  • 面向對象的特征:封裝、繼承、抽象、多態
  • js的面向對象編程,用一句話說就是抽象,封裝,繼承,多態。
    • 抽象就是把一類事物的主要特征跟問題相關的特征抽取出來,使用函數進行封裝(不考慮內部實現原理,只考慮它功能使用)通過原型實現繼承(通俗理解就是父母能干的事孩子也能干比如吃飯,睡覺。在JS中,比如有一個對象A,A中有一些功能,現在從A中繼承出一個對象B,這個對象B就具有對象A的所有功能。)
    • js是弱類型語言天然具備多態的特性

 

8、瀏覽器適配

9、安卓,ios適配

10、媒體查詢

11、盒模型

12、淺拷貝與深拷貝

  • 淺拷貝是拷貝的一層,深層次的對象級別的就拷貝引用
  • 深拷貝是拷貝多層,每一層級的數據都會拷貝出來

13、隱式轉換

14、數組去重

function distinct(a, b) {
    let arr = a.concat(b)
    arr = arr.sort()
    let result = [arr[0]]

    for (let i=1, len=arr.length; i<len; i++) {
        arr[i] !== arr[i-1] && result.push(arr[i])
    }
    return result
}
// es6 new Set
function distinct(a, b) {
    return Array.from(new Set([...a, ...b]))
}
// 利用對象的屬性不會重復這一特性,校驗數組元素是否重復

function distinct(a, b) {
let arr = a.concat(b)
let result = []
let obj = {}

 
         

for (let i of arr) {
if (!obj[i]) {
result.push(i)
obj[i] = 1
}
}

 
         

return result
}

 

 

13、數組排序

14、閉包

  • 自執行函數也是閉包也叫做沙箱,就是讓內部變量不會污染全局。
  • 閉包的特點:可以讀取函數內部變量,將函數內部變量的值始終保存在內存中,保護函數內的變量不被更改
  • 用途:
    • 使用閉包可以訪問函數中的變量
    • 可以使變量長期保存在內存中,生命

 

15、跨域以及jsonp的工作原理

概念:瀏覽器對於js的同源策略的限制 同源策略:同一個域名,同一個端口,相同的協議 jsonp: ajax直接請求存在跨域無權限訪問的問題 凡是擁有src屬性的標簽都可以跨域如script img iframe jsonp的跨域請求只能是get不能是post 原理:jsonp是一種非正式的傳輸協議,該協議允許用戶傳遞一個callback參數給服務器,然后服務端返回數據時會將這個callback 參數作為函數名包裹住JSON數據,這樣客戶端就可以隨意定制自己的函數來自動處理返回數據了。

16、變量聲明提升

17、事件冒泡與事件代理與事件隊列

  • 事件冒泡:當一個元素接收到事件的時候,會把它接收到的事件傳給自己的父級,一直到window.
  • 事件代理:
    •  $("div").on("click",function(){})
  • js是單線程,任務按順序執行,如果一個任務很耗時,下一個任務不得不等待。為了避免這種阻塞,我們需要一種非阻塞機制。這種非阻塞機制是一種異步機制,即需要等待的任務不會阻塞主執行棧中同步任務的執行。
  • 運行機制:
    • 所有同步任務都在主線程上執行,形成執行棧。
    • 等待任務的回調結果進入任務隊列
    • 當主執行棧中的同步任務執行完畢后才會讀取任務隊列,任務隊列中的異步任務會塞入主執行棧
    • 異步任務執行完畢后再次進入下一個循環
    • 任務隊列分為:
      • 微任務:promises
      • 宏任務: setTimeout、setInterval等

 

18、rn

19、js繼承的幾種方式

  • 原型鏈繼承
    •   
  • 構造函數繼承
  • 組合繼承(組合原型鏈與構造函數繼承)

20、rem em px的區別

  • rem css3新增的相對單位,相對於根節點html的字體大小來計算的
  • em:會繼承父級元素的字體大小
  • px:像素的相對於顯示器屏幕分辨率而言的

 21、vuex

  • state:公共狀態
  • Getters:計算屬性
  • Mutations: 方法
  • Actions:類似於mutaion,而不是直接變更狀態,可以包含任意異步操作

 22、js的數據類型

簡單數據類型:Number String Boolean Object
引用類型:Object Array Function

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM