Facebook 的一个 JavaScript 面试问题

2025-05-25

Facebook 的一个 JavaScript 面试问题

哇,真是精彩的一周!上周的挑战非常成功。如果你错过了,这里是上周文章的链接,以及Coderbyte上的挑战

在我开始讨论挑战的解决方案之前,我还想告诉大家,Coderbyte 非常期待您的反馈!您是否刚刚参加了技术面试,想了解一下面试表现?请将您面试时遇到的问题和答案发送至liz.gross@coderbyte.com,我会尽快回复您的解决方案。期待您的反馈!

现在,不用多说,以下是解决这个谷歌面试问题的常用方法:

堆栈方法:

当我第一次听到这个问题时,我立刻想到了使用栈。栈是一种基本的数据结构,元素的插入和删除都在栈顶进行。通常,栈上可以执行三种基本操作:

  1. 将一个元素插入堆栈(push
  2. 从堆栈中删除一个项目(pop从顶部)
  3. 显示堆栈的内容

在 JavaScript 中,实现堆栈就像使用数组及其方法一样简单pushpop对于我们的问题来说,这是一种绝佳的数据结构选择。当你迭代按键时,你可以将push它们放入堆栈中。一旦你按下退格键,pop堆栈顶部的数据就会被移除!代码如下:

function removeBackspaces(arr) {
  const result = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === '-B' && result.length > 0) {
      result.pop();
    } else if (arr[i] !== '-B') {
      result.push(arr[i]);
    }
  }
  return result;
}

function checkEqualInputs(arr) {
  const [arr1, arr2] = arr.map((e) => e.split(','))
  const result1 = removeBackspaces(arr1);
  const result2 = removeBackspaces(arr2);
  // check if arrays are equal
  return result1.join('') === result2.join('');
}

大O:

这是一个很好的解决方案,因为它在时间和空间方面相对便宜。时间和空间的运行时复杂度为 ,O(n+m)其中n是第一个字符串的长度,m是第二个字符串的长度。您只需遍历每个字符串一次,并存储最多包含每个字符串长度的堆栈。

本周的挑战:

本周,我们将解决 Facebook 真机面试中出现的一道编程题。请在下方评论区分享你的答案!更多 Facebook 相关挑战,敬请关注Coderbyte 上的Facebook 面试问答课程!

编写一个函数,接收一个 DOM 元素,并在几毫秒distance内将其从当前位置平滑地动画到右侧像素位置duration。实现以下函数:animate(el, milliseconds, distance)

例如,animate(document.querySelector('#myDiv'), 2000, 100)将在 2 秒内将 id 为 100px 的元素myDiv向右移动。无需使用 jQuery 或任何其他第三方库即可实现此功能。

元素移动

迫不及待想看看你们的作品。祝大家编程愉快!

我们的时事通讯📫

每次发布重大功能时,我们都会发布一小段功能揭秘,以便我们的社区能够第一时间获悉我们的新动态。请在此处提供您的电子邮件地址,我们会将您添加到“第一时间知晓”列表中 :)

文章来源:https://dev.to/coderbyte/a-javascript-interview-question-asked-at-facebook-27po
PREV
2020 年最佳编程挑战网站 1. Coderbyte 2. LeetCode 3. Edabit 4. Codewars 5. HackerRank 6. freeCodeCamp 7. TopCoder 8. Codeforces
NEXT
谷歌的一个编程面试问题