2024/7 tiktok面经 | tiktok真题解析 | tiktok面试 | tiktok一亩三分地

tiktok面经

2024.7月最新tiktok面经,让我们一起来看下吧~

tiktok三轮第一轮第二轮都是coding,每轮两道题。BQ是讲一个项目,followup项目中遇到的困难。HM面试简历+coding。简历问的infra,coding是dp。

Code

问题1

在允许最多修改数组的一个元素的条件下,这个数组是否是有序的。
考虑从前往后遍历数组,将遇到不满足有序条件的元素nums[i],即nums[i] < nums[i-1], 若i为size-1即最后一个元素,或者数组已经全部有序,直接返回true,否则应考虑nums[i+1]的大小:

  • 若nums[i+1] >= nums[i-1],如数组0,1,2,【1】,3… 中 3 > 2,此时i+1及之前的元素满足题意条件,若后面是有序的则返回true;
  • 否则,如数组0,1,4,【1】,3…中 3 < 4,则若将nums[i-1]改成nums[i],再从i-2开始遍历数组判断其是否有序的即可。

时间复杂度O(n), 空间复杂度O(1)

思路

  1. 遍历数组,找到第一个违反非递减顺序的位置i(即nums[i] < nums[i-1])。
  2. 如果i已经遍历到数组的末尾或倒数第二个元素,说明最多只有一个元素违反顺序,可以通过修改这个元素来修复,直接返回true
  3. 检查是否可以通过修改`nums[i-1]`或`nums[i]`来修复数组。
  4. 从位置`i`开始,继续向后遍历数组,检查是否所有元素都满足非递减顺序。如果发现任何违反顺序的元素,则返回`false`。
  5. 如果整个数组都满足非递减顺序,则返回`true`。
class Solution:
    def checkPossibility(self, nums):
        i = 0
        for i in range(1, len(nums)):
            if nums[i] < nums[i-1]:
                break
        if i >= len(nums) - 1:
            return True

        if nums[i + 1] >= nums[i - 1]:
            i += 1
        else:
            nums[i - 1] = nums[i]
            i = max(0, i-2)

        for i in range(i, len(nums) - 1):
            if nums[i] > nums[i + 1]:
                return False
        return True

问题2

找到树中到其他节点的平均距离最小的节点,一个edge距离算1,要求时间复杂度为O(n)。参考

思路

  1. 首先,定义一个标志变量`visited`,用来标记是否已经找到目标节点p,初始值为`false`
  2. 定义一个空栈`stack`,用来存储从根节点到目标节点p的路径上的节点值。
  3. 定义一个函数`getDisToPar`,接收三个参数:当前节点`root`、目标节点`p`和用于存储路径的栈`stack`
  4. `getDisToPar`函数中,首先检查当前节点是否为空,如果为空,则直接返回。
  5. 将当前节点的值添加到栈中。
  6. 如果当前节点就是目标节点p,并且之前没有访问过(`visited``false`),则将`visited`标记为`true`,并返回。
  7. 如果目标节点p还没有找到,先递归地在左子树中查找。
  8. 如果左子树中没有找到,再递归地在右子树中查找。
  9. 如果当前节点的左右子树都没有找到目标节点p,说明当前节点不在目标节点p的路径上,将其从栈中弹出。
  10. 函数结束后,栈中存储的就是从根节点到目标节点p的路径上的节点值。
visited = False
stack = []

def getDisToPar(root, p, stack):
    global visited
    if root is None:
        return
    # 将节点添加到栈中
    stack.append(root.val)
    # 如果找到了
    if not visited and root == p:
        visited = True
        return
    # 先找左子树
    if not visited:
        getDisToPar(root.left, p, stack)
    # 左子树没找到再找右子树
    if not visited:
        getDisToPar(root.right, p, stack)
    # 如果还没找到,说明不在这个节点下面,弹出来
    if not visited:
        stack.pop()
    return

经过我们的强力面试辅助,OA代写,候选人通过这些面试题的解析和沟通,面试官不仅了解了候选人的编程能力,也看到了我在解决问题过程中清晰的思路和有效的沟通技巧。这些不仅有助于应对 tiktok的面试,同时也能提升我们解决实际编程问题的能力。祝大家面试顺利!

Through our strong interview assistance and OA ghostwriting, the candidate not only understood their programming skills but also saw my clear thinking and effective communication skills in problem-solving through the analysis and communication of these interview questions. These not only help us cope with Meta interviews, but also enhance our ability to solve practical programming problems. And Wishing everyone a smooth interview!

如果你也需要我们的面试辅助服务,请立即联系我们

If you also need our interview assistance services, please contact us immediately.

author avatar
azn7u2@163.com

Leave a Reply

Your email address will not be published. Required fields are marked *