美文网首页
前端笔试题(一)

前端笔试题(一)

作者: 柠檬不萌5120 | 来源:发表于2017-10-23 16:46 被阅读0次
    1.javascript的typeof返回哪些数据类型?

    答:string,number,boolean,undefined,Object,Function,symbol(ES6)

    2.行内元素和块级元素的区别?

    答: 行内元素:会在水平方向排列,不能包含块级元素,设置width无效,height无效(可以设置line-height),margin上下无效,padding上下无效。
    块级元素:各占据一行,垂直方向排列。从新行开始结束接着一个断行。

    3.CSS选择符有哪些?

    答:通配符选择器 *
    标签选择器 p,span
    类选择器 .box
    id选择器 #p1
    子选择器 ul>li
    后代选择器 ul li
    相邻兄弟选择器 h+p
    通用兄弟选择器 h~p
    属性选择器 E[foo^="bar"]
    伪类选择器 E:first-of-type
    这里有一篇详细的css选择器问文章.戳戳http://www.cnblogs.com/libingql/p/4375354.html

    4.清除浮动的几种方法(至少两种),各自优缺点?

    答:猛戳,其中方法三四最常见

    5.call和apply的区别?

    答:这两种方法都是调用一个对象的一个方法,以另一个对象替换当前对象。
    语法:
    call(thisObj, arg1,arg2,arg3...)
    apply(thisObj, [arg1,arg2,arg3...])
    区别:参数不同.call以罗列的形式传参,apply以数组的形式传参

    6.如何阻止事件冒泡和默认事件?

    阻止冒泡:event.stopPropagation(); event.cancelBubble = true(IE)
    阻止默认事件:event.preventDefault()
    比较暴力的方法 return false 它会同时阻止事件冒泡也会阻止默认事件

    7.http状态码知道哪些?

    见之前我写过的文章.猛戳:[常见的http状态码]
    (http://www.jianshu.com/p/e87609b0d3d3)

    8.你有哪些性能优化的方法?
    • 减少http请求,合理设置 HTTP缓存
    • 使用浏览器缓存
    • 启用压缩
    • CSS Sprites 合并 CSS图片,减少请求数的又一个好办法
    • LazyLoad Images
    • CSS放在页面最上部,javascript放在页面最下面
    • 异步请求
      详细可看前端性能优化归纳总结篇!!!
    9.如何实现同一个浏览器内多个标签页之间的通信?

    调用localstorge、cookies等本地存储方式。
    方法一:
    localstorge在一个标签页里被添加、修改或删除时,都会触发一个storage事件,通过在另一个标签页里监听storage事件,即可得到localstorge存储的值,实现不同标签页之间的通信。
    方法二:
    使用cookie+setInterval,将要传递的信息存储在cookie中,每隔一定时间读取cookie信息,即可随时获取要传递的信息。
    详细http://blog.csdn.net/zhouziyu2011/article/details/58595904

    10.谈谈你对MVC和MVVM的理解

    可以看一下浅谈MVC和MVVM模式

    11.下面程序的结果
    function fun(n,o) {
        console.log(o);
            return {
                fun:function(m) {
                    return fun(m,n);
                }
            };
    }
    var a = fun(0); a.fun(1);  a.fun(2);  a.fun(3);  //undefined,0,0,0
    var b = fun(0).fun(1).fun(2).fun(3); //undefined,0,1,2
    var c = fun(0).fun(1);  c.fun(2);  c.fun(3); // undefined,0,1,1 
    
    12.下面程序的结果是
    var funcs = [];
    for(var i = 0;i<10;i++){
        funcs.push(function () {
            console.log(i);
        })
    }
    funcs.forEach(function (func) {
        func();
    })
    

    10个10

    13.在不使用循环的条件下,如何创建一个长度为100的数组,并且数组的每一个元素是该元素的下标?

    http://www.cnblogs.com/liugang-vip/p/6617988.html

    14.编写一个函数foo(n);a)参数n是正数;b)该函数返回一个数组;c)该数组内是n个随机且不重复的正数;d)整数的范围是11到41
    function getRand(a,b){
            var rand = Math.round(Math.random()*(b-a)+a);
            return rand;
        }
        function checkArrIn(rand,array){
            if(array.indexOf(rand) > -1){
                return true
            }
            return false;
        }
        function fn(n, min, max) {
            var arr = [];
            var isNum = !isNaN(Number(n));//判断n是不是一个数字,包含字符串类型的数字
            var isRandOk = (n >= min && n <= max && n <= (max - min)) ? true : false;//判断n的取值是否符合要求
            if (n && isRandOk && isNum) {
                for (var i = 0; i < n; i++) {
                    var rand = getRand(min, max);
                    if (checkArrIn(rand, arr)) {
                        i--
                    } else {
                        arr.push(rand)
                    }
                }
            }
            return arr;
        }
        console.log(fn(10, 1, 11));
    
    15.简述最近流行的技术,以及你常去的网站

    相关文章

      网友评论

          本文标题:前端笔试题(一)

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