一、简历基础
简历内容
1、整体
一份完整的程序员简历包含个人信息、教育背景、专业技能、荣誉奖项、工作经历、项目经历、科研经历、校园经历、个人优势等内容。
其中,个人信息、教育背景、专业技能、项目经历是 必须具备 的!
一般校招简历以 一页纸 为最佳(工作 3 年以上经历非常丰富、或者求职等级较高除外),因此要合理分配各部分内容占用的篇幅,推荐的占比如下:
- 个人信息 5 ~ 10%
- 教育背景 10 ~ 15%
- 专业技能 20 ~ 30%
- 项目经历 30 ~ 50%(工作 / 校园 / 科研等经历也算在内),对大多数同学来说,这部分是 核心 !
- 其他内容 0 ~ 20%(比如奖项、个人优势等)
2、个人信息
基本信息必须要 填写完整 ,这是对另一方最基本的尊重。包括以下信息(加粗为必填项):
- 姓名
- 性别
- 求职意向
- 年龄
- 身份:大几学生、几年工作经验等
- 联系方式:手机号、邮箱、微信、QQ 号(以公司岗位描述要求为主)
- 照片(建议放)
- 其他链接:个人博客、作品集、亮眼作品等
技巧
1)个人信息占用的篇幅不用过多,一行可以同时写多个信息,保证间距合理即可。
推荐:同类信息可以放到一行
联系方式:手机号:xxxxxx / QQ 号:xxxxx
不推荐:
姓名:李鱼皮
贵庚:23
联系方式:手机号:xxxxxx
QQ 号:xxxxx
个人兴趣:敲代码、水视频
2)照片要清晰端正,蓝底 / 白底 / 红底都可以,最好表情自然、面带微笑。尽量穿白衬衫或者正装:
3)没有特殊要求的情况下,不建议写期望薪资!一方面是大公司的薪资还算公开透明,没必要写;另一方面是防止你的表现超出了预期时,被人按照你的预期薪资来砍价。当然,除非你把预期写的很高,说不定能过滤一些公司、猎头的打扰。
4)如果有个人网站、个人博客、代码仓库的话,建议补充上相关链接
推荐:比较精简、简短、好输入
比如:yupi.icu
不推荐:过于复杂的链接
比如:https://github.com/liyupi/yu-rpc/tree/master/example-springboot-consumer
3、教育背景
如实 写明即可,包括以下信息:
- 学校
- 专业
- 年级
- 入校时间 ~ 毕业时间
- 排名(建议排名高于前 20% 的同学才写)
- 主修课程(建议非计算机相关专业的同学适当列举,优先列举和求职岗位相关的、分数较高的课)
- 其他信息:如 CET 证书、计算机专业相关证书等
技巧
1)学历一般不建议造假!意义不大
2)如果有得分较高的(比如 90 分以上)、和岗位相关的课程,可以在课程名后用括号补充分数。
4、专业技能
同义词:个人技能、技术栈、技能清单
这部分是简历的核心之一,列举自己掌握的、熟悉的、用过的、学过的、甚至仅了解过的各种技术或技能。
技巧
1)写你会的技术栈时,不要用老长一句话、像报菜名似的列举技术名词。可以采用列表的形式把每一个技术单独写清楚,会更直观清晰。
举个例子:
不推荐:把各种不相关的技术用一句话讲完
能够熟练使用 springcloud 微服务框架及 mysql、redis、hbase、mongodb 等数据库及 kafka、rabbitmq 等消息中间件及 netty 等网络框架、前端 HTML / CSS / JavaScript 的使用。
推荐:改为列表,同一类技术写在同一行
- 熟练使用 springcloud 微服务全家桶
- 熟练使用 mysql、redis、hbase、mongodb 等数据库和大数据中间件
- 熟练使用 kafka、rabbitmq 等消息中间件
- 熟悉 netty 等网络框架
2)每点不要只写一个技术名词,建议多补充该技术中你掌握的知识点和技术细节
不推荐:写的很通俗、很广泛、很空虚
- 熟悉 Java(熟悉 Java 的什么特性?)
- 熟悉 Linux 系统的基本命令(熟悉什么命令?)
推荐:补充一些该技术中,你用的比较熟悉的知识点、技术细节
- 熟练使用 Java,比如:集合框架、动态代理机制、反射等等
- 熟悉 Linux 系统(比如文件系统、内存管理),能使用命令监控系统负载和进程状态
3)除了写自己会什么技术外,最好 深一度。比如可以补充半句:你能用这些技术做什么? 从而表现出你的实践能力,公司倾向于选择问题解决能力强、实践经验丰富的同学。
不推荐:只写理论,不写实践
熟悉 Java
推荐:你能用这个技术做的事、你亲身实践过的事
熟练使用 Java,能够运用 Java8 的 Stream API 高效操作集合类 / 完成数据处理、使用动态代理完成对相似类的统一操作
其他例子:
- 熟练使用 Spring Cloud 微服务全家桶,能独立开发微服务项目
- 熟悉 Netty 等网络框架,能够独立开发即时通讯系统
5、荣誉奖项
同义词:个人奖项
包括以下信息:
- 个人证书
- 个人参与并获奖的竞赛(团体奖项也要写,但是最起码你要有贡献)
- 非编程相关也可以写(比如某某创业大赛,总比没有好)
- 软著、专利
技巧
1)对奖项排序,优先把认可度高的、范围高的、获奖级别高的、和编程求职岗位更相关的放上面。
6、工作经历
同义词:实习经历
包括以下信息:
- 公司名
- 职务
- 工作起始和结束时间
- 工作内容(具体做了什么)
- 负责的项目(做哪个方向的项目、项目的介绍)
- 给公司带来的价值(收益增加、成本降低、更稳定)
技巧
1)写工作内容的时候尽量突出自己的地位,比如:
不推荐:
参与文档编写
推荐:
负责整个接口文档设计和编写
2)写工作内容时,可以适当具体一些,尤其是建议补充一下工作中用到的技术
不推荐:职责比较模糊
参与系统开发
推荐:点明技术,体现实践经历和能力
负责 SpringBoot 前后端分离架构的系统研发
3)尽量不要写自己收获了什么、学到了什么,而是写自己做了什么、做出了什么成果,更有说服力。
7、项目经历
同义词:个人项目、项目经验
这部分是简历的 核心 ,主要是介绍自己做过或者参与过的项目和工作,体现出自己的实践经验和能力 ,包括以下信息:
- 项目名称
- 项目起止时间
- 项目介绍
- 项目技术栈或架构
- 负责工作(或者个人职责,这里是重点)
只要是自己做过的项目都可以写,只不过可以区分重点和非重点。
注意,项目经历和实习 / 工作经历的侧重点不完全相同:
- 实习经历重点是你在这家公司负责什么(地位)、你的作用、你的价值。
- 项目经历重点在于你对这个的项目的贡献、项目特色、实现项目的关键技术等。
技巧
1)注意每个项目里内容的比重,项目介绍占比不要太多,不要写得太啰嗦!重点在于突出你做了什么,用什么技术解决了什么问题,带来了什么效果(STAR法则)。
不推荐:项目介绍过多,自己的工作反而没写多少
项目介绍:
- 将 SQL 的编写逻辑 结构化 ,像写文章大纲一样编写和阅读 SQL
- 重复的 SQL 只需编写一次 ,SQL 变动时修改一处即可
- 可以针对某部分 SQL 进行传参和调试
- 查看 SQL 语句的引用树和替换过程,便于分析理解 SQL
负责工作:使用 Vue3 + Monaco Editor 完成系统开发
推荐:项目介绍一两句话带过,突出核心,更多的篇幅在于写自己做的事
项目介绍: 用 JSON 生成结构化的 SQL 语句的在线工具,基于 Vue3 + TypeScript + Vite + Ant Design + MonacoEditor 实现
负责工作:
- xxx
- xxx
- xxx
2)介绍项目的时候,不要混在一起,而是建议 分点逐行、具体去写 ,每个工作 / 亮点独占一行,每一点 尽量具体 。写的越具体,往往越体现真实性。
这里有个万能公式:负责 XX 系统的研发,在 xx 条件下、利用 xx 技术实现了 xx,实测 带来了 xx 效果(比如推进了 xx、提升了 xx)。
“实测” 两个字突出了真实性。
举个例子:负责订单查询系统,在老系统并发量较低的情况下,选用分库分表中间件 + Kafka 消息队列 + Redis 缓存进行重构,提升了系统并发量,实测 由 1000 Qps(每秒并发数)提升至 10000 Qps。
不推荐:不够具体,千篇一律
使用 Redis 缓存热点数据,提高系统查询性能
缓存哪些数据?哪些数据是热点?缓存效果如何?提高了多少查询性能?
推荐:
负责商品模块,在现有商品查询接口并发量较低的情况下,在数据库查询前增加 Redis 缓存层,缓存热点商品信息,使用 apache-ab 实测接口并发由 50 qps 提升至 1000 qps。
还可以进一步补充缓存更新等问题的解决。
注意!实在没有背景和效果实测,也不要硬编,被识破了会很尴尬。
3)要想项目有亮点,需要 深一度。不能只写你完成了什么工作,而是要有一定的优化和扩展。比如你可以改造现有项目 / 框架、推陈出新,提升系统各方面的性能(可用性、稳定性、用户体验、吞吐量、时延等)。
不推荐:
开发了订单系统,完成了支付模块。
推荐:体现出了技术选型和架构思维。
负责订单系统的开发,使用 XX 技术实现了支付模块,并选用 XX 消息队列将系统 QPS 由 XX 提升至 XX,同时使用 XX 保证了支付的幂等和稳定性。
4)建议大家多去了解你项目中用到的技术的同类技术,对这些技术的优缺点和适合的应用场景有个大致的印象。这样做的好处有很多:
- 开拓你的思路
- 在写项目介绍时可以补充技术对比细节,体现出你的技术选型能力和知识广度
- 防止面试官考察“你为什么用这个技术,不用那个技术?”之类的问题
5)条件允许的话,强烈建议提供可在线访问的项目地址(域名尽量简短,好让面试官访问),从而体现你项目的真实性,将会是一个非常不错的加分项。
6)如果你做的是网上大众化的教程项目,建议给项目改个名、换个皮、自主加一些新功能,增加区分度。
参考写法
仅提供思路,尽量不要直接照搬!
可以从技术自身的优点和应用场景出发,来增加亮点。
以用户中心项目为例:
- 为了提高开发效率,选用 Ant Design Pro 脚手架快速搭建基础页面,并对原始模板进行瘦身、抽象为可复用的公共模板,便于后续同类项目的快速研发。
- 在脚手架自带的 umi-request 请求库基础上进行改造和封装,添加全局请求拦截和全局异常处理逻辑、自动根据项目启动命令来区分环境,减少重复代码、提升项目可维护性。
- 选用 MyBatis + MyBatis-Plus 进行数据访问层开发,复用大多数通用方法,并且通过继承定制了自己的 通用操作模板 ,大幅提升了项目开发效率。
- 为了明确接口的返回,自定义统一的错误码,并封装了 全局异常处理器 ,从而规范了异常返回、屏蔽了项目冗余的报错细节。
- 对于项目中的 JSON 格式化处理对象,采用 双检锁单例模式 进行管理,从而复用对象,避免了重复创建对象的开销,便于集中维护管理。
- 采用 Nginx 完成前端项目部署、采用 Docker 容器完成后端项目部署,并且使用宝塔面板对项目进行运维监控。
8、科研经历
包括以下信息:
- 研究内容(论文、专利、实验室等)
- 研究时间
- 具体工作
- 产出(著作权、论文、认可度)
这部分不是所有同学都有,而且方向千差万别,所以不做赘述。
9、校园经历
包括以下信息:
- 名称(你做的事情、参与的活动)
- 时间
- 具体工作
- 产出
10、个人优势(自我评价)
这个板块不是必须要写的,如果你要写,就 必须让你的自我评价有信服力 !不要只说自己哪里的能力强、怎么怎么厉害,而是需要一些事例、数据、证据来证明。
举些例子:
- 我学习能力强,对新技术有强烈的好奇心 => 补充:曾通过官方文档、自主查阅资料自学了 XX、XX 新技术,并通过 RSS 持续关注该技术最新动态。
- 我乐于从事有挑战性的工作 => 补充:我曾经担任 XX 队长,在 XX 困难的条件下,解决了 XX 问题,取得了 XX 成果。
- 我喜欢分享知识、善于总结 => 补充:连续 XX 天发布个人博客,发布过 XX 个学习总结等等
- 我很帅 => 补充个人照片
这样写自我评价,就不再是虚的了,而是真的能让对方感受到你的这些能力。
这里有个小技巧,可以根据目标公司的岗位要求去写自我评价,做到对号入座。
比如公司要求招有团队协作经验的,那就写:我善于团队合作,曾经组队参与 XX、XX 项目,统筹负责了 XX、XX,怎么提升团队工作效率之类的。。。
这样从招聘者的角度来看,你是有用心准备过的,目的性明确,也是加分项。
除了写到简历上的自我评价外,我们在求职面试中的自我介绍也是一样的逻辑。自我介绍是需要精心准备的,而不是每次面试都现场 free style,那样很容易出现一些 “阿巴阿巴”、不知所云的情况。
比较虚的自我介绍是:我是谁、来自 XX、求职意向是 XX 岗位,然后夸一番自己,有较强的学习能力什么的。。。
而比较稳的自我介绍是:我是谁、来自 XX、求职意向是 XX 岗位,主动学过哪些技能、哪些技能学的比较好、通过什么方式自主学习,然后用事例来证明自己哪些能力比较强。
比如我会说:自己拥有丰富的项目经验,大学曾带领工作室建设多少个网站,自主参与过 XX 项目和竞赛,曾在 3 家公司实习并负责 XX 工作;自己乐于分享、总结能力强,大学开展过 XX 场分享讲座等等。
总之,逻辑清晰,有理有据,面试官会很喜欢你的。
程序员求职面试,技术是一方面,另一方面是通过你的准备用心程度以及线上的交流来 get 到你的综合能力(沟通能力、逻辑思维能力等)。大家都学一样的技术,那么拉开差距的就是其他的能力以及你如何展现这些能力了。不过大家还是要注重日常的积累,有一定经历,在写自我评价、介绍自己的时候才会更有底气。
二、简历优化
基本建议
- 内容划分清晰、完整全面,简历通常包括几个部分:个人简介(基本信息、照片、学校、专业、成绩、四六级证书、特长介绍等)、竞赛奖项、个人技术栈、实习经历、项目经历、科研经历等。
- 合理划分各部分的比例,多写真实经历(实习、项目等),少写正确的废话(尤其是自我评价部分)
- 简历最好一页纸,内容超出时,过滤一些 “废话”,只放最精华的部分。
- 简历的板块划分要清晰、排版要整洁、内容不要太挤或太空;色调不宜过暗或过亮,推荐蓝色或淡灰色;色彩不要太丰富,要让人看起来舒服。
- 明确你要找的岗位,简历上的所有内容尽量围绕这一个方向去写,突出重点。(比如你找后端方向的工作,即使你也会前端,也要注意不要让前端占了过多的篇幅)
- 依据个人优势对内容进行排序,把最有亮点的部分放上面,还可以适当对关键词进行加粗、调色等,突出自己的优势和亮点,尽量减少和其他同学简历的相似度。和短视频逻辑一样,面试官如果觉得你的简历千篇一律,一下就刷走了。
- 文字内容要精炼,拒绝口语化;用词尽量专业,体现专业性,不用担心面试官看不懂。
- 项目 / 实习经历介绍中,可用 STAR 分析(场景、任务、行动、成果)来梳理自己的核心工作。标准句式:在 xx 公司 xx 项目中,在 xx 情况下,运用 xx 技术,解决了 xx,优化了 xx,达到了 xx 效果,带来 xx 收益等。举个例子:为适应产品特性、加快迭代速度,后端由 Springboot 重构至 Node.js ,数据库由 MySQL 迁移至 MongoDB ,实现了前后一体的 集中式配置中心 ,提高了接近 1 倍 的开发效率。注意每段介绍不宜过长,留给面试官提问的空间。
- 简历项目中尽量不要出现重复的内容介绍(比如每个项目都写一遍使用 Axios 发送请求)。
- 最好给项目附上可直接访问的链接,有个人博客的话也最好写上去,建议多在博客中记录和总结自己学到的知识,让面试官感受到你的努力积累、脚踏实地。
- 写完简历后,一定要自己通读几遍,保证行文通顺、且无任何错别字!尤其是专业名词别拼错了!
- 有机会可以多阅读借鉴他人的简历,查漏补缺。
高阶技巧
1、引导
在写简历时,我们可以故意利用一些措词、加粗等方式来 引导面试官 。
比如很多面试官都会针对简历中提到的技术去展开提问。因此当我们介绍技术栈时,可以在一堆 “了解” 中适当添加 “掌握”、“尤其熟悉” 等词,面试官大概率会去问这些技术相关知识点。
此外,还可以 细化 你会的技术,比如把 “熟悉多线程” 改成 “掌握多线程 AQS 、并发包等技术”,可以吸引火力,一定程度上防止面试官问到多线程中你相对薄弱的部分。在面试准备时间不足时,这个方法可能有奇效。
因此必须熟悉简历中的项目和用到的技术,提前想好对策。常见的问题有:
- 项目中用了哪些技术?
- 为什么用这个技术不用别的?
- 有什么亮点?怎么去优化等等?
现在大多数简历千篇一律,都说自己会 Java、人均 Java 小能手,所以很难吸引到面试官。而如果你提到了 Java 中的某个高级知识点,有一定的学习深度,反而更容易被选中。就和我们平时刷短视频一样,一定是有什么东西吸引我们,才能看下去。
反之,如果简历很平淡,哪怕进入了面试环节,面试官可能也不知道问你什么,只能考各种八股文(胡乱开火扫射)。
2、适当包装
写简历的本质就是:如何以一种吹牛皮的方式表达出你的能力。
因此,虽然写简历要真实,但不能太老实!尤其是对于没有特别多项目的同学,要学会适当包装、合理包装。
比如将常用的技术进行组合、添加一些修饰词、使用一些专业名词等。
举个例子,本来写的是:使用了 MySQL 数据库、Redis 缓存、OSS 对象存储技术。
可以改为:使用 MySQL、Redis、OSS 三维一体的多元存储技术。
哈哈,虽说可能有一点点夸张,但还是能体现你的专业性的,不过不要乱吹就是了 。
再举个例子:用 xx 框架提升了 20% 的查询性能,20% 是一个很不显眼的数字,如果你改成 90%,会更抓眼一些,并且对于大部分场合来说是合理的。
但是注意,杜绝欺骗 !尤其是工作年限等有准确数字、可被调查的问题,请实事求是,否则后果自负。
3、定制化
根据不同的岗位、公司和 JD(岗位描述)来调整优化简历(比如修改部分细节或工作内容),或者准备多份不同的简历。
比如你前后端都会,投递后端开发岗位时,把后端技术放在前端技术上面去写,项目经历、实习经历等都要侧重于后端。
三、优秀简历参考
1、教育经历
学校:上海 XXX 工程院校 本科在读
专业:软件工程
外语:大一时通过 CET 4、CET 6 考试
2、技术栈
后端
熟悉: Java
了解:SpringCloud、Express.js、Node.js、Python
数据库
熟悉:MySQL
了解:MongoDB
中间件
了解:Redis、RabbitMQ、Elasticsearch
DevOps
了解:微服务、Jenkins、Gitlab CI / CD、Nginx、Traefik、Linux
云计算
了解: Docker、Kubernetes
前端
了解: React、React Native、Javascript、HTML、CSS、Grafana
3、实习经历
XX 有限公司 后端开发工程师(实习)
- 在腾讯 XX 部门从事 管理系统 开发,主要参与故障处理平台建设
- 完成故障处理流程灰度、流程版本升级功能的需求分析、数据库设计、界面原型设计以及前后端实现,加快了运营团队的迭代速度
- 为方便团队掌握大规模故障的情况,参与了大规模告警机制的开发流程,并为其开发前端交互界面
- 使用 Grafana 开发运营监控视图,使团队成员可以快速掌握运营状况,及时做出调整
4、项目经历
XXX 新媒体信息流聚合平台
展示地址:https://xxx.live(不公开)
- 独立开发的基于 MERN 技术栈的 新媒体信息流整合 平台,采用 前后端分离架构
- 使用 React 构建前端,对手机端 交互模式 进行了 专门优化 ,使用 Cloudflare 作为 CDN
- 使用 React Native 开发了 跨平台 的移动端应用,提高了开发效率,减少了 50% 的开发时间
- 为适应产品特性,加快迭代速度,后端由 Springboot 重构至 Node.js ,数据库由 MySQL 迁移至 MongoDB ,实现了前后一体的 集中式配置中心 ,提高了接近 1 倍 的开发效率
- 使用 JWT 用户鉴权实现了 平台内容分级机制 ,用户可自定义界面,用户设置 云端同步
- 采用 Redis 实现了 高频信息缓存 ,加快了 请求响应速度 ,降低了 90% 以上的数据库压力
- 使用 Elasticsearch 实现 全站内容搜索 ,相比 MongoDB 搜索效率提升 80% 以上
- 利用 RabbitMQ 的队列机制进行 削峰 ,缓解了 高并发 情况下的 系统资源短缺 问题
- 为加强爬虫系统灵活性,将其由 Scrapy 重写为 Node.js ,实现了分批分时、错峰爬取
- 为提升开发效率,使用 Gitlab CI/CD 进行 持续集成 和 持续部署 ,实现了 构建部署自动化
- 采用 Nginx 和 Traefik 进行 前端部署 和 反向代理 ,增强了软件系统的 安全性
- 为配合 集群化部署 ,前后端均以 Docker 作为容器,可在任一陌生机器 迅速启动应用
- 曾使用 VPS 测试搭建了拥有 10 个节点的 K8s 集群,可进行应用的 快速扩容 和 集中式管理
Rubbish XXX
- 垃圾分类查询工具,负责 技术选型 、架构设计 和 前后端开发 工作
- 为适应产品特性,使用 MongoDB 作为数据库,实现了垃圾分类、讨论区等功能
- 为减轻数据库压力,使用 Redis 对搜索结果进行 缓存 ,同时 极大缩短了应用响应时间