前端_面試
<!--變數提升-->
<p>當執行JS程式碼時,會生成執行環境,程式碼不是在全域性執行環境中,就是在函式執行環境中.
JS直譯器在解釋一段程式碼時,第一階段:對於var 會先找出來進行變數提升,給它們在記憶體提前開闢好空間,函式的話會將整個函式存入記憶體中,變數只宣告並且賦值為undefined,第二階段,程式碼執行.</p>
<!--bind call apply區別-->
<p>call和apply都可以解決this指向,作用域是相同的,傳參的方式不同.call可以接收一個引數列表,apply只接收一個引數陣列.bind方法會返回一個函式,且通過bind實現柯里化.</p>
<!-- ==與 ===的區別-->
<!-- 前端優化-->
<p>
1.css樣式表放在頁面頭部Header內且Link鏈式接入,javaScript放在底部body結束標籤前避免堵塞.
2.程式碼壓縮:html/css/js/圖片進行壓縮,圖片預載入,懶載入,圖片載入使用TinyPNG.
3.減少DOM元素數量且減少使用:after等偽類的使用,有效避免頁面重繪/重排.
4.不常變動的靜態資源採用CDN分發,img標籤設定高寬,減少頁面重排/重繪,使用WebP格式圖片,對原圖進行98%壓縮.
5.域名拆分:增加了瀏覽器請求的併發數,讓瀏覽器能同時發起更多的請求,解決預設攜帶的Cookie問題,減少資料傳輸位元組.
通常分為三類:前端類:業務程式碼本身html,css,js,圖片等. 靜態類:CDN資源類動態類:後端API介面類.
6.合理使用dns-prefetch, prefetch,preload,defer,async;
</p>
<!--前端面試-->
<h3>JavaScript</h3>
<p>執行上下文,尤其是詞法作用域和閉包.提升機制,函式與塊級作用域,以及函式表示式和宣告</p>
<p>繫結,特別是bind,apply,this關鍵字,物件原型,建構函式和mixins,組合函式和高階函式.</p>
<p>時間委託和冒泡,typeof instanceof和object.prototype,toString</p>
<p>使用回撥,promiss和await和async處理非同步呼叫.使用函式宣告和表示式</p>
<h3>DOM</h3>
<p>如何遍歷和操作DOM,包括使用document.querySelector和舊瀏覽器中的document.getElementsByTagName選擇或查詢節點。上下遍歷(Node.parentNode,Node.firstChild,Node.lastChild和Node.childNodes),左右遍歷(Node.previousSibling和Node.nextSibling)在DOM樹中新增,刪除,複製和建立節點,以及切換,刪除或新增CSS類名等操作。</p>
<h3>CSS</h3>
<p>佈局</p>
<h3>HTML</h3>
<p></p>