前端_面试
<!--變量提升-->
<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>
性能優化
頁面性能優化
(1)函數節流:一個函數執行一次后,只有大于設定的執行周期才會執行第二次. (2)函數防抖:一個需要頻繁觸發的函數,只有在規定時間內,只讓最后一次生效,前面的不生效. (3)資源壓縮與合并(html壓縮,css壓縮,js壓縮,文件合并與壓縮) (4)非核心代碼異步加載 (5)利用瀏覽器緩存. (6)預解析DNS.總結
- 上一篇: 解决linux下内网域名的ping结果和
- 下一篇: 2. 托管对象数据模型的基本知识(Cor