1.css
1.1标签语义化,都有什么标签,有哪些区别,如何转化,display还有哪些,
合理的标签干合理的事情。
有块状标签(div,p,h1-h6,ul li,header,footer,nav,section,artical)和行内标签(em ,i,span,small,strong, )行内块状标签(img,input,表单元素标签)。
块状标签能独占一行,可以设置宽高,行内标签不能独占一行,不能设置宽高,行内块状标签同时具备块状标签和行内标签的特点。
display:inline-block;display:block;
2.css面试题
第二种方式渲染性能比较高,因为css渲染机制是从右向左渲染。
脱离文档流方式:float浮动、position:定位、transform、anmiate
2. js
2.1 js四大类型检测方法
typeof instanceof constructor Object.prototype.toString.call()
2.2
堆:存储引用类型的空间
栈:存储基本类型值和指定代码的环境
e1.培训(对象和数组的区别) e2.珠峰 (自己实现一个symbol) e3:培训(Object.prototype.toString/valueOf)
e3对象会调用toString方法,转化为[object,object] 字符串 后面会把前面覆盖掉
2.3
2.4
'1' '4'
2.5 对象(数组)的深克隆和浅克隆(头条)
深克隆
JSON.parse(JSON.stringify(obj))(fun函数和正则以及日期除外)
JSON.stringify() 处理中会将fun函数和正则以及日期进行字符串转化,有问题
解决方法:递归
function deepClone(obj){
//过滤特殊情况 (null 也是object)
if(obj === null) return null;
if(typeOf obj !=='object') return obj;
if(obj instanceOf RegExp){
return new RegExp(obj);
}
if(obj instanceOf Date){
return new Date(obj);
}
//不直接创建空对象目的:克隆的结果和之前保持相同的所属类(obj.constructor)
let newObj =new obj.constructor;
for(let key in obj){
if(Obj.hasOwnProperly(key)){
newObj[key] = deepClone(obj[key]); //obj[key]如果是一个对象
}
}
return newObj;
}
2.6
2 4 1 1 2 3 3
2.7 同步异步
2.8
2.9
2.10 vue 2.0 和 vue3.0 双向数据绑定实现原理
vue 2.0
vue 3.0
3 算法
3.1数组去重
es6 SET模式 (new Set(ary)返回的是实例)
let ary=[12,23,34,45,23]
let arr =Array.from(new Set(ary));
或用es6扩展运算符
let arr =[...(new Set(ary)];
通过创建一个新数组(第一项和数组里面的所有项进行对比,没有的话就push进新数组,应该为arr.length)
let arr=[];
for(let i=0;i<ary.length;i++){
let item = ary[i];
args = ary.slice(i+1);
if(args.indexOf(item)>-1){
//存在这个值
}else{
arr.push(item);
}
}
通过操作当前数组,存在的值赋值为null,然后再经过过滤得到不为null的值
for(let i=0;i<ary.length-1;i++){
let item = ary[i];
args = ary.slice(i+1);
if(args.indexOf(item)>-1){
//存在这个值
arr[i] =null;
}
}
ary =ary.filter(item=>item !==null)
对象健值对 拿数组中的每一项向新容器中存储,如果已经存储过,就把这项干掉
let obj={};
for(let i=0;i<ary.length;i++){
let item = ary[i];
if(typeof obj[item] !=='undefind'){
ary[i] =ary[ary.length-1];
ary.length --;
i--;
continue;
}
obj[item]= item;
}
obj =null;
3.2数组排序
3.2数组扁平化
- es6 的flat直接扁平化flat(Infinity)