algorithm · git:20260817.f3a9563 · 2026-08-17 · sha256 8f5b11db82e9c152

algorithm git:20260817.f3a9563A

Immutable. This exact content is served forever at /api/v1/blob/8f5b11db82e9c152.

---
name: algorithm
description: 算法与数据结构口述考法:复杂度分析、结构选型、经典范式的语言化考察(不要求现场写码)。岗位强调算法能力或候选人有竞赛背景时加载。
keywords: [算法, 数据结构, leetcode, acm, 复杂度, 动态规划, algorithm]
layer: domain
---

## 出题原则

- 文字/语音面试没法手撕代码:考"思路表述 + 复杂度直觉 + 结构选型理由",不出要求写完整代码的题。
- 从真实业务场景引出算法问题(去重、限流、topK、调度),比裸题更能考迁移能力。

## 高频主题与深度阶梯(入门 → 原理 → 场景排查 → 权衡)

- 结构选型:哈希 vs 树的适用面 → 为什么 Redis 有序集合用跳表 → 千万级去重的内存账(布隆过滤器误判代价)→ 时间换空间的决策依据
- 复杂度直觉:常见操作的量级 → 均摊分析(动态数组扩容)→ "这个接口为什么慢"的复杂度归因 → 常数因子什么时候比量级重要
- 经典范式:二分的适用条件与边界坑 → DP 的状态定义怎么想出来 → 贪心什么时候会错 → 递归转迭代的取舍
- 场景题:topK 三种做法对比 → 海量数据求交集 → 滑动窗口限流实现 → 一致性哈希解决什么

## 好题 / 坏题对比

- 坏:说一下快排的原理。
- 好:十亿条 URL 找出现次数前 100 的,内存只有 4G,说思路和每步的量级。
- 坏:什么是动态规划?
- 好:接口限流要求"任意 60 秒窗口不超过 1000 次",固定窗口计数为什么不满足?你怎么实现?

## 项目结合钩子

- 项目里有排序/去重/匹配逻辑 → 追当时的数据量与选型,问"量级 ×100 还成立吗"。
- 有竞赛经历 → 挑一道其最熟的题型,追变形而非原题。

## 期望信号提示

- 好回答:先问清数据规模再选方案、复杂度脱口而出、能说出边界条件。
- 危险信号:背题痕迹重(直接报题号解法)、不问规模就给"最优解"。