注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

前端攻城师 郭培的博客

Be the best you can

 
 
 

日志

 
 
关于我

前端技术:http://hszy00232.blog.163.com/ 前端设计:http://blog.sina.com.cn/hsjs00232 职业:web前端工程师 现居地:北京 My QQ:365246295 Mail:hszy00232@163.com

网易考拉推荐

数组去重——一道前端校招试题  

2011-03-07 13:11:48|  分类: 前端面试 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
很多校招题是没有严格的标准答案的,只有知识点,只要几个关键点能答上来,不管程序是否真的能跑通,都可以拿分的。比如最常见的一道题:
试题:
有这样一个数组,成员都是数字,例如
var a = [1,2,3,4,5,2,3,4,6,7,8];
请实现a.distinct()方法,用来给数组a去掉重复值,要求对Array的原型进行扩展方法,并尽可能做到效率最优。
考察点:
1,考察应试者是否理解原型链
2,考察应试者是否由意识的控制算法的时间复杂度,了解应试者对专业课知识的掌握程度
3,考察应试者对js数组函数的了解程度

答案1:
Array.prototype.distinct = function(){
    var a = [],b=[],oa = this.concat();
    for(var i = 1;i<oa.length;i++){
        for(var j = 0;j<i;j++){
            if(b.indexOf(j)>-1)continue;
            if(oa[j] == oa[ i]){
                b.push(j);
            }
        }
    }
    this.splice(0,this.length);
    for(var i = 0;i<oa.length;i++){
        if(b.indexOf(i)>-1)continue;
        this.push(oa[i ]);
    }
    return this;
};
答案2:
Array.prototype.distinct = function(){
    for(var i = 0;i<this.length;i++){
        var n = this[i ];
        this.splice(i,1,null);
        if(this.indexOf(n) < 0){
            this.splice(i,1,n);//不存在重复
        }else{
            this.splice(i,1);//存在重复
        }
    }
    return this;
};
答案3:
Array.prototype.distinct = function(){
    var self = this;
    var _a = this.concat().sort();
    _a.sort(function(a,b){
        if(a == b){
            var n = self.indexOf(a);
            self.splice(n,1);
        }
    });
    return self;
};
得分点:
1,应试者起码应该自觉通过Array.prototype.distince来实现函数,若没有这样做,则扣分50%
2,应试者起码会给出答案1,得分30%,如果没有使用splice和concate,扣分20%
3,给出答案2的,得分80%,算法复杂度控制在O(n)
4,给出答案3的,得满分,算法复杂度控制在O(1)
  评论这张
 
阅读(1276)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017