<!--變量提高-->
<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>css
<!--前端面試-->
<h3>JavaScript</h3>
<p>執行上下文,尤爲是詞法做用域和閉包.提高機制,函數與塊級做用域,以及函數表達式和聲明</p>
<p>綁定,特別是bind,apply,this關鍵字,對象原型,構造函數和mixins,組合函數和高階函數.</p>
<p>時間委託和冒泡,typeof instanceof和object.prototype,toString</p>
<p>使用回調,promiss和await和async處理異步調用.使用函數聲明和表達式</p>html
<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>java
<h3>HTML</h3>
<p></p>面試
頁面性能優化後端
(1)函數節流:一個函數執行一次後,只有大於設定的執行週期纔會執行第二次. (2)函數防抖:一個須要頻繁觸發的函數,只有在規定時間內,只讓最後一次生效,前面的不生效. (3)資源壓縮與合併(html壓縮,css壓縮,js壓縮,文件合併與壓縮) (4)非核心代碼異步加載 (5)利用瀏覽器緩存. (6)預解析DNS.