• Sogo2015前端面试题


    1.下列描述错误的是(D)

    HTTP状态码302表示暂时性转移
    domContentLoaded事件早于onload事件
    IE6/7/8不支持事件捕获
    localStorage存储的数据,在刷新页面后会消失

    HTTP状态码302表示被请求的资源暂时转移(Moved temporatily),然后会给出一个转移后的URL,而浏览器在处理服务器返回的302错误时,原则上会重新建立一个TCP连接,然后再取重定向后的URL的页面;但是如果页面存在于缓存中,则不重新获取;
    onload事件触发时,页面上所有的DOM,样式表,脚本,图片,flash都已经加载完成了,domContentLoaded事件触发时,仅当DOM加载完成,不包括样式表,图片,flash。
    web storage有以下几种对象:
    sessionStorage:存储特定于某个会话的数据,该数据只保留到浏览器关闭。
    globalStorage:目的是跨越会话存储数据,不过要指定哪些域可以访问该数据。如果不使用 removeItem() 或 delete 删除,或者用户未清除浏览器缓存,存储在globalStorage上的数据会一直保留在磁盘上。所以globalStorage非常适合在客户端存储文档或长期保留用户偏好设置。
    localStorage:在HTML5中作为持久保持客户端数据的方案取代了globalStorage。它不能被指定访问规则,要访问localStorage,页面必须来自同一个域名,使用同一种协议,在同一个端口上。它的数据也保留到通过JavaScript删除或用户清除浏览器缓存。
    2.以下Js程序的输出是什么()
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <SCRIPT LANGUAGE="JavaScript">
        var a="undefined";
        var b="false";
        var c="";
        function assert(aVar){
            if(aVar)     
                alert(true);
            else  
                alert(false);
        }
        assert(a);
        assert(b);
        assert(c);
    </SCRIPT>
    true, true, false, 因为字符串是变量
    3.正则表达式/^d**[^d]*[w]{6}$/,下面的字符串中哪个能正确匹配?AC
    ***abcABCD_89
    abc*abcABCDEF
    123*abcABCD_89
    123*ABCabcd-89
    /^表示匹配输入字符串开始的位置, d*表示零次或多次数字, *是转义字符*,[^d]*表示 零次或多次非数字,[w]{6}表示所有字符6次,$/表示匹配输入字符串结尾的位置。 
    B的*之前一定是数字,排除;
    D有连字符-,排除。
    A其匹配d*为零次,再匹配一个*,[^d]*表示 零次或多次非数字 ,这里匹配**abcA, [w]{6}匹配 BCD_89;
    4.
    function Foo(){
         var i=0;
         return function(){
             document.write(i++);
         }
    }
    var f1=Foo(),
    f2=Foo();
    f1();
    f1();
    f2();
    请问以上程序的输出是()
    010
    这是一个闭包,闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。 
    这里的局部变量i,对f1()来说是全局变量,对f2()来说也是全局变量,但是f1()的i跟f2()的i又是相互独立相互不可见的,f1()每执行一次,f1()的i就加一,f2()每次执行一次,f2()的i就加油,但是相互之间不影响,因此结果是010
    5.以下哪一个选项是html5的dtd?
    <!DOCTYPE html>
    6/现有如下html结构
    <ul>
     <li>click me</li>
     <li>click me</li>
     <li>click me</li>
     <li>click me</li>
    </ul>
    运行如下代码:
    1
    2
    3
    4
    5
    6
    7
        var elements=document.getElementsByTagName('li');
        var length=elements.length;
        for(var i=0;i<length;i++){
            elements[i].onclick=function(){
            alert(i);
        }
     }
    依次点击4个li标签,哪一个选项是正确的运行结果()? 4 4 4 4
    这里考的是JS的运行机制! 事件(click,focus等等),定时器(setTimeout和setInterval),ajax,都是会触发异步,属于异步任务;js是单线程的,一个时间点只能做一件事,优先处理同步任务; 按照代码从上往下执行,遇到异步,就挂起,放到异步任务里,继续执行同步任务,只有同步任务执行完了,才去看看有没有异步任务,然后再按照顺序执行! 这里for循环是同步任务,onclick是异步任务,所以等for循环执行完了,i变成4了,注意:这里因为i是全局变量,最后一个i++,使得i为4(后面的onclick函数,最后在循环外面执行,不受i<length限制); 所以for循环每执行一次,onclick事件函数都会被挂起一次,共4次; for循环结束后,点击事件 触发了4个onclick函数,接着输出4个4!
    7.下面列出的浏览器,无webkit内核的是()D
    chrome
    Safari
    搜狗浏览器
    firefox
  • 相关阅读:
    2.操作系统基础
    6.Linux基础3
    DRAM 内存介绍(一)
    131127新的一天
    Java中的super关键字何时使用
    JAVA的引用类型变量(C/C++中叫指针)
    System.out.println()的含义
    Java面试题
    HTML基础知识
    子域名查找
  • 原文地址:https://www.cnblogs.com/liunaiming/p/13378872.html
Copyright © 2020-2023  润新知