福州疫情原因,均为腾讯会议线上进行。
HR旁听,所以没有HR面;
自我介绍
手撕:实现 Promise.retry
,成功后 resolve 结果,失败后重试,尝试超过一定次数才真正的 reject,同时超过10s自动失败 。
Promise.retry = function (promiseFn, wait = 10000) {
let times = 3;
return new Promise(async (resolve, reject) => {
const timer = setTimeout(() => {
reject('timeout');
clearTimeout(timer);
}, wait);
while (times--) {
try {
const res = await promiseFn();
resolve(res);
clearTimeout(timer);
break;
} catch (err) {
if (!times) {
reject(err)
clearTimeout(timer);
}
}
}
});
};
// 测试代码
function getProm() {
const n = Math.random();
return new Promise((resolve, reject) => {
setTimeout(() => n > 0.9 ? resolve(n) : reject(n), 1000);
});
}
Promise.retry(getProm);
如何学习前端?看什么书?
最近关注的技术前沿?
微前端的两种主要实现方式,他们俩之间有什么区别?
手撕:TS 工具类型 FirstChar<T>
type A = FirstChar<'BFE'> // 'B'
type B = FirstChar<'dev'> // 'd'
type C = FirstChar<''> // never
TS
支持字符串使用infer
推断,语法和模板字符串相似,因此使用infer
即可完成。
type FirstChar<T extends string> = T extends `${infer T}${any}` ? T : never
看代码:使用React.memo
等缓存组件或者组件参数,并说出等效替代方案。
讨论一下我们线下笔试的最后一题,有什么更优解法,说一下这几种解法的时间复杂度?
661.有效三角形的个数
反问
引流:腾讯,华为,字节,百度,美团,阿里巴巴,海康威视,科大讯飞,大疆,哔哩哔哩,B站
#前端面经##朴朴#