TikTok NG SDE 后端 VO 面经 2025-09-12|子集和划分+滑动窗口最大值在 OAVOSERVICE 实时辅助下速通

2025-09-12
TikTok NG SDE 后端 VO 面经 2025-09-12 封面

这次是 Lark 平台上的视频面试,面试官是国人。整体氛围还可以,前面聊简历,后面直接两道 coding,时间抓得比较紧。在 OAVOSERVICE 实时辅助 下,候选人顺利完成了整个面试流程。我们提供 VO辅助VO代面OA代做OA辅助 服务,更多面经与资源可参考 一亩三分地 的经验板块。

简历问答环节

面试官先让候选者挑一个熟悉的项目,重点问了下面几个角度,大概持续了20分钟:

项目深度挖掘

  • 业务目标:这个项目最大的业务目标是什么?对用户或者系统性能的提升在哪里?
  • 技术挑战:项目里有没有遇到过并发冲突/数据一致性的问题,怎么解决的?
  • 技术选型:为什么选择了当前的消息队列/存储方案?
  • 团队协作:在团队中你主要负责哪一块?和其他同学的接口是怎么对接的?
  • 性能优化:项目上线后有没有遇到过性能瓶颈,是怎么排查的?

👉 在 OAVOSERVICE 的实时提醒下,候选人能够有条理地回答每个问题,展现了对项目的深度理解和实际工程经验。

Coding 环节

Q1:子集和划分

题目:给定一个整数数组,判断是否能将数组分成两个子集,使得两个子集的和相等。

示例:

Input: nums = [1,5,11,5]
Output: true(因为可以分成[1,5,5]和[11])

考点:典型0/1背包动态规划。

解题思路

  • 首先计算数组总和,如果总和为奇数,直接返回false
  • 如果总和为偶数,问题转化为:能否找到子集使其和为总和的一半
  • 使用0/1背包DP:dp[i][j]表示前i个元素能否组成和为j的子集
  • 状态转移:dp[i][j] = dp[i-1][j] || dp[i-1][j-nums[i-1]]

代码实现

def canPartition(nums):
    total = sum(nums)
    if total % 2 != 0:
        return False
    
    target = total // 2
    dp = [False] * (target + 1)
    dp[0] = True
    
    for num in nums:
        for j in range(target, num - 1, -1):
            dp[j] = dp[j] or dp[j - num]
    
    return dp[target]

Q2:滑动窗口最大值

题目:给定一个数组 nums 和一个窗口大小k,返回每个窗口中的最大值。

示例:

Input: nums = [1,3,-1,-3,5,3,6,7], k=3
Output: [3,3,5,5,6,7]

解题思路

  • 使用双端队列(deque)维护窗口内的元素索引
  • 队列中存储的是可能成为最大值的元素索引
  • 当新元素加入时,移除队列中所有小于新元素的元素
  • 当窗口滑动时,移除超出窗口范围的元素

代码实现

from collections import deque

def maxSlidingWindow(nums, k):
    if not nums or k == 0:
        return []
    
    dq = deque()  # 存储索引
    result = []
    
    for i in range(len(nums)):
        # 移除超出窗口的元素
        while dq and dq[0] <= i - k:
            dq.popleft()
        
        # 移除所有小于当前元素的元素
        while dq and nums[dq[-1]] <= nums[i]:
            dq.pop()
        
        dq.append(i)
        
        # 当窗口大小达到k时,记录最大值
        if i >= k - 1:
            result.append(nums[dq[0]])
    
    return result

面试总结

整体写完以后都挺满意的,很顺利!这次面试展现了以下亮点:

  • 项目经验丰富:能够深入讨论技术细节和业务价值
  • 算法基础扎实:快速识别经典问题并给出最优解
  • 代码实现清晰:思路明确,代码结构良好
  • 沟通表达流畅:能够有条理地解释解题思路

备考建议

  • 项目准备:深入理解项目的技术选型和业务价值
  • 算法练习:熟练掌握DP、滑动窗口等经典算法
  • 代码质量:注重代码的清晰度和边界条件处理
  • 模拟面试:提前练习技术表达和问题回答

大家有搞不懂的随时dd,我们提供专业的 OAVO辅助 服务,包括真题 mock 和实时面试指导,帮助你在面试中发挥最佳水平!