网易8月11号笔试记录
昨天写了网易的笔试题,短时间中记下了一小部分题目,想来和大家分享。
首先是题目:
1.console.log(a == 1 && a == 2 && a == 3)怎么输出是true。
2.CDNXXX强缓存(记不太清了)
3.http1.0支不支持***-control?
4.有关tcp连接的提问。。。
5.es6中的import
6.css垂直居中的问题
7.for(var i=1;i<=3;i++){setTimeout((function(a){console.log(a)})(i),0)}输出什么?
8.堆栈的问题也是问了的。剩下的没记住
。。。。。。。。好啦光看题目的小伙伴们已经可以走了,现下面就是我写的解答了(答案部分来自网络):
1.对于第一题来说要是直接输出明显就是会报错的,因为你的a根本就没有定义,首先我们看到这道题中用的是双等号,就是会经过类型转化的,所以:
①我们可以通过重写Object.toString,valueOf:
const a = {
i: 1,
toString :function(){
retrun a.i++
}
}
对这个来说就是Object和Number类型之间的比较,所以说Object会转化成数字类型之后再去和数字比较, a ==1就相当于是ToPrimitive(a) == 1
i: 1,
toString :function(){
retrun a.i++
}
}
对这个来说就是Object和Number类型之间的比较,所以说Object会转化成数字类型之后再去和数字比较, a ==1就相当于是ToPrimitive(a) == 1
(PS:ToPrimitive()~属性转化为原始值的属性)。
②定义“a”属性,并重写它的getter方法:
Object.defineProperty(this, "a", {
get() {
return value.next().value
}
})
const value = function* (){
let i = 0;
while(true) yield i++:
}
(PS:yield 关键字用来暂停和恢复一个生成器函数(function*),一旦遇到 yield 表达式,生成器的代码将被暂停运行,直到生成器的 next() 方法被调用。每次调用生成器的next()方法时,生成器都会恢复执行)
get() {
return value.next().value
}
})
const value = function* (){
let i = 0;
while(true) yield i++:
}
(PS:yield 关键字用来暂停和恢复一个生成器函数(function*),一旦遇到 yield 表达式,生成器的代码将被暂停运行,直到生成器的 next() 方法被调用。每次调用生成器的next()方法时,生成器都会恢复执行)
③字符编码:
可以利用Unicode编码来解决
④数组toString隐含调用了join方法
可以把 a=[1,2,3],a.join=a.shift;之后再做输出就是true了,主要就是利用了数组的toString会隐含的调用Array.join方法。
2.首先题目我记不太清了,对于缓存而言就是浏览器缓存和CDN缓存,其中的浏览器缓存就是协商缓存和强缓存(主要是问问服务器存不存)强缓存主要是用了Cache-control和Expires这两个来实现的,要是强缓存成功了的话就是http状态码是200,network中显示from ***。协商缓存利用的是[last-modified, If-Modified-Since],[Etag, If-None-Match].
对于CDN缓存来说就是一个普通的缓存,***缓存或者说是一个边缘缓存,就是不关心用户的具体地理位置,也应该考虑使用cdn缓存的***来提高用户的体验。
3.http1.0首先是不支持Cache-control的,他只是实现了pragma:no-Cache。对于Cache-control头来说就是指定缓存指令,所有请求和响应链的缓存机制都必须遵守这个规则,该指令规定行为,意在防止缓存受到请求或者是响应的不利干扰,缓存指令是单向的,也就是说一个请求中有缓存指令不意味着响应中也存在。
4.tcp连接:
在tcp中进行了三次握手和四次挥手。每个tcp的实现必须选择一个报文段最大生存时间MSL(maximum segment Lifetime),他是任何的报文段被丢弃前在网络中的最长时间。对于一个具体实现所给出的MSL值,处理上是,当tcp执行一个主动关闭并发回最后一个ACK,该连接必须是在TIMEWAIT状态下,停留时间是2倍的MSL,这个连接必须要在2MSL结束之后才可被使用。TIMEWAIT状态也被成为2MSL等待状态。我就记得题目文联TIMEWAIT所以说了一下。
5.这个比较简单,可以自行了解一下。
6.这是一道css的题目,要抓住重点,题目说了是不定高度,所以:我们可以用flex(伸缩盒子),table-cell(display中),position中可以把父元素的position设置为relative,子的是absolute来实现,并用的就是transform;如下面的截图:
7.没啥,就是闭包,都知道是123;注意一下,输出之后的控制台还会返回一个数字,那个应该是setTimeout的值,要不就是id。好了该吃饭了。
最后:没错,我又来参加秋招了,不过忙着实习和上课,还没来得及准备就开始了,之后还会像春招一样和大家分享,多多指教,写了很久☺不喜欢就不看哈。
#网易##笔试题目##题解#