【第四章:简历制作】4.3 出类拔萃-如何完成一个高加分项目
1 前言
相信项目问题是困扰很多同学的拦路猛虎,如何完成一个有价值的项目?被诟病颇多的大众项目值不值得做?面试官只喜欢高难度的项目吗?带着这些问题,我们来开启今天的文章,带你剖析一个高加分项目应该具有什么样的特点。
2 如何开始一个适合自己的项目
如果在参加求职之前还没有丰富的项目经历,就需要找一些合适的项目,在投递不同的岗位、不同的公司时,对未来的期望不同,可以选择的项目类型也是多样的,在选择项目的时候要注意以下几点。
2.1 根据职业规划选择项目
看这篇专刊的大多数同学定位都是开发工程师,所以我们的重点就是语言及相关的IDE、网络协议、开源库。在这之上,还可以继续向下细分,如果立志做游戏,可以看些图像处理、游戏引擎相关的项目;如果想做偏网络方向的工作,可以找些socket相关项目,也可以做一些在线聊天室、多人协同文档等项目。
2.2 根据自己能力选择稍难的项目
如果给自己的能力打60分,在选择项目的时候尽量选80分的难度,如果给自己的能力打80分,在选择项目的时候尽量选100分的难度。总之,要让自己在做的时候能够有压力感,但又不至于难到无从下手。项目覆盖的技术点尽量不要太多,可以从两三个技术点继续深挖,两三个珍珠一定比一堆石头更具有价值。
前面说如果能力60分,要选择80分难度的项目。那么,如果自己能力稍差,比如为20分,要选择多少分的项目呢?答案是“抄”80分的项目。
做一个过于简单的项目,完全没有任何价值,哪怕你确实学到了很多东西,但呈现在简历上只会显得你能力一般。这个时候,可以选择“抄”一个难度稍高的项目。这里的“抄”并不是指git clone下来就算完成了,而是要用一种“由多而少再变多”的方法来完成这个项目。简单来说,就是在最开始的时候,面对这一堆代码,想办法划分出不同的模块和技术点,通过化整为零减少入手难度,等到完全熟悉后就可以考虑如何优化现有模块、增加新的模块,甚至重新设计架构、引入新的工具等。
这样“抄”下来一个项目之后,能让你对每个细节了然于心,真正把这个项目变成自己的东西,在准备简历、面试的时候也能够信手拈来。
3 如何避开千篇一律的项目
我相信许多同学在网上寻找项目的时候,都见到过各种各样的“商城系统”、“学生信息管理系统”,这些项目往往有一整套的技术选型和设计方案,能让你从头到脚完成一个成熟系统。
我所说的避开千篇一律的项目,并不是说这些项目都要舍弃掉不能做,而是不要用“复制、粘贴”的办法抄写项目。这会让面试官认为你只是跟着某些视频下载了IDE,抄写了代码,并不能体现任何实质性的能力。
对于网上的一些成熟项目,我们只要注意下面几个事项,就能避开上述所说的问题,让面试官通过这些项目对你刮目相看。
3.1 绝对不要堆叠技术
一个成熟的项目,往往从前端的框架到后端的架构,再到数据库的选型,以及服务部署的工具,都有一整套成熟方案。比如做一个Java Web项目,往往就会直接选择SSM(Spring+SpringMVC+Mybatis)或者SSH(Struts+Spring+Hibernate),做容器管理有docker,做负载均衡有nginx,搞消息队列有ZeroMQ,可以说无论任何一个方向都有许多成熟方案。但我们实际在做一个项目的时候,往往对这些解决方案都只是浅尝辄止的程度,经常是知其然不知其所以然,这种情况下一定要避免将所有涉及到的技术都堆叠在简历上。
堆叠技术并不能显得你技术全面,作为一个应届毕业生,很难深层次掌握那么多技术,面试官遇到这种简历,只要稍微在某个方向深挖一下,面试者就难以应付了。
还记得我们前面所说的“熟练掌握”、“熟悉”和“了解”吗,“熟练掌握”的技术可以往项目介绍上写,但一定要能够说明为什么选用这项技术以及具体解决了什么问题等,这样能让面试官知道你是真正对这项技术钻研过的,而不是只看了使用说明书照做而已。
对于“熟悉”和“了解”的技术尽量不要堆叠在简历上,可以在自己介绍项目的时候或者面试官问到的时候简单提一下,对技术的选择可以稍作详细的介绍,如果能够阐述自己使用google protobuf做序列化工具的原因,能阐述出自己选择mysql而不是mongodb的原因,也就是能够知道“为什么”选这个即可,谦虚的告诉面试官自己只是简单的调研了这些技术的优势。
3.2 回归编程基础,加入创新思考
始终记得我们应聘的是开发工程师,简历涉及到的技术说到底也都只是工具,工具的使用经验是随着使用时间的增加而增加的,而这些经验恰恰不是企业对应届生的重点要求,基础能力和思维方式才是企业最看重的两点。
我们一直在笔试、面试中手写二叉树、最大堆、缓冲队列,一直被考察栈和队列的变换、map和hashmap的知识,但我们仔细想下,在平时做的项目中,真的把这些数据结构都用在其中了吗?
还是以“秒杀系统”为例,现实中存在不少“黄牛”或者“羊毛党”拿一堆服务器不停发出购买商品的请求,导致普通用户的请求经常被阻塞。我们是不是可以考虑增加一个IP黑名单,过滤掉这些近似泛洪攻击的不良请求呢?那么我们如何构建这样一个IP黑名单呢,在IP较少的情况下我们使用一个数组存储这些黑IP,请求过来的时候用顺序查找的方法判断请求IP是否应该被过滤。但在IP较多的情况下使用数组和顺序查找的效率就会非常低,这个时候就可以考虑将IP按序排列,而在查找的时候使用二分查找,就能够降低查询时间。
在我们做的项目中,一定存在大量可以使用算法和数据结构知识解决和优化的问题,这些问题的解决方案能够反映出你的编程基础能力和创新性思维方式,而这两点恰恰是企业和面试官格外看重的。
3.3 最好具有现实意义
如“秒杀系统”,我们静下心来想一想,在看到“秒杀系统”的时候,你会想到什么应用场景。
我相信大多数同学会直接想到“双十一”等网上商城,可能还有一部分同学会想到12306等网上购票系统,但我们想下,那个让诸多同学深恶痛绝、捶胸顿足的教务网选课系统,是不是也是一个“秒杀”的场景。
当然,一般学校的教务管理系统都是交给第三方公司开发的,但由于他们一般不会针对每个学校或学院的具体情况进行开发,所以同学们在使用的时候总会遇到各种各样的问题。我们可以针对这些问题,提出一些合理的解决方案,结合已有的教务管理系统,就能够做出一版2.0版本的新系统。
比如在选(qiang)课系统中可以增加一个预选取的功能,能够在正式选课之前让自己先选好几个课程,开始的
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
<p> 《开发岗校招求职攻略》。专刊覆盖六大主要内容,涵盖整个求职流程,包括求职规划、心态及定位、实习指导、简历制作、笔试准备和面试准备,共十七篇文章。用清晰的逻辑帮你梳理有价值的重点,将你可能遇到的问题娓娓道来,让你在比较短的时间学到有用的经验,在求职中如虎添翼、战无不胜,获得理想的offer。 本专刊购买后即可解锁所有章节,故不可以退换哦~ </p> <p> <br /> </p>