首页 > 其他分享 >html面试4

html面试4

时间:2023-08-15 16:33:18浏览次数:42  
标签:浏览器 渲染 html 面试 HTML 文档 解析 加载

html4

1.标准模式与兼容模式各有什么区别?

标准模式的渲染方式和JS引擎的解析方式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。

2.SGML. HTML .XML和XHTML的区别?
  1. SGML是标准通用标记语言,是一种定义电子文档结构和描述其内容的国际标准语言,是所有电子文档标记语言的起源。

  2. HTML是超文本标记语言,主要是用于规定怎么显示网页。

  3. XML是可扩展标记语言是未来网页语言的发展方向,XML和HTML的最大区别就在于XML的标签是可以自己创建的,数量无限多,而HTML的标签都是固定的而且数量有限。

  4. XHTML也是现在基本上所有网页都在用的标记语言,他其实和HTML没什么本质的区别,标签都—样,用法也都一样,就是比 HTML更严格,比如标签必须都用小写,标签都必须有闭合标签等。

3.空元素定义
  1. 标签内没有内容的HTML标签被称为空元素。空元素是在开始标签中关闭的。

  2. 常见的空元素有:br hr img input link meta

4.async和defer 的作用是什么?有什么区别?(浏览器解析过程)
  1. 脚本没有defer或async,浏览器会立即加载并执行指定的脚本,也就是说不等待后续载入的文档元素,读到就加载并执行。

  2. defer属性表示延迟执行引入的JavaScript,即这段Javascript加载时HTML并未停止解析,这两个过程是并行的。当整个document解析完毕后再执行脚本文件,在DOMContentLoaded事件触发之前完成。多个脚本按顺序执行。

  3. async属性表示异步执行引入的JavaScript,与defer的区别在于,如果已经加载好,就会开始执行,也就是说它的执行仍然会阻塞文档的解析,只是它的加载过程不会阻塞。多个脚本的执行顺序无法保证。

5.什么是文档的预解析?(浏览器解析过程)
  1. Webkity和Firefox都做了这个优化,当执行JavaScript脚本时,另一个线程解析剩下的文档,并加载后面需要通过网络加载的资源。这种方式可以使资源并行加载从而使整体速度更快。需要注意的是,预解析并不改变DOM树,它将这个工作留给主解析过程,自己只解析外部资源的引用,比如外部脚本、样式表及图片。

6.CSS如何阻塞文档解析?(浏览器解析过程)
  1. 理论上,既然样式表不改变DOM 树,也就没有必要停下文档的解析等待它们,然而,存在一个问题,JavaScript脚本执行时可能在文档的解析过程中请求样式信息,如果样式还没有加载和解析,脚本将得到错误的值,显然这将会导致很多问题。

  2. 所以如果浏览器尚未完成CSSOM 的下载和构建,而我们却想在此时运行脚本,那么浏览器将延迟.JavaScript脚本执行和文档的解析,直至其完成CSSOM的下载和构建。也就是说,在这种情况下卜浏览器会先下载和构建CSSOM,然后再执行JavaScript,最后再继续文档的解析。

7.渲染页面时常见哪些不良现象?(浏览器渲染过程)
  1. FoUC:主要指的是样式闪烁的问题,由于浏览器渲染机制(比如firefox),在 CSS加载之前,先呈现了HTML,就会导致展示出无样式内容,然后样式突然呈现的现象。会出现这个问题的原因主要是css加载时间过长,或者css 被放在了文档底部。

  2. 白屏;有些浏览器渲染机制人比如chrome)要先构建DOM树和CSSOM 树,构建完成后再进行渲染,如果CSS部分放在HTML尾部,由于CSS未加载完成,浏览器迟迟未渲染,从而导致白屏;也可能是把js文件放在头部,脚本的加载会阻塞后面文档内容的解析,从而页面迟迟朱渲染出来,出现白屏问题。

8.如何优化关键渲染路径?(浏览器渲染过程)
  1. 关键资源的数量。

  2. 关键路径长度。

  3. 关键字节的数量。

    优化关键渲染路径的常规步骤如下:

    1. 对关键路径进行分析和特性描述:资源数、字节数、长度。

    2. 最大限度减少关键资源的数量:删除它们,延迟它们的下载,将它们标记为异步等。

    3. 优化关键字节数以缩短下载时间(往返次数)。

    4. 优化其余关键资源的加载顺序∶您需要尽早下载所有关键资产,以缩短关键路径长度。

9.什么是重绘和回流?(浏览器绘制过程)

重绘:当渲染树中的一些元素需要更新属性,而这些属性只是影响元素的外观、风格,而不会影响布局的操作,比如background-color,我们将这样的操作称为重绘。

回流:当渲染树中的一部分(或全部)因为元素的规模尺寸、布局、隐藏等改变而需要重新构建的操作,会影响到布局的操作,这样的操作我们称为回流。

常见引起回流属性和方法:

任何会改变元素几何信息(元素的位置和尺寸大小)的操作,都会触发回流

  1. 添加或者删除可见的DOM元素;

  2. 元素尺寸改变——边距、填充,边框、宽度和高度

  3. 内容变化,比如用户在input框中输入文字

  4. 浏览器窗口尺寸改变——resize事件发生时

  5. 计算offsetWidth和offsetHeight属性

  6. 设置style属性的值

  7. 当你修改网页的默认字体时。

10.如何减少回流?(浏览器绘制过程)
  1. 使用transform替代top。

  2. 不要把节点的属性值放在一个循环里当成循环里的变量。

  3. 不要使用table布局,可能很小的一个小改动会造成整个table的重新布局。

  4. 把 DOM离线后修改。如:使用documentFragment对象在内存里操作DOM。

  5. 不要一条条改Dom。

11.为什么操作 DOM慢?(浏览器绘制过程)

一些DOM 的操作或者属性访问可能会引起页面的回流和重绘,从而引起性能上的消耗。

12.DOMContentLoaded事件和Load事件的区别?

当初始的HTML 文档被完全加载和解析完成之后,DOMContentLoaded事件被触发,而无需等待样式表图像和子框架的加载完成。

13.简述一下你对HTML语义化的理解?
  1. 用正确的标签做正确的事情。

  2. html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析。

  3. 即使在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的;

  4. 搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO ;

  5. 使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。

14.如何更新缓存:
  1. 更新manifest文件。

  2. 通过javascript操作。

  3. 清除浏览器缓存。

15.Flash、 Ajax各自的优缺点,在使用中如何取舍?

Flash

  1. Flash适合处理多媒体、矢量图形、访问机器

  2. 对CSs、处理文本上不足,不容易被搜索

Ajax

  1. Ajax 对CSS、文本支持很好,支持搜索

  2. 多媒体、矢量图形、机器访问不足

共同点

  1. 与服务器的无刷新传递消息

  2. 可以检测用户离线和在线状态

  3. 操作DOM

16.怎么重构页面?
  1. 编写cSs

  2. 让页面结构更合理化,提升用户体验

  3. 实现良好的页面效果和提升性能

17.css reset和normalize.css有什么区别?
  1. reset的目的,是将所有的浏览器的自带样式重置掉,这样更易于保持各浏览器渲染的一致性。

  2. normalize 的理念则是尽量保留浏览器的默认样式,不进行太多的重置,而尽力让这些样式保持一致并尽可能与现代标准相符合。

  3. .Normalize.css修复了浏览器的bug,它修复了常见的桌面端和移动端浏览器的 bug。这往往超出了 Reset所能做到的范畴。关于这一点,Normalize.css修复的问题包含了HTML5元素的显示设置、预格式化文字的 font-size问题、在IE9中 SVG的溢出、许多出现在各浏览器和操作系统中的与表单相关的bug。

18.用于预格式化文本的标签是?

预格式化就是保留文字在源码中的格式,最后显示出来样式与源码中的样式一致所见即所得。

标签:浏览器,渲染,html,面试,HTML,文档,解析,加载
From: https://www.cnblogs.com/yuan947022015/p/17631658.html

相关文章

  • 【校招VIP】产品群面之面试官提问
    考点介绍:产品校招面试离不开群面,而群面往往是大部分团队直接团灭,其中一个关键点就是对面试官问题的理解,需要有自己对问题的独特且到位的产品意见。另外,群面中如果找时机展示自己的观点,甚至带领团队往一个合理正确的方向,都是面试官要观察打分的点一、考点题目1.产品经理核心价值,......
  • Spring面试攻略:如何展现你对Spring的深入理解
    什么是Spring?谈谈你对IOC和AOP的理解。Spring是一种Java开发框架,旨在简化企业级应用程序的开发和部署。它具有以下优点:对象托管:Spring能够管理和赋值所有对象,使开发人员不再需要手动管理对象的创建和依赖关系。动态代理:Spring的动态代理功能可以实现大部分可复用的逻辑功能,从......
  • html2
    html2HTML部分常见问题1.怎么让—个不定宽高的DIV,垂直水平居中?使用css方法父盒子设置:display:table-cell;text-align:center;vertical-align:middle;Div设置:display:inline-block;vertical-align:middle;使用css3transform父盒子设置:display:......
  • html面试1
    html面试1seo搜索引擎注意事项“SEO是指搜索引擎优化。全称为(SearchEngineOptimization)。根据权重来看,常用的是<title></title>标签,然后是<meta>标签,meta标签一般用两种,<metaname="keywords"content="搜索"></meta>关键字搜索,<metaname="description&q......
  • 《高级程序员 面试攻略 》rabitmq rcoketmq kafka的区别 和应用场景
    RabbitMQ、RocketMQ和Kafka都是流行的消息中间件系统,用于实现分布式应用程序之间的异步通信。虽然它们都有类似的目标,但在设计和应用场景上存在一些区别。1.RabbitMQ(兔子消息队列):-描述:RabbitMQ是一个开源的消息代理系统,实现了高性能、可靠的消息传递机制。它使用AMQP(高......
  • 《高级程序员 面试攻略 》RabbitMQ 如何实现可靠性
    RabbitMQ提供了多种机制来实现消息传递的可靠性。下面是一些常见的方法:1.持久化消息:RabbitMQ允许将消息标记为持久化,以确保即使在发生故障或重启后,消息也不会丢失。通过将消息的`deliverymode`设置为2,可以将消息标记为持久化消息。1.持久化队列:创建持久化队列可以确保即使......
  • 《高级程序员 面试攻略 》RocketMQ 如何保证顺序性
    RocketMQ提供了一种称为顺序消息的机制来确保消息的顺序性。下面是一些关键的方法和概念:1.顺序消息:顺序消息是指在发送和消费过程中,消息按照特定的顺序进行处理。RocketMQ通过将消息发送到同一个消息队列(MessageQueue)来实现顺序消息。每个消息队列都有一个全局唯一的标识符(Me......
  • 《高级程序员 面试攻略 》Kafka如何实现高吞吐量和持久性。
    Kafka是一个分布式流处理平台,它通过一些关键特性来实现高吞吐量和持久性。下面是Kafka实现这些特性的主要方法:1.分布式架构:Kafka是一个分布式系统,它通过将数据分布在多个节点上来实现高吞吐量。每个节点(称为KafkaBroker)负责处理一部分数据和请求。生产者和消费者可以同时......
  • 《高级程序员 面试攻略 》go抢占式调度 通俗拟人解释
    当我们谈论Go语言的抢占式调度时,可以使用一个通俗的拟人解释来描述它的工作原理。假设你正在组织一场音乐会,有许多音乐家需要在舞台上演奏乐器。你作为指挥,负责协调他们的演奏。每个音乐家都是一个Goroutine(Go协程),而你是调度器(Scheduler)。在开始音乐会之前,你将每个音乐家的......
  • 《高级程序员 面试攻略 》通俗拟人解释 swoole的协程 和 go的协程有什么区别
    Swoole的协程和Go的协程(Goroutine)都是用于实现轻量级并发的机制,但它们有一些区别。1.语言和环境:Swoole协程是在PHP语言中实现的,而Go协程是在Go语言中实现的。因此,它们在语言和运行时环境上存在差异。1.编程模型:Swoole协程使用的是“同步风格”的编程模型,类似于传统......