那是2023年9月,一个充满变化气息的时期。我正好处于失业状态,而恰好,谷歌在内罗毕启动了招聘潮。我听说了谷歌的Foobar挑战,这是一项编程测试,之前只听说过一些传闻。十年编程经验在手,我觉得是时候试一试了。
第一个挑战就像热身一样——二分查找的问题,感觉就像轻松的慢跑。第二和第三个问题也是如此,易于管理且引人入胜。接着,第四个挑战出现了,就像遇到了一个陡坡。这就是我第一次接触到“图”这个概念,一个在我职业生涯中从未完全理解的概念。
感觉有点手忙脚乱,于是我开始在YouTube上找找看,希望能找到些指导。看着那些解释算法和概念的视频,我不禁感到一丝冒名顶替感。居然这么久以来都没有遇到过这些问题。
直入主题:一位谷歌的招聘人员确实联系过我。这导致了一次电话筛选和三轮面试环节。可惜的是,我没有通过这一关。但这次经历点燃了我对数据结构和算法的热情。
决心提升自己,我找到了力扣的那套75题。带着热情,我做了大量笔记并学到了很多东西。在这一年中拿到了我的第一份合同,这让我有了更多的其他事情要忙,练习时间自然少了。为了继续进步,于是开始每天做力扣的挑战题。最终,我保持了连续365天以上的每日挑战记录。
我在一个(Google Sheet)[https://docs.google.com/spreadsheets/d/14GXh2RLulTo2vLeLzOuOqqCm5DQmCI-OK8MJvi9yJz8/edit?usp=sharing]中跟踪了每个问题的进展。我的方法很简单,如果在设定时间内无法解决一个问题,我就将其标记为失败,
- 简单:25分钟内做完
- 普通:45分钟内做完
- 困难:在一个小时内做完
每隔一周,我会重新看看一个失败的问题,再试一次。我在这一过程中学到的一些东西:
有些话题比其他话题更常被提及列表( 数组)
跟着(PrimeAgen)[https://www.youtube.com/@ThePrimeTimeagen]吗?那么你知道数组是DSA的基础。经过一年的时间,我可以肯定这一点。高效地操作数组是非常重要的。
字符串(字符串)
字符串就像是数组,但是带有一些特别之处。在大多数语言中,字符串是不可更改的,意味着任何改变都需要新建一个字符串。这真是吃了一次苦头才明白的道理。
散列表
在处理数据时,哈希表因其 O(1) 的插入和删除速度而成为首选。最初我认为哈希表很复杂,但是后来发现它们其实跟对象差不多,本质上也很简单。
排序:
至少掌握两种排序算法。冒泡排序经典且编码快速。归并排序很强大,但需要多加练习。还有桶排序——快得令人难以置信但空间消耗大。
贪婪算法
贪心问题真的很有趣。一旦满足条件,就可以提前退出。这些问题偶尔还是会让我犯糊涂,但解决它们还是很值得的。
结论:DSA可能会让人上瘾。一旦开始发现模式,解决问题几乎成了机械化的任务。我希望能再次加入Google。在此之前,我会继续在LeetCode上不断刷题,不断提高这项技能。
共同学习,写下你的评论
评论加载中...
作者其他优质文章