秋招面试—浏览器原理篇

浏览器原理篇

在这里插入图片描述

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.rhkb.cn/news/247822.html

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

相关文章

cartographer离线建图报错:data_.trajectory_nodes.SizeOfTrajectoryOrZero

cartographer离线建图报错: data_.trajectory_nodes.SizeOfTrajectoryOrZero [FATAL] [1706177325.876019302, 1706015603.398505596]: F0125 18:08:45.000000 17607 pose_graph_2d.cc:1314] Check failed: data_.trajectory_nodes.SizeOfTrajectoryOrZero(trajectory_id) &…

C++类和对象(中)

✨Blog:🥰不会敲代码的小张:)🥰 🉑推荐专栏:C语言🤪、Cpp😶‍🌫️、数据结构初阶💀 💽座右铭:“記住,每一天都是一個新的開始&#x1…

【BUG】联想Y7000电池电量为0且无法充电解决方案汇总

因为最近火灾很多,所以昨天夜晚睡觉的时候把插线板电源关掉了,电脑也关机了。 各位一定要注意用电安全,网上的那些事情看着真的很难受qvq。 第二天早上起床的时候一看发现电脑直接没电了,插上电源后也是显示 你一定要冲进去啊(ू˃…

Android HIDL概述与绑定模式的实现

一、前言 Android O(8.0) 版本之后,底层实现有了比较大的变化,最显著的一个方面就是 HIDL 机制的全面实施。本文对于理解系统源码中 Gnss、Usb、Camera 等模块的工作原理有极大帮助。 二、HIDL 设计目的 在 Android O(8.0) 之前系统的升级牵扯多方协作…

c语言实战之贪吃蛇

文章目录 前言效果展示游戏用到的图片游戏思路一览游戏前准备一、贪吃蛇、食物、障碍物节点坐标的结构体二、枚举游戏状态、和贪吃蛇的方向三、维护运行的结构体 游戏开始前的初始化一、学习图形库相关知识二、设置背景三、欢迎界面四、初始化贪吃蛇五、生成障碍物六、生成食物…

22.云原生之GitLab CICD实战及解析【干货】

云原生专栏大纲 文章目录 准备工作gitlab-ci.yml流水线mven打包项目制作并推送镜像kaniko方式docker方式 部署到k8s验证执行情况 GitLab Runner k8s执行器工作流程注册配置kubernetes runnerkubernetes runner配置通过修改 Pod 规范为每个构建作业创建一个 PVC自定义卷装载持久…

腾讯云Linux(OpenCloudOS)安装tomcat9(9.0.85)

腾讯云Linux(OpenCloudOS)安装tomcat9 下载并上传 tomcat官网 https://tomcat.apache.org/download-90.cgi 下载完成后上传至自己想要放置的目录下 解压文件 输入tar -xzvf apache-tomcat-9.0.85.tar.gz解压文件,建议将解压后的文件重新命名为tomcat,方便后期进…

如何编辑图片上的文字?分享5种可以编辑的工具!

在数字时代,图片已经成为信息传递的重要载体。有时候,我们需要在图片上添加文字,以增加信息的清晰度或创意性。那么,如何编辑图片上的文字呢?本文将为你揭秘编辑图片文字的必备工具,让你轻松实现创意表达。…

python小项目:口令保管箱

代码&#xff1a; #! python3 # python 编程-----口令保管箱passwords{emails: F7minlBDDuvMJuxESSKHFhTxFtjVB6,blog:VmALvQyKAxiVH5G8v01if1MLZF3sdt,luggage:12345,} import sys,pyperclip if len(sys.argv)<2:print(usage:python python3文件[accout]-copy accout pass…

【Linux网络编程】网络编程套接字(1)

【Linux网络编程】网络编程套接字(1) 目录 【Linux网络编程】网络编程套接字(1)源IP地址和目的IP地址端口号端口号和进程ID的关系 网络通信TCP协议UDP协议网络字节序socket编程接口简单的UDP网络程序 作者&#xff1a;爱写代码的刚子 时间&#xff1a;2024.1.29 前言&#xff1…

《HTML 简易速速上手小册》第9章:HTML5 新特性(2024 最新版)

文章目录 9.1 HTML5 新增标签和属性9.1.1 基础知识9.1.2 案例 1&#xff1a;创建一个结构化的博客页面9.1.3 案例 2&#xff1a;使用新的表单元素创建事件注册表单9.1.4 案例 3&#xff1a;创建一个具有高级搜索功能的搜索表单 9.2 HTML5 表单增强9.2.1 基础知识9.2.2 案例 1&a…

【Algorithms 4】算法(第4版)学习笔记 01 - 1.5 案例研究:union-find算法

文章目录 前言参考目录学习笔记1&#xff1a;动态连通性2&#xff1a;UF 实现 1&#xff1a;快速查找 quick-find2.1&#xff1a;demo 演示 12.2&#xff1a;demo 演示 22.3&#xff1a;quick-find 代码实现3&#xff1a;UF 实现 2&#xff1a;快速合并 quick-union3.1&#xf…

第 6 章:Linux中使用时钟、计时器和信号

在本章中&#xff0c;我们将开始探索Linux环境中可用的各种计时器。随后&#xff0c;我们将深入了解时钟的重要性&#xff0c;并探讨UNIX时间的概念。接下来&#xff0c;我们将揭示在Linux中使用POSIX准确测量时间间隔的方法。之后&#xff0c;我们将进入std::chrono的领域&…

第二篇:数据结构与算法-顺序表

顺序表 动态星空制作 #include <iostream> #include <graphics.h> #include <Windows.h> using namespace std;#define MAX_START 100 //星星数 #define MAX_MARGIN 80 //随机地 #define WIN_WIDTH 640 //窗口宽 #define WIN_HEIGHT 480 //窗口高 #define…

.ui文件相关

目录 ui类生成过程&#xff1a; 提问&#xff1a; 等以后自己熟练了用代码写这些样式内容&#xff0c;尽量用代码写&#xff0c;原因很简单&#xff1a; 用代码写的可以直接修改代码&#xff0c;但是在设计界面修改的东西&#xff0c;电脑没有QC这玩意&#xff0c;还真不好改…

计算机网络-数据交换方式(电路交换 报文交换 分组交换及其两种方式 )

文章目录 为什么要数据交换&#xff1f;总览电路交换电路交换的各个阶段建立连接数据传输释放连接 电路交换的特点电路交换的优缺点 报文交换报文交换流程报文交换的优缺点 分组交换分组交换流程分组交换的优缺点 数据交换方式的选择分组交换的两种方式数据报方式数据报方式的特…

深入浅出 diffusion(4):pytorch 实现简单 diffusion

1. 训练和采样流程 2. 无条件实现 import torch, time, os import numpy as np import torch.nn as nn import torch.optim as optim from torchvision.datasets import MNIST from torchvision import transforms from torch.utils.data import DataLoader from torchvision.…

基于Redis的高可用分布式锁——RedLock

目录 RedLock简介 RedLock工作流程 获取锁 释放锁 RedLock简介 Redis作者提出来的高可用分布式锁由多个完全独立的Redis节点组成&#xff0c;注意是完全独立&#xff0c;而不是主从关系或者集群关系&#xff0c;并且一般是要求分开机器部署的利用分布式高可以系统中大多数存…

基于ncurse的floppy_bird小游戏

1. 需求分析 将运动分解为鸟的垂直运动和杆的左右运动。 2. 概要设计 2.1 鸟运动部分 2.2 杆的运动 3. 代码实现 #include <stdio.h> #include <ncurses.h>#include <stdlib.h> #include <time.h>int vx 0; int vy 1;int bird_r; int bird_c;int…

2023年算法CDO-CNN-BiLSTM-ATTENTION回归预测(matlab)

2023年算法CDO-CNN-BiLSTM-ATTENTION回归预测&#xff08;matlab&#xff09; CDO-CNN-BiLSTM-Attention切诺贝利灾难优化器优化卷积-长短期记忆神经网络结合注意力机制的数据回归预测 Matlab语言。 切诺贝利灾难优化器Chernobyl Disaster Optimizer (CDO)是H. Shehadeh于202…