如何在一流的科技企业找到实习?---当你还在学校(翻译)

前一段时间,在网上乱逛的时候,发现了这篇文章,How to land a top-notch tech internship — and a tech job — while you’re still in school。文章来自于freeCodaCamp,是一个IT内容(编程语言,工具,方法论等)的YouTube频道,很适合想快速上手一个工具又不想怎么动脑子的情况,推荐!

原文链接:

How to land a top-notch tech internship — and a tech job — while you’re still in school

作者上大学之前完全没有接触过编程(但他应该是CS专业),最终在在Uber找到了一份软件开发工程师的工作。我作为一个EE学生,最后坚决走上转码的道路,看完这篇文章感触很深。如果能在我决心转码的时候看到这篇文章,整个过程可能就没那么痛苦,少走很多弯路。

因此趁着闲暇时间翻译这篇文章并附上自己的感想,加粗部分是我个人的评论以及补充内容。

以下是正文。

七个学期前,我在没有任何编程背景的情况下开始了大学生活。我唯一拥有的是在技术领域工作的远大抱负。

当招聘季节第一次到来时,我申请了很多公司。我收到了一些回复,但仅此而已。没有后续。没有现场面试。什么都没有。

我一直在努力。我申请了 150 多家公司。进入了不少面试环节。

150家是真的狠,我有一些朋友收到四五封拒信之后就气馁,选择去读博了…

我失败的远比我成功的多。不过没关系。因为那些失败让我的胜利时刻更加令人难忘。 在此过程中,我遇到诸多良师益友。这些人现在在 Airbnb、Facebook、谷歌、SpaceX 和 Snap 等地方工作。

至于我,去年夏天我在优步实习。当我毕业时,我有望在我最喜欢的公司之一得到一份全职工作机会。

现在我在学校的最后一年,我想分享我多年来学到的一切。这并不意味着成为最终的手册。这只是一个谦虚的指南,源于我对帮助他人实现目标的热爱(以及我对乐高积木的热爱)。

原文中的所有配图都是乐高积木,我就补贴上来了,大家自己脑部。

到本文结束时,你会知道一切我希望自己在刚开始走这条路时应该知道的一切。

在开始前想说的话…

不要让为完美工作而奋斗的生活占据了你的生活。学校是自我发现和全面个人成长的时期。所以走出去,认识做不同事情的人。加入不同的学生组织,参加你的舒适区以外的活动。

我本科的时候非常得垮,每天就是在宿舍打游戏看动漫。直到我看了这部动漫,教会我慢慢走出舒适圈,尝试更多的事情。强势安利!

四叠半神话大系

通常,人很容易将自我价值与可以获得的工作机会联系起来。但请记住:生活中有许多比工作更重要的事情。

我对大学最美好的回忆不是花几周时间准备面试,甚至不是接到offer通知。而是第一次和我最亲密的朋友一起探索旧金山,和我的损友一起打排球的事情。相比于任何工作,我都更珍惜与我爱的人分享的这些独特经历。

套用我最喜欢的 Twitter 和 Medium 创始人Ev Williams 的话:“你(工作)的失败并不是生活中的失败。你人际关系的失败才是。”不要忽视重要的事情。 我认识的每个拥有坚实的人际关系网络的人最终都取得了成功,这也并非巧合。当你陷入低谷时——我们所有人都是如此——你需要你的朋友在你身边。如果没有让我维持生计的好朋友,我将永远无法度过我的第一年。

现在,让我们开始吧。你准备好了吗?我要开冲了!

基础知识

在我们准备面试细节之前,你需要建立坚实的基础。看起来很明显?绝对地。但这是本指南中最艰难的一步,所以请听好。

现在,本指南是为大学生设计的,所以如果你在上高中,赶紧滚!只是在开玩笑。事实上,我很欣赏你的主动性。当我在高中时,我对自己想做什么一无所知。

进入大学之前,你的首要任务应该是巩固你的数学技能。计算机科学在很大程度上依赖于概率论、逻辑学和数论等数学课程。没有数学基础,你将无法在硬核的课程以及技术面试中取得成功。

这篇博客的作者是英语母语者所以没提到英语。对于我们国人来说,英语也是很重要的一项基础。尽管随着中文的开发者社群越来越强大,很多流行的工具都会提供中文文档。这也可以说是一把双刃剑,热门资源有中文,冷门资源缺少中文支持,会让我们更少训练自己的英语水平,反而会限制未来职业发展。绝大部分有关最新特性的文档、博客都是用英文写的,英文这一关总是逃不掉的。同时由于中文互联网野蛮生长和缺少同行评议的环境,质量也只能说参差不齐。虽然我的英文也不好,但我很多情况也会选择直接去读英文。

如果你的基础环节掌握的不错,跳过下面介绍在线课程的部分,继续学习本指南的其余部分。

好的。回到大学生。

建立基础最好从导论性质编程课程开始。注意并掌握基础知识。一个流行但被误导的观念是“GPA 无关紧要”。尽管大多数公司确实不会仔细检查您的GPA,但你的基础知识中的任何差距都会在今后的职业生涯对你造成困扰。通过获得不错的GPA,你也能掌握牢固的基础知识。

但如果为了内卷去把90分卷到95分甚至更高,那是没有必要的。

你的课程将涵盖很多基础知识,但它们几乎不会触及现代技术的表面。围绕课堂上教授的核心概念探索有趣的话题。这就是你获得广泛知识并提出未来项目想法的方式。

如果你不是学计算机的,也没有关系

我有一些朋友改变了主意,并在他们大三的时候开始了 CS。他们仍能按时毕业得到了很好的工作机会,所以现在开始一点也不迟。这就是说,你需要做出牺牲并每学期参加额外的课程。

如果你无法在大学上 CS 课程,有很多很棒的在线资源可以学习。 两个最好的在线导论课程是 edX 上的哈佛 CS50x 和 Udacity 上的 CS101。

Harvard CS50

UDACITY Introduction to Programming

完成此部分导论课程后,数据结构和算法是下一个难题。我推荐 Coursera 上的普林斯顿算法第 1 部分和第 2 部分,或加州大学伯克利分校的 CS61B。

Princeton Algorithm Part I

Berkley CS61B

为确保您一切顺利,请参考 Google 的技术开发指南。

Google Developer Guide

在某些场景下,谷歌真的是大善人。上面这个网站我浏览了一下,对于转码初心者非常有帮助。

如果刚开始的时候感觉很难也不用担心

在我的第一个学期开始几周后,我几乎被课业压垮了。我花了几天时间学习其他学生需要几个小时才能掌握的概念。我每周都想放弃。“我怎么可能赶上那些神童?”

这也是我的感受,在我大一的C语言课上为自己打印出来金字塔而激动不已的时候。班上的同学已经写了一个带图形的坦克大战了。

但是,如果你问我或我的任何一个拿到满意的offer的朋友,我们都会告诉你同样的事情:学习编程与你的才华或开始编码的时间无关。只与毅力有关。

建立你的编程直觉需要很长时间——就像学习人类语言一样。很长一段时间你都看不到隧道尽头的曙光。但相信我。如果你一步一步,你最终会到达那里。

时常保持动力是很困难,但我有一个秘诀。

专注于掌握而不是结果

你的目标应该是提高技能,而不是取得某种结果。 Heidi Grant Halvorson博士做了一项研究,她让两组人解决各种问题。第一组被告知得分尽可能高。第二组被告知将问题视为学习机会。

结果令人惊讶。第一组渐渐感到沮丧,而第二组坚持并解决了更多问题。

通过专注于掌握知识,你会将遇到的困难和时间上紧迫视为有助于你成长的要素。反之,以结果为导向的心态,会把遇到的问题视为阻碍,并渐渐让你感到气馁。

更重要的是,如果你专注于掌握,你会看到持续的进步。每次当你阅读一个新段落或解决一个新问题时,你都在提高自己的技能。这种持续不断的满足令人难以置信。 因此,下次你在上课或练习面试时,请专注于变得更好,而不是通过考试或获得录取通知书。

你可以参考Edmond Lau的Quora帖子来获取这种策略(心态)的更多信息。

Edmond Lau on Quora

除了掌握基本的编码技能之外,最好了解一些科技行业正在发生的事情

这不仅仅是在招聘季应该做的事情。通过关注该行业,你将发现第一手的机会,进而推动你的职业发展的人。

在线阅读的网站包括:TechCrunch、Techmeme、Product Hunt 和 Hacker News。如果你更习惯使用 Twitter,请订阅科技新闻的频道。在 Medium 和 Quora 上,个性化你的feeds以获得对该行业的深刻见解。

如果你喜欢电子邮件的时事通讯,请查看 Axios Pro Rata、CB Insights 和 Mattermark Daily。

如果要深入了解特定公司,可以使用Crunchbase来查看对应公司的博客。你还可以从 Glassdoor 了解公司文化。

国内的话CSDN,思否,掘金也是你除搜bug用之外也能用于获取IT资讯。另外脉脉上虽然负能量很多,但也是一个能参考的来源。同时不要忽略领英除了是一个社交平台外,很多公司也会在上面发布自己的第一手资讯。

最后,不要忘记与人进行实际交谈。我从与朋友和同学的随意交谈中学到了很多关于科技世界的知识。 随着时间的推移,你会读到很多有趣的公司。从第一天开始编制你感兴趣的公司的电子表格。当你将来向这些公司申请时,请使用此电子表格来跟踪您的进度。

一旦你掌握了基础知识,就该应用你的技能了。做到这一点的最好方法之一是……

做项目

如果你和我一样,没有太多相关经历,这也没关系!第一步是用项目填充你空空如也简历。

当我第一次决定开始做一个项目时,我的决策瘫痪了好几天。“我应该做什么?如果不是原创呢?如果人们不喜欢它怎么办?”

后来,我意识到项目是什么并不重要。学习一些东西并完成你开始的东西要重要得多。但这并不意味着您可以随心所欲。如果你的项目太琐碎,你不会给任何招聘人员留下深刻印象。如果你的项目太复杂,你会在完成之前失去动力。

目标是做一个你认为可以在一到两个月内完成的项目。该项目应涉及数据结构、算法和设计决策。做一些你感兴趣的事情,这样你就会真正把它一路完成。

这是Reddit 上的项目创意汇编,你可以通过它来获取灵感。

Reddit Projects for Beginners

提出一个想法后,花一些时间来计划,但也别花太长时间。你应该尽快开始。现在,你hi哦徐会想知道“过早地开始做项目是不是有些不负责任?”

一般来说,是的。但是个人项目不同于公司项目。个人项目应该教会你一些新的东西,并在招聘过程中加强你的背景。与公司项目不同,你无需纠结于设计和代码质量。 如果你一开始觉得卡住了,写下一些代码——任何代码。建立个人项目就像写作,你只是开始。如果它没有意义,请不要担心。在IDE中查看写下的代码会让你心旷神怡(get your juices flowing)。

话虽这么说,但我怎么看着自己一开始写的项目血压都要上来了。

随手推荐几个适合初学者阅读或者做的开源项目,C/C++和Java:

  1. Halo: Java博客系统

https://github.com/halo-dev/halo

2. Hutool:Java工具包

https://github.com/looly/hutoolgithub.com

以上这两个是国人开发的项目,文档issue什么的都是中文的,很适合入门。

3. CJOSN: C的JSON处理工具,单一文件

https://github.com/DaveGamble/cJSON

4. MyTinySTL: 基于C++11的类STL工具集。也是国人开发者的项目,文档和注释都是中文的。造轮子是C++的浪漫,我个人很喜欢的入门项目

https://github.com/Alinshans/MyTinySTL

5. abseil or folly: 这两个分别是Google和Facebook的C++工具集,虽然整体代码在十万数量级,但工具集的每个模块分得比价开,如果只看一个部分的话,还是很容易看进去的。

https://github.com/abseil/abseil-cpp/tree/master/abslgithub.com

https://github.com/facebook/follygithub.com

使用版本控制跟踪你的项目。如果你不知道那是什么,请创建一个 Github 帐户并学习如何使用 Git。你需要 Github,因为它是你保存和向别人展示项目的主要方式。

如果可以的话,让你的项目上线(make public),以便招聘人员可以运行和调试他们。大多数招聘人员不会检查你的代码,因此现场演示是展示你的项目的最佳方式。

目标是在你开始申请工作前完成三到五个项目。

最常见的第一个项目是个人博客

你将学习 Web 开发的基础知识,并在互联网上拥有自己的空间来展示你的作品。

Codecademy有两个关于构建静态网站的优秀教程:

  • Make a Website 教你HTML、CSS 和Bootstrap的基础知识。
  • 部署网站教如何将你的网站放到互联网上。本教程的第 3 步不是必需的,用GitHub的免费域名”.github.io“即可。

感觉太容易了?将您的个人网站转换为动态博客。为此,您需要学习一个 Web 开发框架,例如 Rails 或 Django。查看 Ruby on Rails 教程或 Django 指南。

https://www.railstutorial.org/bookwww.railstutorial.org

https://tutorial.djangogirls.org/en/index.htmltutorial.djangogirls.org

如果您需要设计灵感,Muse 和 Awwwards 有个人网站的示例。

骇客松是一个激励你的好方式

世界各地的学校和组织都举办黑客马拉松,这是持续数天的写代码竞赛。在这短短的时间里,你会学到很多东西,想出独特的想法,并结识有趣的人。 许多骇客松都会报销差旅费,所以没有理由不去。

我所知道的一些北美顶级黑客马拉松包括PennApps、HackMIT、HackNY、MHacks、HackTech、HackIllinois、CalHacks、TreeHacks、Hack the North、YC Hacks 和 Greylock Techfair。

你也可以向开源项目贡献代码

从事开源工作是为有意义的项目增加价值的绝佳方式。此外,您可以从更有经验的工程师编写的代码中学到很多东西。

第一次进入开源领域可能会令人生畏。两个很好的切入点是Google Summer of Code 和 Sayan Chowdhury 的关于初学者开源的文章。

https://summerofcode.withgoogle.com/summerofcode.withgoogle.com

https://www.hackerearth.com/getstarted-opensource/www.hackerearth.com

Github也发布了他们自己的开源指南。找到一个很酷的项目并投入其中。你很快就会掌握它的窍门。

https://opensource.guide/

图标

研究是项目的替代方式

如果你的学校有学生研究计划,那太好了!赶紧申请。如果没有,请查看你的教授正在做的研究。如果他们的工作看起来很有趣,可以给他们发电子邮件并询问你是否可以参与其中。你会惊讶于他们对热切的本科生的接受程度。

国内的本科生基本都在三四年级去实验室做做研究,这点倒不用担心…

将来,你甚至可以要求你的实验室团队将你推荐给前沿公司。请记住,研究在简历中属于经验的部分而不是的项目的部分。

或许优势很难平衡课业和项目

我经常听到的一个抱怨是“我在上课时没有时间做项目。”我个人对不时自己这么说感到内疚。

我们时常很难为做项目留出时间,因为与学校不同,你无需为截止日期和验收负责。经过一天的学习后,很容易选择社交媒体或视频游戏而不是打开IDE写代码。但如果你一直拖延,这个学期就会在你不知不觉中结束。

为了对抗拖延,强迫自己写一点代码。即使只有15分钟,你也会养成不断进步的习惯。 这也是黑客马拉松和研究项目如此伟大的原因。他们强化了截至期限以及队友和主办方的期望,因此你不能拖后腿。

经过以上步骤,你有了一些经验,现在你需要把它以某种方式呈现出来。

写一份简历

写一份简历可能看起来很简单,但有很多细节需要注意。毕竟,这是招聘人员会读到的关于你的第一件事。给人留下良好的第一印象至关重要。

同时你需要快速给HR留下印象。招聘人员平均花 6 秒钟时间审查一份简历。你没听错:6秒!!!

几乎所有时间都花在你的姓名、公司、职位、开始/结束日期、学校、专业和项目名称上。简历上的所有内容都应量身定制,以帮助招聘人员尽快找到这些关键信息。

这里有一些重要的指导方针。

易于浏览

  • 简历长度保持在一页
  • 如果你不擅长设计,黑白色就可以了。太过花哨会让HR血压飙升
  • 使用标准格式(按时间顺序排列,没有奇怪的字体,10.5 到 12 pt 字体大小,0.5 到 1 英寸边距)。标准格式更容易被简历解析程序读取,也让招聘人员看得更舒服。

高亮重点

  • 给你名字用较大的字体。
  • 突出显示公司名称、职位、开始/结束日期、学校名称、专业和项目名称。
  • 重要的内容应该出现在简历中更前面的位置。对于学生来说,重要性的顺序通常是教育背景 > 经验 > 项目 > 技能。

精简

  • 目标和摘要是不必要的。
  • 描述应该说一些有形的东西。“出色的团队合作者”这种话就不用写了。HR更希望看到“将用户转化率提高了 20%”这种内容。
  • 没有技术背景的人会阅读你的简历,所以摆脱复杂的技术细节。

不要忽略细节

  • 写上你的的累积 GPA 和主要 GPA 中较高的那一个。如果它们都小于 3.0,那就别写了。
  • 在每个项目条目中附上Github链接。
  • 不要包含任何你在面试中回答不上来的内容。大多数人在列出他们的技能时都会犯这个错误。

完成你的简历后,给你的小伙伴们看看。要求他们诚实和严厉。与我的第十稿简历相比,我的第一稿特别糟糕。

如果你还没有领英,赶紧创个号

领英让招聘人员能够找到你并帮助你维护你的职业网络(professional network)。另外,当你之后需要直接联系招聘人员的时候,你会用到领英的。

手头有几个项目以及简历,你就可以开始准备面试了。

为面试做好战斗准备

面试问题可以分为两大类,行为问题(behavioral questions)和技术问题(technical questions)。你需要在投递简历前至少两个月开始练习。由于招聘季节在8月/9月开始,因此暑假是开始的最好时机。

行为问题

行为问题的目的是更多地了解你的背景,以及你是否真的做到了你在简历上所说的。不要掉以轻心的行为面试。糟糕的表现会降低你得到offer的机会。

要在行为问题中表现出色,你需要对“介绍一下你自己”有一个强有力的答案,并需要三个故事来处理所有其他问题。

(1)“介绍一下你自己”是最常会遇到的行为问题,你需要先解决它

在这个问题上不要复述简历。相反,讲一个故事。 用强有力的介绍吸引面试官的注意力。

然后,过渡到对你在这个故事中学到了什么、得到了什么经验。不要喋喋不休地谈论细节——保持简单并强调结果。最后,解释你为什么对这个职位感兴趣。

谈论你所做的每一件事很诱人,但你的面试官不会这么觉得。保持简洁。你的回答应该是一到两分钟。

(2)准备三个你可以讲述的故事来回答所有的行为问题

通常,你会被要求举例说明领导力、克服挑战或失败。你的三个故事中的每一个都应该至少展示这些主题中的一个。 一个故事需要一个初步的总结、一个问题、三到五个行动步骤和一个最终结果。

以下这是一个例子:

总结:带领一个没有动力的团队完成课程项目

问题:两个团队成员没有做他们的工作,想放弃浑水摸鱼

行动一:与他们一对一交谈,了解他们的情况

行动二:告诉他们虽然现在很艰难,但只要努力,他们就会成功

行动三:强调他们对团队的其他成员来说是无价的

行动四:使用谷歌日历来计划会议和跟踪进度

行动五:举办社交活动,拉近团队的距离

结果:完成项目并且都至少获得了A-

这个故事可以用在有关领导力或克服挑战的任何问题。现在去想想你自己的故事! 并非所有故事都必须与技术有关。例如,我总是谈论我是如何帮助我的排球队赢得比赛的故事。

另外《Cracking the Coding Interview》是一本很好的面试参考书,里面有关于行为问题的章节,更对细节可以参考这本书。

Cracking the Coding Interview

行为问题(behaviour question)里最出名应该是亚马逊了,面试前recruiter都会跟你强调要提前熟悉Leadership Principal。虽然大家可能对背口号已经反感得不行了,但我觉得换个角度来看,他这个principal总结得还不错(前14条,后2条有点多余了),你可以把它作为任何公司行为问题中的key point去回答。YouTube上也有众多关于准备LP的资源,可以作为很好地准备行为面试的资源去参考。

另外我其实是在日本读书的,日本企业招聘的一大思路就是反正进来都要重新培训,那还不如找一个和大家处得来以及符合公司价值观的人进来。所以他们面试去除掉了几乎所有技术问题,上来就是人生三问:研究什么,为什么来投我们,将来有什么计划。一直与我现在行为问题已经能到张口就来的程度了。

Leadership Principleswww.aboutamazon.com

图标

技术问题

技术问题才是面试的核心内容。以下四个是准备技术面试的核心资源:

  1. Cracking the Coding Interview (至少在面试前两个月开始读这本书)
  2. LeetCode
  3. 模拟面试(mock)
  4. Glassdoor**/牛客/脉脉/LeetCode讨论区**

(1)Cracking the Coding Interview

《Cracking the Coding Interview》是典型的技术招聘手册。首先,阅读技术问题有关部分部分。做笔记以帮助您记住主要思想。

至于练习题,集中在数组和字符串、链表、堆栈和队列、树和图、面向对象设计、递归和排序部分。

此外,请熟悉位操作、可伸缩性(Scalability)、数据库以及线程和锁部分。 如果你在任何主题上遇到问题,请补充该主题的相关知识。 在查看解法之前,尝试每个问题至少 30 分钟。理解解法之后,你仍然应该敲一遍代码并且进行单元测试。否则,你将无法完全理解其中的逻辑。

读完这本书需要三到四个星期的专注努力。

国内与之对应的就是《剑指offer》,里面的面试问题长盛不衰,我都遇到过好几次了

(2)LeetCode

LeetCode有大量按难度排序的问题。每个问题都有自己的测试、时间复杂度要求和解决方案。

在开始申请之前,目标是完成 30 到 50 个问题,并对中等级别的问题感到满意。如果你每天做3个,你可以在两周内完成 42 个。

我不知道这篇博客是什么时候写的,现在LeetCode已经水涨船高,不刷个三四百道题都不好意思投简历了。我之前看上岸成功人的经验分享,甚至有刷七八百道的。题当然是做得越多越好,面试里面遇到做过的题和完全没做过的题几乎是两个概念。但权衡时间来说,做到一个合适的程度就好了。

一开始很容易对刷题感到沮丧。比如我,一开始甚至无法解决一个简单的问题。随着时间的推移,我有所进步,但我仍然经常陷入中等和困难级别的问题。好消息是面试与 Leetcode 不同。在面试中,如果你被卡住了,你会得到提示。另外,推导出正确的逻辑比编写可运行的代码更重要。

尽管 Leetcode不是真实面试的最佳模拟,但它对于建立解决问题的直觉来说是惊人的。

另外一点,实际面试的时候大部分是白板面试,也就是说面试官很多情况下不会直接让你跑你的代码,更多的是你的思路正确即可。而LeetCode实际需要跑结果,并且有上百个test case覆盖各种边界情况。也就是说实际上LeetCode会比面试难一个台阶,不能在45分钟之内完成一道LeetCode Medium也不意味着你一定会在实际面试中失败。

(3)模拟面试

诀窍是尽可能模拟真实的面试。

如果你是面试者,请保持专业,提出问题并大声说出来。如果你是面试官,请安排面试时间、参与对话并写下反馈。

我建议在学校里预订一个私人房间,然后和朋友互相进行面试。确保房间有一块大白板可以画画。 轮流面试和接受投递同样岗位的朋友的面试。能够理解面试官的观点将提高你自己的面试技巧

(4)社群

在大多数情况下,直到面试前几天你才需要Glassdoor等社群。除非公司很大,否则 Glassdoor不会有很多具体的面试问题。

Glassdoor更适合了解公司的一般面试流程。导航到面试部分并按你申请的职位进行过滤。有时,同一份工作有不同的标签,因此请仔细查看所有标签。 阅

读候选人的经历并仔细思考他们发布的面试问题。你可能不会遇到相同的问题,但通过这些问题,你可以了解会发生什么。

很多公司在让你进入招聘流程之前,会让你签订保密协议(NDA),这意味着你在很多情况下并不能在网上找到OA或者面试原题。但也有一些勇士乐于分享,多刷一刷Glassdoor、一亩三分地、LeetCode讨论区还是很有收获的。

让你的申请变得杰出

终于到了发送申请,并开始看到你的准备工作得到回报的时候了!招聘季节从8月/9月开始,但你可以提前一两个月进行投递。对于淡季工作,请至少提前6个月申请。

申请前的第一步当然是知道有哪些公司。这里有一些科技公司的列表以供参考。

fordocs.google.com

图标

www.TechCrunchtechcrunch.com

不要对申请哪些公司挑剔。如果你认为该产品很有趣,或者你听说过有关该公司的好消息,请申请。担心拿到几个offer后再选择。

申请流程

我建议先申请和面试在你优先级列表中较低的公司。 这是一个很好的方式来训练你未来面试你想要更多的公司。但不要做太多——你不想筋疲力尽。

当我找工作的时候,我尽量将整个过程控制在 3 个月以内,并且不超过 10 次现场面试。超过这个数字,我会失去动力,我的表现也会受到影响。

当你安排面试时,把它们分散开。面试很消耗精神,所以你需要时间休息。公司不会介意你在开始他们的流程之前要求一两个星期。

做好申请的心理准备之后,可以使用以下几个渠道进行申请:

  1. 内推
  2. 直接给HR发邮件
  3. 招聘会
  4. 线上申请

此列表按成功率和时间投入排序。例如,内推的成功率最高,但需要的时间也最多。

(1)内推是得到面试机会的最佳方法

当员工推荐某人时,这就是最好不过的候选人了。通常内推只占全部申请的 10%,但却占最终offer的 20-50%。

请你的朋友或学长推荐你,你还可以要求员工进行电话交谈或喝咖啡,以了解有关公司的更多信息,并在最后要求推荐。不要害羞。如果你被录用,推荐你的员工将获得奖金——这对你们双方都是双赢的。

(2)直接发邮件给HR是稍次于内推的方法

对于没有正式招聘渠道的小公司,请直接联系HR。对于更小的公司,甚至可以直接给CEO 或 CTO 发送电子邮件即可。

获取电子邮件地址的最简单方法是直接在网上查找。 你需要一个 LinkedIn 帐户来查找电子邮件地址。在 LinkedIn 上查找您要申请的公司,并按招聘人员筛选其员工。

尽量使用学校邮箱来发邮件。 你的发送的邮件应该简洁。陈述你对某个职位的兴趣并包括你的背景摘要。记得附上你的简历。为了节省时间,制作一个模板。你只需要更改招聘人员的姓名、公司名称和你的兴趣陈述。

如果你在一周内没有收到回复,请跟进。如果你在另一个星期内没有收到回复,请再次跟进。

(3)招聘会能让你直接接触到工程师和HR

对于招聘会,请事先检查哪些公司参加。记下你最感兴趣的那些,因为你可能没有时间与所有这些人交谈。打印10 到20份你的简历以给给招聘人员。准备好回答有关你的经验和项目的问题。

我建议早点去——如果必须的话,逃课也是一种选择。你将避免大排场对的人群并在招聘人员因不停地聊天而筋疲力尽之前跟他们交谈。

请不要对向招聘人员提问感到压力。如果你直截了当地问他们是否有空缺,你不会冒犯任何人。 谈话结束后,确保收有他们的电子邮件或其他联系方式,以便稍后跟进。哦,是的,实际跟进!不要让那些带有免费T恤和束带袋的HR的名片沾满灰尘。

对于骇客松,瞄准一家你真正喜欢的公司,而不是10到20家。公司赞助商将在在会场摆摊。这是你的机会。

在骇客松之前,找到你想要定位的赞助公司。当你到达时,向其工程师和招聘人员介绍自己。在你的项目中使用他们的 API,并在整个黑客马拉松期间与他们互动。

在最后一天,去向他们展示你的项目。然后,询问工作/实习机会。在这一点上,他们已经看到了你的职业道德、创造力和对他们公司的兴趣。你几乎可以保证得到面试。

骇客松也可以作为间接的招聘会。我认识的一些人通过与黑客马拉松赞助公司的工程师和招聘人员交谈而获得面试机会。

有关此策略的更多建议,请参照以下文章。

https://medium.com/interned-up/4-steps-to-landing-any-silicon-valley-tech-internship-8fab19c16177medium.com

(4)线上申请是最简单的方式

线上申请最好海投。大多数申请只要求你提供简历,因此一次申请很多公司很容易。

Slide into TechEasy Application ListIntern Supply和你学校的职业网站是寻找空缺职位的绝佳资源。

大多数情况下,你不需要求职信。但是,如果公司强制要求提供求职信或要求简短答复,请小心。在这种情况下,公司真的很在意fitness,所以要更细致地填写申请。 由于无视强制性的求职信和简短的回答,我在简历申请阶段被刷了很多次。

对于在线申请,我也推荐TripleByte。你首先完成一个编码测验。然后,TripleByte 将你与顶级公司进行匹配,并通过他们的招聘流程快速跟踪你。请记住,此资源仅适用于寻找全职工作。

Triplebyte: Engineer Job Search, Refactored.

图标

征服面试!!!

对很多人来说,这是整个过程中最伤脑筋的部分,但不必担心。面试官站在你这边(即使看起来不像)。

在我们继续之前,你必须记住一件事。

展示你的热情

热情在你是否获得offer方面起着重要作用。如今的公司喜欢谈论他们对文化契合度的重视程度。他们的基本意思是他们想要一个对他们的使命和产品充满热情的人。

事实是,大多数候选人并不擅长展示他们的热情。确保你做到这一点的最好方法是提前准备一份你喜欢公司的事情清单。在回答行为问题或提出问题时,请列出清单上的项目。使用该公司的博客及其Crunchbase等资料查找你可以谈论的话题。

现在,让我们回顾一下技术面试的一些最佳实践

当你第一次听到问题时,把它写下来。然后,向你的面试官说明你认为这个问题在问什么。不要以为你第一次听到这个问题就理解了。

接下来,写下一些示例输入和输出并验证它们是否正确。这让你有时间思考解决方案并提供你可以稍后运行的测试。

如果你需要更多时间思考,请不要害怕花几钟时间进行头脑风暴。设计一个暴力解法应该不会太难。与你的面试官讨论它,同时思考你可以改进它的方法。和你的面试官交谈,直到你想出更好的解决方案。

向你的面试官解释,只有在他们满意后才开始编码。 在你解决问题的同时,不断交流你的思考过程。你怎么想比实际答案更重要。直言不讳,但不要无休止地喋喋不休。有时候也可以暂停思考,让面试官提出建议。

你应该把你的全部注意力集中在面试官身上,让他们参与进来。当他们参与进来的时候,如果你在正轨上,他们会给你积极的信号,如果你不在,他们会给你提示。更重要的是,他们会对你产生情感上的投入,并希望你成功。 在面试结束时你将有时间提问。请记住,面试是双向的。不要只问你认为面试官会喜欢听到的问题。提出你真正想知道答案的问题。我建议询问个人经历以获得更真实的答案。

记住这些技巧,你就可以准备好参加技术面试了。

通常面试过程是这样的:

Coding challenge > Recruiter chat > Phone interview > Onsite interview

流程因公司而异。有时,和HR的谈话就是第一轮面试。有时你不会遇到编码挑战。但大体结构是相似的。

OA是最直接的测试

OA通常通过Hackerrank完成。我建议提前做几个问题来熟悉格式。

OA没有技巧。通过尽可能多的测试样例。有了足够的 Leetcode 练习,OA对你来说就像过清晨的马路一样简单。

和招聘人员的聊天是非正式对话

这通常用于设置电话面试并回答你的任何问题。你可能会收到一两个行为问题。偶尔,你可能会遇到诸如“解释哈希图的工作原理”之类的琐碎技术问题。

候选人在这个阶段很少被拒绝。将此视为了解公司更多信息的机会。提出高层次的问题——招聘人员通常不了解技术细节。

确保询问其余面试过程的形式,以免你在之后的流程中措手不及。

电话面试阶段是1-2轮技术面试

有时你会进行视频面试而不是直接打电话。你通常会在Collabedit / livecode等共享编辑器中编写答案。 如果网络状况不好或者你无法理解面试官,请说出来。

Onsite Interview是3-6轮的技术面试(通常包含午餐,yes!)

一天的背靠背面试让人筋疲力尽——事先保证充足的睡眠!现场面试主要是技术性的,但有些公司会包含行为问题和系统设计相关问题。

午餐是为了让你了解更多关于公司的信息,所以放松一下。 在面试过程中,充分利用白板。在右侧和线条之间留出足够的空间,以便你有空间进行编辑。

面试结束后,不要纠结。再怎么复盘不会改变最终结果。把它当作你被拒绝并继续申请和练习。

最近疫情,onsite面试全编程电话面试了,我个人感觉通常onsite会比在线上面试表现好很多。毕竟可以用很多肢体动作,画图进行解释也更方便。

评估offer

恭喜!你拿到了offer!给自己一个大大的鼓励——这是你应得的。

但是你的工作还没有完成。首先,感谢你的招聘人员,重新表达你对公司的热情。然后,以书面形式询问你的offer。

是时候跟HR谈价了

offer不是慷慨的施舍——而是达成协议的提议。自然,交易涉及谈判。

我不会过多地阐述谈判策略。只需阅读Haseeb Qureshi的这篇文章即可。

Ten Rules for Negotiating a Job Offerwww.freecodecamp.org

图标

请记住,有些offer是没办法谈薪水的,但尝试永远不会有什么坏处。

避免无薪工作或实习。在 90% 的情况下,这是不值得的。我完全赞成优先考虑学习而不是薪酬,但任何一家重视你公司都会为你提供相应的薪水的。 如果您有多个offer,恭喜!但现在你必须做出决定。 选择接受哪个offer是一个值得思考的好问题。

最好的offer因人而异,但这里有一个普遍的建议,我希望对你有用。

列出你希望在未来 10 年内实现的 10 个职业和个人目标

它可以是任何事情,比如还清学生贷款、创业或是掌握一项新的爱好。选择最接近这些目标的工作。

这里还有一些要记住的提示:

  • 你未来的经理对你的职业发展至关重要。找一位靠谱的导师,这是最重要的。
  • 在不同的公司实习以获得更广泛的经验。你会学到更多,扩大专业网络。
  • 优化学习和成长而不是薪酬,除非薪酬真的很差。
  • 在一家知名公司工作。这将使未来的跳槽/转职变得更容易,但要知道,如果你一直不跳槽,那也没什么大不了的。
  • 编程语言的选择并不重要。重要的是学习良好的工程实践以及如何在团队中工作。
  • 选择一家拥有软件/硬件产品的工程优先公司。
  • 不要忘记激情。构建你相信的产品是一种奇妙的感觉。

结论

累死我了,读的时候还没感觉,翻译起来是真的巨长无比。

到结束了本指南的时候了。我希望读完这篇文章,你会比我开始决定进入IT行业时准备得更好。

一开始,获得offer似乎是不可能的,但关键是将其视为一系列里程碑(milestone),而不是一项艰巨的任务。如果你每天进步一点点,你就会不知不觉地到达那里!

当你得到那份梦寐以求的工作时,不要忘记回馈。分享您的经验并扩大推荐范围。传递经验,传递爱,传递热情,我们都会飞得更高。

互联网的精髓在于知识的共享,这也是我们如此热爱这一行业最主要的原因。我从十几岁开始不断地从互联网汲取知识。直到二十多岁,经历一些事,学到一些知识,同时这些知识和经验多少能够帮助到正在经历我上一个人生阶段的同学。这时候我开始写文章,希望多少帮助到这些同学。也希望你在未来也能分享自己的知识、经验给需要它们的人。