您的位置:首页 > 职场人生

阿里2017暑期前端实习面试总结

2017-03-23 13:44 621 查看

阿里2017暑期前端实习面试总结

还没准备好呢,第一个面的就是阿里,主要问了JS基础的问题。基本都没答上来= =。

只能事后诸葛亮,把这些问题的答案整理一下了。

1. 描述一下构造函数,为什么需要构造函数?

/*形如这样的是构造函数=*/
function Person(name){

this.getName = function(){
return name;
}

this.setName = function(value){
name = value;
}
}


注意事项:

1.构造函数必须要用new调用。

/*当作构造函数使用*/
var person = new Person("Jack");
person.getName(); //Jack

/*作为普通函数,添加到window*/
Person("Jack");
window.getName(); //Jack


2.构造函数名的首字母应该大写,避免和普通函数混淆。

3.构造函数的缺点:针对每个实例都会创建同样的一组新方法。

为什么要使用构造函数?

构造函数创建的所有对象可以共享相同的原型。这意味着同一个构造函数创建的所有对象都继承自一个相同的对象,因此它们都是同一个类的对象。所以构造函数是实现继承的必经之路。

2. 用构造函数可以解决哪些问题?

3. 构造函数是如何继承的?

通过原型链继承。

比如我们有一个构造函数Person(),那么Person.prototype指向了它的原型对象,而原型对象的构造函数属性即Person.prototype.constructor又指回了Person。

在Person中,可以调用原型对象里的方法,也可以通过在构造函数中编写方法来重写。

4. LESS和SASS对比有什么优缺点?

SASS:社区成熟,功能比LESS更强大,提供更多特性。Sass是基于Ruby的,是在服务器端处理的。

LESS:受SASS启发而开发出来的,使用的CSS语法,学习成本低,Bootstrap就是使用LESS编写的。LESS是基于JavaScript运行,所以LESS是在客户端处理。但是SASS和LESS都可以通过在本地编译成CSS文件后导入。

STYLUS:2010年产生,来自Node.js社区,主要用来给Node项目进行CSS预处理支持,功能强壮,和js联系紧密,但人气较低。

5. 用原生JS实现一个DOM选择器。

/*
该类选择器的实现方法,首先创建一个空的数组classobj,用来存放获取到的DOM节点。
classint变量用来进行索引的表示,方便数组操作。我们利用getElementsByTagName(“*”)
方法获取了这个页面上的所有DOM节点(*表示匹配所有)。
取出了所有DOM节点,我们就可以进行判断了。循环遍历取到的每一个节点,如果它的
nodeType是1(元素节点),则利用getAttribute(“class”)方法获取节点的class属性值,
并与传递进来的class参数进行比对,如果相同,说明是我们想要的节点,存入事先定义好的数组
中。最后返回该数组即可。
*/
function getElementsByClass(classnames){
var classobj = newArray();
var classint = 0;
var tags =document.getElementsByTagName("*");
for(var i in tags){
if(tags[i].nodeType == 1){
if(tags[i].getAttribute("class") == classnames){
classobj[classint] = tags[i];
classint++;
}
}
}
return classobj;
}


6. 有没有了解闭包。

简单地说,闭包是指有权访问另一个函数作用域中变量的函数。闭包的常见方式,就是在一个函数内部创建另一个函数,内部函数访问了外部函数中的变量。

建议:掌握好JS基础,可以学node.js入手。前端日新月异的发展都只是表象,内在都是原生的JS与浏览器进行沟通,现在很多实习生都是学习和使用大量的框架,但是很少有人去了解背后的原理,所以掌握好JS基础非常重要。

总结:好好学习JS基础。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: