当前位置: 首页 > news >正文

浏览器面试题及详细答案 88道(01-11) - 详解

浏览器面试题及详细答案 88道(01-11) - 详解

前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux… 。

前后端面试题-专栏总目录

在这里插入图片描述

文章目录

  • 一、本文面试题目录
      • 1. 常见的浏览器内核有哪些?
      • 2. 浏览器的主要组成部分是什么?
      • 3. 为什么 JavaScript 是单线程的,与异步冲突吗?
      • 4. 为什么 JS 会阻塞页面加载?
      • 5. defer 和 async 的区别?
      • 6. 你做的页面在哪些浏览器测试过?这些浏览器的内核分别是什么?
      • 7. Doctype 的作用是什么?
      • 8. Quirks 模式是什么?它和 Standards 模式有什么区别?
      • 9. img 的 alt 与 title 有何异同?
      • 10. strong 与 em 的异同?
      • 11. 渐进增强和优雅降级的区别是什么?

一、本文面试题目录

1. 常见的浏览器内核有哪些?

浏览器内核是决定浏览器如何渲染网页、解析脚本的核心组件,主要分为渲染引擎(排版引擎)和JavaScript引擎。常见的浏览器内核包括:

2. 浏览器的主要组成部分是什么?

浏览器是一个复杂的软件,主要由以下核心部分组成:

  • 用户界面(UI):包括地址栏、书签栏、前进/后退按钮、刷新按钮等用户可交互的部分。
  • 浏览器引擎:协调渲染引擎和UI之间的交互,例如处理用户输入(如点击链接)并通知渲染引擎加载新页面。
  • 渲染引擎:负责解析HTML、CSS,将其转换为可视化的网页。不同浏览器内核对应不同的渲染引擎(如WebKit、Blink)。
  • JavaScript引擎:解析和执行JavaScript代码(如V8引擎用于Chrome,SpiderMonkey用于Firefox)。
  • 网络模块:处理HTTP、HTTPS等网络请求,包括DNS解析、建立连接、接收响应等。
  • 数据存储:管理浏览器本地存储,如Cookie、localStorage、sessionStorage、IndexedDB等。
  • 插件和扩展系统:支持第三方插件(如Flash插件,现已逐渐淘汰)和扩展程序(如广告拦截器)。

3. 为什么 JavaScript 是单线程的,与异步冲突吗?

示例

console.log('1');
// 同步代码,立即执行
setTimeout(() =>
{
console.log('2');
// 异步任务,由定时器线程处理,延迟后进入队列
}, 0);
console.log('3');
// 同步代码,立即执行
// 输出顺序:1 → 3 → 2(体现异步执行)

4. 为什么 JS 会阻塞页面加载?

JavaScript会阻塞页面加载(渲染)的原因如下:

  • DOM和CSSOM依赖:JS可以修改DOM(如document.write)或CSSOM(如document.styleSheets),浏览器无法确定JS是否会改变页面结构,因此会暂停HTML解析和CSS渲染,等待JS执行完成后再继续。
  • 单线程特性:JS引擎与渲染引擎共享主线程,若JS执行时间过长(如复杂计算),会占用主线程,导致渲染引擎无法工作,页面卡顿或白屏。

示例

<!-- JS执行会阻塞后续HTML解析和渲染 --><script>// 耗时操作,阻塞页面for (let i = 0; i <1000000000; i++) {}</script>
<p>这段文字会在JS执行完后才显示</p>

5. defer 和 async 的区别?

deferasync<script>标签的属性,用于控制JS脚本的加载和执行方式,避免阻塞页面渲染,区别如下:

特性asyncdefer
加载异步加载(不阻塞HTML解析)异步加载(不阻塞HTML解析)
执行时机加载完成后立即执行(可能中断HTML解析)等待HTML解析完成后执行(在DOMContentLoaded前)
执行顺序不保证顺序(谁先加载完谁先执行)按脚本在页面中的顺序执行

示例

<!-- async:加载完立即执行,顺序不确定 -->
<script src="a.js" async></script>
<script src="b.js" async></script><!-- defer:HTML解析完后按顺序执行 --><script src="c.js" defer></script><script src="d.js" defer></script>
No.大剑师精品GIS教程推荐
0地图渲染基础- 【WebGL 教程】 - 【Canvas 教程】 - 【SVG 教程】
1Openlayers【入门教程】 - 【源代码+示例 300+】
2Leaflet【入门教程】 - 【源代码+图文示例 150+】
3MapboxGL【入门教程】 - 【源代码+图文示例150+】
4Cesium【入门教程】 - 【源代码+综合教程 200+】
5threejs【中文API】 - 【源代码+图文示例200+】
6Shader 编程 【图文示例 100+】

6. 你做的页面在哪些浏览器测试过?这些浏览器的内核分别是什么?

通常前端开发会测试主流浏览器,包括:

  • Chrome:内核为Blink(基于WebKit分支)。
  • Firefox:内核为Gecko。
  • Safari:内核为WebKit。
  • Microsoft Edge(新版):内核为Blink(早期版本使用Trident)。
  • Opera:内核为Blink(早期使用Presto)。
  • 移动端浏览器:如微信浏览器(基于WebKit/Blink)、手机Chrome(Blink)、Safari移动端(WebKit)等。

测试时需关注不同内核对HTML、CSS、JS特性的兼容性(如CSS Flexbox、ES6语法等)。

7. Doctype 的作用是什么?

<!DOCTYPE>(文档类型声明)是HTML文档开头的声明,作用如下:

示例

8. Quirks 模式是什么?它和 Standards 模式有什么区别?

  • Quirks 模式(怪异模式):浏览器为兼容早期不遵循W3C标准的网页而设计的渲染模式。在此模式下,浏览器采用旧的、非标准的渲染规则(如IE6的盒模型)。
  • Standards 模式(标准模式):浏览器严格按照W3C标准渲染网页,确保不同浏览器对HTML和CSS的解析一致。

主要区别

  • 盒模型:Quirks模式中,widthheight包含边框(border)和内边距(padding);标准模式中,widthheight仅指内容区域(content)。
  • 行内元素尺寸:Quirks模式下,行内元素可设置widthheight;标准模式下不可。
  • 表格布局:Quirks模式可能忽略表格的cellspacing等属性。

示例

/* 盒模型差异 */
.box {
width: 100px;
padding: 10px;
border: 5px solid black;
}
/* Quirks模式:总宽度 = 100px(包含padding和border) */
/* 标准模式:总宽度 = 100px + 10px*2 + 5px*2 = 130px */

9. img 的 alt 与 title 有何异同?

alttitle<img>标签的属性,用于提供图片相关信息,异同如下:

特性alttitle
作用图片加载失败时显示的替代文本;供屏幕阅读器读取,提升可访问性。鼠标悬停在图片上时显示的额外说明文本。
必要性必需属性(尤其是语义化和SEO)可选属性
场景图片无法显示或无障碍访问时使用提供补充信息(如图片细节、来源等)

示例

<imgsrc="logo.png"alt="公司logo" <!-- 加载失败时显示 -->title="2023年新版logo" <!-- 鼠标悬停时显示 -->>

10. strong 与 em 的异同?

strongem都是HTML语义化标签,用于强调文本,异同如下:

特性strongem
语义表示“重要性”(如警告、关键信息)表示“强调”(如语气上的着重)
默认样式文本加粗(bold)文本斜体(italic)
使用场景突出核心内容(如“警告:禁止操作”)突出语句中的强调部分(如“我真的同意”)

示例

<p>
请务必<strong>在24小时内完成支付</strong>,否则<em>订单将自动取消</em></p>
<!-- 语义:“24小时内支付”是重要操作;“自动取消”是对后果的强调 -->

11. 渐进增强和优雅降级的区别是什么?

渐进增强和优雅降级是两种前端开发策略,核心区别在于对浏览器兼容性的处理思路:

  • 渐进增强(Progressive Enhancement)

    • 核心思路:先构建满足基础功能的版本(兼容所有浏览器,尤其是低版本),再为支持高级特性的浏览器添加增强功能(如CSS3动画、JS API)。
    • 目标:确保所有用户都能使用核心功能,高级用户获得更好体验。
    • 示例:先实现基础表单提交(纯HTML),再为现代浏览器添加AJAX提交和表单验证动画。
  • 优雅降级(Graceful Degradation)

    • 核心思路:先基于现代浏览器构建完整功能的版本,再为低版本浏览器适配,移除不支持的特性,确保核心功能可用。
    • 目标:优先满足现代浏览器用户,低版本用户体验可能简化但不崩溃。
    • 示例:先实现带CSS Grid布局的页面,再为IE11(不支持Grid)添加浮动布局的降级方案。

总结:渐进增强从“基础”向“高级”扩展,优雅降级从“高级”向“基础”兼容。现代开发更推荐渐进增强,符合语义化和可访问性原则。

http://www.sczhlp.com/news/9872/

相关文章:

  • WBLT学习笔记
  • 【自学嵌入式:stm32单片机】旋转编码器记次
  • 乌班图静态网址动态网址
  • 用户以及赋权还有备份数据库
  • 立个Flag,重新开始使用cnblog - by
  • 做题日志2025.8
  • 02010803 类和继承03-静态类、扩展方法、命名约定
  • 我设计的IP地址(3)
  • base44
  • 2025.8.11总结 - A
  • ftp服务详解
  • 八数码(bfs)
  • 我真的绷不住了
  • 欧拉回路
  • 8月11号
  • Orleans框架
  • ABC418——XNOR - love
  • 代码随想录算法训练营第五天(哈希表篇)|Leetcode242有效的字母异位词,Leetcode349两个数组的交集,Leetcode202快乐数,Leetcode1两数之和
  • 7种形态图
  • 百度智能云给“数字人”发工牌 - 详解
  • 2025.8.11.模拟赛题目记录
  • Mysql 授予root在任意主机访问数据库的权限
  • Awesome Claude Code 资源大全
  • echarts初始化占不满div, F12后又占满了
  • docker Ubuntu Docker 安装
  • arm LDR指令
  • QNAP QTS SSL Certificate 证书更新修复
  • Python入门学习(九)Python的高级语法与用法(二)闭包
  • 工程师团队如何打造4K流媒体设备的创新技术
  • 【题解】P4063 [JXOI2017] 数列