面試自我介紹:
一、我叫什麼,我來自哪裏
二、上家公司在哪,擔任的角色是什麼?
三、最近輔助的一個項目是哪一個?主要負責的模塊是哪些?
四、項目的難點與亮點
一、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()來獲取每一個對象的類型面試