1.自我介绍
自我介绍的时候一定要自信,语速放慢,直视面试官,不要眼神闪躲,切记说话唯唯诺诺或者细声细语太过于腼腆
简单介绍一下自己的工作履历,自己的主要技术栈,上家公司所负责的项目
3.H5+C3 面试题
4.js+ES6
1. 怎样检测数据类型
- typeof(用于检测简单数据类型)
let str = 'str';
let num = 1;
let boolean = true
let arr = []
console.log(typeof str); // string
console.log(typeof num); // number
console.log(typeof boolean); // boolean
console.log(typeof obj); // object
console.log(typeof arr); // object
- instanceof (用于检测复杂数据类型,通过原型链查找)
// 此时有一个坑,通过new String() 得到的字符串是可以被instanceof 检测到的
// 字面量方式的字符串 instanceof 是检测不到的
let str = 'str'
console.log(str instanceof String);
let num = new Number(1)
console.log(num instanceof Number);
var car = new String('123')
console.log(car instanceof String);
var fun = function () {}
console.log(fun instanceof Function);
- Object.prototype.toString()
5.Vue
6.HTTP相关
7.前端性能优化方面
8.前端工程化相关
9.手撸代码
1. 实现深拷贝和浅拷贝
- 浅拷贝
// 第一种: 利用Object.assign方法就可以实现
Objcet.assign(target,source1,source2,...)
// 第二种: 利用ES6 新增的扩展运算符
var target = {
username: 'Rayn',
age: 18
}
var newObj = {}
newObj = {...target}
- 深拷贝
function deepClone(obj) {
if (!obj || typeof obj !== "object") return;
let newObj = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] = typeof obj[key] === "object" ? deepClone(obj[key]) : obj[key];
}
}
return newObj;
}
2. 实现自己的 instanceof 方法
function myInstanceof (left, right) {
// 这里先用 typeof 来判断基础数据类型,如果是,直接返回false
if(typeof left !== 'object' || left === null) return false
// getprototypeOf 是object 自带的api 用阿里获取参数的原型对象
let proto = Object.getPrototypeOf(left)
// 往下循环查找,知道找到相同的原型对象
while (true) {
if (proto === null) return false
if (proto === right.prototype) return true
proto = Object.getPrototypeOf(proto)
}
}
console.log(myInstanceof(new Number(123), Number))
console.log(myInstanceof(123, Number))
3. 实现一个检测数据类型的方法
function getTypeof (obj) {
let type = typeof obj
if(type !== 'object') return type
return Object.prototype.toString.call(obj).relpace(/^\[object (\S+)\$]/,'$1')
}
console.log(getTypeof('1123'))
console.log(getTypeof(1123))