刚结束SHEIN的线上前端岗位笔试,笔试题还热乎着~
SHEIN的线上笔试是在牛客网进行的,分为两Part:选择题和问答题
SHEIN简介
SHEIN是一家成立于2008年的快时尚出口跨境电商互联网公司,集商品设计、仓储供应链、互联网研发以及线上运营于一体。 经历十年高速发展,目前在南京、广州、深圳、佛山、义乌、美国、比利时、迪拜、马尼拉等地设有分支机构,国内员工规模已超过5000人。
一、选择题*10
选择题涉及太多选项了,就不一一附上(我也记不下那么多)
主要考查的知识点:
1、promise:then / catch
2、cookie和localStorage
3、求数组的最大值
4、浏览器中使用js跨域获取数据的方法
5、原型链
6、删除数组中的第i个元素,最优化的实现方案
7、js用于阻止默认事件的默认操作
8、hasOwnProperty
二、问答题*5
1、GET和POST的区别
2、null和undefined的区别
3、js对象的深拷贝实现代码
4、实现一个fibonacci函数
5、如何理解css的盒模型
部分解答知识点
1.浏览器中使用js跨域获取数据的方法
a、JSONP
HTML的script标签可以加载并执行其他域的js,可以通过标签script的src来动态加载其他域的资源,即通过属性src指向一个地址,加载成功之后就可以调用里面的文件。
JSONP原理传送门
b、window.name
window.name原理传送门
c、document.domain
document.domain原理传送门
d、window.postMessage
window.postMessage原理传送门
2.求数组最大值的快速方法
var value = [1,2,3,6,8,4];
var max = Math.max.apply(Math,value);
补充:apply和call的区别
Math.max()函数 + apply与call区别知识点
3.null和undefined的区别
null和undefined的区别传送门
4.如何理解CSS盒模型
基本概念:标准模型+IE模型
CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:内边距(padding),边框(border),margin(外边距),和内容(content)。
标准盒模型:一个块的总宽度=width+margin(左右)+padding(左右)+border(左右)
怪异(IE)盒模型:一个块的总宽度=width+margin(左右)(既width已经包含了padding和border值)
设置盒模型:box-sizing:border-box
5.hasOwnProperty
这个方法会查找一个对象是否有某个属性,但是不会去查找它的原型链。
var obj = {
a: 1,
fn: function(){
},
c:{
d: 5
}
};
console.log(obj.hasOwnProperty('a')); // true
console.log(obj.hasOwnProperty('fn')); // true
console.log(obj.hasOwnProperty('c')); // true
console.log(obj.c.hasOwnProperty('d')); // true
console.log(obj.hasOwnProperty('d')); // false, obj对象没有d属性
var str = new String();
// split方法是String这个对象的方法,str对象本身是没有这个split这个属性的
console.log(str.hasOwnProperty('split')); // false
console.log(String.prototype.hasOwnProperty('split')); // true
6.原型链
简述:原型链是实现继承的主要方法,其基本思想是让一个引用类型继承另一个引用类型的属性和方法。
//实现原型链有一种基本模式,其代码大致如下。
function SuperType(){
this.property = true;
}
SuperType.prototype.getSuperValue = function(){
return this.property;
};
function SubType(){
this.subproperty = false;
}
//继承了 SuperType
SubType.prototype = new SuperType();
SubType.prototype.getSubValue = function (){
return this.subproperty;
};
var instance = new SubType();
alert(instance.getSuperValue()); //true
以上代码定义了两个类型: SuperType 和 SubType 。每个类型分别有一个属性和一个方法。它们的主要区别是 SubType 继承了 SuperType ,而继承是通过创建 SuperType 的实例,并将该实例赋给SubType.prototype 实现的。 实现的本质是重写原型对象,代之以一个新类型的实例。换句话说,原来存在于 SuperType 的实例中的所有属性和方法,现在也存在于 SubType.prototype 中了。在确立了继承关系之后,我们SubType.prototype 添加了一个方法,这样就在继承了 SuperType 的属性和方法的基础上又添加了一个新方法。
7.js阻止默认事件
简述:e.preventDefault()方法
e.preventDefault() 阻止默认操作
//后续继续补充