秋招得物前端面试之一面(30min)
提前进去的,面试官也后脚刚进来,问我现在方便开始吗,就提前开始了。面试官看着很资深,比较严格。
先让我自我介绍,然后就直接让我手撕代码。
有个小插曲,一开始看不到屏幕上面试官写的代码,于是后来就贴图互动了,让我在自己电脑上的vscode实现。
1. 自己用函数来复现一下array.reduce()进行数组求和的操作,并挂载到array的原型上。
2. 实现一个场景的需求,假设需要一次性发送数千个promise请求,实现每次发送固定批次的量,并且实现并行处理,全部执行完之后返回一个数组,存放promise的返回值。
然后根据第二问开始问八股。
3. 同步和异步的区别。
4. 为什么需要异步,作用是什么。
反问环节。问了部门的业务和技术栈(说以react为主),以及对我的评价(只让我回去检查设备问题,没有评价)
总流程30min多一点,因为是提前进去的。
#得物面试#
先让我自我介绍,然后就直接让我手撕代码。
有个小插曲,一开始看不到屏幕上面试官写的代码,于是后来就贴图互动了,让我在自己电脑上的vscode实现。
1. 自己用函数来复现一下array.reduce()进行数组求和的操作,并挂载到array的原型上。
2. 实现一个场景的需求,假设需要一次性发送数千个promise请求,实现每次发送固定批次的量,并且实现并行处理,全部执行完之后返回一个数组,存放promise的返回值。
然后根据第二问开始问八股。
3. 同步和异步的区别。
4. 为什么需要异步,作用是什么。
反问环节。问了部门的业务和技术栈(说以react为主),以及对我的评价(只让我回去检查设备问题,没有评价)
总流程30min多一点,因为是提前进去的。
#得物面试#
全部评论
你这个比其他人的难好多
1. Array.prototype.myReduce = function (cb, initialValue) {
let pre = initialValue ? initialValue : 0;
const _reduce = () => {
for (let i = 0; i < this.length; i++) {
pre = cb(pre, this[i]);
}
};
_reduce();
return pre;
};
第一个题比较简单 第二个题感觉好像问了挺多的 找了之前的笔记改了下
我刚面试完,我应该和你是同一个面试官,感觉很专业,问题就第一题不一样,其余基本一样,秋招第一场面试,有点紧张表现得不好
//模拟网络请求任务
const timeout = (time) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve("time is:" + time);
}, time);
});
};
const scheduler = new Scheduler();
const addTask = (time, order) => {
return new Promise((resolve, reject) => {
Promise.resolve(scheduler.add(() => timeout(time))).then(
resolve,
reject
);
});
};
Promise.all([
addTask(1000, "1"),
addTask(500, "2"),
addTask(300, "3"),
addTask(400, "4"),
]).then((res) => {
console.log(res);
});
大佬你这个确实难好多,我这里上来就说看简历说话,也没算法题什么的🙀
艹,原题一模一样,写了并发控制,面试官直接让我回去看看
大佬可以投递满帮保个底试试哈
https://www.nowcoder.com/feed/main/detail/a4df4a929a9148edb4a927e671a467e2?toCommentId=16770682
2. class Scheduler {
constructor(parallelCount = 2) {
this.parallelCount = parallelCount;
this.runningCount = 0;
this.task = [];
}
add(task) {
return new Promise((resolve, reject) => {
this.task.push({
task,
resolve,
reject,
});
this._run();
});
}
_run() {
if (this.task.length > 0 && this.runningCount < this.parallelCount) {
const { task, resolve, reject } = this.task.shift();
this.runningCount++;
task()
.then(resolve, reject)
.finally(() => {
this.runningCount--;
this._run();
});
}
}
}
同一个面试官,同一个问题,我是手写防抖节流,蹲个后续
第二题是相当于手写promise.all吗
相关推荐
Volatiled:亲测,技术面试,问这些问题,面试官只会让我去问hr
点赞 评论 收藏
分享