面试问题

来源:互联网 发布:淘宝网借贷 编辑:程序博客网 时间:2024/05/19 02:00

1.闭包的问题

for(var i = 1; i < 6; i++){    setTimeout(function(){        console.log(i);    },1000);}

输出啥 ?

5 5 5

如何输出 1 2 3 4 5

  1. 把var改成let
for(var i = 1; i < 6; i++){    setTimeout((function(i){        return function(){            console.log(i);        }    })(i),1000);}

2.前后端分离

前后端分离思考与实际3

3.函数调用this指向问题

var obj = {    name:"obj",    test:function(){        var name = "xbj";        console.log(this.name);        function test(){            var name = "tbj";            console.log(this.name);        }        test();    }}function call(fn){    fn();}call(obj.test);

输出

undefined undefined 

4.内部排序和外部排序

外排序(External sorting)是指能够处理极大量数据的排序算法。通常来说,外排序处理的数据不能一次装入内存,只能放在读写较慢的外存储器(通常是硬盘)上。外排序通常采用的是一种“排序-归并”的策略。在排序阶段,先读入能放在内存中的数据量,将其排序输出到一个临时文件,依此进行,将待排序数据组织为多个有序的临时文件。尔后在归并阶段将这些临时文件组合为一个大的有序文件,也即排序结果。

5.HTTP referer和盗链

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。
盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。
防盗链方法

  1. 原始方式,定期该文件名或目录
  2. 限制引用页,http referer
  3. 文件伪装,实际上用户请求的文件地址,只是一个经过伪装的脚本文件,这个脚本文件会对用户的请求作认证,一般会检查Session,Cookie 或HTTP_REFERER 作为判断是否为盗链的依据。
  4. 加密认证,这种反盗链方式,先从客户端获取用户信息,然后根据这个信息和用户请求的文件名字一起加密成字符串(Session ID)作为身份验证。只有当认证成功以后,服务端才会把用户需要的文件传送给客户。
  5. 随机附加码,每次,在页面里生成一个附加码,并存在数据库里,和对应的图片相关,访问图片时和此附加码对比,相同则输出图片,否则输出404图片