前端常見面試題

面試自我介紹:
一、我叫什麼,我來自哪裏
二、上家公司在哪,擔任的角色是什麼?
三、最近輔助的一個項目是哪一個?主要負責的模塊是哪些?
四、項目的難點與亮點






一、token驗證的流程
    答:
        一、用戶向服務器發送用戶名和密碼。
        二、服務端收到請求,去驗證用戶名與密碼
        三、驗證成功後,服務端會簽發一個Token,再把這個Token發送給客戶端。
        四、客戶端收到Token之後能夠把它存儲起來,好比放在Cookie裏或者Local Storage裏
        五、用戶隨後的每一次請求,都會經過Cookie,將token傳回服務器
        六、服務端收到請求,而後去驗證客戶端請求裏面帶着的Token,若是驗證成功,就向客戶端返回請求的數據
二、說一下什麼是同源策略,以及經常使用解決跨域的方案
    答:
        同源策略:同源指的是域名、協議、端口號相同。
                 同源策略規定了js代碼的訪問權限,只能訪問和本身同源的頁面
                 同源策略是一種約定,它是瀏覽器最核心也是最基本的安全功能
        經常使用解決跨域的方案:
                 一、跨域資源共享(CORS)
                 二、jsonp
                 三、nginx反向代理
                 四、服務器代理
三、如何經過css設置超出部分?
    答:
        一、white-space:nowrap  =>設置內容抵達容器邊界會自動轉到下一行
        二、overflow:hidden      =>不顯示超出對象尺寸的內容
        三、text-overflow:ellipsis    =>將被隱藏的部分用省略號代替

四、請說一下微任務和宏任務的區別
    答:
        微任務(miscrotask)
        宏任務(macrotask)
        表示異步任務的兩種分類css

  微任務和宏任務之間的關係:nginx


(此處內容過多,未完,詳情請翻閱文檔)

五、說一下JS的預編譯
    答:   
        把var和function定義的變量提高到script的最上方
        賦值語句不會被提高,哪怕等號後面是一個function
六、原生JS的兼容性問題例舉5個
    答:
        一、獲取滾動條滾動的距離
            var sTop = document.documentElement.scrollTop||document.body.scrollTop
        二、獲取事件對象
            var e = e || event
        三、阻止瀏覽器默認行爲
            function prevent(e){
                if(e.preventDefault){
                    e.preventDefault()
                }else{
                    e.returnValue = false
                }
            }
        四、阻止事件冒泡
            e.stopPropagation?e.stopPropagation():e.cancelBubble=true
        五、事件監聽
            addEventListener()
            attachEvent()
        六、獲取事件源
            e.target||e.srcElement
        七、ajax兼容
            var xhr = new XMLHttpRequest()||new ActiveXObject("Microsoft,XMLHTTP")
七、IE的事件機制與火狐的事件機制有什麼不一樣
    答:
        事件處理機制:
            IE是事件冒泡
            火狐是事件捕獲
八、for in 與Object.keys的區別
    答:
        for in:
                 通常用於遍歷對象的屬性
                 做用於數組的for in 除了會遍歷數組元素外,還會遍歷自定義可枚舉的屬性,以及原型鏈上可枚舉的屬性;
                 做用於數組的for in 的遍歷結果是數組的索引,且都爲字符串型,不能用於運算
                 某些狀況下,能夠按照隨機順序遍歷數組元素;
        Object.keys()
                遍歷結果爲由對象自身可枚舉 屬性組成的數組,數組中的屬性名排列順序與使用for in 循環遍歷該對象是返回的順序一致
                與for in 區別愛與不能遍歷出原型鏈上的屬性
九、map與forEach的區別
    答:
        相同點:
                一、都是循環遍歷數組中的每一項
                二、每一次執行匿名函數都支持三個參數,數組中的當前項item,當前項的索引index,原始數組input
                三、匿名函數中農的this都是指向window
                四、只能遍歷數組
        不一樣點:
                forEach沒有返回值!!!
                map有返回值,能夠return出來
十、如何準確的判斷一個數據的類型
    答:   
        一、typeof:只能判斷基本數據類型,不能判斷引用數據類型,判斷出來的都是Object
        二、instanceof:只能進行類型對比,不能進行類型判斷
        三、constructor:是prototype對象上的屬性,指向構造函數
        四、能夠經過toString()來獲取每一個對象的類型面試

相關文章
相關標籤/搜索