前端笔试题(一)

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.简述最近流行的技术,以及你常去的网站

你可能感兴趣的:(前端笔试题(一))