前端面试题2024/9/22整理(包装到简历实习项目里的面试题)

文章目录

    • 1.大文件上传相关知识点
      • 1.文件上传的数据类型是哪种?
      • 2.大文件是怎么上传的?
      • 3.如何区分不同的文件?(Hush)
      • 4.Hush值是怎么算的?
      • 5.遇到什么问题?(并发问题:控制多个请求的并发量)
      • 6.后端需要提供哪些接口?

1.大文件上传相关知识点

1.文件上传的数据类型是哪种?

文件上传:如果不考虑文件大小上传,直接调用后端提供的post接口,文件上传必须用Formdata数据类型,Formdata里面携带File对象或Blob对象。

2.大文件是怎么上传的?

分片。
将大文件分片上传到服务器,服务器接收分片后,再将分片组装成一个文件。
如何分片?
核心是使用Blob对象的slice方法(File对象继承与Blob)。
主要流程是:
1.先将大文件用slice方法分片,将分好的片存到一个数组对象中。
2.计算该大文件的Hush值(利用文件内容计算,因此hush值都是唯一的,且不会根据文件名的改变就改变)
3.上传文件,如果该文件已经传过,则实现秒传,如果该文件只上传过部分(即上传了一部分切片,即断点重传),则过滤掉已经传过的切片,只上传未上传的切片。全部切片上传完成后,通知服务器做合并切片操作。

3.如何区分不同的文件?(Hush)

利用Hush,Hush值是通过大文件中的内容计算的,所以Hush值是唯一的,并且不会随着文件的名称改变而改变

4.Hush值是怎么算的?

spark-MD5包
切片过大算hush很费时间,下面的方法既保证了所有的切片都参与了计算,也能保证不耗费很长时间。
1.第一个和最后一个切片全部参与计算
2.中间剩余的切片分别在前面,后面,中间取2个字节参与计算

5.遇到什么问题?(并发问题:控制多个请求的并发量)

我们上传分片的时候是并发上传的,就是多个切片一起上传
但是当时忽略了多个请求同时发送会造成浏览器内存溢出,导致页面卡死了
比如谷歌浏览器,它默认并发数量只有6
所以要定义一个请求池来限制并发,如果请求池中已经有6个切片就要暂时阻塞住切片上传,必须等待请求池中有空余位置时,才能继续上传切片
伪代码如下:

const max = 6 //定义浏览器最大并发请求数
const taskpool = [] //请求池
if(taskpool.length===max){
await promise.race(taskpool)
}

注:Pomise.race的作用就是将多个异步任务包裹起来,当有一个完成的话,那么就会触发then事件。

6.后端需要提供哪些接口?

1.检查文件接口:接收参数:文件的hush值
文件已经上传过,通知客户端不需要再传,秒传成功
文件已经上传过,但是没有传完,告知客户端需要继续传,并告知需要从第几个分片开始传
文件没有上传过
2.上传文件接口:formData类型的file
接收分片文件,保存到临时目录
3.合并接口:接收参数:文件的hush值
合并文件分片,告知前端上传成功,并删除临时文件。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

BUUCTF逆向wp [WUSTCTF2020]Cr0ssfun

第一步 查壳,本题是64位,无壳。 第二步 查看主函数,点开看主函数,没什么东西。 左边表里面看到好几个i开头的函数(红色方框里面),点开看后每个函数的最后末尾(图中红色椭圆圈那里&a…

(笔记自用)位运算总结+LeetCode例题:颠倒二进制位+位1的个数

一.位运算总结: 在解题之前理解一下为什么需要位运算?它的本质是什么? 力扣上不少位运算相关的题,并且很多题也会用到位运算的技巧。这又是为什么? 位运算的由来 在计算机里面,任何数据最终都是用数字来表示的&…

在Java中基于GeoTools的Shapefile读取乱码的问题解决办法

目录 前言 1、Shapefile属性字段编码的情况: 一、Shp文件常见的字符集编码 1、System编码 2、ISO-8859-1编码 3、UTF-8编码 二、GeoTools解析实战 1、未进行字符处理 2、乱码问题的解决 3、转码支持 4、属性字段编码结果 三、总结 前言 文件编码&#x…

分布式锁优化之 使用lua脚本改造分布式锁保证判断和删除的原子性(优化之LUA脚本保证删除的原子性)

文章目录 1、lua脚本入门1.1、变量:弱类型1.2、流程控制1.3、在lua中执行redis指令1.4、实战:先判断是否自己的锁,如果是才能删除 2、AlbumInfoApiController --》testLock()3、AlbumInfoServiceImpl --》testLock() 1、lua脚本入门 Lua 教程…

Linux基础命令以及常识

镜像站点服务器(相当于下载的网址)也可叫软件源 vim /etc/apt/sources.list 索引文件(网络服务器在本地的缓存) 服务器软件源在本地列出来一个清单,以便于主机进行查询操作 cd /var/lib/apt/lists/ 下载软件包默认存放路径 cd /var/cache/a…

认识NDK

什么是NDK(Native Development Kit) The Android NDK is a toolset that lets you implement parts of your app in native code, using languages such as C and C. &emdp; Android NDK 是一个工具集,可让您使用 C 和 C 等语言以原生代…

重型工程车辆数据集

重型工程车辆数据集,内含Bull_dozer(推土机), Dumb_truck(卡车), Excavator(挖掘机), Grader(平地机), Loader(转载机), Mobile_crane&#xff08…

『功能项目』QFrameWork拾取道具UGUI【69】

本章项目成果展示 我们打开上一篇68QFrameWork扔到地上UGUI的项目, 本章要做的事情是实现当物品在地上时,点击物品将对应物品转移到道具栏中 制作一个提示UI界面 添加Button组件设置为点击即将父物体隐藏 拖拽到文件夹中在场景中删除 创建脚本&#xf…

架构师:使用 Zookeeper 实现分布式锁的技术指南

1、简述 在分布式系统中,多个节点可能需要访问共享资源或执行需要互斥的操作,为了避免竞争导致数据不一致或资源争用,我们需要一种机制来协调各个节点对资源的访问。分布式锁是用于解决这种竞争问题的关键技术,它确保在同一时间只有一个节点能够访问或修改共享资源。 2、Z…

Ansible部署与应用基础

由于互联网的快速发展导致产品更新换代速度逐步增长,运维人员每天都要进行大量的维护操作,按照传统方式进行维护使得工作效率低下。这时部署自动化运维就 可以尽可能安全、高效的完成这些工作。 一、Ansible概述 1.什么是Ansible Ansible 是基于 Pytho…

Matplotlib绘图基础

1、散点图 绘制散点图是数据可视化中非常常见的操作,它用于显示两组数据之间的关系。Matplotlib 提供了 plt.scatter() 函数,可以轻松绘制散点图。以下是一个基础的散点图示例代码,并包含了一些优化可视化呈现的技巧。 import matplotlib.p…

Python 如何调用讯飞星火大模型API

1 讯飞星火简介 讯飞星火是科大讯飞推出的一款先进的人工智能大模型,它具备强大的语言理解和知识问答能力,能够在多种场景中提供智能化服务。2024年6月27日,科大讯飞发布了讯飞星火大模型V4.0版本,全面对标GPT-4 Turbo。现有的模…

某采招网爬虫数据采集逆向

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 目标网站 aHR0cHM6Ly9zZWFyY2guYmlkY2VudGVyLmNvbS5jbi9zZWFyY2g/a2V5d29yZHM9JWU0…

医院伤员消费点餐限制———未来之窗行业应用跨平台架构

一、点餐上限 医院点餐上限具有以下几方面的意义: 1. 控制成本 - 有助于医院合理规划餐饮预算,避免食物的过度供应造成浪费,从而降低餐饮成本。 2. 保障饮食均衡 - 防止患者或陪护人员过度点餐某一类食物,有利于引导合…

基于51单片机的两路电压检测(ADC0808)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,通过ADC0808获取两路电压,通过LCD1602显示 二、硬件资源 基于KEIL5编写C代码,PROTEUS8.15进行仿真,全部资源在页尾,提供…

大数据Flink(一百二十三):五分钟上手Flink MySQL连接器

文章目录 五分钟上手Flink MySQL连接器 一、创建数据库表 二、​​​​​​创建session集群 三、源表查询 四、​​​​​窗口计算 五、​​​​​​结果数据写回数据库 五分钟上手Flink MySQL连接器 MySQL Connector可以将本地或远程的MySQL数据库连接到Flink中&#x…

【Spring Cloud Alibaba】Nacos

【Spring Cloud Alibaba】Nacos 1. 什么是Nacos,它都能干什么?1.1 注册中心演变及其思想1.2 Nacos Discovery1.3 远程调用流程图1.4 一个微服务的流程1.4 常用注册中心对比 2. Nacos Server部署3. Nacos Client搭建附录 1. 什么是Nacos,它都能…

科研绘图系列:R语言误差连线图(errobar linechart)

文章目录 介绍加载R包导入数据数据预处理画图系统信息介绍 误差连线图是一种在数据可视化中常用的图表,它通过在数据点处添加线段(误差线)来表示数据的变异性或不确定性。这些误差线可以基于不同的统计度量,如标准差(Standard Deviation)、标准误差(Standard Error)或…

docker操作的基本命令加容器的基本命令(仅供自己参考)

1、docker build:本地将一个docker文件打包成镜像 2、docker push:将自己打包的镜像传到镜像服务器上 3、docker pull:将镜像服务器上的镜像拉取到本地 4、docker images: 查看镜像服务器上的镜像 5、docker rmi:删…

lte sss加扰序列c产生 MATLAB和c语言实现

参考3GPP 36.211 今日给大家介绍一下LTE SSS信号产生过程中加扰序列c的产生过程以及用MATLAB 和 c语言给大家实现一下: 加扰序列c产生过程如下: 1 首先产生公共的序列x的生成 X的初始值 两个加扰序列c0和c1 c语言实现 void lte_sss_gen_c(char *c,u…