❝本题源于字节跳动的一道面试编程题,主要考察的是面试者对异步编程的掌握程度。做题之前,先想一想异步编程都有哪些内容,一起来挑战一下自己吧。本题难度分为青铜,白银和王者三个等级,等级划分标准见文末,加油,当王者不当青铜。同时公众号回复5即可获取答案。
❞
题目介绍
如下为一段代码,请完善sum函数,使得 sum(1,2,3,4,5,6) 函数返回值为 21 ,需要在 sum 函数中调用 asyncAdd 函数,且不能修改asyncAdd函数
/**
* 请在 sum函数中调用此函数,完成数值计算
* @param {*} a 要相加的第一个值
* @param {*} b 要相加的第二个值
* @param {*} callback 相加之后的回调函数
*/
function asyncAdd(a,b,callback) {
setTimeout(function(){
callback(null, a+b)
},1000)
}
/**
* 请在此方法中调用asyncAdd方法,完成数值计算
* @param {...any} rest 传入的参数
*/
async function sum(...rest) {
// 请在此处完善代码
}
let start = window.performance.now()
sum(1, 2, 3, 4, 5, 6).then(res => {
// 请保证在调用sum方法之后,返回结果21
console.log(res)
console.log(`程序执行共耗时: ${window.performance.now() - start}`)
})
输出要求
本题根据程序输出时间不同,可以划分为三个难度等级
- 青铜难度, 输出时长大于6秒
- 白银难度, 输出时长大于3秒
- 王者难度, 输出时长大于1秒
一起来挑战一下自己吧。关注下方公众号,回复5
即可获得答案,同时,还有海量学习资料等着你。答完题记得打卡哦点我打卡,有疑问打卡时候告诉我,小编在线答疑。