美文网首页
前端面试题集(4)

前端面试题集(4)

作者: 不去解释 | 来源:发表于2017-06-30 23:35 被阅读0次

    1.本地存储(Local Storage )和cookies(储存在用户本地终端上的数据)之间的区别是什么?

    Cookies:服务器和客户端都可以访问;大小只有4KB左右;有有效期,过期后将会删除;
    本地存储:只有本地浏览器端可访问数据,服务器不能访问本地存储直到故意通过POST或者GET的通道发送到服务器;每个域5MB;没有过期数据,它将保留直到用户从浏览器清除或者使用Javascript代码移除

    2.你如何对网站的文件和资源进行优化?

    文件合并
    文件最小化/文件压缩
    使用CDN托管
    缓存的使用

    3.call和apply的区别

    功能一样, 都是将当前函数作为指定对象的方法执行, 即函数中的this是指定对象
    call(thisObj,arg1,arg2...) //将所有参数一个一个传递进去
    apply(thisObj,[argArray]) //将所有参数放在数组中传入

    4.当一个DOM节点被点击时候,我们希望能够执行一个函数,应该怎么做?

    直接在DOM里绑定事件:<div onclick=”test()”></div>
    在JS里通过onclick绑定:xxx.onclick = test
    通过事件添加进行绑定:addEventListener(xxx, ‘click’, test)
    那么问题来了,Javascript的事件流模型都有什么?
    “事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播
    “事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的
    “DOM事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡

    5.有这样一个URL:http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段JS程序提取URL中的各个GET参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中,如{a:’1′, b:’2′, c:”, d:’xxx’, e:undefined}。

    function serilizeUrl(url) {
    var urlObject = {};
    if (/?/.test(url)) {
    var urlString = url.substring(url.indexOf("?") + 1);
    var urlArray = urlString.split("&");
    for (var i = 0, len = urlArray.length; i < len; i++) {
    var urlItem = urlArray[i];
    var item = urlItem.split("=");
    urlObject[item[0]] = item[1];
    }
    return urlObject;
    }
    return null;
    }

    6.请你谈谈Cookie的弊端?

    1.Cookie数量和长度的限制。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB,否则会被截掉。
    2.安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只要原样转发cookie就可以达到目的了。
    3.有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用。

    7.js延迟加载的方式有哪些?

    1. defer和async
    1. 动态创建DOM方式(创建script,插入到DOM中,加载完毕后callBack)
    2. 按需异步载入js

    相关文章

      网友评论

          本文标题:前端面试题集(4)

          本文链接:https://www.haomeiwen.com/subject/osxwcxtx.html