js算法面试题

//创建一个函数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

推荐阅读更多精彩内容

  • 来自:掘金(作者:秋天不落叶)原文链接:https://juejin.im/post/68449040341810...
    夜空_2cd3阅读 6,200评论 5 112
  • 1.为什么要用Nginx? 跨平台、配置简单、方向代理、高并发连接:处理2-3万并发连接数,官方监测能支持5万并发...
    TimLi_51bb阅读 622评论 1 11
  • 来自公众号:真没什么逻辑作者:Draveness 为什么这么设计(Why's THE Design)是一系列关于计...
    夜空_2cd3阅读 2,519评论 3 27
  • 负载和压力的区别: 负载测试:在一定的工作负荷下,给系统造成的负荷及系统响应的时间压力测试:在一定的负荷条件下,长...
    HURTYN阅读 78评论 0 2
  • 运输层位于应用层和网络层之间,是 OSI 分层体系中的第四层,同时也是网络体系结构的重要部分。运输层主要负责网络上...
    神奇小汤圆阅读 927评论 0 20