The Future Depends on You
首页/其他/其他面试题记录/
其他面试题记录
上次更新时间:2021-5-26 文章分类:其他 阅读人数:8

js 重排和重绘

浏览器下载完页面所有的资源后,构建DOM树和渲染树。当DOM的变化影响了元素的几何属性,浏览器需要重新计算元素的几何属性,同样其他元素的几何属性和位置也会因此受到影响。浏览器重新构造渲染树。这个过程称为重排。重排后,浏览器会重新绘制受影响的部分,该过程称为重绘

文件上传

<input type="file" id="file"/>

let upload = document.querySelector("#file")
upload.addEventListener("change",function () {
  //获取到选中的文件
  var file = upload.files[0];
  //创建formdata对象
  var formdata = new FormData();
  formdata.append("file",file);
  //创建xhr,使用ajax进行文件上传
  var xhr = new XMLHttpRequest();
  xhr.open("post","/upload");
  //将formdata上传
  xhr.send(formdata);
  //回调
  xhr.onreadystatechange = function () {
    // 上传成功
  }

  xhr.upload.onprogress = function (event) {
    if(event.lengthComputable) {
      // 上传的进度
      let percent = event.loaded / event.total * 100;
    }
  }
});

组件化与模块化

1、组件化

组件化:从UI界面的角度进行划分;前端的组件化,方便UI组件的重用。

2、模块化

模块化:从代码逻辑的角度进行划分;方便代码分层开发,保证每个功能模块的职能单一。

http 和 https 的区别

1、http

http(超文本传输协议):被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密。它可以使浏览器更加高效,使网络传输减少。

2、https

https:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

3、区别

  1. http和https采用不同的连接方式,使用的端口号也不一样,http使用80端口,https使用443端口
  2. http 采用明文传输,https 采用具有安全性的 ssl 加密传输协议
  3. http 简单,无状态;HTTPS 采用 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全
  4. https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用

http请求方式

  1. get: 向特定的资源发出请求
  2. post:向指定资源提交数据进行处理请求
  3. put:向指定资源位置上传其最新内容
  4. delete:请求服务器删除Request-URL所标识的资源
  5. options:返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性

http状态码

100:客户端应当继续发送请求
101:服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求
200:请求成功
201:请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随Location 头信息返回
202:服务器已接受请求,但尚未处理
203:服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝
204:服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息
205:服务器成功处理了请求,且没有返回任何内容
300:被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息
301:被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一
302:请求的资源现在临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求
400:1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。2、请求参数有误。
401:当前请求需要用户验证。客户端可以重复提交一个包含恰当的 Authorization 头信息的请求
403:服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交
404:请求失败,请求所希望得到的资源未被在服务器上发现
405:请求行中指定的请求方法不能被用于请求相应的资源
500:服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现
501:服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求
502:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
503:由于临时的服务器维护或者过载,服务器当前无法处理请求
504:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应
505:服务器不支持,或者拒绝支持在请求中使用的 HTTP 版本

localStorage和sessionStorage的区别

  1. localStorage生命周期是永久,除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在;sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据就被清空
  2. 相同浏览器的不同页面间可以共享相同的 localStorage,不同页面或标签页间无法共享sessionStorage的信息

跨域处理

webpack 核心模块

  1. 入口(entry):指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始
  2. 输出(output):告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件
  3. loader:让 webpack 能够去处理那些非 JavaScript 文件
  4. 插件(plugins):插件则可以用于执行范围更广的任务

linux常用命令

ls:查看文件夹包含的文件及文件权限
cd:切换当前目录
pwd:查看当前工作目录路径
mkdir:创建文件夹
rm:删除一个目录中的一个或多个文件或目录
rmdir:从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对其父目录的写权限
mv:移动文件或修改文件名
cp:将源文件复制至目标文件,或将多个源文件复制至目标目录
cat:一次显示整个文件;从键盘创建一个文件;将几个文件合并为一个文件
whereis:用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)
find:在文件树中查找文件,并作出相应的处理
chmod:改变 linux 系统文件或目录的访问权限
tar:压缩和解压文件
df:显示磁盘空间使用情况
ln:为文件在另外一个位置建立一个同步的链接,当在不同目录需要该问题时,就不需要为每一个目录创建同样的文件,通过 ln 创建的链接(link)减少磁盘占用量
ps:查看当前运行的进程状态,一次性查看,如果需要动态连续结果使用 top

git常用命令

1、远程仓库命令

检出仓库:$ git clone git://github.com/jquery/jquery.git
查看远程仓库:$ git remote -v
添加远程仓库:$ git remote add [name] [url]
删除远程仓库:$ git remote rm [name]
修改远程仓库:$ git remote set-url --push [name] [newUrl]
拉取远程仓库:$ git pull [remoteName] [localBranchName]
推送远程仓库:$ git push [remoteName] [localBranchName]
$git push origin test:master // 提交本地test分支作为远程的master分支
$git push origin test:test // 提交本地test分支作为远程的test分支

2、分支操作命令

查看本地分支:$ git branch
查看远程分支:$ git branch -r
创建本地分支:$ git branch [name]
切换分支:$ git checkout [name]
创建新分支并立即切换到新分支:$ git checkout -b [name]
删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并
创建远程分支(本地分支push到远程):$ git push origin [name]
删除远程分支:$ git push origin :heads/[name] 或 $ gitpush origin :[name]

3、版本操作命令

查看版本:$ git tag
创建版本:$ git tag [name]
删除版本:$ git tag -d [name]
查看远程版本:$ git tag -r
创建远程版本(本地版本push到远程):$ git push origin [name]
删除远程版本:$ git push origin :refs/tags/[name]
合并远程仓库的tag到本地:$ git pull origin --tags
上传本地tag到远程仓库:$ git push origin --tags
创建带注释的tag:$ git tag -a [name] -m 'yourMessage'

4、Git 常用命令

git branch 查看本地所有分支
git status 查看当前状态
git commit 提交
git branch -a 查看所有分支
git branch -r 查看本地所有分支
git commit -m “注释” 提交并且加注释
git pull 本地与服务器同步
git push origin master 将文件推送到远程仓库
git remote show origin 显示远程仓库 origin 中的资源
git checkout -b dev 新建一个本地的dev分支
git checkout dev 切换到本地dev分支
git log 查看commit日志
git diff 查看尚未暂存的更新
git stash push 将文件push到一个临时空间
git stash pop 将文件从临时空间pop下来

tcp和udp的区别

nginx负载均衡