今天面了完美世界的web前端岗,废话不多说,直接记录一下今天的面经。
JS问题
1: 一般引入script文件在页面的哪个地方引入?
回答:一般在
2: 当要删除数组中的某个元素,如何进行删除?
回答:知道它的索引吗?若是知道其索引,直接使用js的方法,array.splice(i, 1); //即可删除索引为i的元素。
3:说一下你对闭包的了解?
回答:闭包是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式,就是在一个函数的内部创建另一个函数。(感觉这个题回答的不怎么样,也扯到了一些闭包会引起内存泄漏等,balabala)
4: 说一下你用过的一些ES6的东西?
回答:(1)let、const。let解决了js中没有块作用域的问题;const解决了全局变量的问题。(2)class类解决了js中继承比较复杂,比较难维护的问题。(3)extends 实现了js中的继承,使代码更易于理解。(4)箭头函数 举例说明箭头函数的使用方法,你是如何使用的。(5)promise函数 解决了js中的回调地狱的问题,举例说明你在你是如何具体使用的。
5: 写代码实现js的继承,解释其继承机制。
//自己胡乱举了个例子写的
function Person(name, age){
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function(){
console.log("hello!!");
}
function Stu(name, age){
this.name = name;
this.age = age;
}
Stu.prototype = new Person(); //实现了继承
6: 出了4道回答运行输出的问题。主要考察this的指向和变量作用域的问题。
7: 知道深拷贝和浅拷贝问题吗?如何进行深拷贝?
回答:如果只是单纯的浅拷贝,对于引用类型的变量来说,很可能被几个对象同时操作,造成预期之外的结果。所以,对于数组和对象的拷贝应该使用深拷贝。
//深拷贝代码
function Copy(obj){
var result;
if(obj instanceof Array){
result = [];
var i = obj.length;
while(i--){
result[i] = Copy(obj[i]);
}
return result;
}else if(obj instanceof Object){
result = {};
for(var t in obj){
result[t] = Copy(obj[t]);
}
return result;
}else{
return obj;
}
}
CSS问题
1: 解释一下盒模型?
回答: 分为w3c盒模型和IE的盒模型,IE盒模型中的width是包含content+padding+border的 balabala。不知道面试官的下一问是问的如何实现兼容,还是如何实现选择??。(面试官说回答的有误差)
最后说有个属性,应该是考察CSS3的“box-sizing”属性会给开发者选择盒模型解析方式的权利。
2: 对列表的理解(ul li ol等)
话说,ol是有序的(order)
//有序列表
- c语言
- c++
//无序列表
- 苹果
- 梨
//自定义列表
- 计算机
- 计算机是用来计算的
- 显示器
- 显示器是用来视觉显示的。。。
3: position的取值?
回答:常用的有 relative、absolute、fixed、static。
说一下它们各自定位的标准吗?大体是
4: 对float的理解?
5:一些简单的标签的用法(p、ul、li)等
非技术类
1: 为什么选择前端?
2: 英语水平怎么样?平时会使用百度吗?会看stack overflow吗?电脑翻墙了吗?
3:面对压力的时候怎么办?
4:你做的那个XXX项目是什么?
5:有什么问题要问他?
还有一些比较小的细节了 差不多就这些了。感觉面的都还是比较基础的。算是准备到一些。