HTML面试题整理总结

前记

为了准备春招面试,对自己的知识点进行一个总结积累,第一篇是关于HTML方面的知识点,后续如果遇见新题会进行继续的补充

什么是 HTML 语义化,有什么好处

HTML语义化简单来说就是,段落使用<p></p>,侧边栏用<aside></aside>,主要内容使用<main></main>

  • 有助于构架良好的HTML结构
  • 有助于搜索引擎建立索引、抓取,有利于SEO
  • 有利于不同设备的解析
  • 有利于团队的开发维护

为什么要在html文件开头加上一个<!DOCTYPE html>

告诉浏览器使用哪个版本的HTML规范来渲染文档。DOCTYPE不存在或形式不正确会导致HTML文档以混杂模式呈现。

HTML5为什么只需要写 <!DOCTYPE html>?

HTML5不基于SGML,所以不需要引用DTD(DTD 文档类型定义)。在HTML5中<!DOCTYPE>只有一种

<!DOCTYPE html>

在HTML4.01中,<!DOCTYPE>声明引用DTD,因为HTML4.01基于SGML。DTD规定了标记语言的规则,这样浏览器才能正确的呈现内容。在HTML4.01中有三种<!DOCTYPE>声明。

行内元素有哪些?块级元素有哪些?

  • 行内元素:aspanimginputselect
  • 块级元素:divulollip

meta viewport 是做什么用的,怎么写?

控制页面在移动端不要缩小显示。

<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引擎。

渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。
JS引擎:解析和执行javascript来实现网页的动态效果。

最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。

常见的浏览器内核及对应浏览器

  • 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

HTML面试题整理总结

如图所示,但需要注意以下几点

  • 关于defer,此图未尽之处在于它是按照加载顺序执行脚本的,这一点要善加利用
  • 关于async,它的脚本加载顺序是乱序的,谁先加载完执行谁

相关推荐