前端面试准备

255 阅读2分钟

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))