返回首页

滑动窗口基础知识速览

一、面试常考点

1. 滑动窗口适用场景

连续子数组/子串问题。

2. 两种窗口

固定窗口(长度固定)与可变窗口(按条件收缩)。

3. 核心模板

右指针扩张,满足条件后左指针收缩。

二、模板

let left = 0
for (let right = 0; right < arr.length; right++) {
  // 扩张窗口
  while (需要收缩) {
    // 收缩窗口
    left++
  }
  // 更新答案
}

30 秒口述模板

我会把「滑动窗口」分成三层来讲:先讲核心概念和它解决的问题,再讲一个高频场景与实现思路,最后补充常见坑点和优化方向。这样既能回答基础问题,也能接住面试官追问。

2 分钟口述模板

如果展开讲,我会按“定义 -> 原理 -> 场景 -> 取舍”四步回答。先说明「滑动窗口」解决的核心问题和边界;再讲 1 到 2 个关键机制,解释为什么这样设计;然后结合一个真实业务场景说明如何落地;最后补充常见坑点、性能或稳定性优化,以及与相近方案的取舍标准。

这样回答的好处是:既有原理深度,也有工程落地感,面试官继续追问到实现细节时也能自然展开。