面试时间: 2020年12月11日上午10.30点-11点
面试形式: 语音面试
-
自我介绍
参考模板:
你好,我是XX,毕业于XX大学。现就职于XX公司,有X年开发经验,公司主要使用技术栈为React+AntDesign+Redux进行开发 -
浏览器兼容性问题
不同浏览器的标签默认内补丁padding和外补丁margin不同
解决:使用css通配符,设置css内补丁和外补丁为0 *{margin:0, padding: 0}
图片默认有间距
解决:使用float为img布局
块属性标签float后,又有横向的margin值,在IE6中显示会比设置的大
解决:在float标签样式中加入display:inline -
盒模型
对比 | W3C的标准盒模型 | IE的盒模型 |
---|---|---|
width | content部分的宽度 | content+padding+border三个部分的宽度 |
box-sizing | content-box(默认) | border-box |
- 双等和三等=的区别
对比 | 双等== | 三等=== |
---|---|---|
概念 | 相等 | 严格相等 |
类型转换 | 类型转换 | 类型不同则直接返回false |
转换规则 | 原始类型的值:字符串和布尔值都会转换成数值;对象(数值和函数)与原始类型值比较,对象转换成原始类型的值,在进行比较;undefied和null与其他类型值比较,为false,相互比较为true | 不同类型值,直接返回false;同一类的原始类型值(数字,字符串,布尔值),值相同返回true,否则false;同一类的复合类型值(对象,数组,函数),比较他们是否指向同一个对象;undefined和null与自身严格相等 |
- 实现一个promise
function myPromise(constructor){
let self = this;
self.status = 'pending' //定义状态改变前的初始状态
self.value = undefined; //定义状态为resolved时的状态
self.reason = undefined;//定义状态为rejected时的状态
function resolve(value){
//两个===pending,保证了状态的改变是不可逆的
if(self.status === 'pending'){
self.value = value;
self.status = 'resolved';
}
}
function reject(reason){
//两个===pending,保证了状态的改变是不可逆的
if(self.status === 'pending'){
self.reason = reason;
self.status = 'rejected';
}