确定目标
算法练习的目标是能够在 OA 平台以及现场面试中正确分析问题,解释思路,并且较快速度完成高质量的代码。
note
切勿花费过多时间进行算法正确性分析与论文研究,这并不是面试考核的要点。
Big Five 面试官在面试结束后需要对求职者进行评分,我们可以从他们的评分标准中更直观地了解我们需要达到的水平:
| 分数 | 解题能力 | 代码能力 | 沟通能力 |
|---|---|---|---|
| 0-20 分 | 不懂得如何分析题目,即使多次提示也无法理解题目 | 没有写任何代码 | 思路混乱,无法沟通 |
| 20-40 分 | 经过提示后对题目有一定理解,能够给出思路 | 代码大幅偏离正确解法或者无法将思路转变成代码 | 能够与面试官简单沟通,并说出自己的理解 |
| 40-60 分 | 能够给出暴力解,经过提示后可以给出次优解 | 代码风格和架构有问题,代码有错误但没有检查出来 | 较清晰地表达自己的思路,但是与面试官互动不足 |
| 60-80 分 | 能够给出次优解,经过提示可以给出最优解 | 代码逻辑没有明显问题,但是细节有不少问题 | 清晰表达自己的思路,与面试官对题目有一定探讨 |
| 80-100 分 | 能够给出多种解法,并且分析不同解法的优劣 | 代码命名良好,架构清晰,核心代码有注释 | 清晰表达自己的思路,与面试官对题目进行深入探讨 |
note
面试和竞赛不一样,即使一道题目你无法完全解答,你也可以展现自己的沟通以及题目分析能力。面试官会从多个角度来评价你的能力。
自我检查
你可以通过以下标准来检查自己的算法准备情况,达到此标准代表你能够通过大部分公司的算法面试:
- Leetcode 周赛连续三周做出三题
- 90% 题目能够分析出时空复杂度
- 熟悉常见的 OA 平台的 IDE,如 Hackerrank, CodeSignal
- 熟悉其他内容中的特殊解法以及代码模版