知蛛网
  • 首页
  • 会员
  • 活动
  • 工作台

常见问题
活动
关于我们
联系我们
隐私协议
用户协议
会员协议
© 2026 知蛛网. 保留所有权利。
首页会员工作台我的
flynn@flynn
主页wiki简历作品集
目录
全部书籍
00-路线
  • 学习路线
  • 命名与写作规范
01-计算机基础
01-计算机网络
  • 互联网是如何工作的
  • HTTP协议
  • TCP/IP协议
  • 浏览器直接打开本地html文件,请求时的协议问题
02-浏览器原理
  • 浏览器是如何渲染页面的
  • 浏览器是如何渲染页面的
  • 面试之浏览器
03-操作系统
  • 进程与线程
  • 内存管理与虚拟内存
  • IO 模型与多路复用
  • 文件系统与页缓存
04-数据结构与算法
  • 数组与链表
  • 栈与队列
  • 哈希表
  • 树与堆
  • 基础数据结构
01-基础数据结构
02-高级算法
  • 排序算法
  • 二分查找
  • 递归与回溯
  • 动态规划
  • 双指针与滑动窗口
03-leetcode刷题
02-前端核心
01-web开发
  • Web 和 Web 标准
  • web 入门
  • web 开发
  • URL
  • 域名
  • Web服务器
  • 命令行
  • 工作流程和流程
  • 超链接
  • 浏览器指纹
02-html
  • HTML基础语法
  • HTML 概述
  • HTML 发展史
  • HTML调试
  • HTML标题与段落
  • 文本格式化
  • 强调与重要性
  • 块级元素和内联元素
  • 列表
  • 区块
  • 语义元素
  • 页面结构化和语义化
  • 超链接
  • 相对路径和绝对路径
  • 图片
  • 表格
  • 表单和按钮
  • 多媒体
  • 视频/音频
  • HTML 头部
  • HTML 字符集
  • HTML颜色
  • HTML 语言代码
  • HTML 国家/地区
  • Emoji (表情符号)
  • HTML 标签简写及全称 |
  • SVG
  • Canvas 2D
  • Canvas 3D
  • 框架 `<iframe>`
  • HTML 拖放
  • HTML5 Geolocation(地理定位)
  • Web 存储
  • HTML URL 编码
  • MathML
  • 远程图片资源在自己网站中无法展示问题
03-css
  • CSS简介
  • CSS 语法
  • CSS 创建
  • CSS 发展史
  • CSS 浏览器支持
  • CSS 选择器
  • CSS `!important` 规则
  • css颜色
  • CSS 文本格式
  • CSS 盒子模型
  • CSS 尺寸
  • CSS 内边距
  • CSS 外边距
  • CSS 边框
  • CSS 轮廓
  • CSS 背景(background)
  • CSS 溢出
  • CSS 文档流
  • CSS 显示和可见性
  • CSS 浮动
  • CSS 定位
  • CSS 对齐方式
  • CSS 网页布局
  • CSS 多列布局(CSS Multi-column Layout)
  • CSS 透明度
  • CSS 响应式设计(Responsive Design)
  • CSS 媒体查询
  • CSS 列表
  • CSS 表格
  • CSS 表单
  • CSS 链接
  • CSS 用户界面
  • CSS 计数器
  • CSS 过渡
  • CSS 动画
  • CSS 2D 转换
  • CSS 3D 转换
  • CSS 变量(CSS Custom Properties)
  • CSS 原生嵌套(CSS Nesting)
  • CSS 函数(CSS Functions)
04-javascript
  • 什么是 JavaScript?
  • 编程范式(Programming Paradigm)
  • 什么是范式?
  • ECMAScript 规范
  • 什么是语法糖
  • 开发环境搭建
  • 什么是堆和栈?
  • 什么是执行上下文
  • JavaScript 垃圾回收机制
  • 作业队列与事件循环
  • 深拷贝和浅拷贝
  • 语法与类型
  • 字面量
  • 控制流与错误处理
  • 循环与迭代
  • 函数
  • 表达式与运算符
  • 数字和字符串
  • 表达日期与时间
  • 正则表达式
  • 索引集合类
  • 带键的集合
  • 对象
  • 类
  • Promise
  • async/await
  • 迭代器和生成器
  • 国际化
  • 模块
  • 资源管理
  • 属性的可枚举性和所有权
  • 闭包
  • 继承与原型链
  • 元编程
  • 内存管理
  • 内置对象
  • arguments 对象
  • BOM 对象(浏览器对象模型)
  • DOM 对象(文档对象模型)
  • bind、apply、call的区别
  • new 操作符
  • typeof 和 instanceof 的区别
  • HTML5 Web Workers
05-typescript
  • TypeScript 类型系统基础
  • 类型体操
03-框架与跨端
01-react
  • 开发环境搭建
  • JSX
  • 组件
  • 生命周期
  • Hooks
  • 组件通信
  • 状态管理
  • React 19 新特性
  • useCallback 闭包陷阱
  • 常用的性能优化操作
  • Firbe 架构
  • React 18 新特性
  • useRef
  • 基于umijs 4.0 搭建官网
  • react+vite本地开发,如何手机联调
  • React 实现谷歌登录
  • React 项目调起 WhatsApp
02-vue
  • vue 解决跨域请求
  • 在vue2使用TinyMCE富文本编辑器
  • 使用jszip 导出新闻
  • Vue 本地开发启用 https
  • 基于vue3+vite+ts+elementplus+pinia+axios搭建后台管理系统
03-react-native
  • iOS 开发环境(RN 0.72)
  • RN 原生模块(Native Module)
  • 查看Maven包的Java包名
  • 优化 APP 启动速度
  • 安全键盘
  • 启动图与 Icon 尺寸规范
  • RN如何生成/配置iOS的开发者证书和生产证书
  • 邓白氏编码
  • 微信开放平台配置Universal Link
  • 上架至Apple App Store
04-android
  • 开发环境搭建
  • Android项目目录结构
  • 认识Gradle
04-工程化
01-git
  • 如何解决已被git跟踪文件不在跟踪
  • git标签
  • Git报错: Failed to connect to github.com port 443 解决方案
  • Git 分支操作速查
02-构建工具
  • 构建工具原理与选型
02-webpack
  • webpack 核心概念与构建流程
  • webpack 性能优化
03-vite
  • vite 为什么快
  • vite 插件与生产构建
03-测试
  • 前端测试体系
04-部署
  • Nginx 反向代理解决跨域
  • SPA 刷新非首页报 404
05-docker
  • Docker 常用命令
  • docker-compose nginx配置ssl证书
  • Docker Desktop 升级后 docker-compose 命令找不到
06-性能优化
  • 前端性能优化体系
  • 背景 GIF 优化方案
07-微前端
  • 微前端实战(qiankun)
  • 微前端 · qiankun
01-qiankun
05-后端与数据
01-nodejs
  • Node 版本与依赖的 engines 冲突
  • Express 实现 Gmail 发信(邮箱验证码)
02-php
  • 浏览器保存新闻,发布到自有网站
  • [分布式] 浏览器保存新闻,发布到自有网站
  • 邮件发送,多账号轮询
  • nginx和php-fpm通信问题导致网站页面空白
03-python
  • macOS M1 芯片 如何安装 py 和 tkinter
  • tkinter 编写的程序如何打包成桌面软件
04-架构设计
  • 后台管理系统中角色管理、管理员管理、权限设置他们三者之间的关系
05-运维
  • redis启动失败
  • 实现自动备份宝塔项目及数据库到本地
  • 宝塔面板
01-宝塔
06-实战项目
  • 实战准备工作
02-项目记录
  • AI-Chat 模块技术文档
  • CRMChat 部署
07-面试专项
01-面试
  • 面试之自我介绍
  • CSS 面试
  • JS面试
  • React面试
  • Vue面试
  • RN 面试 · 题目清单
  • RN 面试 · 答案详解
  • RN 物流公司 · 题目清单
  • RN 物流公司 · 答案详解
  • Uniapp 面试
  • 带团队经验
12-react专项
  • 一个表格,某一行的某一列数据变动了,如何优化性能?
13-reactnative专项
  • RN 开发过程中,有遇到什么棘手的问题?你是如何解决的?
14-过往面试总结
  • 冷哥传媒 · 面试题
  • 沐腾科技 · 面试题
  • 字符频率排序
02-面试八股
  • 网络八股
  • 浏览器八股
  • 工程化八股
03-算法面试题
  • 前端高频手写题
  • 场景设计题
04-真实面试经历
  • 20251027 盾蓝科技 面试
  • 20251028 芝麻甜心 面试
08-工具
01-n8n
  • 初始n8n
  • 快速入门
  • 在宝塔中搭建n8n环境
  • n8n中常用节点
  • n8n和代码的区别
02-Trae
  • Figma MCP 配置指南
03-UI_UX_pro_max
  • UI_UX_pro_max的使用
04-开发环境
  • VMWare虚拟机安装
  • PowerShell 执行策略与编码设置
98-杂项
  • A股股票交易相关费用
99-手册
  • iOS 开发者账号申请流程及费用
  • 邓白氏编码申请及费用
  • App 推送通道申请及费用
  • App 开发收费项目清单
  • 注册AWS账号
  • 使用Amazon Polly实现文本转语音
  • Google 翻译 Key 申请与前端调用
  • 使用SmsForwarder转发短信

面试之浏览器

02-浏览器原理2026/11/14

浏览器的内核有哪些?分别有什么代表的浏览器

  1. Trident 内核:IE,搜狗高速浏览器等
  2. Gecko 内核:Mozilla Firefox(火狐浏览器),Netscape6及以上版本
  3. Webkit 内核:Safari 、曾经的 Chrome
  4. Presto 内核:Opera 7到Opera12.17(欧朋浏览器)之间的版本采用的内核
  5. Blink 内核:现在 Chrome 内核是 Blink,Opera现已改用Google Chrome的Blink内核

浏览器是如何渲染页面的

浏览器是如何渲染页面的

如何实现同一个浏览器多个标签页之间的通信

1、websocket通讯 websocket通讯 2、定时器setInterval+cookie 3、使用localstorage 4、html5浏览器的新特性SharedWorker

浏览器的存储技术有哪些

1、cookie 2、sessionStorage 3、localStorage 4、userData(只能在IE浏览器来存储数据,容量可以达到640K) 5、globalStorage(IE不支持)

http协议和tcp协议

TCP/IP协议 HTTP协议

刷新页面,js请求一般会有哪些地方有缓存处理

  1. DNS缓存:短时间内多次访问某个网站,在限定时间内,不用多次访问DNS服务器。
  2. CDN缓存:内容分发网络(人们可以在就近的代售点取火车票了,不用非得到火车站去排队)
  3. 浏览器缓存:浏览器在用户磁盘上,对最新请求过的文档进行了存储。
  4. 服务器缓存:将需要频繁访问的Web页面和对象保存在离用户更近的系统中,当再次访问这些对象的时候加快了速度。

如何对网站的文件和资源进行优化

  1. 减少HTTP请求
  2. 正确理解 重绘和重排
  3. 减少对DOM的操作
  4. 使用JSON格式来进行数据交换
  5. 高效使用HTML标签和CSS样式
  6. 压缩CSS、JavaScript和HTML文件
  7. 使用CDN加速(内容分发网络)
  8. 将CSS和JS放到外部文件中引用,CSS放头,JS放尾
  9. 精简CSS和JS文件
  10. 压缩图片和使用图片Sprite技术
  11. 控制Cookie大小和污染
  12. 避免重定向

你对网页标准和W3C重要性的理解

web标准

web标准主要分为结构、表现、行为3部分 结构:指我们平时在body里面写的标签,主要是由HTML标签组成 表现:指更加丰富HTML标签样式,主要由CSS样式组成 行为:指页面和用户的交互,主要由JS部分组成

W3C

W3C对web标准提出了规范化的要求,即代码规范

对结构的要求

  1. 标签字母要小写
  2. 标签要闭合
  3. 标签不允许随意嵌套

对表现和行为的要求

  1. 尽量使用外链css样式表和js脚本。是结构、表现和行为分为三块,符合规范。同时提高页面渲染速度,提高用户的体验。
  2. 样式尽量少用行间样式表,使结构与表现分离,标签的id和class等属性命名要做到见文知义,标签越少,加载越快,用户体验提高,代码维护简单,便于改版
  3. 不需要变动页面内容,便可提供打印版本而不需要复制内容,提高网站易用性。

http和https的区别

HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。它可以使浏览器更加高效。HTTP 协议是以明文方式发送信息的,如果黑客截取了 Web 浏览器和服务器之间的传输报文,就可以直接获得其中的信息。

上一篇浏览器是如何渲染页面的
下一篇已经是最后一篇
本页目录
浏览器的内核有哪些?分别有什么代表的浏览器浏览器是如何渲染页面的如何实现同一个浏览器多个标签页之间的通信浏览器的存储技术有哪些http协议和tcp协议刷新页面,js请求一般会有哪些地方有缓存处理如何对网站的文件和资源进行优化你对网页标准和W3C重要性的理解web标准W3Chttp和https的区别HTTP 与 HTTPS 的区别如何让Chrome浏览器显示小于12px的文字如何实现页面每次打开时清除本页缓存用HTML标签设置HTTP头信息在需要打开的url后面增加一个随机的参数:(chrome)现在新版的Chrome在developer Tools(F12调出来)的Settings(右下角有个齿轮标志)中有了个Disable cache选项。勾了便可以。ajax方法:用ajax请求服务器最新文件,并加上请求头If-Modified-Since和Cache-Control,用PHP后端清理window.location.replace("");浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢请描述一下 cookies,sessionStorage 和 localStorage 的区别?网页验证码是干嘛的,是为了解决什么安全问题浏览器是怎样解析CSS选择器的?什么是Virtual DOM,为何要用Virtual DOMvdom是什么?为什么存在?js是图灵完备语言,能实现各种逻辑和算法的语言。如何使用?核心api是什么?diff算法?Vdom为什么要用diff算法?diff算法核心流程?

HTTPS:是以安全为目标的 HTTP 通道,是 HTTP 的安全版。HTTPS 的安全基础是 SSL。SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。SSL 协议可分为两层:SSL 记录协议(SSL Record Protocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL 握手协议(SSL Handshake Protocol),它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

HTTP 与 HTTPS 的区别

1、HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https 。) 2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。 3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 4、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

如何让Chrome浏览器显示小于12px的文字

  1. -webkit-text-size-adjust:none;(Chrome 27之后不支持)
  2. -webkit-transform:scale(0.8); // 缩放属性

transform:scale()这个属性只可以缩放可以定义宽高的元素,而行内元素是没有宽高的,我们可以加上一个display:inline-block;属性就好啦。

如何实现页面每次打开时清除本页缓存

用HTML标签设置HTTP头信息

<HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
</HEAD>

说明:HTTP头信息“Expires”和“Cache-Control”为应用程序服务器提供了一个控制浏览器和代理服务器上缓存的机制。HTTP头信息Expires告诉代理服务器它的缓存页面何时将过期。HTTP1.1规范中新定义的头信息Cache-Control可以通知浏览器不缓存任何页面。当点击后退按钮时,浏览器重新访问服务器以获取页面。如下是使用Cache-Control的基本方法:

  1. no-cache:强制缓存从服务器上获取新的页面
  2. no-store: 在任何环境下缓存不保存任何页面

HTTP1.0规范中的Pragma:no-cache等同于HTTP1.1规范中的Cache-Control:no-cache,同样可以包含在头信息中。

在需要打开的url后面增加一个随机的参数:

(chrome)现在新版的Chrome在developer Tools(F12调出来)的Settings(右下角有个齿轮标志)中有了个Disable cache选项。勾了便可以。

ajax方法:用ajax请求服务器最新文件,并加上请求头If-Modified-Since和Cache-Control,

用PHP后端清理

在服务端加 header("Cache-Control: no-cache, must-revalidate");等等(如php中)

window.location.replace("");

浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢

  1. 在线的情况下,浏览器发现html头部有manifest属性,它会请求manifest文件,如果是第一次访问app,那么浏览器就会根据manifest文件的内容下载相应的资源并且进行离线存储。如果已经访问过app并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面,然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有发生改变,就不做任何操作,如果文件改变了,那么就会重新下载文件中的资源并进行离线存储。
  2. 离线的情况下,浏览器就直接使用离线存储的资源。

请描述一下 cookies,sessionStorage 和 localStorage 的区别?

93386c2ba812cc7548723e74cdc79e99

网页验证码是干嘛的,是为了解决什么安全问题

  1. 区分用户是计算机还是人的公共全自动程序。可以防止恶意破解密码、刷票、论坛灌水
  2. 有效防止黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试

浏览器是怎样解析CSS选择器的?

浏览器会『从右往左』解析CSS选择器。

我们知道DOM Tree与Style Rules合成为 Render Tree,实际上是需要将Style Rules附着到DOM Tree上, 因此需要根据选择器提供的信息对DOM Tree进行遍历,才能将样式附着到对应的DOM元素上。 以下这段css为例

<style type="text/css">
.mod-nav h3 span {font-size: 16px;}
</style>

若从左向右的匹配,过程是:

从 .mod-nav 开始,遍历子节点 header 和子节点 div 然后各自向子节点遍历。在右侧 div 的分支中 最后遍历到叶子节点 a ,发现不符合规则,需要回溯到 ul 节点,再遍历下一个 li-a,一颗DOM树的节点动不动上千,这种效率很低。

如果从右至左的匹配:

先找到所有的最右节点 span,对于每一个 span,向上寻找节点 h3 由 h3再向上寻找 class="mod-nav" 的节点 最后找到根元素 html 则结束这个分支的遍历。

后者匹配性能更好,是因为从右向左的匹配在第一步就筛选掉了大量的不符合条件的最右节点(叶子节点);而从左向右的匹配规则的性能都浪费在了失败的查找上面。

什么是Virtual DOM,为何要用Virtual DOM

vdom是什么?为什么存在?

js是图灵完备语言,能实现各种逻辑和算法的语言。

  1. 用js模拟dom结构。
  2. dom发生变化的对比,放在js层做。
  3. 提高重绘的性能

js是图灵完备语言,能实现各种逻辑和算法的语言。

  1. dom操作是非常昂贵的
  2. js的运行效率是非常高的

如何使用?核心api是什么?

vue 和 vdom 是借用了snabbdom来实现的。

github: https://github.com/snabbdom/snabbdom

使用方法:

  1. 引入snabbdom的js文件
  2. 初始化snabbdom的patch和h函数
  3. 创建虚拟vdom
  4. 第一次把vdom渲染到页面
  5. 建立新的vdom,newVdom
  6. 然后把newVdom和vdom进行对比
  7. 最后只改变修改的dom

diff算法?

diff 算法是用来对比两个文件有哪里不同的,是linux的基础的命令。

Vdom为什么要用diff算法?

  1. dom操作是昂贵的
  2. 找本次修改的dom,其他的节点不动
  3. 找出的过程就是diff算法

diff算法核心流程?

1、如何用vnode生成一个dom的节点?

  1. patch方法
  2. patch(container, vnode)
  3. patch(vnode, newVnode)

2、vnode和newVnode的对比 3、修改改变的dom节点

  1. replacechildren
  2. createElement