
面试题
渣渣前端
公众号:小码农的成长之路
展开
-
addEventListerer的第三个参数是什么
第三个参数可以是布尔值,也可以是对象,默认是布尔值false,即事件冒泡,还可以是true,即事件捕获,对象有三个属性,一个是capture,是否使用事件冒泡,默认是false,once是是否只触发一次,默认是false,passive是决定是否调用preventDefault事件,默认是false,如果设置为true则永远不会调用,即使函数里面写了。...原创 2020-06-28 23:16:07 · 871 阅读 · 0 评论 -
一个tcp可以发送几个http请求
http1.0默认只能发送一个http请求,可以添加Connection:Keep-Alive字段保持持久化链接,但必须保证实体主体有正确的Content-Length,有多部件媒体类型,或者用分块传输的方式进行了编码。http1.1支持持久化连接,一个tcp可以发送多个http请求,但是不能并发,所以也会有阻塞问题http2.0支持持久化连接,一个tcp可以并行发送多个http请求,也就是多路复用...原创 2020-06-24 00:17:18 · 1211 阅读 · 0 评论 -
哪些操作会引起内存泄露
1.setTimeout的第一个参数是字符串而不是函数,会引起内存泄露2.闭包3.控制台日志4.循环引用原创 2020-06-23 00:44:47 · 560 阅读 · 0 评论 -
手写promise
//promise三种状态(运行中,执行成功,执行失败)const PENDING='pending'const RESOLVE='fulfilled'const REJECTED='rejected'function MyPromise(executor){ this.data=undefined this.Fullcallback=[]//存放成功的回调 this.Failedcallback=[]//存放失败的回调 this.status=PENDIN.原创 2020-06-22 19:45:04 · 302 阅读 · 0 评论 -
a===1&&a===2&&a===3什么时候为true
这里使用Object.defineProperty可以做到,每次获取值时加1var val=1;Object.defineProperty(window,'a',{get(){ return val++}})原创 2020-06-17 00:50:27 · 436 阅读 · 0 评论 -
tcp三握四挥
第一次握手:客户端发送syn包给服务器,SYN=1,序列号seq=x,客户端进入syn-sent状态第二次握手:服务器收到syn包以后返回报文,ack=x+1,ACK=1,SYN=1,同时生成序列号seq=y,进入syn-rcvd状态第三次握手:客户端收到服务器的报文以后,返回给服务器ack=y+1,ACK=1,自己的序列号seq=x+1,进入established状态,服务器收到也进入established状态为什么要三次握手,两次不行吗?因为如果第一次握手在网络中滞留时间过长,那客户端会原创 2020-06-13 23:49:30 · 435 阅读 · 0 评论 -
实现js小数相加
js小数直接相加会有精度丢失的问题,可以使用toFixed函数解决,它接收一个数字,默认是0,会将number四舍五入为指定小数位数的数字function sum(){ var s=0; for(var i=0;i<arguments.length;i++){ s+=parseFloat(arguments[i]) } s=s.toFixed(3)*1000/1000 return s;}...原创 2020-06-06 22:49:59 · 6746 阅读 · 0 评论 -
arr.map(parseInt)
var arr=[1,2,3]console.log(arr.map(parseInt))//[1,NaN,NaN]数组的map接收一个函数,这个函数默认有三个参数,第一个是数组元素,第二个是下标,第三个是这个数组,所以实际上是这样parseInt(1,0,[1,2,3])parseInt(2,1,[1,2,3])parseInt(3,2,[1,2,3])当第二个参数为0时,默认是10进制,所以是1,第二个是1进制,因为第一个数是2,所以为NaN,第三个也是同样道理...原创 2020-06-02 00:04:10 · 1712 阅读 · 2 评论 -
cookie在不同端口号可以共享吗
可以共享,根据同源策略cookie是区分端口的,但是对浏览器来说,cookie是区分域,不区分端口的,在一个ip地址下多个端口的cookie是共享的原创 2020-05-27 16:22:40 · 4945 阅读 · 0 评论 -
提交表单有跨域问题吗
默认使用form表单提交是不会跨域的,因为使用form表单提交后原来的页面无法得到响应的内容,所以浏览器认为是安全的,但是使用ajax提交是可以得到响应内容的,所以浏览器不允许它跨域原创 2020-05-21 00:16:42 · 889 阅读 · 0 评论 -
WeakMap和Map区别
①WeakMap的键名只支持对象,map的键名可以是任意值。②Map可以遍历,WeakMap不可以③WeakMap是弱引用,成员随时可以消失,可以防止内存泄露原创 2020-05-19 23:53:01 · 924 阅读 · 0 评论 -
post和get的区别
1.get请求在url中传递的参数有限,而post没有2.get的参数通过url传递,不安全,post则通过request.body传递,比较安全3.get请求浏览器会自动缓存,post需要手动设置4.get在浏览器回退时不会再度提交,post会再度提交5.get的参数只能进行url编码,post支持多种编码方式6.get只能传毒ascii码表上包含的字符,post参数可以传递任意字符7.post会发送两个tcp数据包,也就是会先发送header给服务器,等服务器响应100conti原创 2020-05-18 14:40:33 · 407 阅读 · 0 评论 -
a==1&&a==2&&a==3什么时候为true
这道题考的是类型转换。V8 会提供了一个 ToPrimitve 方法,该方法可以修改原始值,先检测该对象中是否存在 valueOf 方法,如果有并返回了原始类型,那么就使用该值进行强制类型转换;如果 valueOf 没有返回原始类型,就会调用 toString 方法的返回值;如果 vauleOf 和 toString 两个方法都不返回基本类型值,便会触发一个 TypeError 的错误。所以这道题可以这样var a={x:1,valueOf(){return this.x++; }}原创 2020-05-17 16:29:58 · 503 阅读 · 0 评论 -
如何删除一个cookie
可以设置cookie的过期时间expires,即document.cookie='user='+'xx'+';expires='+new Date(0)原创 2020-05-16 17:44:11 · 922 阅读 · 0 评论 -
关于宏任务和微任务的一道题
有一道题是这样,问这三种分别会出现什么情况//1.var i=0;function fn(){ i++; fn()}fn()//2.var i=0;function fn(){ i++; setTimeout(fn,0)}fn()//3.var i=0;function fn(){ i++; new Promise((res,rej)=>{fn();res()}).then(fn)}fn()首先是原创 2020-05-15 19:16:46 · 503 阅读 · 0 评论 -
continuous-local-storage
continuous-local-storage是nodejs中类似本地存储的,它可以实现多个文件中数据共享,但是不用挂载到全局对象//a.jsconst storage=require('continuous-local-storage');var space=stroage.createNameSpace('data');space.set('user','xx')//b.jsconst storage=require('continuous-local-storage');var原创 2020-05-10 23:14:31 · 486 阅读 · 0 评论 -
flex求长度
flex属性有很多,其中有三个是可以连在一起的,分别是flex-group,flex-shrink,flex-basis.flex-group属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。flex-shrink属性定义项目的缩小比例,默认是1,如果空间不足,则该项目会缩小。flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。所以flex最少可以设置一个原创 2020-05-14 21:04:56 · 329 阅读 · 0 评论