滑动窗口基础知识速览
一、面试常考点
1. 滑动窗口适用场景
连续子数组/子串问题。
2. 两种窗口
固定窗口(长度固定)与可变窗口(按条件收缩)。
3. 核心模板
右指针扩张,满足条件后左指针收缩。
二、模板
let left = 0
for (let right = 0; right < arr.length; right++) {
// 扩张窗口
while (需要收缩) {
// 收缩窗口
left++
}
// 更新答案
}
30 秒口述模板
我会把「滑动窗口」分成三层来讲:先讲核心概念和它解决的问题,再讲一个高频场景与实现思路,最后补充常见坑点和优化方向。这样既能回答基础问题,也能接住面试官追问。
2 分钟口述模板
如果展开讲,我会按“定义 -> 原理 -> 场景 -> 取舍”四步回答。先说明「滑动窗口」解决的核心问题和边界;再讲 1 到 2 个关键机制,解释为什么这样设计;然后结合一个真实业务场景说明如何落地;最后补充常见坑点、性能或稳定性优化,以及与相近方案的取舍标准。
这样回答的好处是:既有原理深度,也有工程落地感,面试官继续追问到实现细节时也能自然展开。