【每日前端面经】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的区别(面试必备)

新手发文,礼貌求关❤️
  • 35
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xxhls0208

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值