一面
- 浏览器缓存
- 对cors的理解
- 跨域对域名的要求
- css省略号如何实现
- 盒模型
- vue2和vue3响应式的区别
- pnpm跟npm和yarn的最主要的区别
- 输出题
console.log("开始");
setTimeout(() => {
console.log("输出一个信息");
}, 0);
console.log("执行");
new Promise((resolve, reject) => {
console.log("执行for循环");
for (var i = 0; i < 100; i++) {
i == 99 && resolve();
}
reject();
})
.then(() => {
console.log("执行then函数");
})
.catch(() => {
console.log("catch error");
});
console.log("执行结束");
- 实现instanceof
- 实现promise.all
二面
- css 水平居中方式
- js数据类型
- 深浅拷贝
- 浅拷贝是不是就是引用赋值
- es6新特性
- var let const的区别
- const 一个对象的属性可以修改吗
- 使用过哪些git命令
- git cherry-pick 用过吗?
- 代码输出题, a b分别输出什么
let a = {
n: 10
};
let b = a;
b.m = b = {
n: 20
};
function isSame(s1, s2) {
// const ss1 = Array.from(s1)
if (s1.length != s2.length) return false
const ss = new Array(26).fill(0)
const len = s1.length
for (let i = 0; i < len; i++) {
ss[s1.charAt(i) - 'a']++
ss[s2.charAt(i) - 'a']--
}
for (let sss of ss) {
if (sss != 0) {
return false
}
}
return true
}
三面
var a = { x: 1 };
var b = a;
a = a.x = { x: 1 };
console.log(a);
console.log(b);
// 输入是一个有序递增数组,数组中可能会有重复的数字,要求在O(1)的空间复杂度下,原地修改数组,使得数组中前面的N位是有序不重复的数字(N是数组中不重复数字的个数)。返回数组中不重复数字的长度N。
// 例如 [0, 1, 1, 2, 2, 3] 修改为[0, 1, 2, 3, ...] 输出为4
// 例如 [2, 3, 3, 6, 6] 修改为[2, 3, 6, ... ] 输出为3
function fn(arr) {
let index = 0
// const map = new Map()
let len = arr.length
let res = 0
let front = 0
while (front < len) {
while (front < len && arr[front] == arr[front + 1]) {
// arr.splice(index, 1)
// arr.push(arr[front])
// len--
front++
// index++
}
arr[index] = arr[front]
front++
res++
index++
}
console.log(arr);
return res
}