今天刚笔试完阿里,哎,整个人都不好。题量不多,11道题,6道选择题,4到编程题,1道问答题。
在笔试的前2天,刚笔试过京东和腾讯模拟,他们的前端开发岗位的笔试题和其他技术类题目范围差不过,离不开数据结构算法,操作系统和计算机网络,当然前端的知识也会考到,但是都比较基础。而阿里的前端笔试都是围绕前端开发岗位进行出题的,题目很有深度,比如下面我贴出其中的两道题目。哎,,考完的第一感觉,果然阿里大前端就是不一样,也怪自己太菜,起步太晚,没有去研究过前端各知识块一些比较底层的东西,很多东西往往就会用就过了。所以,想进BAT这样大公司,没有过于常人的学习态度是不行的。不过感慨也没用,还不如从现在起,好好埋头苦干一番,不然对不起‘’搞技术‘’这三个字。阿里,我们社招再见。。。
题目一:
实现函数,类似jquery链式调用什么鬼。。
var origin = [
{id:1,title:'title1'},
{id:2,title:'abcd'},
{id:3,title:'title2'},
{id:4,title:'efg'}
];
var find = function(data){
// your code here
}
var result = find(origin).where({'title':/\d$/}).order('id','desc'); //desc 非递增
console.log(result); // [{id:3,title:'title2'},{id:1,title:'title1'}]
题目二:
类似让你实现目前一些主流框架的循环渲染:
// ali-for
var items = [
{name:'item1'},
{name:'item2'}
];
var str = '<div ali-for="item in items">{{item.name}}<div>';
var ParseDom = function(str){
// your code here
}
// 对应生成的dom
// <div>item1</div>
// <div>item2</div>
哪位前端大大,留言下解题思路,。。。
对于第一题多谢几位大神的帮助,想在给出两种方法:
第一题方法一:
var find = function(data){
// your code here
Array.prototype.where = function(obj){
return this.filter(function(el){
return obj.title.test(el.title);
});
}
Array.prototype.order = function(s1,s2){
if(s2==='desc'){
return this.sort(function(e1,e2){
return e2[s1]-e1[s1];
});
}
}
return data;
}
方法二:
var find = function(data){
// your code here
this.data = data;
this.where = function(obj){
var key = Object.keys(obj),
val = obj[key];
this.data = this.data.filter(function(el){
return val.test(el[key]);
});
return this;
}
this.order = function(s1,s2){
return this.data.sort(function(a,b){
if(s2 === 'desc'){
return b[s1]-a[s1];
}
})
}
return {
data: this.data,
where: this.where,
order: this.order
};
}