刚结束一场面试,base北京,上限25k,也支持远程,线上会议面试一个半小时,全程共享桌面敲代码。
自我介绍
...
实现一个防抖函数
function debounce(fn, ms) {
let timer = null;
return function () {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
fn.apply(this, arguments);
}, ms);
};
}
// test
function testFn() {
console.log("running");
}
const runFn = debounce(testFn, 1000);
runFn();
runFn();
runFn();
说一下 vue2 和 vue3 和 nuxt3 的区别
...
说一下 flat 和 flatMap
flatMap 平时没用过,简单了解过,flat和map的结合。
手写 flat
function myFlat(arr, depth = 1) {
if (depth > 0) {
return arr.reduce((acc, val) => {
const value = Array.isArray(val) ? myFlat(val, depth - 1) : val;
return acc.concat(value);
}, []);
} else {
return arr.slice();
}
}
// test
let testArr = [1, [2, 3], [4, [5]]];
let res = myFlat(testArr, 2);
console.log(res);
什么是Promise.withResolvers()
不知道,实话实话第一次听说这个api
什么是Promise.try()
不知道,手贱直接在共享桌面情况下搜了一下 mdn 解释,顺利的引出下一题
按照定义,能否自己实现一个 Promise.try()
function PromiseTry(fn) {
return new Promise((resolve, reject) => {
try {
const result = fn();
if (result && typeof result.then === "function") {
result.then(resolve).catch(reject);
} else {
resolve(result);
}
} catch (err) {
reject(err);
}
});
}
// test
const fn = () => Promise.resolve(3);
PromiseTry(fn).then((res) => {
console.log(res);
});
代码执行顺序题
给出一段异步代码,写出输出结果
setTimeout(() => {
console.log("A");
Promise.resolve().then(() => {
console.log("B");
});
}, 1000);
Promise.resolve().then(() => {
console.log("C");
});
new Promise((resolve) => {
console.log("D");
resolve("");
}).then(() => {
console.log("E");
});
async function sum(a, b) {
console.log("F");
}
async function asyncSum(a, b) {
await Promise.resolve();
console.log("G");
return Promise.resolve(a + b);
}
sum(3, 4);
asyncSum(3, 4);
结果
// D F H C E G A B
http2 有什么优势
不知道
401,403 状态码
- 401 unauthorized
- 403 forbidden
聊了会项目中技术点
顺利通过一面,约了明天的二面。但是远程工作之前没接触过,不能缴纳本地五险一金,北京那太远也不可能要那的社保和公积金,有这方面经验的兄弟可以交流一下,薪酬方面都是采用怎样一种形式。