Involution Hell
JobsInterview prep

程序员学生时期求职与实习经验分享

程序员学生时期求职与实习经验分享

本帖主要分享我学生时期的求职经历,涵盖兼职、实习与(New Graduate Program),并介绍我认为有助于在毕业前获得Offer的课外活动。由于这些准备都是在学生身份下完成的,因此我决定将这些经历整合在这一个帖子中分享。

首先,写在前面(免责声明)

  1. 我毕业于新冠疫情初期,当时的就业市场与如今在人工智能冲击下的环境相比,竞争可能没有现在这么激烈。

  2. 我没有身份方面的担忧。对于缺少PR的同学,可能需要在本文的基础上做更充分的准备。加油!

  3. 运气固然重要,但这并非你所能控制。有时即使准备万全也可能与机会失之交臂,这并非你的过错,而是市场与时机使然。请务必保持自信。

  4. 我的求职方向是软件开发工程师(SDE),对当前热门的数据科学家(Scientist)路线了解不多。

  5. 本篇内容仅代表个人观点,与我曾经或现在任职的任何公司无关。

1. 如何找到第一份实习或兼职

在大学期间,我主要通过以下三种方式勤工俭学,难度由高到低排序如下:

  1. 担任学校计算机专业课程的助教 (Tutor) [强烈推荐]

    • 简介:大学教授通常很忙,因此他们会招聘上过这门课的优秀学生来担任Tutor,以协助Tutorial, workshop, 改Assignment和改卷。

    • 寻找途径:留意各大学的招聘网站,通常在开学前会发布职位。当然,要胜任助教,你的课程成绩至少需要达到优异(HD)水平。如果成绩出色,也可以主动发送邮件给教授,询问未来是否有担任助教的机会。

    • 推荐理由:在我看来,担任助教是大学期间性价比最高的兼职。

      • 简历含金量高:在HR筛选简历时,这份经历的认可度很高。它证明了你:1) 专业知识扎实;2) 具备很强的沟通与Mentorin能力。这两者在职场中都至关重要。

      • 时薪优厚:我当时带领 Workshop 的时薪是 50 澳元/小时,小课则是 120 澳元/小时。

      • 软技能锻炼:你会发现,在程序员的职业生涯中,沟通与教学能力同技术能力一样重要。这个行业非常鼓励Mentor/Mente文化。

      • 拓展人脉:与教授建立良好关系,有机会解锁第二条职业路径。

      • 时长灵活:一般不受学生签证工作时长的严格限制。

  2. 担任教授的研究助理 (RA, Research Assistant)

    • 简介:这个机会在很大程度上取决于教授和运气。主要工作是协助教授完成项目,编写各类代码,范围可以从前端开发、实验模拟、数据可视化,到后端实现、论文辅助等,工作内容非常多样。

    • 寻找途径:可以说是“八仙过海,各显神通”。具体包括但不限于:

      • 关注学校的计算机社群,教授有时会发布招聘帖子。

      • 留意暑期研究项目(Summer Research School)的通知,项目结束后你可能会被留下来继续参与工作。

      • 如果你在哪门课上表现优异,可以主动联系教授询问相关机会(反正课程已经结束,不用担心成绩问题,不妨大胆一试)。

    • 优点

      • 积累实际项目经验,并能向教授学习更前沿的知识。未来做背景调查(Reference Check)时也可以请教授作为推荐人。

      • HR 认可度高,毕竟这是一份有报酬的正式工作。

  3. 在咨询公司担任合同工 (Contractor)

    • 简介:这类机会相对较少,因为公司通常直接从市场上招聘有经验的专业人士。

    • 我的经历:我比较幸运,在参加某咨询公司举办的Hackatho时,我们团队奋力完成了产品的原型开发,后来我收到了该公司的合同工邀请,获得了第一份正式工作。

2. 大厂实习

通常在你毕业前一年的长假(11月至次年2月),各大公司会开放实习生项目。这段实习经历不仅可能为你赢得第一份全职录用通知,至少也能保证你的简历在后续求职中更容易通过筛选。

注意:此路径通常要求申请者拥有P)。持学生签证的同学可以考虑利用这段时间申请国内大厂的实习。

时间线 (Timeline):

  1. 毕业前一年的 2-3 月:各大公司开放暑期(11月至次年2月)实习项目的申请。

  2. 6-7 月:公司发放Offer并进行Team Matc。

  3. 11 月:入职实习。

  4. 次年 2 月:实习结束。如果表现出色,次年 3 月你或许就能收到第一份全职 Offer。

公司列表:

  1. 高频交易公司 (HFT):如 Optiver, IMC, Akuna 等。

  2. IT 科技公司:如 Google, Atlassian, Amazon, Canva, Rokt 等。

  3. 各大咨询公司与银行

如何准备:

  1. 刷 LeetCode / HackerRank:两者差别不大,重点是持续练习。

  2. 积累项目/助教/兼职经历:丰富你的简历内容。

  3. 保持优异成绩:在其他条件相近的情况下,高 GPA 依然是重要的区分标准。

如果你成功获得实习机会,恭喜你!请利用这段时间像海绵一样吸收公司的:技术栈、企业文化、团队协作方式、招聘流程、面试标准、知名系统的架构和设计文档。多与同事交流,并努力完成工作。这些都将是你离开公司后可以带走的宝贵财富。

此外,Google Australia 还有一个针对大二学生的特殊实习项目,名为 STEP Program,也请留意。该项目面试基本只考察 LeetCode 的解题能力。

3. 毕业生求职

以我为例,在我研究生毕业时(之所以读研,是因为我本科毕业时没找到工作....),我的背景和经历包括:

  1. 两段Hackathon经历

  2. 两年计算机专业课助教经历

  3. 一段教授研究助理(RA)经历

  4. 一段咨询公司合同工(Contractor)经历

  5. Atlassian 实习经历及返聘录用(Return Offer)

  6. 毕业论文 关于对Kubernetes的研究

然而,这份简历投递 Canva 时甚至未能通过筛选,这给我的内心带来了巨大的震撼和焦虑。

于是,我联系了一位学长,请他帮忙内推了 AWS 的毕业生项目。在面试准备上,由于我之前的经历多为连续的(back-to-back)技术面试,对非IT大厂的流程了解不多。我当时主要做了以下准备:

  1. 寻求内推:一定、一定要找人内推!这有几率帮你跳过在线笔试(OA)。

  2. 刷 LeetCode:Labuladong 的算法小抄对归纳题型很有帮助。

  3. 准备行为面试问题 (Behavioral Questions):即使没有正式职场经历,也可以利用在校期间的团队项目经验,结合当时的场景和反思,来构建你的答案。当时为准备 AWS 的行为面试,我写了 10 个小故事,并用不同问题反复模拟回答。建议使用 STAR 法则来组织你的回答。

  4. 复盘项目:重新审视自己做过的项目架构,思考有哪些可以优化和改进的地方。

  5. 模拟面试:找朋友或同行进行模拟面试。我当时还使用了 interviewing.io 这个平台,付费请匿名的资深面试官对我进行模拟面试(价格较高,约一百多美元一次)。

出于“闲着也是闲着”的心态,我还尝试了阿里巴巴的常规招聘和“阿里星”计划... 对于国内的秋季招聘,熟记“八股文”(常考的技术知识点)也是一个关键。

总结

毕业求职是一个容易引发焦虑且需要长期规划的过程。它并非始于毕业前的最后一个学期,而是从你入学那一刻起就应该着手准备。如果要我重新规划大学生涯的时间线:

  1. 大一:保持高 GPA,开始刷 LeetCode。(即使你上过学校的算法课,也并不意味着你就会刷 LeetCode。它是一种应试技巧,越早开始越好。)同时,寻找参加学校程序竞赛(Competitive Programming)的机会。

  2. 大二:关注 Google STEP Program, Optiver 实习项目, 以及暑期研究机会(Summer School Research Opportunity)。

  3. 大三(或三年制本科的大二):重点关注各大科技公司的暑期实习项目。

  4. 大四/毕业年:正式开始求职,海投简历。

在整个大学期间,还需要持续进行以下活动:

  1. 积极参与各类竞赛,比如Hackathon和competitive programming。

  2. 为开源项目做贡献。involutionhell.github.io 就是一个不错的机会.

  3. 寻找担任Tutor的机会。

  4. 争取担任教授的RA。

  5. 如果能参加并打好程序竞赛,那将是极大的加分项。

  6. 扩展团队作业(Assignment)的范围:不要仅满足作业的最低要求,而应将其视为学习新技术的机会。例如,后端可以尝试使用云服务或自己搭建 K8s 集群;前端可以尝试 React、Next.js 等现代框架;或者在应用中集成大语言模型(LLM)。

  7. 不断探索如何与 AI 协同编程。AI 正深刻地改变着这个行业。

所有这些努力,都会从不同角度体现你的以下特质,从而增加你通过简历筛选的几率:

  1. 对技术的热情以及自主学习能力。

  2. 获得外界认可的技术实力。

  3. 优秀的交流、沟通与合作能力。

其他

大家可以投票选出后续感兴趣的话题:

  1. 悉尼 IT 大厂面试风格/准备策略

  2. 程序员职业发展路线(前端/后端, Mobile, DevOps/SRE, 大模型, 大小公司对比)

  3. 职场晋升与个人成长


贡献者