Page cover
图片 1

美国2021年夏季软件开发实习求职经验:从背景到斩获Offer的全攻略

Loading component...

寻找一份理想的夏季软件开发工程师(SDE)实习是许多计算机科学(CS)学生职业生涯中的重要一步。本文将分享一位拥有扎实学术背景和丰富实习经验的同学,在美国2021年夏季实习求职季中的宝贵经历与心得,希望能为正在或即将踏上求职之路的同学们提供实用参考。

个人背景与求职数据

作者的学术背景扎实,本科毕业于中国大陆一所Top 30的计算机科学(CS)院校,随后在美国一所Top 30的大学攻读计算机科学硕士学位。在开始寻找美国实习之前,作者已有两段实习经历,这在后续的面试中被证明非常有帮助,面试官对实习经历的提问远多于个人项目。

在整个求职过程中,作者投入了大量精力:

投递数量:共投递了169家公司,涵盖200多个实习项目。
算法刷题:在求职前完成了240道LeetCode题目,求职结束后刷题量达到300道。
结果统计
Content image

简历准备

一份高质量的简历是敲开面试大门的关键。作者在简历准备方面有以下几点体会:

实习经历

大三升大四的暑假和大四期间,作者各完成了一段实习。这些实习经历对于在美国找实习的帮助非常大,面试中被问及实习的比例远高于个人项目。因此,对于计划在2021年秋季入学的同学,建议在毕业前积极寻找实习机会。

项目经验

除了两段实习经历,作者发现自己在学校的项目并不突出。为此,在大四毕业设计完成后,作者参考了网络上的经验,在Udemy平台自学了两个实用项目:一个是Spring项目,另一个是React和Node项目。这些自学项目有效地弥补了学校项目的不足。

简历修改

作者参考了Overleaf网站上的简历模板,并多次请同学和学长帮忙审阅,前后修改了5到6遍。这种反复打磨的过程对于简历质量的提升至关重要。如果选择将简历发布到公开平台寻求修改意见,务必注意隐藏个人敏感信息。

算法刷题策略

算法刷题是软件开发实习求职的重中之重。作者分享了自己高效的LeetCode刷题策略:

Loading component...

作者在求职前刷了240道LeetCode题目,其中150道刷了两遍,20道刷了三遍,10道刷了四遍。求职结束后,总刷题量达到300道,其中120道刷了两遍,60道刷了三遍,20道四遍,10道五遍。

实习投递策略

公司筛选

在筛选公司时,作者利用了GitHub上由同学整理的职位信息,这大大节省了搜索时间。对于大公司,建议直接投递;对于小公司,则需要仔细查看职位描述(Job description),搜索如“sponsor”和“H1B”等关键词,以确认公司是否支持国际学生签证。此外,如果公司明确表示不提供赞助,或要求非常强的机器学习(ML)背景(而作者主要是纯Java背景,无ML经验),则会选择跳过。在收到大量在线编程测试(OA)和面试邀请后,作者还会通过Google搜索“公司名 + 求职社区”来了解该公司在求职社区的评价和面经,如果完全找不到相关结果,则会选择放弃,因为有些公司的申请表填写起来非常耗时。

海投与内推

作者的策略是大公司(约20家)主要寻求内推,小公司则进行海投。从最终获得的在线编程测试(OA)和面试数量来看,内推似乎没有表现出明显的优势,运气和简历匹配度可能更为关键。寻找内推的方式主要是通过LinkedIn联系校友;如果三天内找不到校友内推,则会果断转为海投。

求职信(Cover Letter)

对于软件开发工程师(SDE)实习岗位,求职信(Cover Letter)几乎都不是必需的。尽管学校的职业发展中心(Career Center)建议认真准备并针对不同公司进行定制,但从求职社区的经验分享来看,很多人认为其重要性不高。作者个人会稍微修改求职信的第一段,并在公司提供提交选项时附上。

投递时间

越早投递越好。尽早开始在线编程测试(OA)和面试,能更早发现自身的不足,并有针对性地加强。大公司的招聘流程通常较慢,因此不必担心投递后立即需要准备面试。此外,公司的招聘名额(head count, HC)有限,投递越晚,名额越少。例如,2021年的Citadel和Goldman Sachs很早就招满了。

OA与面试经历汇总

以下是作者在2021年实习求职季中获得的在线编程测试(OA)和虚拟现场面试(VO)经历,公司名称按被拒时间顺序排列,希望能为后续求职的同学提供数据参考。简历被拒和默拒的公司数量过多,在此不一一列出。

OA被拒(21家)

默拒:Black Rock、Morgan Stanley(更像行为问题Behavior Question, BQ)、Blackstone(更像智力小游戏)、ebay、TuSimple。
邮件拒:Robinhood、DRW、Goldman Sachs、Citadel、CTC、Paycom、Twilio、Okta、Bytedance、Roblox、Credit Suisse(也像智力小游戏)。
未做:McKinsey(考前端和SQL,当时需准备其他面试而放弃)、Hudson River Trading(三道题,可选Java,其余C++,纯Java选手放弃)、Blizzard(纯C++,纯Java选手再次放弃)、Braze(当时已拿到Offer,故未做)。

VO被拒(6家)

Intuit(GHC):通过GHC上传简历获得OA。流程:OA -> Karat面试 -> 人力资源(HR)面试 -> 拒信。从完成OA到收到拒信历时20天。HR面试时,作者遇到一位印度裔工程师,主要询问简历和行为问题(BQ)。这是唯一一家通过电话发送拒信的公司,HR反馈是“与公司价值观不太符合”。
MathWorks(内推):流程:OA -> VO -> 拒信。VO后4天收到拒信,从完成OA到收到拒信历时18天。VO面试官是一位印度裔工程师,题目是中等难度,作者未能写出最优解。这是唯一一家需要自行到申请网站查询拒信的公司,没有邮件通知。
Databricks(内推):流程:OA -> HR电话沟通 -> Karat面试 -> 重做Karat面试 -> VO -> 拒信。VO后第二天收到拒信,从完成OA到收到拒信历时35天。该公司允许在对Karat面试表现不满意时选择重做。VO面试官是一位白人工程师,非常有耐心,题目有一定难度,作者未能完成所有后续问题(follow up)。
SoFi(海投):流程:OA -> VO(主动放弃Withdraw)。完成OA一周后收到VO邀请,但当时已收到满意的Offer,故未继续面试。
Akuna Capital(海投):流程:OA -> VO。VO后4天收到拒信,从完成OA到收到拒信历时42天。VO前两天已收到满意Offer,来不及取消面试。VO面试官是一位态度很好的印度裔工程师,无需开启视频,没有编程题,全是基础知识,与求职社区分享的面经内容一致。
Confluent(内推):流程:VO。无OA,内推三个月后收到VO。VO完成一个月后仍无消息,应为默拒。该公司要求签署保密协议(Non-Disclosure Agreement, NDA),故不便分享过多细节。

成功案例:录取通知(3家)

PlayStation(海投):流程:VO1 -> VO2 -> Offer。无OA,两轮VO间隔12天,从VO1到Offer历时40天,Offer只有3天考虑时间,不允许延长截止日期。该公司是按组招聘,两轮VO就是与同一位经理(Manager)手下的多位工程师交流。该公司也要求签署保密协议(NDA),不便分享过多细节。
Samsara(海投):流程:OA -> VO1 -> VO2 -> HR电话沟通 -> Offer。完成OA后42天进行VO,两轮VO间隔9天,从OA到Offer历时55天,Offer有两周考虑时间,可延长一周截止日期。VO1和VO2的题目似乎是固定的一套,建议参考求职社区的面经。
Snowflake(海投):流程:第一次海投 -> 第二次海投 -> OA -> HR电话沟通 -> VO1 -> VO2 -> 招聘经理(Hiring Manager, HM)面试 -> HR电话沟通 -> Offer。完成OA后7天安排HR电话沟通,VO1和VO2是连续两天进行,从OA到Offer历时27天。该公司流程较为特别,作者去年9月海投后一直无消息,今年1月收到邮件询问是否仍有兴趣,重投后获得了两个职位的OA,最终一个职位进入后续流程。HR电话沟通会询问三个感兴趣的团队,HR也会根据简历推荐合适的团队。两轮VO都是一道中等到困难难度的题目,并非面经原题,后续问题(follow up)较多。HM面试环节持续半小时,主要是互相了解,HM询问了简历并介绍了团队情况,听说进入此轮基本就是好消息。HR电话沟通会给出口头Offer,口头同意后才会收到正式Offer函(Official Offer Letter)。

面试技巧

作者坦言自己的面试通过率并非很高,因此这部分内容更多是经验分享,希望能抛砖引玉,欢迎有经验的同学和前辈补充指正。

面试准备

沟通表达:学会边做题边用英文讲解思路,并分析时间复杂度。
自我介绍:准备30-60秒的自我介绍,并练习用英文介绍自己的简历。
提问环节:准备3到5个面试结束后可以向面试官提出的问题。
行为问题(BQ):回答逻辑可参考STAR模式(Situation, Task, Action, Result),并结合亚马逊(Amazon)的领导力准则(Leadership Principles)进行准备。

面试过程

积极交流:不要一上来就埋头做题,要主动与面试官交流。
应对难题:遇到没见过或有难度的题目,不要紧张,尽力而为。
已知题目:遇到之前刷过的题目,不要表现得过于兴奋,也不要直接给出最优解。可以与面试官分析各种解法的优劣,一步步推导出最优解。
保持心态:无论面试官态度亲切与否,都不要被影响,始终保持自信和自己的做题节奏。

面试结束后

感谢信(Thank You Letter):学校的职业发展中心(Career Center)建议在面试结束后24小时内发送感谢信给面试官。然而,求职社区也有前辈认为没有必要发送感谢信。通常情况下,你只有人力资源(HR)的联系方式,如果想获得面试官的联系方式,需要在面试结束的提问环节询问。作者曾遇到直接提供邮箱的面试官,也遇到过表示公司政策不允许提供邮箱的面试官,感觉操作起来并非易事,有时甚至有些尴尬,所以后来就没有再问了。
跟进信(Follow Up Letter):学校建议在虚拟现场面试(VO)结束后两周内,如果仍无消息,可以发送跟进信询问人力资源(HR)。作者个人没有发过,因此不清楚其帮助效果。

此次实习求职季,作者虽然没有拿到典型大型招聘公司的在线编程测试(OA),但仍感到非常幸运。希望这些经验能对正在或即将求职的同学们有所帮助,也祝愿尚未获得Offer的同学们能顺利上岸。

Loading component...