秋招面试—浏览器原理篇

浏览器原理篇

在这里插入图片描述

1.什么是XSS、CSRF,怎么预防?

(1)XSS(跨站脚本攻击):攻击者将恶意代码植入到浏览器页面中,盗取存储在客户端的Cookie;

​ XSS分为:①存储型:论坛发帖、商品评论、用户私信;

​ ②反射型:网站搜索,跳转等;

​ ③DOM型:属于浏览器端JS自身漏洞,盗取用户数据后发送到攻击者网站;

XSS预防:从攻击者角度出发,XSS攻击包括 攻击者提交的恶意代码、浏览器执行的恶意代码;作为开发者,应尽量将不可行的数据作为html插入到页面上,尽量使用textContent、setContent; 如果是Vue/React技术栈,应在render渲染阶段避免innerHTML、outHTML。

(2)CSRF(跨站请求伪造):攻击者诱导受害者进入第三方网站,利用受害者在被攻击网络获取的Cookie,冒充受害者进入攻击网站。

​ 攻击原理:①.用户浏览并登录信任网站A;

​ ②.验证通过,咋浏览器产生cookie;

​ ③.用户在没有登录A网站的情况下,访问第三方网站B;

​ ④.第三方网站伪造访问受信任网站请求;

​ ⑤.三方网站伪造访问受信任网站请求;

CSRF的预防

​ ①Token验证(常用):服务器给用户发送一个随机数Token,用户提交的表单中带着这个Token,服务器对Token进行验证,不合法则拒绝请求。 但是存在一个问题,需要给所有的请求都添加Token,操作比较繁琐。

​ ②隐藏令牌:把token隐藏在http头部,和token验证没什么区别,只是使用方式不同。

​ ③Referer验证: 只接受本站请求,服务器才做响应。

2.进程和线程的区别

进程:资源分配的最小单位;

线程:CPU调度的最小单位;

当浏览器创建一个Tab标签页的时候,就相当于创建了一个进程,一个进程包含多个线程,比如 浏览器渲染线程、JS引擎线程、HTTP请求线程,当发送一个请求的时候,其实就创建了一个线程,请求结束,线程销毁。

3.JS单线程有什么好处?

①节省内存。②节省上下文切换时间。③没有锁的问题。

JS在运行的时候可能会阻止UI渲染,这是因为JS可以修改DOM;如果在JS执行的时候UI线程还在工作,就会导致不能安全的渲染UI。

4.死锁产生的原因?

死锁是由于多个进程在远行过程中 因剥夺资源 照成的。

产生死锁的必要条件:互斥、请求和保持、不剥夺、环路等待。

预防死锁的方法:资源一次性分配;只要有一个资源得不到分配;不分配其他资源、可剥夺资源;资源有序分配。

5.对浏览器缓存进制的理解

​ 将网络资源存储在本地 memory cache(内存缓存)、disk cache(磁盘缓存)中,首次访问网站,浏览器会先在内存中查找,如果内存中没有,就去磁盘中查找,如果磁盘中还是没有,才进行网络请求。

强缓存(Ctrl+F5):如果缓存资源有效,直接使用缓存资源;如果缓存资源无效,则向服务器发送请求。

协商缓存(Ctrl):如果缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器来决定是否使用缓存。

6.Script标签中defer 和 async 的区别

async表示后续文档与JS脚本是异步加载的,多个带有async属性的标签不能保证加载的顺序;

defer表示JS脚本需要等待文档加载完成之后再加载,多个带有defer属性的标签会按顺序执行。

7.link 和 improt 的区别

link 不仅能引入CSS ,还能引入 RSS;import只能引入CSS;

link 引入的CSS在页面加载时同时加载;import 引入CSS需要等待文档加载完成后再加载;

link 可以通过操作JS操作DOM来改变样式;import却不行;

8.浏览器本地缓存方式及使用场景

Cookie:①结合Session使用,将SessionID存储到Cookie。②统计页面点击次数。

LocalStorage:①网站换皮肤。②不常变动的个人信息。

SessionStorage:只有在同一浏览器的同一窗口才能共享,更严格。①游客登录信息,临时浏览记录,网站关闭、销毁。

9.什么是浏览器同源策略?什么是跨域,怎么解决跨域?

同源指的是协议、域名、端口一致,只有路径不同,用于隔离潜在文件的安全机制。

跨域指的是协议、域名、端口不一致的服务器,资源会发起一个跨域的http请求。

解决跨域方式:

①JosnP:

②CORS(跨域资源共享):是一个系统,由一系列传输的http组成,浏览器根据http头判断是否阻止JS代码获取跨域请求。

③naginx代理:

④node.js 中间件代理:

10.什么是事件?事件模型有哪些?

用户操作网页的Click、move 文档加载、窗口滚动、大小调整、鼠标事件。

①原始事件模型:onclick()同类型事件只能绑定一次,只支持冒泡。

②IE事件模型:处理阶段、冒泡阶段。

③标准事件模型:捕获阶段、处理阶段、冒泡阶段。

11.同步和异步的区别?

当一个进程在执行某个请求的时候,如果这个请求需要等待一段时间才能返回,

同步的话,这个进程会一直等待下去,知道消息返回才向下执行;

异步的话,这个进程不会一直等待下去,继续向下执行,当消息返回时,系统再通知进程进行处理。

12.宏任务和微任务有哪些?

宏任务:setTimeout、setInterval、dom事件、Ajax回调

微任务:promise、node中的Process.nextTick

13.V8浏览器回收机制

新生代算法:主要通过saverge算法,将内存一分为二,使用状态的空间为from空间,闲置状态的空间为To空间。

老生代算法:主要通过标记清除回收算法。

14.什么是内存泄露?

①程序未能释放已经不再使用的内存。

②不合理使用闭包,导致变量一直留在内存中。

③设置setInterval 定时器,忘记取消。

15.懒加载和预加载的区别?

懒加载:延迟加载、按需加载。

预加载:提前加载甚至不加载,用的时候再从缓存总取资源。

16.防抖和节流?

防抖:固定时间后再执行,如果再固定时间内重复触发,则取最后一次。

节流:固定时间内只执行一次,如果再固定内重复触发,则重新计时。

应用场景

​ 防抖:注册功能手机号、邮箱验证,等待用户输入完在验证。

​ 节流:拖拽事件、滚动加载,

17.回流和重绘?

产生原因:

浏览器在渲染页面时会将 HTML 和 CSS 分别解析成 DOM 树和 CSSOM 树,然后合并进行排布,再绘制成我们可见的页面。如果在操作 DOM 时涉及到元素、样式的修改,就会引起渲染引擎重新计算样式生成 CSSOM 树,同时还有可能触发对元素的重新排布(简称“重排”)和重新绘制(简称“重绘”)。

回流:渲染树中部分元素尺寸、结构发生变化时,浏览器会重新渲染。

重绘:主要发生在CSSO树上,元素样式发生变化时,浏览器就会进行重绘。

应用场景

​ 回流:①页面首次渲染。②窗口大小变化。③元素字体、尺寸,内容。

​ 节流:①color.background ②outline.vidibilety ③border-radius、box-shadow

触发条件:

回流

  • 修改元素边距、大小

  • 添加、删除元素

  • 改变窗口大小

重绘

  • 设置背景图片
  • 修改字体颜色
  • 改变Visibility属性值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/448651.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何通过ETL实现快速同步美团订单信息

一、美团外卖现状 美团作为中国领先的生活服务电子商务平台,其旗下的美团外卖每天承载着大量的订单信息。这些订单信息需要及时入库、清洗和同步,但由于数据量庞大且来源多样化,传统的手动处理方式效率低下,容易出错。比如&#…

Flink CEP(基本概念)

Flink CEP 在Flink的学习过程中,我们已经掌握了从基本原理和核心层的DataStream API到底层的处理函数,再到应用层的Table API和SQL的各种手段,可以应对实际应用开发的各种需求。然而,在实际应用中,还有一类更为复…

Nicn的刷题日常之调整奇数偶数顺序

目录 1.题目描述 2.解题思路 3.解题 1.题目描述 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。 2.解题思路 1. 给定两个下标left和right&#xff…

HSRP配置指南

实验大纲 第 1 部分:验证连通性 步骤 1:追踪从 PC-A 到 Web 服务器的路径 步骤 2:追踪从 PC-B 到 Web 服务器的路径 步骤 3:观察当 R3 不可用时,网络的行为 第 2 部分:配置 HSRP 主用和 备用路由器 步…

Interpolator:在Android中方便使用一些常见的CubicBezier贝塞尔曲线动画效果

说明 方便在Android中使用Interpolator一些常见的CubicBezier贝塞尔曲线动画效果。 示意图如下 import android.view.animation.Interpolator import androidx.core.view.animation.PathInterpolatorCompat/*** 参考* android https://yisibl.github.io/cubic-bezier* 实现常…

搭建frp

1.frp 是什么? frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网…

51单片机学习笔记 --步进电机驱动说明

文章目录 工作原理代码编写驱动方式全步进驱动半步进驱动微步进驱动 工作原理 工作原理简要说明,和单片机一起配合使用的步进电机多为28BYJ28 五线四相步进电机,配合ULN2003驱动板进行控制,如图所示,对于扭矩、精度要求较高的还有…

[激光原理与应用-73]:数据采集卡 - STM32F107

目录 一、STM32F107 概述 二、STM32F107主要指标 三、STM32F107主要接口信号 四、STM32F107使用场景 五、STM32选型 六、STM32F107 ADC详解 七、STM32F107 ADC与专用ADC芯片AD7606的比较 同步采集 八、AD7606专用ADC转换相比STM32F107内嵌ADC的优势 一、STM32F107 概述…

CSS局限属性contain:优化渲染性能的利器

CSS局限属性contain:优化渲染性能的利器 在网页开发中,优化渲染性能是一个重要的目标。CSS局限属性contain是一个强大的工具,可以帮助我们提高网页的渲染性能。本文将介绍contain属性的基本概念、用法和优势,以及如何使用它来优化…

[Linux 进程(六)] 写时拷贝 - 进程终止

文章目录 1、写时拷贝2、进程终止2.1 进程退出场景2.1.1 退出码2.1.2 错误码错误码 vs 退出码2.1.3 代码异常终止引入 2.2 进程常见退出方法2.2.1 exit函数2.2.2 _exit函数 本片我们主要来讲进程控制,讲之前我们先把写时拷贝理清,然后再开始讲进程控制。…

Vue3页面自适应,表格滚动高度

适用场景:在网页的表格中我们需要获取页面的还可以用的高度来为表格做滚动的时候就需要使用响应高度,可以使用原生的calc来计算,但是calc有个缺陷就是,你要去计算多个盒子的高度,使用下面的代码就可以直接获取当前元素…

大创项目推荐 题目:基于深度学习的图像风格迁移 - [ 卷积神经网络 机器视觉 ]

文章目录 0 简介1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 简介 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习卷积神经网络的花卉识别 该项目较为新颖,适合作为竞赛课题方向&#xff0c…