js算法面试题
2017-09-15 本文已影响61人
湖衣
//创建一个函数fn,返回一个数组饱含n个数,每个数随机在[2,32]取值,且不重复。
function fn(n){
var array=[];
for(var i=0;;i++){
if(array.length<n){
getRandomNum();
}else{
break;
}
}
return array;
}
function getRandomNum(array){
var num = Math.floor(Math.random()*31+2);
for(var j=0; j<array.length; j++){
if(array[i]==num){
return false;
}
}
array.push(num);
}
同花顺五张连续相同花色,随机七张牌,判断是否为同花顺。
先判断花色,把花色相同的牌放入新数组。大于等于五张,排序数组,判断是否连续。
http请求事务发生了什么?
域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户
http2.0有哪些改进?
http2.0大幅度提升了web性能,在与HTTP1.1完全语义兼容的基础上,进一步减少了网络延迟。
1.多路复用:多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。
HTTP/2通信都在一个连接上完成,这个连接可以承载任意数量的双向数据流,可以更有效地使用TCP连接,让高宽带也能真正的服务于HTTP的性能提升。
总结:
- 单连接多资源的方式,减少服务端的链接压力,内存占用更少,连接吞吐量更大。
- 由于TCP连接的减少而使网络拥塞状况得以改善,同时慢启动时间减少,使拥塞和丢包恢复速度更快。
2.首部压缩
HTTP/1.1并不支持HTTP首部压缩,为此SPDY和HTTP/2应运而生,HTTP/2使用了专门为首部压缩而设计的HPACK算法。
3.服务器端推送(Server Push)
在HTTP/2中,服务器可以对客户端的一个请求发送多个响应。服务器推送有一个很大优势:可以缓存!也让在遵循同源的情况下,不同页面之间可以共享缓存资源成为可能。
前后端交互异步有哪些?
ajax,fetch
从PC端迁移到移动端:viewport meta width = device-width