BG:Cornell University 专业:Computer Science GPA:3.15 今天想和大家分享一下我的北美求职经历,从大学毕业到最后拿到工作 offer 的全过程,希望可以给大家一些帮助。
我虽然是CS专业,但我不算是那种从小就编程的“天才”,刚进入大学时我对编程一点儿兴趣都没有,我就只是觉得CS专业在美国相对比较好找工作,所以就选了这个专业。所以在整个大学期间,我的编程能力一直停留在很基础的编程语言上(就会Java),而且一直都是应付考试、做项目的水平,跟真正的“开发工程师”还差得很远呢。
但反观我的同学来说,他们大部分同学都有很扎实的算法基础和丰富的项目经验,而我当时只知道一些基础的编程知识,感觉自己远远落后于他们。为了弥补差距,我决定从头开始,补充基础知识,并尽量积累项目经验。
虽然我只会基础的编程语言,但还好我跟教授关系比较好,所以我参加了不少学校的project,在这些项目中,虽然没有涉及很硬核的技术栈,但我有积累到实际的编程经验。除此之外,我还报名参加了LeetCode的刷题活动,挑战各种算法题,虽然最开始刷得非常慢,但慢慢地,我开始理解算法的精髓。

为了让自己更加接近“真实开发”,我开始参与一些开源项目,在这里我学到了很多真实的开发技巧,懂得了如何团队合作和如何使用Git等开发工具。此外,我还在暑期争取到了一个和专业相关的实习机会,尽管不是顶级的公司,但却让我在实践中了解了公司的开发流程和工作环境。
在北美求职的整个过程我还是比较顺利的,我很幸运地拿到了Amazon、Meta的面试,我经历了2种不同的面试环节。由于我没有强大的项目背景,刚开始的技术面试非常有挑战性,很多面试官直接给我出了很难的算法题。通过几轮的面试后,我逐渐发现了自己的不足之处,尤其是在算法题和系统设计方面,这些环节是大厂的标准面试流程,能否熟练应对直接决定了是否能进入下一轮。
为此我开始精心准备面试,首先肯定是要刷题的,我的重心都在LeetCode上,做题过程中一定要总结规律,形成自己的解题思路,就算拿着模板也一定要会改。对于系统设计来说,这部分内容相对难度较高,尤其是对于像我这样没有过多工作经验的人。幸好,我在一些网络课程中学习了系统设计的基础知识,并且反复跟同学和导师讨论案例,逐步提升了自己的设计能力。
我面Meta一共是三轮,其中有两轮是技术面,最后一轮是行为面试。每一轮面试的题目都不轻松,尤其是在算法部分,虽然很多题目都有难度,但好在我知道我算法比较薄弱,有专门加强算法,所以还算比较顺利的,有遇到变种题,所以在大概三个月的求职和面试过程中,我终于收到了Meta的offer。收到offer的那一刻,我的心情非常复杂,既兴奋又感慨。从最初的迷茫到最后拿到Offer,整个过程充满了挑战和努力,也让我更加清晰地认识到自己的优点和不足。