前言
视频分享了作者在准备亚马逊(Amazon)实习面试时LeedCode刷题的经验和技巧。作者在2023年获得了Amazon的实习机会,并在2024年收到Return offer,将于2025年毕业后全职入职SDE职位。
LeetCode刷题策略
备战Amazon SDE面试,技术面试(Technical Interview)的重要性不言而喻,而LeedCode是技术面试考察的重点。作者分享了她的刷题策略:
1. 刷题路线
作者选择参考 NeetCode 提供的刷题路线。NeetCode网站提供了一个清晰的学习路线图,将LeetCode题目按照数据结构和算法类型进行分类,便于系统学习。作者主要刷了 Easy 和 Medium 难度的题目,没有过多涉及 Hard 部分,并且刷到 Graph 类型的题目就停止了,后续的例如 Dynamic Programming 和 Advanced Graph 等内容没有涉猎。这表明在时间有限的情况下,可以有选择地专注于核心和高频考点。
2. 学习记录工具
作者使用 Notion 来记录刷题。这个表格记录了她刷过的每一道题,包括以下信息:
- 题目 (Question):记录题目的名称和链接。
- 标签 (Tag):根据NeetCode提供的分类,标记题目的类型,例如:Array, Hash Set, Sort, Two Pointers, Dynamic Programming, Trees, Stack, Linked List等。
- 难度 (Difficulty):Easy, Medium, Hard。
- 学习心得 (Notes):记录做题时的思考过程、学到的新知识点、优化思路或一些“神奇的解法”,例如“Contains Duplicate”这道题学到了使用
set和in操作符的效率等。作者还提到了像“Product of Array Except Self”这类题目,她会记录一些特别的解法,如不能用除法等限制条件下的解决方案。 - 视频讲解链接 (Solution):作者认为Notion Code在YouTube上的讲解视频非常出色,每次遇到难题都会反复观看,并将视频链接粘贴到Notion中,方便回顾。
- 题单 (List Tag):记录题目出现过的列表,例如Google、Facebook、Amazon等知名公司常考的题目,或是“Blind 75”、“Most Liked 100”等经典题单。这有助于了解不同公司或常见题型的倾向。
- 尝试次数 (Number of Tries):记录自己独立完成题目或者刷题的次数,通常是1-3次。这有助于追踪复习情况,并确定哪些题目需要再次巩固。
- 自我评估 (Thoughts):记录自己是否能独立解出这道题,或者是否值得日后重新回访。
实用刷题建议
作者给出了两点重要的刷题建议:
1. 不要“死磕”难题
对于一道LeetCode题目,如果20分钟内没有思路,可以直接看答案或视频讲解。第一次做不出题目是正常的,这并不代表编程能力或智力水平。重要的是理解解题思路,而不是长时间耗在一道题上。在求职面试的背景下,高效刷题能够帮助考生在有限时间内最大化解题覆盖面和理解深度。
2. 反复练习不会的题目
对于通过看答案或视频才理解的题目,要反复练习,巩固记忆。如果一周后再做还是做不出来,就再次观看讲解视频,直到能够独立完成。作者建议将这类题目标记为“Worth Revisiting”,定期回顾,确保知识点真正掌握。
面试沟通技巧
除了刷题之外,面试中的沟通也至关重要。面试官出题后:
- 提问跟进问题 (Follow-up Questions):通过提问来确认对题目的理解,并与面试官对齐思路,避免误解。
- 讨论边缘情况 (Edge Cases):与面试官讨论可能存在的各种边界条件和特殊情况,展现全面思考问题的能力。
沟通能力是面试官考量的重要环节,仅仅埋头写代码而不与面试官交流,往往不是一个好的表现。
刷题时间线
作者在2022年6月底首次开始刷LeetCode,当时主要刷了两个月(6月和7月)。后来在12月又刷了一段时间。而在2023年2月和3月,为了准备Amazon的面试,她集中刷了更多题目。2024年9月和10月,她又为Stride的全职面试刷了一阵子。她总共刷了大约130道题,这在很多人看来并不算多,但通过系统性的方法和高效的复习,仍然取得了不错的面试成果。
这个经验分享对于计算机专业学生或希望进入科技行业的求职者非常有参考价值,强调了系统性学习、高效复习以及面试沟通的重要性。