标签:oNode2 oNode1 专访 TikTok 前端 javascript Promise io 节点
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 两个节点处于同一级别
让我们试着画出这两个节点之间可能存在的关系。如下图所示,它们的直接父节点就是答案。
1.2 两个节点互为祖先
oNode1 是目标节点。当然,反过来也是一样的。 oNode2 也可以是 oNode1 的祖先。
1.3 两个节点之间没有关系
如下图所示,这两个节点的距离很远,似乎没有任何关系,但是从其中任何一个节点往上搜索,肯定能找到一个包含oNode1或oNode2的点。
1.4 递归实现版本
根据上面的分析,相信你很快就能写出下面的代码了。
1.5 遍历实现版本
递归很容易理解,仅仅通过遍历就可以实现吗?事实上,递归问题往往可以通过遍历来解决。
4.使用reduce实现map功能
这个问题会比较简单,我们直接写代码
输入:[1,2,3]
输出:[2、4、6]
最后
谢谢阅读。 我在看 **** 转发您的关注和阅读更多优质文章。
[
“我因为 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
标签:oNode2,oNode1,专访,TikTok,前端,javascript,Promise,io,节点 来源: https://www.cnblogs.com/amboke/p/16660251.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。