- 模拟 ★★★★★ 可难可易 大部分题都是模拟中使用某个算法优化
- 贪心 ★★★ 按照某种规则排序
- 字符串 ★★★ 输入输出容易搞人 双指针处理字符串空格单词
- DFS/BFS ★★★ 有多少种组合数 图的最短时间
- 滑动窗口/双指针 ★★ 最短或最长的子串 最多可变 k 次
- DP ★★ 看运气 背包问题居多 遍历时维护最值
- 堆 ★★ 学会自定义数据的排序规则
- 并查集 ★★ 寻找连通分量和最大集合数量
- 找规律/数学 ★ 看运气
- 前缀和 ★ 子数组范围较小时直接用
- 二分法 ★ 灵活运用库函数 lower_bound 和 upper_bound
- 单调栈 ★ 通常跟数组有关
- 迪杰斯特拉算法/弗洛伊德 ★ 通常不考
- 字典树 ★ 出现前缀字符串查询或者异或值直接用
- 高精度 ★ 大数乘法或大数加法
- 数值较大的结果考虑用 long long
- 动态规划写不来,先写暴力过部分测试样例
- 特殊输出先提交一下,骗点分了再说
- 练习处理诡异输入的能力
- 《C++ Primer》第五版
- 《后台开发: 核心技术与应用实践》 徐晓鑫
- 《深入理解计算机系统》第三版
- 《Linux 高性能服务器编程》 游双
- 《数据库系统概念》第七版
- 《剑指 offer》何海涛
- 《程序员面试指南》左程云
- 内核态和用户态有什么区别?从这两个视角,描述一下调用 fwrite 写入数据到磁盘的整个过程用户态和内核态做了什么事情?
- B+树和哈希表的区别?B+树和 LSM-Tree 的区别及应用场景?
- 操作系统中使用页表机制有什么好处?解决了什么问题?
- Postgres 数据库是使用什么方式保证的 ACID 特性?
- Hash join 的执行流程和实现细节?