一对一LeetCode家教后,写程序的执行效率提升,也顺利面试进入心仪的大型美商公司

在研究所毕业后,我已经工作了一年多。但由于工作、待遇和产业等因素,我希望能够进入其他外商公司。然而,外商公司对于程序技术的要求较高,因此我一直在努力练习LeetCode上的题目,有时也会参加LeetCode相关比赛,以增强我的算法和数据结构能力。虽然我已经对这些基础知识有了初步的掌握,但对于一些难度较高的题目,例如Hard类型或DP类型的题目,我仍然感到有些困难,即使参考别人的答案也一知半解。因此,我想寻找在线刷题课程来提升自己。当时我发现了Candice先生的课程,老师是一位知名Google公司的工程师,并拥有面试官的经验。这个课程是以一对一家教的形式进行,非常适合我的需求。唯一的问题是课程费用偏高。

最初的试听课:

在最初的试听课上,老师出了一个关于树状结构的题目,要求找出所有节点上数字之和等于sum的可能情况。当我完成这个题目后,老师进一步探讨了逻辑是否有问题、写法优化和时间复杂度等方面。对于后两个问题,我之前在解题时比较容易忽略,但在老师的指导下,我逐渐意识到这是非常重要的问题。以前只要写出答案就满足了,但现在我的目标是写出高效的程序,这也是我从老师那里学到的最多的部分。另外,我也开始注意到程序风格的问题。这让我觉得很特别,因为每个人写的程序都有所不同,同样的解法可能有不同的写法。例如,对于DFS和BFS,有些人更喜欢使用其中一种方法;而对于二分法,有的人会将索引值放在内部,有的人则会将其放在外部。这些差异让我在上课后更加体会到写程序的乐趣。还记得在上DFS章节课程时,老师用了一个很特别的方法来示范DFS题目,他用了while循环来实现递归,这让我惊讶,因为我以前从未见过这种写法,这也是写程序最有趣的地方之一。最后,每当一个章节结束时,老师都会准备相应主题的作业,让我们运用所学的技巧来完成,从而加深对该章节内容的熟悉度。如果遇到问题可以提出来,老师会在下次上课时一并解答。

面试中各种类型的题目:

我自己每个月上一堂课,总共完成了七次课程。因为有新的工作机会,所以我也陆续参加了面试。在面试中,我遇到了各种类型的题目,例如双指针、字符串、二分、排序和DFS等。我发现许多面试官注重效率和逻辑问题,即使程序完成后也不一定是正确的。有时候还需要自己跑Test case,逐行分析变量的行为以确保程序没问题。这与上课时老师探讨优化的部分有极大的相符。经过这些实际面试经验的累积,最后也有成功进入了我心仪的大型EDA美商公司。对于想参加课程的同学,我建议有一定的程序基础和算法知识会比较适合。这样在程序对谈时能更加顺畅,降低认知上的隔阂。祝大家在未来的职业生涯中继续取得成功,不断进步!