这道JS面试题只有29%的人能答对,你是其中之一吗?(附事件循环面试题答案解析)...

编程入门 行业动态 更新时间:2024-10-19 18:25:51

这道JS<a href=https://www.elefans.com/category/jswz/34/1769418.html style=面试题只有29%的人能答对,你是其中之一吗?(附事件循环面试题答案解析)..."/>

这道JS面试题只有29%的人能答对,你是其中之一吗?(附事件循环面试题答案解析)...

事实是,即使你不精通JavaScript,也能通过任何JavaScript面试。如果你是JavaScript开发者,并且经常进行面试,那么你知道这些面试中的问题总是相似的(或多或少吧)。在不同的公司进行面试时,面试官会考察你有关相同主题的知识。尽管如此,正如你将看到的那样,正确回答此类问题的统计数据相当低。

如何改变这种情况?轻而易举——尽可能多地练习这些主题,最重要的是要理解结果。本篇文章是本系列的第二篇,废话不多说,大家请看题。

第二题、 关于JS的执行上下文(Context)

上下文问题可能会让你困扰,即使是经验丰富的开发人员。例如,只有29%的开发人员解决了这个棘手但本质上简单的任务。在这道面试题里,我们考察了关于JS上下文执行的理解。

国外社区的网友只有 29% 的人答对了

下面我们来挑战下这道题,题目如下:

'use strict';function foo() {console.log(this);
}function callFoo(fn) {fn();
}let obj = { foo };callFoo(obj.foo);

这道题主要考察面试者对于JavaScript中执行上下文的理解,特别是在函数调用时的this关键字指向。此外,也可以考察面试者对于ES6中新特性的掌握程度,例如对象的解构赋值。通过这个问题,面试官可以了解面试者对于JavaScript语言的掌握情况,以及面试者是否能够理解和解决在函数调用时this指向的问题。

现在你有充足的时间思考这道题的答案,请选择你认为正确的答案,看看是不是其他人的答案是否和你一样,以及统计结束时,我们的正确率是不是能超过外国网友 29% 的正确率,我头条粉丝的正确率是 24.6% 。

目前由于这个投票功能限制,暂时不能告诉你正确答案,为了给你充足的思考和作答时间,本篇文章暂不公布答案和解析,我会在下一篇文章里进行公布,为了方便你能及时收到我下一篇文章的推送,请关注「前端达人」。

如果你是个急性子,想知道答案,可以私信我“执行上下文面试题”获取答案。

上一题答案及解析:事件循环

setTimeout(() => console.log(1), 0);console.log(2);new Promise(res => {console.log(3)res();
}).then(() => console.log(4));console.log(5);

共有83位热心的粉丝参与了这道题。感谢各位积极参与。这道题的正确答案是:2,3,5,4,1。你答对了吗?

这次统计总共有 39 位粉丝答对了这个问题,正确率 46%,大大超出外国网友 18% 的正确率。如下图所示:

关于这道题的解释:

现在我们来模拟一个回答正确的面试者的思考过程:

  • 给定零延迟,我们传递给setTimeout的函数会同步执行还是异步执行?

  •  尽管setTimeout函数延迟时间为零,但回调函数是异步调用的。引擎将把回调函数放置在回调队列(宏任务队列)中,在空闲时将其移动到调用栈中。因此,数字1将被跳过,数字2将首先显示在控制台中。

  • 我们传递给Promise构造函数的函数会同步执行还是异步执行?

  • Promise构造函数接收的函数会同步执行。因此,控制台中下一个要显示的数字是3。

  • 给定零延迟,我们传递给Promise的then方法的函数会同步执行还是异步执行?

  • 即使Promise在没有延迟的情况下解决,then方法中的回调也是异步执行的。与setTimeout的区别在于,引擎将Promise回调放入另一个队列中,即作业队列(微任务队列),在那里它将等待执行的机会。因此,进入控制台的下一个数字是5。

  • 哪个具有更高的优先级-微任务队列还是宏任务队列,或者换句话说- Promise还是setTimeout?

  • 微任务(Promise)比宏任务(setTimeout)具有更高的优先级,因此控制台中下一个数字将是4,最后是1。

分析回答,我们可以得出结论,大多数受访者错误地认为作为Promise构造函数参数传递的执行函数是异步调用的。

结束

今天的分享就到这里,感谢你的阅读,希望能够帮助到你,文章创作不易,如果你喜欢我的分享,别忘了点赞转发,让更多有需要的人看到,最后别忘记关注「前端达人」,你的支持将是我分享最大的动力,后续我会持续输出更多内容,敬请期待。

更多推荐

这道JS面试题只有29%的人能答对,你是其中之一吗?(附事件循环面试题答案解析)...

本文发布于:2024-02-26 19:36:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1703651.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:面试题   你是   人能   这道   答案

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!