浏览器八股
面试系列文章
- 万字总结我在寒冬里的面试准备经历
- 前端铜九铁十面试必备八股文——【HTML&CSS】
- 前端铜九铁十面试必备八股文——【JavaScript】
- 前端铜九铁十面试必备八股文——【Vue】
- 前端铜九铁十面试必备八股文——【浏览器】
- 前端铜九铁十面试必备八股文——【网络相关】
- 前端铜九铁十面试必备八股文——【性能优化】
- 前端铜九铁十面试必备八股文——【工程化】
- 前端铜九铁十面试必备八股文——【手写代码】
XSS(跨站脚本攻击)
XSS 攻击指的是跨站脚本攻击,是一种 代码注入攻击。攻击者通过在网站注入恶意脚本,使之在用户的浏览器上运行,从而盗取用户的信息如 cookie 等。
避免方式
- 不用服务器端拼接后返回(不使用服务端渲染)。
- 对一些敏感信息进行保护,比如
cookie使用http-only,使得脚本无法获取。 - 对用户输入的地方和变量都需要仔细检查长度和对
”<",">”,”;”,”’” </",">等字符做过滤
CSRF(跨站请求伪造)
CSRF 攻击的本质是利用 cookie 会在同源请求中携带发送给服务器的特点,以此来实现用户的冒充。
避免方式
- 添加验证码验证
- 使用
token验证 - 限制
cookie不能作为被第三方使用 - 进行同源检测
什么进程和线程?有什么区别
进程(Process)
进程是计算机中正在运行的程序的实例, 一个进程就是一个程序运行实例。它拥有独立的内存空间、代码和数据,并且由操作系统负责调度和管理。 每个进程在执行时都会分配独立的内存空间,不同进程之间的内存是隔离的,一个进程的错误不会直接影响其他进程。 进程之间通过进程间通信(IPC)机制来交换数据和进行通信,常见的 IPC方式包括管道、消息队列、共享内存等。进程的切换开销较大,因为需要保存和恢复进程的完整状态,涉及到内存保护和虚拟内存的切换。
线程(Thread)
线程是进程的子任务,一个进程可以包含多个线程。它们共享相同的代码和数据,但拥有独立的执行栈和寄存器集合。 多个线程可以在同一进程内并发执行,共享进程的资源,如内存空间、打开的文件等。线程间的通信和数据交换比进程间的通信更加方便,因为它们共享相同的地址空间。线程的切换开销较小,因为线程共享进程的地址空间,切换时不需要切换内存页表,速度较快。
区别
- 进程和线程都可以实现并发执行,但进程是独立的执行实体,而 线程是依赖于进程的。
- 进程之间资源相互隔离, 线程共享所属进程的资源。
- 创建和销毁线程的开销较小,而创建和销毁进程的开销较大。
- 多线程程序的编程复杂度通常比单线程程序高,但多线程可以更好地利用多核处理器来提高程序的执行效率。
浏览器有哪些进程
- 主进程:负责处理用户输入、渲染页面等主要任务。
- 渲染进程:渲染进程负责解析
HTML、CSS和JavaScript,并将网页渲染成可视化内容。 - GPU进程:负责处理浏览器中的
GPU加速任务。 - 网络线程:网络进程负责处理浏览器中的网络请求和响应,包括下载网页和资源等。
- 插件进程:负责浏览器插件运行。

协商缓存和强缓存的区别
强缓存
使用强缓存策略时,如果缓存资源有效,浏览器会 从本地读取缓存资源并返回200,不必再向服务器发起请求。强缓存策略可以通过两种方式来设置,分别是 http 头信息中的 Expires 属性和 Cache-Control 属性。
Expires指定资源的过期时间。在过期时间以内,改资源可以被缓存使用,不需要向浏览器发送请求。这个时间依赖于服务器时间,会存在服务器时间和客户端时间不一致。
Cache-Control属性:
private: 仅浏览器可以缓存public:浏览器和代理服务器都可以缓存max-age=xxx过期时间,单位为秒no-cache不进行强缓存,但会有协商缓存no-store不强缓存,也不协商缓存
当两种方式一起使用时, Cache-Control 的优先级要高于 Expires。
协商缓存
如果设置强缓存,无需发起请求,直接使用缓存内容。如果没有命中强缓存,设置了协商缓存,也不需要发起请求,使用缓存。
命中协商缓存条件:
Cache-Control: no-cachemax-age时间过期
在使用协商缓存时, 会先向服务器发送一个请求,如果资源没有发生修改,则请求返回304状态,让浏览器使用本地缓存。如果资源发生修改,则返回修改后的内容
在 request headers中的 Etag属性和 Last-Modified属性,来进行设置。其中, ETage优先于Last-Modified。
Etag文件改动 服务器在返回资源的时候,在头信息中添加 Etag属性,这个属性是资源的唯一标识符。当资源改变,这个值也会改变。下次请求资源时,会在请求头中添加 If-None-Match属性,为上一次请求的资源的 Etag值。服务端会通过这个属性和资源最后一次修改时间进行对比,以此来判断资源是否修改。这种方式比 Last-Modified更加准确。
Last-Modified 上次修改时间 服务器通过在响应头上添加 Last-Modified属性,来指出资源 最后一次修改时间。当浏览器发起请求时,会在请求头上添加一个 IF-Modified-Since属性,值为上一次资源请求的 Last-Modified的值。服务区会通过这个属性和最后修改时间来进行比较,以此来判断资源是否修改。如果没有资源修改,返回 304状态,使用本地缓存。如果资源修改,就返回最新资源, 200状态。
这种方式有个缺点, Last-Modified标记的时间只能精确到1秒,如果文件在1秒内修改,但是 Last-Modified 却没有改变,这样会造成缓存命中的不准确。
区别
- 强缓存优先级高于协商缓存
- 协商缓存不论命中与否都会发送一次请求
- 强缓存返回
200,协商缓存命中返回304 Ctrl+F5会强制刷新会跳过所有缓存,而F5刷新跳过强缓存,但是会检查协商缓存。
为什么需要浏览器缓存?
使用浏览器缓存,有以下优点:
- 减少了服务器的负担,提高了网站的性能
- 加快了客户端网页的加载速度
- 减少了多余网络数据传输
常见浏览器所用内核
- IE浏览器内核,
Trident内核,也是俗称的IE内核; Chrome浏览器内核,以前是Webkit内核,现在是Blink内核;Firefox浏览器内核:Gecko内核,俗称Firefox内核;Safari浏览器内核:Webkit内核;- 360浏览器、猎豹浏览器内核:
IE + Chrome双内核;
浏览器的渲染过程
- 解析文档,生成
DOM树 - 解析
CSS,根据CSS规则生成CSSOM规则树 - 在
CSSOM树和DOM树生成完后,合并DOM、CSSOM树构建渲染树 - 渲染树构建完成后,开始计算元素大小和位置【回流发生在这个阶段】
- 根据计算好的位置信息将内容渲染到屏幕上【重绘发生在这个阶段】
浏览器渲染优化
- 优化
javaScript,JavaScript会阻塞HTML的解析,改变JavaScrip加载方式。- 将
JavaScript放到body最后面 - 尽量使用异步加载
JS资源,这样不会阻塞DOM解析,如defer、async
- 将
- 优化CSS加载,
- CSS样式少,使用内嵌样式
- 导入外部样式使用
link,而不是@import,因为它会阻塞渲染。
- 减少回流重绘
- 避免频繁操作样式
- 避免频繁操作DOM
- 复杂动画使用定位脱离文当流
- 使用
transform替代动画
Cookie、LocalStorage、SessionStorage区别
Cookie
- 大小只有4kb
- 跨域不能共享
- 不安全,容易被劫持
- 只存在请求头中
SessionStorage
- 存储在内存中,体积相对较大
- 页面关闭,数据会消失
- 相对Cookie安全
LocalStorage
- 体积大,可以存储更多内容。
- 生命周期长,除非手动删除,不然会一直存在
- 存储在硬盘中,不会像Cookie一样被请求携带
什么是同源策略
跨域问题其实就是浏览器的同源策略造成的。 同源指的是: 协议、 端口号、 域名必须一致。
如何解决跨越问题
- CORS:服务器开启跨域资源共享
- JSONP:利用 `
Node和浏览器事件循环机制的区别
- 浏览器事件循环会在宏任务结束后,检查微任务。而Node的微任务是在两个阶段之间执行。
- 浏览器的
process.nextTick和其他微任务优先级一样,而node中要高于其他优先级。
相关文章:
浏览器八股
面试系列文章 万字总结我在寒冬里的面试准备经历前端铜九铁十面试必备八股文——【HTML&CSS】前端铜九铁十面试必备八股文——【JavaScript】前端铜九铁十面试必备八股文——【Vue】前端铜九铁十面试必备八股文——【浏览器】前端铜九铁十面试必备八股文——【网络相关】前…...
华为机试HJ18 识别有效的IP地址和掩码并进行分类统计
首先看一下题 描述 请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。 所有的IP地址划分为 A,B,C,D,E五类 A类地址从1.0.0.0到126.255.255.255; B类地址从128.0.0.0到191.255.255.255; C类地址从192.0.…...
计算机网络——TCP拥塞控制原理
吞吐量 端口有16位...
ubuntu-开机黑屏问题快速解决方法
开机黑屏一般是由于显卡驱动出现问题导致。 快速解决方法: 通过ubuntu高级选项->recovery模式->resume->按esc即可进入recovery模式,进去后重装显卡驱动,重启即可解决。附加问题:ubuntu的默认显示管理器是gdm3,如果重…...
DNS服务器
正反解析 [rootlocalhost ~]# systemctl stop firewalld #关防火墙 [rootlocalhost ~]# setenforce 0 #关闭selinux [rootlocalhost ~]# mount /dev/sr0 /mnt #挂载 mount: /mnt: WARNING: source write-protected, mounted read-only. [rootlocalhost ~]# yum …...
【C++笔记】string类使用详解
前言 各位读者朋友们大家好!上期我们讲完了C的模板初阶,这一期我们开启STL的学习。STL是C的数据结构和算法库,是我们学习C的很重要的一部分内容,在以后的工作中也很重要。现在我们开始讲解。 目录 前言一. 为什么学习string类1.…...
数字隔离器与光隔离器有何不同?---腾恩科技
在电子隔离中,两种常用的解决方案是数字隔离器和光学隔离器。两者都旨在电气隔离电路的各个部分,以保护敏感元件免受高压干扰,但它们通过不同的技术实现这一目标。本文探讨了这些隔离器之间的差异,重点介绍了它们的工作原理、优势…...
方差与协方差
方差是一种特殊的协方差。...
【含文档】基于Springboot+Vue的工商局商家管理系统 (含源码数据库+LW)
1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…...
【股票市场情绪量化模型】
股票市场情绪量化模型:理论与实践 目录 什么是股票市场情绪情绪量化模型的基本概念情绪数据的来源与获取情绪量化模型的构建 4.1 情绪指标的选择4.2 模型设计与算法 情绪与市场表现的关系情绪量化模型的应用案例模型的局限性与挑战总结 1. 什么是股票市场情绪 股…...
Oracle视频基础1.3.8与1.4.1练习
1.3.8与1.4.1 -看数据文件的目录, dump 的目录,oracle的软件目录 -(secureCRT,telnet连接linux。)看当前用户,当前所属组,通过操作系统认证以sysdba登陆,启动数据库然后关闭 -看口令文件 看数据文件的目录,…...
基于前馈神经网络模型和卷积神经网络的MINIST数据集训练
目录 前馈神经网络FNN模型 卷积神经网络CNN模型 前馈神经网络FNN模型 author: lxy function: model--mnist date : 2024/10/25 email : 13102790991163.com # 导入必要的库 import torch import torch.nn as nn import torchvision.datasets as dsets import torchvision.t…...
Vue3中Element Plus==el-eialog弹框中的input无法获取表单焦点
有弹框情况下 <template> <input ref"input" /> </template> <script setup> import { ref, onMounted } from vue // 声明一个 ref 来存放该元素的引用 // 必须和模板里的 ref 同名 const input ref(null) onMounted(() > { ne…...
16.网工入门篇--------介绍下网络服务及应用
一、网络服务的概念 网络服务是指通过网络提供的软件功能或设施,它允许不同的设备和用户在网络环境中进行信息交换、资源共享和协作。这些服务基于各种网络协议,以实现高效、可靠的通信。 二、常见网络服务类型 (一)文件传输服务 …...
区分 electron 全屏和最大化
一. 全屏 在 Electron 中,当窗口处于全屏状态时,通常不能直接使用 JavaScript 来改变窗口大小。这是出于安全和用户体验的考虑,以防止意外的窗口大小变化影响全屏体验。 1. 退出全屏后再调整大小 检测全屏状态,退出全屏并调整大…...
封装一个请求的hook(react函数组件)
对于后台系统,上面筛选,下面表格分页的页面,这个hook非常实用 omitBy方法:过滤不为undefined的对象属性 export const omitBy <T extends IObject, K extends keyof T>(object:T, predicate:(value:T[K]) > boolean):I…...
c语言内存块讲解
文章目录 前言一、栈区1、栈区的特点:1.1 自动管理1.2 后进先出1.3 有限大小1.4 高速访问1.5 栈区存储方向 2、栈区使用注意事项 二、堆区1、堆区的定义2、堆区的特点3、堆区的内存分配与释放4、注意事项: 三、全局/静态存储区1、全局存储区1.1 全局变量…...
2024年10月23日Github流行趋势
项目名称:hiteshchoudhary / apihub 项目维护者:wajeshubham, atulbhatt-system32, jwala-anirudh, arnb-smnta, shrey-dadhaniya 项目介绍:您自己的API Hub,用于学习和掌握API交互。非常适合前端、移动开发人员和后端开发人员。 …...
YOLOv6-4.0部分代码阅读笔记-dbb_transforms.py
dbb_transforms.py yolov6\layers\dbb_transforms.py 目录 dbb_transforms.py 1.所需的库和模块 2.def transI_fusebn(kernel, bn): 3.def transII_addbranch(kernels, biases): 4.def transIII_1x1_kxk(k1, b1, k2, b2, groups): 5.def transIV_depthconcat(kernel…...
C++ 基础语法 一
C 基础语法 一 文章目录 C 基础语法 一const 限定符常量指针类型别名autodecltypeQStringvector迭代器指针和数组显示转换static_castconst_cast 函数尽量使用常量引用数组形参不要返回局部对象的引用和指针返回数组指针 C四种转换内联函数constexpr函数函数指针 const 限定符 …...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
