在研究所毕业后,我已经工作了一年多。但由于工作、待遇和产业等因素,
我希望能够进入其他外商公司。然而,外商公司对于程式技术的要求较高,
因此我一直在努力练习LeetCode上的题目,有时也会参加LeetCode相关比赛
,以增强我的算法和资料结构能力。虽然我已经对这些基础知识有了初步
的掌握,但对于一些难度较高的题目,例如Hard类型或DP类型的题目,我仍
然感到有些困难,即使参考别人的答案也一知半解。因此,我想寻找线上刷
题课程来提升自己。当时我发现了Candice先生的课程,老师是一位知名
Google公司的工程师,并拥有面试官的经验。这个课程是以一对一家教的形
式进行,非常适合我的需求。唯一的问题是课程费用偏高。
最初的试听课:
在最初的试听课上,老师出了一个关于树状结构的题目,要求找出所有节点
上数字之和等于sum的可能情况。当我完成这个题目后,老师进一步探讨了逻
辑是否有问题、写法优化和时间复杂度等方面。对于后两个问题,我之前在
解题时比较容易忽略,但在老师的指导下,我逐渐意识到这是非常重要的问
题。以前只要写出答案就满足了,但现在我的目标是写出高效的程式,这也
是我从老师那里学到的最多的部分。另外,我也开始注意到程式风格的问题
。这让我觉得很特别,因为每个人写的程式都有所不同,同样的解法可能有
不同的写法。例如,对于DFS和BFS,有些人更喜欢使用其中一种方法;而对
于二分法,有的人会将索引值放在内部,有的人则会将其放在外部。这些差
异让我在上课后更加体会到写程式的乐趣。还记得在上DFS章节课程时,老师
用了一个很特别的方法来示范DFS题目,他用了while循环来实现递回,这让
我惊讶,因为我以前从未见过这种写法,这也是写程式最有趣的地方之一。
最后,每当一个章节结束时,老师都会准备相应主题的作业,让我们运用所
学的技巧来完成,从而加深对该章节内容的熟悉度。如果遇到问题可以提出
来,老师会在下次上课时一并解答。
面试中各种类型的题目:
我自己每个月上一堂课,总共完成了七次课程。因为有新的工作机会,所以
我也陆续参加了面试。在面试中,我遇到了各种类型的题目,例如双指针、
字串、二分、排序和DFS等。我发现许多面试官注重效率和逻辑问题,即使程
式完成后也不一定是正确的。有时候还需要自己跑Test case,逐行分析变量
的行为以确保程式没问题。这与上课时老师探讨优化的部分有极大的相符。
经过这些实际面试经验的累积,最后也有成功进入了我心仪的大型EDA美商公
司。对于想参加课程的同学,我建议有一定的程式基础和算法知识会比较
适合。这样在程式对谈时能更加顺畅,降低认知上的隔阂。祝大家在未来的
职业生涯中继续取得成功,不断进步!