TikTok 专访:您可能有兴趣了解的 4 个前端问题


TikTok 专访:您可能有兴趣了解的 4 个前端问题

这是一次难忘的面试经历

TikTok 专访:您可能有兴趣了解的 4 个前端问题

Photo by 安德烈科·波迪尔尼克 on 不飞溅

最近,我的好朋友在换工作,在网上收到了很多offer。

其中一个来自一家名为 抖音 ,你可能非常熟悉。他们让我的朋友当场写代码来实现4个复杂方法的功能。

1. 尝试实现 Promise.all API

承诺.all() 方法将一个可迭代的 Promise 作为输入,并返回一个 Promise,该 Promise 解析为输入 Promise 的结果数组。

当输入的所有承诺都已解决,或者输入可迭代不包含任何承诺时,此返回的承诺将解决。

它会在任何输入承诺拒绝或非承诺抛出错误时立即拒绝,并将拒绝第一个拒绝消息/错误。

自己实现一个

做个测试

2.设计一个可以设置过期日期的localstorage API

localstorage不会像cookies一样自动过期,所以过期时间需要自己维护。

我的思路是:

使用 setItem 时,保存过期时间。使用getItem时,将时间与当前时间进行比较,如果大于当前时间,则直接返回该值,否则需要通过removeItem移除该值并返回null。

做个测试

基本符合题主的要求。当然我们也可以处理异常,比如空间满、设置错误等。

3.找到两个节点最近的公共父节点,包括节点本身

介绍:

oNode1 和 oNode2 在同一个文档中,不会是同一个节点。

 函数 findCommonParent(oNode1, oNode2) {  
  _// 这里填写_  
 }

相信大家看到这个问题都会用到递归,但是没有明确的思路。

这个时候不要紧张。从问题中找出更有效的信息,尽量多用笔画(如果是现场面试,记得只带一支铅笔,有时多画就会有想法)。

1.1 两个节点处于同一级别

让我们试着画出这两个节点之间可能存在的关系。如下图所示,它们的直接父节点就是答案。

TikTok 专访:您可能有兴趣了解的 4 个前端问题

1.2 两个节点互为祖先

oNode1 是目标节点。当然,反过来也是一样的。 oNode2 也可以是 oNode1 的祖先。

TikTok 专访:您可能有兴趣了解的 4 个前端问题

1.3 两个节点之间没有关系

如下图所示,这两个节点的距离很远,似乎没有任何关系,但是从其中任何一个节点往上搜索,肯定能找到一个包含oNode1或oNode2的点。

TikTok 专访:您可能有兴趣了解的 4 个前端问题

1.4 递归实现版本

根据上面的分析,相信你很快就能写出下面的代码了。

1.5 遍历实现版本

递归很容易理解,仅仅通过遍历就可以实现吗?事实上,递归问题往往可以通过遍历来解决。

4.使用reduce实现map功能

这个问题会比较简单,我们直接写代码

 输入:[1,2,3]  
 输出:[2、4、6]

TikTok 专访:您可能有兴趣了解的 4 个前端问题

最后

谢谢阅读。 我在看 **** 转发您的关注和阅读更多优质文章。

[

“我因为 Promise.all 而失去了工作机会”

一次面试经历让我很伤心。

javascript.plainenglish.io

](/i-lost-a-job-opportunity-just-because-of-promise-all-be396f6efe87)

[

采访者:“npm run xxx”发生了什么?

一个大多数人都不知道的秘密。

javascript.plainenglish.io

](/interviewer-what-happened-to-npm-run-xxx-cdcb37dbaf44)

[

面试官:“x !== x”在 JavaScript 中可以返回 True 吗?

你可能不知道的五个神奇的 JavaScript 知识点!

javascript.plainenglish.io

](/interviewer-can-x-x-return-true-in-javascript-7e1d1fa7b5cd)

[

现在是 2022 年,不要再滥用箭头功能了

不应该使用箭头函数的 4 种情况。

javascript.plainenglish.io

](/its-2022-don-t-abuse-the-arrow-function-anymore-905862a9c668)

更多内容在 ** 纯英语.io** .注册我们的 ** 免费每周通讯** .跟着我们 ** 推特** , ** 领英** , ** YouTube** , 和 ** 不和谐** .

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/17538/54320600

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/287813.html

(0)
上一篇 2022年9月6日
下一篇 2022年9月6日

相关推荐

发表回复

登录后才能评论