高级前端开发进阶指南—面试篇—区别类型问题整理

更新进度: 15%
更新时间: 2020-07-23

前言

本篇文章将长期更新前端技术中关于 A与B的区别 类型的问题、文章中的问题与答案都是根据面试真前端

题和网络搜索总结而来、本人并不保证答案的正确性、彻底是我的的理解、若是有错误的地方欢迎各位es6

前辈、大佬指出、万分感谢🙏面试

1、目录

一、let和var和const的区别express

二、get和post的区别编程

三、call和apply和bind和()=> {}的区别数组

四、setTimeout和setInterve的区别浏览器

五、Callback、Promises、observer、Async/Await的区别安全

六、cookie,session,localStorage和sessionStorage的区别服务器

七、instanceOf和constructor的区别cookie

八、preventDefault和stopPropagation的区别

九、es6和es5的区别

十、Vue和React和jQuery的区别

十一、express和koa的区别

十二、mvvm,mvc,mvp区别

1三、线程和进程的区别

1四、堆和栈的区别

1五、同步异步的区别

1六、HTTP各版本比较

1七、TCP和UDP的区别

2、答案

一、let和var和const的区别

var有变量提高、let和const没有

var和let在定义后能够进行修改、但const定义后就不能够再进行修改

var和let在定义后能够先不赋值、初始值为undefined、const必须定义后赋值

let和const都是块级做用域、都不能重复定义、不会影响外部变量

二、get和post的区别

功能: get通常用来获取数据、而post通常用来提交数据(但技术上均可以实现)

传输方式: get是明文传输、而post是密文传输、二者对参数的处理方式不一样、post相比更加安全

界面刷新: get在用户回退或者刷新的时候是无害的、可是post请求却会被从新提交、这不是咱们指望的

参数长度: get请求的url长度是有限制的、这个限制在不一样的浏览器略有不一样、但post却没有url长度的限制、且二者参数的位置不一样

请求过程: 
    get请求产生一个TCP数据包、post则会产生两个数据包、两次包在验证数据包的完整性上有很是大的优点、而在具体的请求过程上
get直接将请求头和请求体发送给服务器、post则是先将请求头发送给服务器、服务器响应100后再发送data、服务器响应200后返回数据
同时由于post请求的过程更复杂、因此相比之下get的性能更佳、但具体使用什么仍是应该根据具体的需求而定(注: 火狐的post请求只发一次包)

编码格式: get只能进行url编码、可是post却支持各类编码格式

历史停留: get请求的参数能够被记忆在浏览器中、可是post却不会

数据大小: get请求传输的数据大小受到浏览器、操做系统、服务器的影响、post理论上没有大小限制、实际上受服务器的容量和设置影响

get请求能够被书签收藏、可是post却不能够

三、call和apply和bind和箭头函数的区别

功能: 前三个都是经过第一个参数改变函数运行时的this指向、箭头函数则是将this指向绑定到建立时环境上

执行: apply和call都是当即执行的、可是bind则是返回了一个新的函数等待调用、箭头函数则是语法

参数: call的参数从第二个开始、能够有不少个、而apply只有两个参数、第二个参数是数组

bind是硬绑定、一旦绑定this指向就不会被更改、硬绑定的原理是用函数包括一个apply执行

箭头函数不能够做为构造函数存在、即他不能够被 new 同时箭头函数不能使用arguments参数

call的性能要比apply好一些、特别是传参数量大于三个的时候、猜想多是由于apply参数须要遍历?

四、setTimeout和setInterve的区别

一个是定时器、每隔一段时间触发一次; 一个是延时器、等待多长时间以后执行一次

相同: 两个都是宏任务、两个的默认this指向都是window

五、Callback、Promises、setTimeOut的区别

首先三者都是异步编程的方案之一

Callback函数在递归调用自身的时候会致使堆栈溢出

Promises是微任务、setTimeOut则是宏任务、由于微任务是在主函数执行完毕销毁以前执行的、因此Promises异步在setTimeOut以前执行

TODO 连接 Google V8 事件循环系统学习总结

六、cookie,session,localStorage和sessionStorage的区别

存储大小: cookie比较小、通常在4kb左右、而local和session通常为5M左右

存储要求: 都只能存储字符串、不可存储其余格式、且cookie存储时条目不超过20个左右、session和local则没有存储数量的限制

存储时间: cookie能够设置失效时间、不设置的状况下关闭页面时失效、session则是会话级存储关闭窗口时失效、local则不主动删除永不失效

使用场景: cookie主要存储一些例如身份校验等信息、session则做为当前窗口的临时数据存储位置、local能够存储一些当前用户的偏好设置等数据

安全性能: 三者都有被伪造和读取的风险

cookie每次都会携带在请求头中、不管这个接口是否须要、而session和local不会发送到服务器

七、instanceOf和typeOf的区别

instanceOf操做符用来判断 constructor.prototype 是否存在于参数 object 的原型链上。

typeOf是一元运算符、用来判断 一个任意参数的数据类型

八、preventDefault和stopPropagation的区别

e.preventDefault() 取消浏览器默认行为
e.stopPropagation = true; 阻止事件冒泡或捕获

九、es6和es5的区别 | es6新特性

es6新特性
    let、const等变量声明方式、有了块级做用域的概念
    
    结构赋值、箭头函数、数组展开、默认参数值、字符串模版
    
    Set和Map对象、Symbol数据类型(保证惟一性)
    
    Generators、Promises 和 Async/awite 异步方案
    
    模块化方案、借鉴了CommonJS和AMD优势
    
    Proxies、使用代理监听对象操做
    
    class语法糖

十、Vue、React和jQuery的区别

jQuery与Vue、React的最大区别就在与从原有的操做Dom的思想转变到操做数据的思想上

jQuery的核心思想是 “用最少的代码、作更多的事情”, 与原生JS的区别仅在于更加方便的代码编写
而Vue和React等框架则是基于MVVM的理念设计的、他作到了数据与视图的分离

TODO Vue与React的区别

十一、express和koa的区别

TODO

十二、mvvm,mvc,mvp区别

TODO

1三、线程和进程的区别

一个程序至少有一个进程、一个进程至少有一个线程

一个进程能够包含多个线程、进程与线程的关系比如 火车 和 车箱 的关系

进程是资源分配的最小单位、线程则是CPU调度的最小单位

1四、堆和栈的区别

堆是由内存动态分配的、栈则是由系统动分配的

堆中存放对象自己、栈中则存放基本数据类型和对象引用、堆比较大、栈比较小

1五、同步异步的区别

同步须要等待函数执行完毕后才能执行其余的操做、异步则不须要、即同步会形成阻塞

1六、HTTP各版本比较

TODO

1七、TCP和UDP的区别

TODO

3、CSS区别

一、rem,px,em, pt的区别

px是像素单位、是相对屏幕分辨率而言的、并不会受其余影响

pt是长度单位、是印刷业经常使用的计量单位、72pt = 2.54cm

em是相对长度单位、相对于当前对象内文本的字体尺寸、em继承父元素的字体大小

rem是相对长度单位、与em的不一样点在于、rem所参照的是根元素的字体大小

二、display:none和visibility:hidden的区别

三者在视觉上均可以实现隐藏元素的效果

display:none 是彻底隐藏、此时元素已不存、在文档流中不占据位置

visibility:hidden 也能够隐藏元素、但仍然在文档流中占据必定的位置

opacity: 0 效果上与hidden相似、实现原理上是将元素变得透明不可见
相关文章
相关标签/搜索