要想在面试中取得好成绩,你必须在面试开始前就做好准备——事实上,是在面试前的几年。下面的时间轴概述了你应该在什么时候考虑什么问题。。
如果你在这个过程中起步较晚,不要担心。尽可能多地“追赶”,然后集中精力做好准备。祝你好运!
没有出色的简历,就没有面试机会。没有丰富的经验,就没有出色的简历。因此,进行面试的第一步是获得丰富的经验。你越早想到这一点就越好。
对于现在的学生来说,这可能意味着:
-
参加大型项目课程:寻找有大型编码项目的课程。在你有正式工作经验之前,这是获得一些实践经验的好方法。项目与现实世界越相关越好。
-
获得实习机会:尽一切努力在学校较早地获得实习机会。它将为毕业前更好的实习铺平道路。许多顶级高科技公司都有专门为新生和大二学生设计的实习计划。你也可以看看创业公司,它们可能更灵活。
-
开始做一些事情:自己建立一个项目,参加黑客马拉松(hackathons),或者为一个开源项目做贡献。它是什么并不重要。重要的是你正在编码。这不仅会提高你的技术技能和实践经验,而且你的主动性也会给公司留下深刻的印象。
另一方面,专业人士可能已经拥有了转投理想公司的正确经验,例如,一个 Google 开发人员可能已经有足够的经验来跳槽到 Facebook。但是,如果你要从一家不知名的公司跳槽到这些“巨头”之一, 或从测试/IT 转变为开发人员角色,以下建议将很有用:
-
将工作职责更多地转移到编码上:在不向经理透露你正在考虑离职的情况下,你可以谈谈你对承担更大编码挑战的渴望。尽可能多地确保这些项目是“充实的”,使用相关的技术,并在简历上留下一两个要点。理想情况下,正是这些编码项目构成了你简历的主体。
-
利用你的夜晚和周末:如果你有一些空闲时间,请用这些时间自己创建一个移动 app,一个 web app,或一个桌面软件。做这样的项目也是获得新技术经验的好方法,能够让你紧跟当今主流的公司的发展方向。这个项目的工作一定要在你的简历中列出,对于面试官来说,很少有什么事情能像一个候选人“只是为了好玩”而创作项目那样令人印象深刻。
所有这些都可以归结为公司想要看到的两件大事:你很聪明,你可以编程。如果你能证明这一点,你就能得到面试机会。
此外,你应该提前考虑自己的职业发展方向。如果你想在未来进入管理领域,即使你目前正在寻找一个开发职位,也应该立即找到培养领导经验的方法。
简历筛选者和面试官寻找的东西是一样的。他们想知道你很聪明,你会编程。
这意味着你应该准备好简历来突出这两点。你对网球、旅行或魔术卡的热爱并不能说明什么。在你为了给业余爱好留出空间而削减更多技术线之前,一定要三思。
在美国,如果你的工作经验少于 10 年,强烈建议你将简历控制在一页纸以内。而更有经验的候选人则通常有理由将长度控制在 1.5~2 页。
写很长的简历时要三思而后行。因为简短的简历往往更令人印象深刻。
-
招聘人员只会花费固定的时间(约 10 秒)来查看你的简历。如果你把内容限制在最令人印象深刻的项目上,招聘人员一定会看到它们。添加额外的项目只会分散招聘人员的注意力,让他们无法看到你真正想让他们看到的东西。
-
有些人干脆拒绝阅读冗长的简历。你真的想冒着因为这个原因而丢掉你的简历的风险吗?
如果你现在认为你有太多的经验,不能在一到两页纸上写全部写完,相信我,你可以。长篇简历并不代表你有丰富的经验,反而它们反映了你不知道如何对内容进行优先排序。
你的简历不需要,也不应该包括你曾经担任过的每个职位的完整历史记录。应只包括相关的职位——那些能让你成为更令人印象深刻的候选人的职位。
编写强力的子弹(Bullets)
对于每个角色,请尝试使用以下方法来讨论你的成就:“通过使用 Y 来完成 X,最终导致 Z 。”下面是一个示例:
- “通过使用分布式缓存,将对象渲染时间减少了 75%,从而减少了 10% 的登录时间。”
这是另一个使用备用措词(alternate wording)的示例:
“通过实现一种新的基于 windiff 的比较算法,将平均匹配准确度从 1.2 提高到了 1.5。”
并非你所做的一切都适合这种方法,但原理是相同的:展示你做了什么,你是怎么做的,以及结果是什么。理想情况下,你应尝试以某种方式使结果“可测量(译者注,即可量化)”。
在简历中加入“项目”一栏通常是展现你更有经验的最佳方法。对于大学生或应届毕业生来说尤其如此。
项目经验部分应该包括你的 2~4 个最重要的项目。陈述项目是什么以及使用了什么语言或技术。你可能还需要考虑包括一些细节,例如该项目是个人项目还是团队项目,以及该项目是为课程完成还是独立完成。这些细节不是必需的,因此仅在使你看起来更好时才包括这些细节。独立项目通常比课程项目更可取,因为它显示了你的主动性。
不要添加太多的项目。很多候选人会犯这样的错误,把之前做的 13 个项目都加了进去,因为这些不起眼的小项目把简历整体都打乱了。
那么到底构建什么项目数最好的呢?老实说,这并不重要。一些雇主非常喜欢开源项目(它展示出了为大型代码库所做出贡献的经验),而另一些雇主则更喜欢独立项目(更容易理解你的个人贡献)。你可以创建一个移动 app、一个 web app,或者几乎任何东西。最重要的是你在创造一些东西。
软件
对简历中要列出的软件保持保守,并了解什么对申请该公司是适合展示的。像 Microsoft Office 这样的软件几乎总是可以被砍掉的。而诸如 Visual Studio 和 Eclipse 之类的技术软件在某种程度上更具相关性,但是许多顶级高科技公司甚至都不在乎这一点。毕竟,学习用 Visual Studio 难倒很难吗?
当然,列出所有这些软件不会对你来说也没有坏处,只是这会占用宝贵的空间。你需要权衡一下。
语言
你应该列出所有你曾经用过的语言,还是在清单中只展示你最熟悉的?
列出你曾经使用过的所有语言是很危险的。很多面试官认为你简历上的任何东西在面试时都应该被“公平”看待。
另一种选择是列出你使用过的大多数语言,但要加上你的经验水平。这种方法如下所示:
- 语言: Java (精通),C ++ (熟练),JavaScript (有经验)。
使用任何措辞(“精通”,“流利”等)来有效地展示你的技术栈。
有些人列出了他们使用某一种语言的经验年数,但这真的很令人困惑。如果你 10 年前第一次学习 Java,并且在此期间偶尔使用它,那么你有多少年的经验呢?
因此,使用经验的年限对于简历而言是一个糟糕的指标。最好只用简单的英语描述你的意思。
有些公司会因为错字而丢掉你的简历。所以请至少找一个母语是英语的人来帮忙校对你的简历。
此外,对于美国职位,不要包括年龄,婚姻状况或国籍。公司不喜欢这种个人信息,因为这会给他们带来法律责任。
某些语言具有与之相关的恶名。有时,这是由于语言本身引起的,但通常是由于使用该语言的地方而引起的。这里我不想为恶名辩护, 我只是让你知道。
你应注意的一些恶名:
-
企业语言:某些语言带有相关的恶名,并且这些语言通常用于企业开发。Visual Basic 就是一个很好的例子。如果你证明自己是 VB 的专家,则可能使人们认为你的技术水平较低。这些人中的许多人都会承认,是的,VB.NET 实际上完全能够构建复杂的应用程序。但是,人们倾向于使用它构建的应用程序种类却不是很复杂。你不太可能看到一个硅谷大牌公司会去使用 VB。
实际上,同样的论点(尽管不那么有力)也适用于整个 .NET 平台。如果你的主要关注点是 .NET,而你并没有申请 .NET 角色,则与背景不同的人相比,你需要做更多的工作来证明自己在技术上很强大。
-
过于注重语言:当一些顶尖科技公司的招聘人员看到简历上列出了各种各样版本的 Java 语言时,他们会对应聘者的能力做出负面的假设。在许多圈子里,有一种观点认为,最好的软件工程师不会围绕一种特定的语言来定义自己。因此,当他们看到一个候选人似乎在炫耀他们所知道的某一种语言的特定版本时,招聘人员往往会把这个候选人斥为“跟我们不是一类人”。注意,这并不意味着你一定要把这种“炫耀语言”从简历中去掉。你需要了解这家公司的价值观。一些公司确实重视这一点。
-
认证:软件工程师的认证可以是正面的,也可以是中性的,也可以是负面的。这同样与过于注重语言有关。那些对拥有冗长技术栈的候选人抱有偏见的公司,往往也会对认证抱有偏见。这意味着在某些情况下,你应该把这种经历从你的简历中删除。
-
只懂一到两种语言:你花在编程上的时间越多,你做的东西越多,你需要使用的语言也就越多。然后,当他们看到只有一种语言的简历时,他们就会假设你没有经历太多的问题。他们还经常担心只使用一两种语言的候选人将难以学习新技术(为什么候选人没有学到更多东西?),或者只能与特定技术绑在一起(可能无法使用最佳语言来完成任务)。
这些建议不仅可以帮助你处理简历,还能指导你如何积累正确的经验。如果你擅长的是 C#.NET,请尝试使用 Python 和 JavaScript 开发一些项目。如果只知道一种或两种语言,请使用其他语言来构建一些应用程序。
在可能的情况下,尝试真正实现多元化。像在 {Python,Ruby 和 JavaScript} 这一语言集中,这些语言在某种程度上有些相似。如果你能学习更不同的语言,例如 Python,C++ 和 Java,那就更好了。
下图将使你了解如何应对面试准备过程。关键的一点是,这不仅仅是在准备面试时要做的,在做项目和编写代码更需要注意!