一个项目的话不是不可以,但你一定要保证这个项目不能太鸡肋。如果太鸡肋的话,简历关可能就直接 pass,而且面试官提问都不好提。
如果你没有项目经验的话,建议你尽量一边学习各种框架和中间件一边做一个完整且有一些亮点的项目作为自己的项目经验。
什么项目算是有亮点的或者是面试官认为有价值的?
最有价值的当然是你参加各种大公司组织的各种大赛(比如阿里的天池软件设计大赛)而做的项目,如果参加这种赛事能获奖的话,项目含金量非常高。即使没获奖也没啥,也可以写简历上。
跟着老师或者普通公司做的项目的话,一般都是面向企业级别,一般很少会用到分布式/微服务,基本都是单机,这种项目的含金量稍低,即使你的业务很复杂。遇到这种情况可以考虑说自己去对项目进行改进,别怕花时间,某个时间用心做好一件事情就好比如你对项目的数据模型进行改进、引入缓存提高访问速度等等。
自己做的项目的话,我觉得一定要:尽量和别人避开,别网上流传一个项目,然后自己名字不改,啥也不做就写简历上了。
项目太简单怎么办?
项目太简单的话,不光是影响简历通过的概率,还会影响到你的面试准备,毕竟面试中的重点就是项目经历涉及到的知识点,如果你的项目经历比较简单的话,面试官直接不知道问啥了。个人建议你可以参考《Java 面试指北》中对应的文章对项目经历进行完善改进!
另外,你还要保证自己的项目的不是烂大街那种(比如商城、博客……),自己参加比赛做的项目或者是企业真实项目是比较好的。
如何优化项目经历性价比更高?
面试之前,你可以跟着网上的教程,从性能优化方向入手去改进一下自己的项目。为什么建议从性能优化方向入手呢?因为性能优化方向改进相比较于业务方向的改进性价比会更高,更容易体现在简历上。并且,更重要的是,性能优化方向更容易在面试之前提前准备,面试官也更喜欢提问这类问题。
你项目没有用到的性能优化手段,只要你搞懂吃透并且觉得合理,你就完全可以写在简历上。不过,建议你还是要实践一下,压测一波,取得的成果也要量化一下比如我使用 xxx 技术解决了 xxx 问题,系统 qps 从 xxx 提高到了 xxx。
必须是微服务项目才有亮点?
个人认为也没必要非要去做微服务或者分布式项目,不一定对你面试有利。微服务或者分布式项目涉及的知识点太多,一般人很难吃透。并且,这类项目其实对于校招生来说稍微有一点超标了。即使你做出来,很多面试官也会认为不是你独立完成的。
其实,你能把一个单体项目做到极致也很好,对于个人能力提升不比做微服务或者分布式项目差。如何做到极致?代码质量这里就不提了,更重要的是你要尽量让自己的项目有一些亮点(比如你是如何提升项目性能的、如何解决项目中存在的一个痛点的),项目经历取得的成果尽量要量化一下比如我使用 xxx 技术解决了 xxx 问题,系统 qps 从 xxx 提高到了 xxx。
如何准备项目经历?
你可以从下面几个方面来准备项目的回答(欢迎大家补充):
1 你对项目整体设计的一个感受(面试官可能会让你画系统的架构图)
2 你在这个项目中你负责了什么、做了什么、担任了什么角色。
3 从这个项目中你学会了那些东西,使用到了那些技术,学会了那些新技术的使用。
4 你在这个项目中是否解决过什么问题?怎么解决的?收获了什么?
5 你的项目用到了哪些技术?这些技术你吃透了没有?举个例子,你的项目经历使用了 Seata 来做分布式事务,那 Seata 相关的问题你要提前准备一下吧,比如说 Seata 支持哪些配置中心、Seata 的事务分组是怎么做的、Seata 支持哪些事务模式,怎么选择?
6 你在这个项目中犯过的错误,最后是怎么弥补的?