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

5次阅读

共计 3350 个字符,预计需要花费 9 分钟才能阅读完成。

更新进度: 15%
更新工夫: 2020-07-23

前言

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

题和网络搜寻总结而来、自己并不保障答案的正确性、齐全是集体的了解、如果有谬误的中央欢送各位

前辈、大佬指出、万分感激????

一、目录

1、let 和 var 和 const 的区别

2、get 和 post 的区别

3、call 和 apply 和 bind 和 ()=> {} 的区别

4、setTimeout 和 setInterve 的区别

5、Callback、Promises、observer、Async/Await 的区别

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

7、instanceOf 和 constructor 的区别

8、preventDefault 和 stopPropagation 的区别

9、es6 和 es5 的区别

10、Vue 和 React 和 jQuery 的区别

11、express 和 koa 的区别

12、mvvm,mvc,mvp 区别

13、线程和过程的区别

14、堆和栈的区别

15、同步异步的区别

16、HTTP 各版本比拟

17、TCP 和 UDP 的区别

二、答案

1、let 和 var 和 const 的区别

var 有变量晋升、let 和 const 没有

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

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

let 和 const 都是块级作用域、都不能反复定义、不会影响内部变量

2、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 却不能够

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


性能: 前三个都是通过第一个参数扭转函数运行时的 this 指向、箭头函数则是将 this 指向绑定到创立时环境上

执行: apply 和 call 都是立刻执行的、然而 bind 则是返回了一个新的函数期待调用、箭头函数则是语法

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

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

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

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

4、setTimeout 和 setInterve 的区别

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

雷同: 两个都是宏工作、两个的默认 this 指向都是 window

5、Callback、Promises、setTimeOut 的区别

首先三者都是异步编程的计划之一

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

Promises 是微工作、setTimeOut 则是宏工作、因为微工作是在主函数执行结束销毁之前执行的、所以 Promises 异步在 setTimeOut 之前执行

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

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


存储大小: cookie 比拟小、个别在 4kb 左右、而 local 和 session 个别为 5M 左右

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

存储工夫: cookie 能够设置生效工夫、不设置的状况下敞开页面时生效、session 则是会话级存储敞开窗口时生效、local 则不被动删除永不生效

应用场景: cookie 次要存储一些例如身份校验等信息、session 则作为以后窗口的长期数据存储地位、local 能够存储一些以后用户的偏好设置等数据

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

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

7、instanceOf 和 typeOf 的区别

instanceOf 操作符用来判断 constructor.prototype 是否存在于参数 object 的原型链上。typeOf 是一元运算符、用来判断 一个任意参数的数据类型

8、preventDefault 和 stopPropagation 的区别

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

9、es6 和 es5 的区别 | es6 新个性


es6 新个性
    let、const 等变量申明形式、有了块级作用域的概念
    
    构造赋值、箭头函数、数组开展、默认参数值、字符串模版
    
    Set 和 Map 对象、Symbol 数据类型(保障唯一性)
    
    Generators、Promises 和 Async/awite 异步计划
    
    模块化计划、借鉴了 CommonJS 和 AMD 长处
    
    Proxies、应用代理监听对象操作
    
    class 语法糖

10、Vue、React 和 jQuery 的区别

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

jQuery 的核心思想是“用起码的代码、做更多的事件”, 与原生 JS 的区别仅在于更加不便的代码编写
而 Vue 和 React 等框架则是基于 MVVM 的理念设计的、他做到了数据与视图的拆散

TODO Vue 与 React 的区别

11、express 和 koa 的区别

TODO

12、mvvm,mvc,mvp 区别

TODO

13、线程和过程的区别

一个程序至多有一个过程、一个过程至多有一个线程

一个过程能够蕴含多个线程、过程与线程的关系好比 火车 和 车厢 的关系

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

14、堆和栈的区别

堆是由内存动态分配的、栈则是由零碎动调配的

堆中寄存对象自身、栈中则寄存根本数据类型和对象援用、堆比拟大、栈比拟小

15、同步异步的区别

同步须要期待函数执行结束后能力执行其余的操作、异步则不须要、即同步会造成阻塞

16、HTTP 各版本比拟

TODO

17、TCP 和 UDP 的区别

TODO

三、CSS 区别

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

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

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

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

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

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

三者在视觉上都能够实现暗藏元素的成果

display:none 是齐全暗藏、此时元素已不存、在文档流中不占据地位

visibility:hidden 也能够暗藏元素、但依然在文档流中占据肯定的地位

opacity: 0 成果上与 hidden 相似、实现原理上是将元素变得通明不可见






正文完
 0