【每日前端面经】2023-02-26

题目来源: 牛客

http和https

http是一种用于分布式、协作式和超媒体信息系统的应用层协议。简单来说就是一种发布和接收HTML页面的方法,被用于在Web浏览器和网站服务器之间传递消息。该协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息

https是一种透过计算机网络进行安全通信的传输协议。https经由http进行通信,但利用SSL/TLS来加密数据包,默认工作在443端口

xss攻击

xss即跨站脚本攻击,指的是当目标网站目标用户浏览器渲染HTML文档的过程中,出现了不被预期的脚本指令并执行。xss攻击的核心思想就是在HTML页面中注入恶意代码

csrf攻击

csrf即跨站请求伪造攻击,指的是挟持用于在当前已登录的Web应用程序上执行非本意的操作的攻击方法。可以简单的理解为:攻击者盗用用户的登录信息,以用户的身份模拟发送各种请求。对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作

跨域

跨域是指服务器允许向服务器发送跨域请求,同源策略下协议+域名+端口三者有一个不同就会产生跨域。跨域限制了Cookie等缓存,DOM和JS对象以及AJAX请求

  • JSONP跨域: 利用

僵尸进程和孤儿进程

一般情况下,子进程由父进程创建,子进程再创建新的进程。父子进程是一个异步过程,父进程永远无法预测子进程的结束。所以,当子进程结束后,它的父进程会调用wait或waitpid取得子进程的终止状态,回收掉子进程的资源

  • 孤儿进程: 父进程结束后,它的一个或多个子进程还在运行,那么这些子进程就成为孤儿进程。子进程的资源由init进程回收
  • 僵尸进程: 子进程结束后,它的父进程没有用wait或waitpid去获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中

死锁以及怎么解决死锁

死锁是指多个线程因竞争资源互相等待而导致的一种僵局,若无外力作用,这些进程都将无法推进

  • 互斥条件: 进程要求对所分配的资源进行排他性控制,即在一段时间内某资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待

  • 不可剥夺条件: 进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放

  • 请求与保持条件: 进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放

  • 循环等待条件: 存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时被链中下一个进程所请求

  • 预防死锁: 通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或几个条件,来防止死锁的发生

  • 避免死锁: 在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免死锁的发生

  • 检测死锁: 允许系统在运行过程中发生死锁,但可设置检测机构及时检测死锁的发生,并采取适当措施加以清除

  • 解除死锁: 当检测出死锁中,便采取适当措施将进程从死锁状态中解脱出来

Service Worker

service worker是一个服务器与浏览器之间的中间人角色,如果网站中注册了service worker那么它可以拦截当前网站所有的请求进行判断,如果需要向服务器发起请求的就转给服务器,如果可以直接使用缓存的就直接返回缓存不再转给服务器

状态码

  • 1xx: 提示信息,表示目前协议处理的中间状态,还需要后续的操作
  • 2xx: 成功,报文已经收到并被正确处理
  • 3xx: 重定向,资源位置发生变动,需要客户端重新发送请求
  • 4xx: 客户端错误,请求报文有误,服务器无法处理
  • 5xx: 服务器错误,服务器在处理请求时内部发生了错误

前端埋点

前端埋点主要用于收集产品数据,它的目的是上报相关行为数据,相关人员以数据为依据来分析产品在用户端的使用情况,根据分析出来的结果辅助产品优化、迭代以及新需求的开发

  • 手动代码埋点
  • 可视化埋点
  • 全埋点: 前端自动采集全部事件并上报埋点数据

cookie和session

都是用于跟踪浏览器用户身份的会话方式

  • cookie: 浏览器第一次发送请求到服务器端->服务器端创建并返回Cookie->浏览器再次访问服务端会携带Cookie->服务器通过Cookie区分用户
  • session: 浏览器第一次发送请求到服务器端->服务器创建并返回Session和特殊Cookie->浏览器发送请求到服务器并携带Session->服务器端根据Session区分用户

从url到页面渲染

  • 从浏览器接收url到开启网络请求线程
  • 开启网络线程到发出一个完整的HTTP请求
  • 从服务器接收到请求到对应后台接收到请求
  • 后台的前台的HTTP交互
  • 浏览器解析HTTP数据包
  • CSS的可视化格式模型
  • JS引擎解析过程

简单请求和复杂请求

简单请求包括GET、POST、HEAD,直接发起请求
非简单请求即为复杂请求,需要先发送OPTIONS预检

cdn

CDN即内容分发网络。它是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络

dns

DNS是域名和IP地址互相映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住IP数据串。通过主机名最终的带该主机对应的IP地址的过程叫做域名解析。DNS协议运行在UDP协议之上,端口是53

node事件循环

事件循环机制用于管理异步API的回调函数什么时候回到主线程中执行。Node采用的是异步IO模型,同步API在主线程中执行,异步API在底层的C++维护的线程中执行,异步API的回调函数也会在主线程中执行

token过期处理

前端用户登录成功后后端服务会给用户颁布一个JWT Token,前端在接收到JWT Token后会将其存储有。后续每次请求都会将此Token放在请求头中传递到后端,后端会判断是否过期,如果过期就会让前端跳转到登陆页面重新登陆

若要将JWT Token自动续期,需要将JWT Token存储在缓存中,将有效期设置成Token有效期的两倍。当用户发送请求时,如果Token过期,先校验缓存,如果尚未过期就可以从后端获取Token并覆盖当前

断点续传

在上传或下载时,将下载或上传任务人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传或者下载未完成的部分,而没有必要从头开始上传或者下载

  • 将需要上传的文件按照一定的分割规则,分割成相同大小的数据块
  • 初始化一个分片上传任务,返回本次分片上传唯一标识
  • 按照一定的策略发送各个分片数据块
  • 发送完成后,服务端判断数据上传是否完整并选择是否合并

菜鸟教程
web攻防之XSS攻击详解
什么是CSRF?如何防御CSRF攻击?知了堂告诉你
9种常见的前端跨域解决方案(详解)
大文件上传:秒传、断点续传、分片上传
关于Token自动续期的解决方案
这么通俗易懂的Node事件循环,背就完了
孤儿进程和僵尸进程的区别
线程死锁及解决办法
service worker 是什么?看这篇就够了
什么是DNS?
什么是CDN?它解决了什么难题?5分钟让你明明白白!
HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3的区别
大厂常问:输入URL到显示页面的全过程(敲详细)
什么是简单请求和复杂请求
前端埋点简单实现方式
Cookie和Session的区别(面试必备)

新手发文,礼貌求关❤️

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

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

相关文章

内存函数(C语言进阶)

目录 前言 1、memcpy 2、memmove 3、memcmp 4、memset 结语 前言 本篇介绍了C语言中的内存函数,内存函数,顾名思义就是处理内存的函数。 1、memcpy memcpy:内存拷贝函数。 相对于strcpy只能拷贝字符串来讲,memcpy能拷…

Qt介绍以及qt_creater的安装和C++项目工程创建

最近天气严寒,同学们要注意保暖哦!学习的同时别忘了照顾好自己呀!o(* ̄▽ ̄*)ブ 目录 一、Qt 1、Qt概念 2、常见的GUI 二、安装qt_creater 方法一: 方法二: 三、Qt_creater 中C项目的创建 …

MySQL之sql函数分类

华子目录 sql函数聚合函数数值型函数字符串函数日期和时间函数流程控制函数case用法 sql函数 聚合函数 聚合函数是对一组值进行运算,并返回单个值。也叫分组函数,具体用法请参考该博文 https://blog.csdn.net/huaz_md/article/details/136081708?spm1…

MATLAB环境下一种改进的瞬时频率(IF)估计方法

相对于频率成分单一、周期性强的平稳信号来说,具有非平稳、非周期、非可积特性的非平稳信号更普遍地存在于自然界中。调频信号作为非平稳信号的一种,由于其频率时变、距离分辨率高、截获率低等特性,被广泛应用于雷达、地震勘测等领域。调频信…

PostgreSQL内存上下文系统设计概述

PostgreSQL内存上下文系统设计概述 原文:src/backend/utils/mmgr/README 背景 我们在“内存上下文”中进行大部分内存分配,通常是AllocSets由src/backend/utils/mmgr/aset.c实现。在没有大量开销的情况下成功进行内存管理的关键是定义一组具有适当生命周期的有用…

华为大数据平台-FusionInsight MRS

1、产品定位 (1) 关于华为的大数据平台,本人之前用过FusionInsight HD版本,近期也在用MRS结合MPP和治理平台做湖仓一体的开发,其实MRS是在HD基础上进行的升级、改版,MRS是集成一些开源的大数据组件,有自己的运维和安全…

【leetcode】剑指Offer专项突击版含注释 Java版本(一)

目录 前言第一天(整数)剑指 Offer II 002. 二进制加法(简单) 第二天(整数)剑指 Offer II 004. 只出现一次的数字 (中等)剑指 Offer II 005. 单词长度的最大乘积(中等&…

LabVIEW光伏逆变器低电压穿越能力测试

LabVIEW光伏逆变器低电压穿越能力测试 随着光伏发电技术的迅速发展,光伏逆变器的低电压穿越(LVRT)能力日益成为影响电网稳定性的关键因素。为了提升光伏逆变器的并网性能,开发了一套基于LabVIEW的光伏逆变器LVRT测试系统。该系统…

如何成为fpga工程师

FPGA的应用领域非常的广,尤其再人工智能,大数据,云计算等等方向非常吃香。加上国家这两年的政策支持,整个芯片行业相比较其他的传统行业来说会好很多,总之前景是光明的,道路是曲折的,想要在人才…

05-验证整数输入

需求分析 我们在脚本中验证整数输入可谓是小菜一碟,但如果你也想接受负数的话,可就没那么容易了。问题在于每个数值只能有一个负号,而且还必须出现在数值的最开始部分。下面脚本可以确保正确地格式化负数,另外还能检查其值是否位…

Parquet 文件生成和读取

文章目录 一、什么是 Parquet二、实现 Java 读写 Parquet 的流程方式一:遇到的坑:坑1:ClassNotFoundException: com.fasterxml.jackson.annotation.JsonMerge坑2:No FileSystem for scheme "file"坑3:与 spa…

JAVA工程师面试专题-《并发编程篇》

目录 一、线程 1、并发与并行的区别 2、同步和异步的区别 3、Java中创建线程有哪些方式? 4、Thread和Runnable的区别 5、Java中的Runnable、Callable、Future、FutureTask的区别和联系? 6、说一下你对 CompletableFuture 的理解 7、volatile关键字有什么用&…

Ansible script 模块 该模块用于将本机的脚本在被管理端的机器上运行。Ansible服务执行本机脚本

目录 过程首先,我们写一个脚本,并给其加上执行权限直接运行命令来实现在被管理端执行该脚本验证错误演示 过程 该模块直接指定脚本的路径即可 首先,我们写一个脚本,并给其加上执行权限 vim /tmp/df.sh编辑脚本内容 这个脚本内容…

信钰证券:无任何氢能产品形成收入,这只氢能概念股却八连板了

受氢能方针面影响,多个氢能股迎来连涨潮。 2月26日,蓝科高新(601798.SH)涨停,截至收盘报11.01元,涨幅9.99%,完成八连板,总市值39.03亿元。首要因其地点氢能板块全体上涨影响。 同日同花顺氢动力概念下&am…

PyTorch 的 Autograd Engine(自动求导引擎)

PyTorch 的 Autograd Engine(自动求导引擎)是 PyTorch 中实现自动求导功能的核心组件之一。Autograd Engine 负责构建计算图、跟踪张量操作,并自动计算梯度。以下是 Autograd Engine 的一些关键特点和功能: 动态计算图&#xff1a…

【底层解读】ArrayList源码学习

成员变量 学习源码前,我们还是先看一下ArrayList中成员变量有哪些 构造函数 ArrayList一共有三个构造函数。 第一个:带有指定初始容量的构造函数 第二个:空参构造 第三个:包含指定集合的构造函数 OK,看完构造函数&a…

120KW OBC充电机定期检测的必要性

随着电动汽车的普及,充电设备的需求也在不断增加,其中,120KW OBC(On-Board Charger)充电机作为电动汽车的重要充电设备,其性能和安全性直接关系到电动汽车的使用体验和安全。因此,对120KW OBC充…

Python日志记录库——loguru

文章目录 一. 概述二、基本使用2.1 安装2.2 日志输出 三、进阶用法3.1 显示格式3.2 写入文件3.3 模块名参数化3.4 日志留存、压缩与清理3.5 序列化为json格式3.6 并发安全 参考资料 一. 概述 在 Python 中用到日志记录,那就不可避免地会用到内置的 logging标准库 。…

Spring全面精简总结

Spring两大核心功能:IOC控制反转、AOP面向切面的编程 控制反转(loC,Inversion of Control),是一个概念,是一种思想。指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是…

雷达一维成像:基于数据集的实践

雷达一维成像:基于数据集的实践 (距离压缩\距离-时间图\距离-多普勒图\微多普勒图) 说明 雷达成像技术是雷达发展的一个重要里程碑:从此雷达的功能不仅仅是将所观测的对象视为点目标,并只测量它的位置与运动参数。雷达成像技术使得我们可以获…