程序员简历应该怎么写?

[图片] 本问题已加入活动专题 「求职之前 先上知乎」 ,更多关于校招、求职的讨论,欢迎关注专题>>> 没工作的日子每晚都睡不着,焦虑恐惧害怕,半夜没…
关注者
11,136
被浏览
2,937,376

192 个回答

大家伙让一让,这个问题让老司机先答!作为一个潜入IT圈五年之久、看过数万份简历的HR,在这个问题上还是有点发言权的。HR在筛选简历时主要从公司需求出发,重点不一,不过还是有很多“通用”的套路,为了在30秒内判断出这份简历是否值得跟进,我认为程序员写简历的正确姿势是这样的:

一、基本格调

即打开简历之后的第一印象。就好比我们看见一个人,会有一个整体的感觉,他是fashion的、小清新的还是老道的?有了第一印象之后再慢慢分解来看。

加分写法:

  • 简洁明了,逻辑结构清晰。
  • 字体,排版,顺畅,清晰整齐就好。
  • 最好是PDF格式,兼容性强且不易乱序。

减分写法:

  • 设计的过于浮夸或者过于简单的。(eg.有的简历五颜六色、非常酷炫,却半天找不到联系方式,抑或是只有个人基本信息和公司名称)
  • 写了十几页,半天打不开的,或者加载了半天,打开还乱码。

二、基本信息(姓名/性别/毕业院校/电话/邮箱/居住地/期望地)

加分写法:

  • 清晰罗列出以上信息,这样HR就不用在接下来的电话沟通或面试中再去追问这些内容,建立我们接下来电话沟通对你的熟悉度。
  • 再额外能加上QQ或者微信就更好了(以防有时候电话打不通哦,时不时会遇到这种情况)

减分写法:

  • 大部分的基本信息没有写
  • 甩给我一个Github链接,极致简洁的几句描述,需要通过你的链接来找你的联系方式。(如果不是博客写的特别好,基本是要放弃你了)

三、工作经历&项目经历

加分写法:

  • 工作经历项目经历可参照万能的STAR法则来写,STAR不清楚的童鞋点这里
  • 效力过哪些公司,我们匹配的公司? BAT? 知名大型互联网公司?
  • 做过什么行业领域,和我们目前的行业是否匹配
  • 擅长的技术语言,应用了哪些技术栈,(Java, Scala,Ruby, React, Vue, Microservice…)
  • 经历的项目复杂度,及在项目中承担什么样的角色(人的变化/技术的变化/环境的变化/不同工作经历相同角色的不同点)
  • 时间节点(空档期)

减分写法:

  • 看了半天,不知所云,没有任何亮点,没有让人有去和你聊一聊深扒的信息。

来几个栗子

栗子1错误打开方式:

  • XX(全栈工程师)2013.06 — 至今
  • 参与需求分析及实现方案设计。
  • 设计数据库表结构,实现后台功能及web页面展示。
  • 产品线上部署及运维。
  • ay 配置管理工程师 2010.03 — 2013.03
  • 负责公司产品性能测试,及线上数据分析
  • 负责公司配置管理,环境维护等工作

点评:看不出来他做的什么事情,没有逻辑性,甚至不知道他做的什么技术语言。

栗子2正确打开方式:

西安XXX公司 Java工程师 — 2016.2月-2017.2月

1、MOGU推荐架构数据与缓存层设计开发

  • MOGU是一款时尚资讯app,负责推荐页面资讯feed流的展示及用户历史的展示
  • 负责数据层,处理前端逻辑整个开发工作,分布式rpc服务搭建
  • 负责进行压测监测、缓存处理,对接又进行改进优化,主用redis缓存

2、基于JAVA的电商爬虫开发

  • 使用java搭建爬虫server平台,进行配置和开发,进行网页改版监测功能开发
  • 爬取淘宝时尚品牌与其他电商网站商品品牌与详情等
  • 通过频率、ip池、匿名代理等应对一些网站的反爬

3、同图搜索Solr服务开发

基于算法组的同图策略,使用solr做java接又实现rpc服务搭建,进行索引构建和solr实现

北京XXX

java大数据工程师— 2013.4月-2015.12月

1、负责实时流消息处理应用系统构建和实现

  • 在调研了kafka的优势和我们的具体需求之后,用kafka作为消费者,保证高吞吐处理消息,并持久化消息的同时供其它服务使用,进行了系统的设计和搭建使用。 本地日志保证消息不丢失,并通过记录游标滑动重复读取数据。
  • 使用storm 负责搭建消息处理架构,并完成基于业务的消息落地,提供后续的数据 统计分析实时和离线任务,诸如pv、uv等数据,为运营做决策
  • 网站用户行为埋点和基于js的日志收集器开发,定义接又和前端部门配合。主用go 2、hadoop集群搭建和数据分析处理

2、基于CDH的集群搭建工作,后期进行维护

编写MapReduce程序,能将复杂工作逻辑化,尽最大能力发挥大数据应用的特点, 对程序高要求,监控自己程序运行情况,使用内存合理,注重增量和全量运算的利弊

3、调度系统设计与实现 基于quartz2搭建调度平台,带徒弟实现相关功能并定期review代码

4、数据库调优 负责主从搭建,并掌握主从搭建的利弊,了解业界mycat原理,有数据库优化经验,能 正确并擅长使用索引,对锁有深刻的认识

5、网站开发 java web网站业务开发,并能很好的使用缓存技术,对重构有实际的经验,并对面向对 象开发有全面的实战经验。了解java数据结构的使用场景,虽然对于大并发没有太大的 发挥余地,但是掌握了数据结构,对于并发和阻塞等有自己的见解。

点评:非常清晰的告诉简历阅读者自己做了什么事情,负责了什么样的事情,用了什么技术栈,且逻辑连贯。

四、 工作期望&个人评价

加分写法:

  • 对自己有一个全方位的一个描述总结,让别人更好的解读你。或者在此处,高亮你的优点特长有哪些。
  • 即使不写个人评价,也一定记得写上工作期望。

减分写法:

完全看不出个性特点,写和没写没什么区别。 来几个栗子

栗子1 错误打开方式

为人性格,诚实谦虚,勤奋,能吃苦耐劳,有耐心,有团队意识,能和同学和谐相处,能虚心接受别人的建议的人。

责任心强,善于沟通,具有良好的团队合作精神;专业扎实,具有较强的钻研精神和学习能力;性格比较乐观外向,喜欢打羽毛球。

栗子2正确打开方式

  • 我对自己的定位: 主攻前端,同时在其他方面打打辅助。我不希望过于依赖别人,即使没有后端没有设计没有产品经理,我依然想要把这个产品做到完美。毕竟全栈才能最高效地解决问题。
  • 我对工作的态度: 第一,要高效完成自己的本职工作。第二,要在完成的基础上寻找完美。第三,要在完美的基础上,与其他同事 互相交流学习,互相提升。工作是一种生活方式,不是一份养家糊口的差事。
  • 我怎样克服困难: 不用百度是第一原则,在遇到技术问题时我往往会去Google、Stack over flow上寻找答案。但通常很多问题 并不一定已经被人解决,所以熟练地阅读源码、在手册、规范甚至 REPL的环境自己做实验才是最终解决问题的办法。相信事实的结果,自己动手去做。
  • 怎样保持自己的视野:我一直认为软件开发中视野极其重要,除了在 Twitter 上关注业界大牛,Github Trending 也是每周必刷。 另外 Podcast、Hacker News、Reddit 以及TechRadar 也是重要的一手资料。保持开阔视野才能找到更酷的解决方案。
  • 我的优势: 热爱技术、自学能力强,有良好的自我认知。全面的技能树与开阔的视野,良好的心态、情商与沟通能力。
  • 我的劣势: 非科班出身没有科班同学对算法的熟练掌握,但我决定死磕技术,弥补不足。

栗子3正确打开方式

  • 极客、热爱技术、热爱开源
  • Ruby on Rails:精通
  • Agile/Lean:精通
  • ReactJS:掌握
  • Docker:掌握
  • AWS:掌握

五、 是否有博客,个人技术栈点等

  1. 看到有这项的HR两眼已经放光了,加分加分项,说明你真正的热爱技术,善于学习总结,乐于分享,且有投入自己的业余时间到软件事业中。
  2. 我喜欢的书籍:《重构》《卓有成效的程序员》《代码整洁之道》等
  3. 我喜欢的社区: 图灵社区,知乎,博客园,Stack Over flow,Google Developer Group等
  4. 我的博客链接、个人作品链接如下:

六、简历内容真实性

老司机提醒你,你简历的任意一个细节将会是后面面试中的呈堂证供。

基本就这些了,希望对大家能有帮助,看起简历来几十秒,码字还是个体力活。

铛铛铛!!!前方高能!专业招聘一百年,猝不及防的广告来啦!

ThoughtWorks一直在找和我们志趣相投的人、真正热爱技术的人、喜欢刨根问底的人,那种为了完成而完成的人不是我们想要的。在公司里,我们经常会听到这样的话:我们不只要实现功能,更要以正确的方式来做。追求是无止境的,所以,我们要找的就是具备深入思考的能力/潜力的人,这样,我们才能不断向前。

我们在全国一共六个Office 北京,西安,武汉,成都,深圳,上海。每一个Office都欢迎全球各地全国各地的所有兄弟姐妹们加入。

有需要内推的不?没有的话,我一会儿再来问一遍 ;)

4.24日更新:收到了好多简历,先谢谢大家的支持。经HR反馈,ThoughtWorks中国区的几个办公室都已经没有对实习生的需求了哈(实习生大多都是在校招中拿到Offer的,同学们可以多多关注校招消息,争取明年的实习)

看到这个问题,我觉得非常有意义,值得好好回答。于是,我邀请了我的同事Vincent老师,跟大家分享一下,程序员如何写一个有效的简历。

@Vincent老师 Vincent:来Offer项目实战班主讲,Senior Fullstack Engineer,在FLAG一线大公司拥有多年的面试经验,帮助上千名同学修改简历、辅导面试。


我与许多应届生、求职者交流过,发现他们中的很多人对于简历的认识,仍停留在比较初期的阶段。而从他们对简历的认识误区中,则能看到许多人关于CS求职较为“想当然”的理解。因此,我想说一下如何打造简历,一个面试官到底希望看到什么样的简历,希望招到什么样的人才。

我主要想讲这三大部分:修改简历的重要性、怎么写好项目/工作经历、简历一无可写怎么办。


先举一个简历实例,一个物理PhD和一个Top30名校毕业的Computer Engineer的学生同时针对一个SDE的职位投出简历,你认为谁的胜算会大一些?

下面就是这两个同学的简历,大家可以自行比较一下。

最终,是物理PhD拿到了Offer。这说明,这个求职市场并不是100%地“看出身”,更多时候,还是要看简历上的干货,而这些干货还要与职位要求相符。

根据2016年的数据统计,只有不到7%的人撑到了谷歌的onsite面试,而每年被直接筛掉的简历,则在百万份左右。所以对于简历,如果你的认识还停留在名校和专业的层面上,很有可能,你就是那被筛掉的93%。

一、为什么简历这么重要

很多北美CS求职者可能想不到现在竞争是有多么激烈。一个职位往往有几十个甚至上百个candidate来竞争。那些提供H1B签证,将来会sponsor绿卡的岗位就更是炙手可热了。想在这样的激烈竞争下,拿到Offer,你的简历必须要能经得起多方面的检验

  • HR:不管什么职位,面试的第一步就是HR筛选简历,而你的简历只有10秒钟的机会,然后HR就会决定你这一关是Fail还是Pass。
  • 内推:有些求职者会觉得,我有内推,简历差一点不怕。这是错误的。即使你的推荐人愿意给你倾尽全力内推,他也需要根据你的简历论证你有哪些优点。如果你的简历写得空洞无物,再有心的推荐人也无能为力。这也是很多同学即使找了内推,依旧没有拿到面试的原因。
  • 面试:到了面试这关,简历仍然很重要。面试官会根据简历来快速判断你是否值得他仔细面试。如果你的简历没有引起他的感兴趣,那在他心中可能已经给你判了死刑了,等下出个LC Hard的问题刁难你,你的feedback自然不会好,最后的结果就是呵呵一笑:Thank you for your interest。

当然,也不能为了充实简历就走向另一个极端:为了拿到面试,把简历写得极尽fancy。这样倒是让HR和面试官眼前一亮,但是针对你的简历来提问,你却答不上来,照样会挂掉。


二、如何写好你的项目和工作经历

既不能空洞无物,也不能过分夸张,那么在10秒钟之内,面试官到底想看到什么呢?

  • 关键词

10s内能够让面试官看上的简历,肯定要有热门的技术词汇,最好还是和面试官(他们也是工程师)息息相关的技术。

这一点大家经常有个误区,觉得我一定要高大上,简历上的技术越新越好。但是,这些技术往往还没来得及大规模推广,甚至面试官都不知道,很可能写上去是没有用的。

反之有些技术,比如Test、Log、Git这些,看上去并不fancy,但是这是每一个工程师天天要做的工作,反而能把你和其他new grad区分开来。不要小瞧这一点,包括一些CS的master很多都不会Test、不会分析Log、不会Git。

你的简历如果既有一些较新的技术(一般出来一两年左右的,类似Go、React),又有经典的必备的技能,那么就一定能够吸引他的眼球。


  • 真实性

既然技术词汇这么重要,那我就把经典的、热门的技术全部写在简历上,堆成一个项目好不好?面试官不是傻瓜,他对简历的敏感度非常高,能够一眼看得出来哪些就是为了堆上某个技术而砌出来的项目。

举个简单的例子来说,有同学在简历里边写了一行:

Designed and developed a web applicaiton with Java, Eclipse, Hadoop, AWS EC2, REST API。

技术本身都是极好的技术,但是这样写是非常错误的。

首先,这个描述极其缺少context,面试官无从判断这个项目的价值。你的web application,是一个简单的一页的个人主页呢?还是一个有多个page的推荐系统呢?没有这个context,面试官无从了解你的这个项目的完成时间和完成深度。所以这个真实的context必须得有。有些同学可能上过一些求职课,知道应该用数字证明成果,这个其实也是context的一种。

另外,单纯的技术堆砌往往缺乏联系和逻辑,无法说服面试官。比如说,Deployed the system on AWS,这个AWS本身没有错,但是你的这个项目为什么要部署到云上面去呢?之前遇到什么问题?你是带着目的性去部署这个系统,还是说仅仅为了学习AWS而去做的呢?如果是我来写,我最起码会写上Deployed the system on AWS to improve scaling。这样才能证明我是明白AWS的用途的,而不是为了堆砌。


  • 深度

还有一些同学,尤其是CS Master和转专业的同学,有这样的疑问,如何让我的简历显得更有深度?我认为你的简历需要体现设计和实现上的复杂性。我总结了一个描述的技巧:起承转合。

第一行,起。写清楚项目的背景。写一下研究过什么同类的产品,我的产品的优势是什么。这能告诉面试官我不是随意设计一个项目的,是有目的、有规划的。

第二行,承。一般我会写基本的实现。用了什么框架、什么技术。记得要把context交代清楚。

第三行,转。描述遇到的挑战,是如何解决的。通过这条,说明我这个项目不是应付交差,而是做了一段时间,遇到了问题,并且解决了问题。

第四行,合。描述最终的结果。我是如何delivere、present、test这个项目的。告诉面试官我有ownership,能保证产品的最终完成。最好可以用一些数字来体现结果,而不是空洞的描述。

用这样一个四段论,比全部都在说做了A功能、B功能、C功能,在深度上好太多。


三、简历一无可写怎么办?

对于零基础、转专业的同学,简历上没什么可写的是个普遍问题。要解决这个问题,就需要发掘自己的优势。

  • 为什么无从下笔?

很多时候大家觉得自己无从下笔有几方面的原因的。

第一,做的项目和想投的工作不吻合,比如想投CS专业,手中却只有EE相关的技术经验,或者想投工业界的职位,却只有Research方面的经验;

第二,做的项目觉得不够重要,比如就是修修bug,改改button之类的简单任务;

第三,确实是什么经历都没有。


  • 如何发掘可写的点

针对第一类问题,可以想办法和目标职位靠拢。比如说CS和EE有很多通用的经验和技术,诸如前期查资料research、分析数据和debugging的能力,这些都是可以写到简历里边。另外有一些通用的soft skills,比如communication的能力、oral presentation的能力。尤其是一些PhD的同学,经常写paper和做presentation,都可以为简历增色。

针对第二类问题,就需要自己去深入思考自己项目的重要性。很多时候大家觉得我可能就是某个公司的某个小组做一些边角的事情,但是大家要想,为什么这么大的公司不找别人去做这个工作而找你?说明还是有你的价值在其中的。对于这样的项目,一般我会先介绍这个公司的价值,然后是我们组对于公司的贡献,最后就是我做的工作的重要性。层层递进,自然写出了你的价值

至于第三类问题,就需要大家去发挥积极性,多参与一些技术开发活动了。现在开源社区非常活跃,你完全可以参与其中。一开始哪怕就是修改标点符号也好,然后不断的升级积攒更多的经验。如果直接参加开源社区对你的技术要求太高,也可以去参加线上培训的项目,一般这些项目会有老师来亲自带着做项目,会更有指导性。


以上我简单探讨了三个让简历脱颖的关键点,以及如何挖掘自己的工作、充实简历。当然小窍门还有很多,就不一一赘述了。最关键是要明白,认真修改简历和良好的项目选择,对你拿到Offer至关重要。


如果还有CS求职相关的问题想要咨询,可以私信我

或者发送你的简历和问题至info@laioffer.com,我们会尽快回复。