https://zhuanlan.zhihu.com/p/25688474不要像我一样学得太杂 没错我用了八个月的时间,但我完全可以缩短这个周期。就像任何大目标的开始,你都会犯错和走弯路,这其中总有你觉得可以做得更好的地方。 我研究了很多我并不需要的项目,其中的一些我认为我可能会在面试中用到,另一些我则认为是我开始工作时应该掌握的知识。我并不想成为团队中的吊车尾,然而事实证明我似乎准备过度了。 我用三周的时间阅读了一千页的 C++ 书籍,虽然现在我并不记得大部分内容,但我还是对 C++ 有了比较全面的了解。可结果却是在面试过程中我用的是 Python 而非 C++。我以为我需要掌握 C++、C 或者 Java,但我错了。所以应该勤问,而非假设。 其实我只需要看 3、4 本书而已,可我却阅读了远超这个数量的书籍。我有个代码目录,里面记录了我复习的几十个算法,其中大部分都不会在面试中遇到。你可以不用这样做。同时我在 YouTube 上也加班加点地观看了远超我需要的视频。 我应该早点停止看书和看视频,从而进行代码的编写。这样我可以用更多的时间去实践我所学的知识。记忆的关键在于重复训练。 一旦你开始学习新东西,你需要不断地回顾和练习。每一次的复习都能巩固你的知识。一次花费足够长的时间去学习一个东西并不会让你成为专家,成为专家需要你不断地回溯你的知识。你这样做了之后你就会发现你再也不会忘记任意一个细节。 为了帮助复习,我做了 1792 张卡片(电子卡片),这有点多了。空闲的时候(比如圣诞节购物时)我便在我的手机或者平板上复习这些知识。学习新知识和复习同时进行,就算我在新卡片上得到答案,我也不会把它标记为已知,除非我多次看到它并都能正确地回答出这个问题,我才将其标记为已知的。 我的不安全感(万一他们问我关于红黑树的问题)让我尽可能地学习远超需要的知识。 但我并不仅仅只是准备面试,我同时为在谷歌的职业生涯做准备,解决大规模的问题。这意味着精通算法能节省时间、空间和 I/O 等计算机资源。 我可能永远不需要知道最大流算法(Ford-Fulkerson),但当情况出现时,我知道我能解决它也并不是一件坏事,同时我也能知道问题出现在哪里。 ▎结语
|