HTML面試題整理總結

前記

爲了準備春招面試,對本身的知識點進行一個總結積累,第一篇是關於HTML方面的知識點,後續若是碰見新題會進行繼續的補充javascript

什麼是 HTML 語義化,有什麼好處

HTML語義化簡單來講就是,段落使用<p></p>,側邊欄用<aside></aside>,主要內容使用<main></main>html

  • 有助於構架良好的HTML結構
  • 有助於搜索引擎創建索引、抓取,有利於SEO
  • 有利於不一樣設備的解析
  • 有利於團隊的開發維護

爲何要在html文件開頭加上一個<!DOCTYPE html>

告訴瀏覽器使用哪一個版本的HTML規範來渲染文檔。DOCTYPE不存在或形式不正確會致使HTML文檔以混雜模式呈現。java

HTML5爲何只須要寫 <!DOCTYPE html>?

HTML5不基於SGML,因此不須要引用DTD(DTD 文檔類型定義)。在HTML5中<!DOCTYPE>只有一種web

<!DOCTYPE html>

在HTML4.01中,<!DOCTYPE>聲明引用DTD,由於HTML4.01基於SGML。DTD規定了標記語言的規則,這樣瀏覽器才能正確的呈現內容。在HTML4.01中有三種<!DOCTYPE>聲明。面試

行內元素有哪些?塊級元素有哪些?

  • 行內元素:aspanimginputselect
  • 塊級元素:divulollip

meta viewport 是作什麼用的,怎麼寫?

控制頁面在移動端不要縮小顯示。canvas

<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

HTML5的新增特性

新增長了圖像、位置、存儲、多任務等功能。瀏覽器

  • 新增功能標籤:能夠用做畫板的canvas,用於媒介回放的videoaudio元素等
  • 本地離線存儲:localStorage長期存儲數據,瀏覽器關閉後數據不丟失;sessionStorage的數據在瀏覽器關閉後自動刪除
  • 語意化更好的標籤:figurefooterheaderasidetime 等標籤
  • 位置API:Geolocation
  • 表單控件:calendar date time email url search
  • 新的技術:Web Worker(web worker是運行在後臺的 JavaScript,獨立於其餘腳本,不會影響頁面的性能。您能夠繼續作任何願意作的事情:點擊、選取內容等等,而此時 web worker 在後臺運行) Web Socket
  • 拖放API:dragdrop
  • 離線網路程序:可以讓網頁在客戶端本地高效地離線運行。
  • History API:容許對瀏覽器歷史記錄進行操做。這對於那些交互地加載新信息的頁面尤爲有用。

介紹一下你對瀏覽器內核的理解?

主要分紅兩部分:渲染引擎(Layout Engine或Rendering Engine)和JS引擎。session

渲染引擎:負責取得網頁的內容(HTML、XML、圖像等等)、整理訊息(例如加入CSS等),以及計算網頁的顯示方式,而後會輸出至顯示器或打印機。瀏覽器的內核的不一樣對於網頁的語法解釋會有不一樣,因此渲染的效果也不相同。
JS引擎:解析和執行javascript來實現網頁的動態效果。異步

最開始渲染引擎和JS引擎並無區分的很明確,後來JS引擎愈來愈獨立,內核就傾向於只指渲染引擎。async

常見的瀏覽器內核及對應瀏覽器

  • Trident:IE內核
  • Gecko:Firefox內核
  • Presto:Opera前內核(已廢棄)
  • Webkit:Safari內核,Chrome內核原型,開源
  • Blink:由Google和Opera Software開發,Chrome(28及日後版本)、Opera(15及日後版本)和Yandex瀏覽器中使用

defer 和 async 的區別

沒有deferasync,瀏覽器在遇到script標籤後,會當即加載並執行標籤中的腳本,「當即」指的是在渲染該script標籤之下的文檔元素以前,也就是說不等待後續載入的文檔元素,讀到就加載並執行。

defer,加載後續文檔元素的過程將和script.js的加載並行進行(異步),可是script.js的執行要在全部元素解析完成以後,DOMContentLoaded事件觸發以前完成。

async,加載和渲染後續文檔元素的過程將和script.js的加載並行進行(異步),但當script.js加載完後會當即執行,即中止加載和渲染後續文檔元素,執行script.js

bVcQV0

如圖所示,但須要注意如下幾點

  • 關於defer,此圖未盡之處在於它是按照加載順序執行腳本的,這一點要善加利用
  • 關於async,它的腳本加載順序是亂序的,誰先加載完執行誰
相關文章
相關標籤/搜索