北京天地益星面经

一、简述你知道的HTTP状态响应码和他们的意义

  1. 1xx系列(临时响应)

    表示临时响应并需要请求者继续执行操作的状态代码。

  代码 说明
    100 (继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 
    101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。

  2. 2xx系列(成功)

    表示成功处理了请求的状态代码

  代码 说明
    200 (成功) 服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
    204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
    206 (部分内容) 服务器成功处理了部分 GET 请求。

  3. 3xx系列(重定向)

    表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。

  代码 说明
    301 (永久移动) 请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
    302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
    303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
    304 (未修改) 自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
    305 (使用代理) 请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。
    307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

  4. 4xx系列(请求错误)

    这些状态代码表示请求可能出错,妨碍了服务器的处理。

  代码 说明
    400 (错误请求) 服务器不理解请求的语法。
    401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
    403 (禁止) 服务器拒绝请求。
    404 (未找到) 服务器找不到请求的网页。

  5. 5xx系列(服务器错误)

    这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

  代码 说明
    500 (服务器内部错误) 服务器遇到错误,无法完成请求。
    503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
    505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

二、img的title和alt有什么区别

  title:title属性可以用在任何的元素上,当用户把鼠标移动到元素上时,就会显示预先设置的title的内容,起到对图片说明的作用,实质上就是对图片的解释和备注。

  alt:是在图片无法显示时候对无法显示的对象起描述作用;图片显示时不表现。浏览器的搜索引擎可以通过alt属性的文字描述来获取图片。

三、forEach、map、filter的区别

  1.foreach()

    对数组进行遍历循环,对数组中的每一项运行给定函数。这个方法没有返回值。参数都是function类型,默认有传参,参数分别为:遍历的数组内容;第对应的数组索引,数组本身。

  2.map()

    map():指“映射”,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

  3.filter()

    “过滤”功能,数组中的每一项运行给定函数,返回满足过滤条件组成的数组。

四、HTTP和HTTPS的区别

  (1)https协议需要到ca(证书颁发机构)申请证书,一般免费证书很少,需要交费。

   (2)http协议运行在tcp之上,所有传输的内容都是明文,https运行在ssl/tls之上,ssl/tls运行在tcp之上,所有传输的内容都经过加密的。

   (3)http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

   (4)http的连接很简单,是无状态的;https协议是由http+ssl协议构建的可进行加密传输、身份认证的网络协议,可以有效的防止运营商劫持,解决了防劫持的一个大问题,比http协议安全。

五、以下代码输出什么

var a=10;
(function(){
	console.log(a)
	a=5
	console.log(window.a)
	var a=20
	console.log(a)
})()

  分析:外部声明了一个变量a,赋值为10,然后有一个立即执行函数。函数内部对变量a进行了定义并且打印变量a和window.a

  回答:依次输出undefined、10、20。

  原因:函数内部存在变量提升,所以真实的执行顺序如下:

var a;
console.log(a);//undefined
a=5
console.log(window.a)//这里打印的是全局变量a,也就是10
a=20
console.log(a)//20

六、你知道的浏览器以及他们的的内核

   1、ie浏览器内核:trident内核,也是俗称的ie内核;

   2、chrome浏览器内核:统称为chromium内核或chrome内核,以前是webkit内核,现在是blink内核;

   3、firefox浏览器内核:gecko内核,俗称firefox内核;

   4、safari浏览器内核:webkit内核;

   5、opera浏览器内核:最初是自己的presto内核,后来是webkit,现在是blink内核;

   6、360浏览器、猎豹浏览器内核:ie+chrome双内核;

   7、搜狗、遨游、qq浏览器内核:trident(兼容模式)+webkit(高速模式);

   8、百度浏览器、世界之窗内核:ie内核;

   9、2345浏览器内核:以前是ie内核,现在也是ie+chrome双内核;

七、TCP和UDP的区别

  1.TCP是面向连接的,UDP是无连接的,TCP提供可靠的服务,也就是说,通过TCP连接传输的数据不会丢失,没有重复,并且按顺序到达,UDP没有可靠性。

  2.TCP是面向字节流的,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的。TCP是全双工的可靠信道,UDP是不可靠信道。

八、canvas和svg有什么区别

  1.svg绘制出来的每一个图形的元素都是独立的dom节点,能够方便的绑定事件或用来修改。canvas输出的是一整幅画布;

  2.svg输出的图形是矢量图形,后期可以修改参数来自由放大缩小,不会是真和锯齿。而canvas输出标量画布,就像一张图片一样,放大会失真或者锯齿。

九、get和post有什么区别

  1.get方法页面刷新后退不受影响、能被缓存、对数据类型和长度有限制(只允许ASCII字符,最多2048个)、安全性低、数据在url可见

  2.post方法页面刷新后退受影响(数据会重新提交)、不可被缓存、对数据类型和长度不限制、安全性高、数据在url不可见

十、假如git远端代码和本地代码冲突,应执行哪些命令来解决

  1.将远程仓库代码拉取到本地作为本地的一个新的分支 lingshi

    $ git fetch origin master:lingshi 

  2.将这个lingshi的分支与我们的主分支对比查看有什么不同,有那些冲突

    $ git diff lingshi

  3.将新的lingshi分支与本地主分支合并

    $ git merge lingshi

  4.重新提交本地主分支到远程仓库

    $ git push -u origin master

十一、引入的js文件更新后,你如何避免浏览器使用缓存

    js文件的内容修改了,可以加个t参数表明一下日期,用这个日期来作为版本号,看到日期也能知道是哪天发布的。 没有修改js文件根本就不用修改日期。

    实践: <script type="text/javascript" src="{{passport_host}}js/common.js?t=20150622" ></script>

    如果下一次修改了这个js文件,那么发布的时候,就修改日期 <script type="text/javascript" src="{{passport_host}}js/common.js?t=20150628" ></script>。 没有修改的js文件,保留原来的值不动即可。

十二、如何防止用户多次点击form表单提交  

    为了防止用户多次提交表单我们可以有多种处理方法,以下做一些简单的说明

  1.通过css设置属性 pointer-events: none;

    这个属性是css的特殊属性,他更像是javaScript,它能:

      • 阻止用户的点击动作产生任何效果
      • 阻止缺省鼠标指针的显示
      • 阻止CSS里的 hover 和 active 状态的变化触发事件
      • 阻止JavaScript点击动作触发的事件

    pointer-events属性有很多值,但是对于浏览器来说,只有auto和none两个值可用

  2.通过disabled属性禁止提交按钮

    <button type="button" disabled="disabled">Click Me!</button>

    jq语法 设置  $("button").attr("disabled","true"); === $("button").attr("disabled","disabled");

       移除  $("button").attr("disabled","false");===$("button").removeAttr("disabled");

  3.通过设置定时器防止一定时间内连续点击提交

  btn.onclick = function oper(){

    //执行一次 过3秒结束 才能点击
    btn.onclick = null;
    clearTimeout(timer);
    var timer = setTimeout(function(){
      btn.onclick = oper;
    },3000); 
  }

  4.通过设置一个变量记录提交次数

    如果用户已经单击“提交”按钮,该脚本会自动记录当前的状态,并将submitcount变量自加1,

    当用户试图再次提交时,脚本判断submitcount变量值非零,提示用户已经提交,从而避免重复提交表单。

var submitcount=0;
  function submitOnce (form){
    if (submitcount == 0){
    submitcount++;
    return true;
    } else{
      alert("正在操作,请不要重复提交,谢谢!");
      return false;
    }
  }

 

posted @ 2020-07-09 16:19  炉火糖粥、  阅读(211)  评论(0编辑  收藏  举报