下马问前程,温酒敬长空。
近期参加的各种面试,对相关内容进行总结,持续更新中。。。
1.箭头函数和普通函数的区别:
1.箭头函数 语法更为简洁、清晰
2.箭头函数会捕获其所在上下文的this,作为自己的this
3.箭头函数不能作为构造函数,不能使用new关键字(因为箭头函数没有自己的this,它的this其实是继承了外层执行环境中的this,且this指向永远不会改变,作为构造函数其的this要是指向创建的新对象)
4.箭头函数没有自己的arguments,箭头函数中访问的arguments的值实际上是外层执行环境中的值
5.call apply bind 不会影响箭头函数的this指向
6.箭头函数没有prototype原型
7.箭头函数不能作为generator函数,不能使用yield关键字
2.vue 和 react 的区别
1.监听数据变化的原理不同:
vue借由getter/setter方法,能够准确检测到对象属性的变化,关注数据的可变性
react更加强调数据的不可变性,比较引用的方式,这回导致不必要的vdom重新渲染
2.数据流向不同:
vue1.0 是可以对props进行双向绑定的,vue2提供了语法糖,不鼓励对props进行修改
react 单向数据流,子组件和dom是通过setState实现替换,而非直接修改
3.组件通信
vue 事件,回调函数,但更加倾向于事件
react 回调函数
4.模板渲染方式
vue html扩展语法渲染; 指令 的存在
react jsx模板,更加接近远胜过
5.vuex redex
vuex 更新 直接修改数据,直接注入到组件中,灵活
redux 使用旧的state来替换新的state,每个组件需要使用connect把props和dispatch进行连接
3.fetch ajax axios 的区别
1.Ajax 允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax。核心使用
XMLHttpRequest对象2.axios 一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,本质上
也是对原生XHR的封装,是promise的实现3.fetch 采用Promise方式来处理数据。是一种简洁明了的API,比XMLHttpRequest更加简单易用
区别: axios、fetch请求后都支持Promise对象API,ajax只能用回调函数
4.websocket 和 http 的区别
相同点: 都是基于tcp协议的应用层协议
不同点:
1.websocket 双向传输,可以双向发送接收; http 是单向的
2.websocket 需要握手来建立连接,也就是会依赖http请求
5.为什么建立连接时是3次握手,而关闭时却是4次挥手呢?
建立连接时,server可以 SYN同步报文,ACK应答报文一起发送;
关闭连接时,server收到 FIN报文,不会马上关闭,只能先回复ACK应答,只有等server把所有字段发送了,才能发送FIN报文
6.http 1.0/ 1.1/ 2.0的不同
http 1.0(构建可扩展性)
http 1.1(标准化的协议)
http 2.0(为了更优异的表现)
不同: http2.0是二进制而不是文本协议;复用协议;压缩了headers;允许服务器在客户端缓存中填充数据,通过服务器推送机制来提前请求。
7.宏任务与微任务
宏任务:script、setTimeout、setInterval、requestAnimationFrame
微任务: promise.nextTick MutationObserver、promise.then || catch || finally
8.async/await 和 promise 区别
async/await优点:串行同步的写法,容易理解,代码清晰
async/await缺点:
1.无法处理promise的reject对象,需要借助tray catch
2.await会导致代码的阻塞
3.try...catch...内部的变量无法传递给下一个try...catch...
promise的问题:
1.一旦执行,中途无法停止,链式调用无法跳出
2.错误在外部捕捉不到
3.promise内部执行无法检测
9.Get 和 Post 的区别
1.GET 更加快速灵活,参数写在url后面,请求数据长度有限制,主要对数据进行查询
2.POST 更加安全,参数写在messageBody中,请求长度没有限制,主要对数据进行增删改
POST的场景:大量数据;用户敏感数据;无缓存的数据
10.defer 和 async 区别
优化的一种方式就是 非关键脚本的异步加载
1.defer 异步加载,延迟执行,domLoaded;如果脚本之间存在依赖 需要规定顺序时就可以使用 defer 延迟调用
2.async 异步加载立即执行,不能保证脚本的执行顺序
本文深入探讨了JavaScript中的箭头函数与普通函数的区别,包括this的指向、构造函数行为、arguments处理及原型特性。接着对比了Vue和React在数据绑定、组件通信、模板渲染上的差异。此外,还分析了fetch、ajax和axios在API使用上的异同,以及WebSocket与HTTP的双向通信特性。文章还涵盖了HTTP的三次握手与四次挥手过程,以及HTTP1.x和2.0的主要改进。最后,讨论了宏任务与微任务、async/await与Promise的优缺点,并比较了GET和POST请求的适用场景以及defer与async属性的使用策略。
16万+

被折叠的 条评论
为什么被折叠?



