高频面试题-html

1.html标签的类型(head, body,!Doctype) 他们的作用是什么

!DOCTYPE 标签:

  • DOCTYPE 是 HTML5 中一种标准通用标记语言的文档类型声明,它的目的是告诉浏览器(解析器)应该以什么样(html 或 xhtml)的文档类型定义来解析文档,不同的渲染模式会影响浏览器对 CSS 代码甚⾄ JavaScript 脚本的解析。它必须声明在 HTML ⽂档的第⼀⾏。

  • 浏览器渲染页面的两种模式(可通过 document.compatMode 获取,比如,语雀官网的文档类型是CSS1Compat):

  • CSS1Compat:标准模式(Strick mode),默认模式,浏览器使用 W3C 的标准解析渲染页面。在标准模式中,浏览器以其支持的最高标准呈现页面。

  • BackCompat:怪异模式(混杂模式)(Quick mode),浏览器使用自己的怪异模式解析渲染页面。在怪异模式中,页面以一种比较宽松的向后兼容的方式显示。

head:

  • 是所有头部元素的容器, 绝大多数头部标签的内容不会显示给读者

body :

  • 用于定义文档的主体, 包含了文档的所有内容 该标签支持 html 的全局属性和事件属性.

2. 对 HTML 语义化的理解

语义化是指 根据内容的结构化(内容语义化),选择合适的标签(代码语义化)。通俗来讲就是用正确的标签做正确的事情。

语义化的优点如下:

  • 对机器友好,带有语义的文字表现力丰富,更适合搜索引擎的爬虫爬取有效信息,有利于 SEO。除此之外,语义类还支持读屏软件,根据文章可以自动生成目录;
  • 对开发者友好,使用语义类标签增强了可读性,结构更加清晰,开发者能清晰的看出网页的结构,便于团队的开发与维护。

常见的语义化标签:

<header></header>  头部

<nav></nav>  导航栏

<section></section>  区块(有语义化的div)

<main></main>  主要区域

<article></article>  主要内容

<aside></aside>  侧边栏

<footer></footer>  底部

3. src 和 href 的区别

src 和 href 都是用来引用外部的资源,它们的区别如下:

  • src: 表示对资源的引用,它指向的内容会嵌入到当前标签所在的位置。src 会将其指向的资源下载并应⽤到⽂档内,如请求 js 脚本。当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执⾏完毕,所以⼀般 js 脚本会放在页面底部。
  • href: 表示超文本引用,它指向一些网络资源,建立和当前元素或本文档的链接关系。当浏览器识别到它指向的⽂件时,就会并⾏下载资源,不会停⽌对当前⽂档的处理。 常用在 a、link 等标签上。

4. H5有哪些新特性

  • 新增选择器 document.querySelector、document.querySelectorAll
  • 拖拽释放(Drag and drop) API
  • 媒体播放的 video 和 audio
  • 本地存储 localStorage 和 sessionStorage
  • 离线应用 manifest
  • 桌面通知 Notifications
  • 语意化标签 article、footer、header、nav、section
  • 增强表单控件 calendar、date、time、email、url、search
  • 地理位置 Geolocation
  • 多任务 webworker
  • 全双工通信协议 websocket
  • 历史管理 history
  • 跨域资源共享(CORS) Access-Control-Allow-Origin
  • 页面可见性改变事件 visibilitychange
  • 跨窗口通信 PostMessage
  • Form Data 对象
  • 绘画 canvas

H5移除的元素:

  • 纯表现的元素:basefont、big、center、font、s、strike、tt、u
  • 对可用性产生负面影响的元素:frame、frameset、noframes

5. script 标签中 defer 和 async 的区别

  • 如果没有 defer 或 async 属性,浏览器会立即加载并执行相应的脚本。它不会等待后续加载的文档元素,读取到就会开始加载和执行,这样就阻塞了后续文档的加载。

下图可以直观的看出三者之间的区别:

image.png

  • 其中蓝色代表 js 脚本网络加载时间,红色代表 js 脚本执行时间,绿色代表 html 解析。

defer 和 async 属性都是异步去加载外部的 JS 脚本文件,它们都不会阻塞页面的解析,其区别如下:

  • 执行顺序: 多个带 async 属性的标签,不能保证加载的顺序;多个带 defer 属性的标签,按照加载顺序执行;
  • 脚本是否并行执行:async 属性,表示后续文档的加载和执行与 js 脚本的加载和执行是并行进行的,即异步执行;defer 属性,加载后续文档的过程和 js 脚本的加载(此时仅加载不执行)是并行进行的(异步),js 脚本需要等到文档所有元素解析完成之后才执行,DOMContentLoaded 事件触发执行之前。

6. 说一下 web worker

webworker是什么?

  • Web Worker 是 HTML5 标准的一部分,这一规范定义了一套 API,它允许一段 JavaScript 程序运行在主线程之外的另外一个线程中。

作用:

  • 在 HTML 页面中,如果在执行脚本时,页面的状态是不可响应的,直到脚本执行完成后,页面才变成可响应。web worker 是运行在后台的 js,独立于其他脚本,不会影响页面的性能。 并且通过 postMessage 将结果回传到主线程。这样在进行复杂操作的时候,就不会阻塞主线程了。

如何创建 web worker:

  1. 检测浏览器对于 web worker 的支持性
  2. 创建 web worker 文件(js,回传函数等)
  3. 创建 web worker 对象

应用场景:

  • 数学运算

  • 图像、影音等文件处理

  • 大量数据检索

  • 比如用户输入时,我们在后台检索答案,或者帮助用户联想,纠错等操作.

  • 耗时任务都丢到 webworker 解放我们的主线程

7. iframe 有那些优点和缺点?

iframe 元素会创建包含另外一个文档的内联框架(即行内框架)。

优点:

  • 用来加载速度较慢的内容(如广告)
  • 可以使脚本并行下载
  • 可以实现跨子域通信

缺点:

  • iframe 会阻塞主页面的 onload 事件
  • 无法被一些搜索引擎所识别
  • 会产生很多页面,不容易管理

8. 渐进增强和优雅降级之间的区别

(1)渐进增强(progressive enhancement):主要是针对低版本的浏览器进行页面重构,保证基本的功能情况下,再针对高级浏览器进行效果、交互等方面的改进和追加功能,以达到更好的用户体验。

(2)优雅降级 graceful degradation: 一开始就构建完整的功能,然后再针对低版本的浏览器进行兼容。

两者区别:

  • 优雅降级是从复杂的现状开始的,并试图减少用户体验的供给;而渐进增强是从一个非常基础的,能够起作用的版本开始的,并在此基础上不断扩充,以适应未来环境的需要;
  • 降级(功能衰竭)意味着往回看,而渐进增强则意味着往前看,同时保证其根基处于安全地带。

“优雅降级”观点认为应该针对那些最高级、最完善的浏览器来设计网站。而将那些被认为“过时”或有功能缺失的浏览器下的测试工作安排在开发周期的最后阶段,并把测试对象限定为主流浏览器(如 IE、Mozilla 等)的前一个版本。 在这种设计范例下,旧版的浏览器被认为仅能提供“简陋却无妨 (poor, but passable)” 的浏览体验。可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较大的错误之外,其它的差异将被直接忽略。

“渐进增强”观点则认为应关注于内容本身。内容是建立网站的诱因,有的网站展示它,有的则收集它,有的寻求,有的操作,还有的网站甚至会包含以上的种种,但相同点是它们全都涉及到内容。这使得“渐进增强”成为一种更为合理的设计范例。这也是它立即被 Yahoo 所采纳并用以构建其“分级式浏览器支持 (Graded Browser Support)”策略的原因所在。

#我的求职思考#
全部评论

相关推荐

🕘测开(实习)(猫眼)/2024.09.02👥面试题目:1.&nbsp;自我介绍2.&nbsp;上段实习是什么角色,学到了什么?3.&nbsp;介绍一下小论文项目&nbsp;&nbsp;a.&nbsp;原理——讲明白&nbsp;&nbsp;b.&nbsp;开发过程中做了白盒测试,怎么做的?设计了多少用例?(量级?)4.&nbsp;介绍一下另一个项目&nbsp;&nbsp;a.&nbsp;Python服务端的架构?&nbsp;&nbsp;b.&nbsp;Android&nbsp;APP端:&nbsp;&nbsp;&nbsp;&nbsp;ⅰ.&nbsp;什么是sqlite&nbsp;&nbsp;&nbsp;&nbsp;ⅱ.&nbsp;哪里用了sqlite&nbsp;&nbsp;&nbsp;&nbsp;ⅲ.&nbsp;什么场景下会使用Android本地数据库?&nbsp;&nbsp;&nbsp;&nbsp;ⅳ.&nbsp;有用到Android&nbsp;ADB吗&nbsp;&nbsp;&nbsp;&nbsp;ⅴ.&nbsp;怎么测试的?&nbsp;&nbsp;&nbsp;&nbsp;ⅵ.&nbsp;抓包用什么软件?&nbsp;&nbsp;&nbsp;&nbsp;ⅶ.&nbsp;抓到的是什么协议的数据包?5.&nbsp;计网&nbsp;&nbsp;a.&nbsp;http和https的区别?&nbsp;&nbsp;b.&nbsp;wire&nbsp;shark能抓https的包吗?&nbsp;&nbsp;c.&nbsp;如果公司应用层协议是https,抓包测试的时候怎么解密?&nbsp;&nbsp;d.&nbsp;如果抓包测试时发现服务器响应慢,可能有哪些原因?(可以从客户端、网络协议栈、服务器端三个角度来分析)6.&nbsp;数据库&nbsp;&nbsp;a.&nbsp;介绍一下索引?&nbsp;&nbsp;b.&nbsp;为什么用B+树可以提高查找速度?&nbsp;&nbsp;c.&nbsp;使用索引有什么优缺点?7.&nbsp;编程&nbsp;&nbsp;a.&nbsp;C++和python有什么区别?&nbsp;&nbsp;b.&nbsp;python不用编译的话,它是怎么运行的?&nbsp;&nbsp;c.&nbsp;介绍一下C语言的内存管理?&nbsp;&nbsp;d.&nbsp;一段C语言程序的结构?&nbsp;&nbsp;e.&nbsp;使用malloc的话,是在哪一部分申请了内存?8.&nbsp;手撕&nbsp;&nbsp;a.&nbsp;最小栈9.&nbsp;反问&nbsp;&nbsp;a.&nbsp;部门的技术栈?&nbsp;&nbsp;b.&nbsp;公司的氛围?🤔面试感受:面试姐姐人超级温柔,有些地方回答不上来会轻轻重复表示反问,看我手撕有点困难还提示了可以用一个额外的数据结构来存储,最后回答我的反问也超级认真。感觉我还是准备的不够5555,项目细节还得再看看。#面试#
查看9道真题和解析
点赞 评论 收藏
分享
3 10 评论
分享
牛客网
牛客企业服务