• 2015年9月阿里校招前端工程师笔试题


    前一段时间参加了阿里的9月校招,为了贯彻及时总结的精神,今天就来总结一下我做的这套题目吧。

    1.下面哪段css代码通常用于页面水平居中:

    1 A:site-align:center;
    2 B:margin:center;
    3 C:margin:auto 0;
    4 D:margin:0 auto;

    这题很简单,水平居中答案选D。每个选项来剖析一下, A选项在我做开发两年来,完全没有见到过,初略百度一下也没看到相关的东西;B选项,明显错误;D,其实D可以做到页面垂直居中,要怎么做呢,如下图,默认是horizental的,如果改变书写模式,改成vertical,就可以实现垂直居中了,不妨试试

    -webkit-writing-mode: vertical-rl; /* for browsers of webkit engine */
    writing-mode: tb-rl; /* for ie */ 

    2.下列关于http协议状态码描述错误的是:

    1 A:200 请求成功
    2 B:302 URL临时性替代
    3 C:304 页面未修改
    4 D:403 页面未找到

    关于状态码,百度可以有很详细的介绍,这里简单说说,1开头表示消息,2开头表示成功请求,3开头表示重定向,意思是你请求的这个资源在服务器指向另一个地址,需要再请求,4开头表示客户端的错误,可能是url地址错误或者参数错误,5开头表示的是服务器错误,服务器挂了(?)之类的。所以,我们可以判断,200是OK,请求成功没问题。302的意思是Move temporarily,暂时性移动了,符合题意。304是Not Modified,没有被修改,符合题意。403是Forbidden,字面意思是禁止,服务器已经理解请求,但是拒绝执行它。所以D错误。另外提一下,页面未找到是我们见得最多的404。

    3.以下关于盒子模型描述正确的是

    A:标准盒子模型中:盒子的总宽度=左右margin+左右border+左右padding+width
    B:IE盒子模型中:盒子总宽度=左右margin+左右border+width
    C:标准盒子模型中:盒子的总宽度=左右margin+左右border+width
    D:IE盒子模型中:盒子总宽度=width

    盒子模型有两种,假如我们设置有以下设置:

    100px;
    margin:20px;
    border:5px solid #fff;
    padding:10px;

    在IE盒子模型(box-sizing:border-box)中里面,这个容器的宽度就是100px=内容的width+左右border+左右padding,所以内容的width为40px,盒子宽度为100px。

    而标准盒子模型(box-sizing:content-box)里,width就指的是内容的width,所以容器的宽度是width+左右border+左右padding,总共是160px;

    所以答案是A,答案D很接近,IE盒子总宽度应该是width+左右margin。

    4、对于事件委托(事件代理)描述不正确的是:

    A:事件委托实现原理利用了冒泡的机制
    B:事件委托提高了页面的性能
    C:事件委托并不能提高性能,只是简化了事件管理成本
    D:一般在JQuery中个利用delegate方法来进行事件委托

    首先要知道什么是事件委托,就比如,onclick,onmouseover,onmouseout这些js事件本来是加在一个元素上面的,现在我不加,我让其他元素来实现。事件监听器是被添加到它们的父元素上。事件监听器会分析从子元素冒泡上来的事件,找到是哪个子元素的事件。

    $(function(){ 
        $('#ul12').delegate('li','click',function(){ 
            alert(123);
        }) 
    });

    像上面这样的就运用了事件委托。事件委托有什么好处呢?

    1、提高性能。

    2、新添加的元素还会有之前的事件。

    所以到这里,我们知道了,答案是C。另外值得一提的是,现在jquery也可以用on方法来进行事件委托。

    5、关于HTML语义化,以下哪个说法是正确的?

    A:语义化的HTML有利于机器的阅读,如PDA手持设备,搜索引擎爬虫;但不利于人的阅读
    B:Table属于过时的标签,遇到数据列表时,需尽量使用div来模拟表格
    C:语义化是HTML5带来的新概念,此前版本的HTML无法做到语义化
    D:Header、article、address都属于语义化明确的标签

    这题显然B,C错误,那么A的后半句有点问题,语义化并不会造成阅读有问题的,所以答案选D。

    6、编码判断一个对象obj自身是否包含某属性“render”

    for(var propName in obj){
            if(){
                console.log(true);
            }
        }

    直接答案:propName=='render'。因为题目自带遍历了,所以就不用obj.hasOwnProperty();

    7、使用递归的方式实现一个求和函数

    function sum(num){
            if(num>1){
               
            }else{
                return 1;
            }
        }

    答案:return num+sum(num-1);

    8、输出对象中值大于2的key的数组

    var data={a:1,b:2,c:3,d:4};
    Object.keys(data).filter(function(x){return       });
    期待输出:["c","d"]

    解析:首先,Object.keys(obj)返回一个数组,数组里是该obj可被枚举的所有属性。

    console.log(Object.keys(data));//返回["a", "b", "c", "d"]

    而filter的作用是从数组中找到适合条件的元素(比如说大于某一个元素的值)

    var arr=[1,23,5,78,34,55,13];
            console.log(arr.filter(function(x){
                return x>23;
            }))
    //返回[78, 34, 55]

    回到题目,在得到了["a", "b", "c", "d"]这个数组后,我们要找出它们所对应的值大于2的,就应该拿着这些值回去data数组里面找,所以判断if(data[x]>2),true的话就return,由于题目只有一行,所以用一个三目运算符即可。

    答案:data[x]>2?x:null;

    9、使用尽量多的方式实现一个块元素在容器中水平垂直居中,可以使用css3特性

    这题就不细说了,网上很多,关键在于自己动手多实践,去理解,只是看是永远记不住的。

     http://www.3lian.com/edu/2014/07-09/154729.html

    http://blog.sina.com.cn/s/blog_5177c22601012ooj.html

    http://www.dbpoo.com/css3-transform-vertical-center/

    10、请将下面的对象

    {"react":100,"angular":75,"javascript":116,"backbone":15}

    排序后输出为

    {"backbone":15,"angular":75,"react":100,"javascript":116,}

    答案:

    var obj={"react":100,"angular":75,"javascript":116,"backbone":15}
            var obj2={};
    
            var json=[
                {name:"react",value:100},
                {name:"angular",value:75},
                {name:"javascript",value:116},
                {name:"backbone",value:15}
            ]
    
            json.sort(function(x,y){
                return (x.value>y.value)?1:-1;
            })
    
            for(var i=0,j=json.length;i<j;i++){
                Object.defineProperty(obj2,json[i].name,{
                    value:json[i].value
                });
            }
    
            console.log(obj2);
  • 相关阅读:
    go视频提取音频
    ffmpeg常用命令 转
    mac安装homebrew
    go读取键盘输入两种方式
    静态方法加锁,和非静态方法加锁区别
    Java类锁和对象锁实践和内部私有锁关联
    Java基础】并发
    一步一步掌握线程机制(六)---Atomic变量和Thread局部变量
    compareAndSet() 注意点
    Java JUC之Atomic系列12大类实例讲解和原理分解
  • 原文地址:https://www.cnblogs.com/danielweb/p/4779591.html
Copyright © 2020-2023  润新知