PS:少走弯路,专注学习,可以来训练营:后端训练营突击
大家好,我是帅地。
很多人总是会担心项目烂大街问题,今天这篇文章,根据我多年经验,可以给大家一些解决思路。
首先,对于绝大部分同学来说,他们都是没有真实投入使用的线上项目的,因为这种项目需要去企业才能够接触到,而且哪怕你去实习了,由于你是一个实习生,没啥经验,企业也只会让你去做一些打杂的业务。
所以在校招中,绝大部分人的项目,都是学习项目,哪怕是实习项目,也大概率是简单的增删查改,而对于这种类型的项目,在面试官看来,都是小儿科项目,并且面试官作为一个过来人,也大概率知道你的项目可能是跟着视频或者跟着某个教程做的。
而且,市面上的学习项目其实都大差不差,所以绝大部分校招项目,注定是烂大街项目。
不过就我这几年辅导校招的经验,其实烂大街并没有关系,因为这些项目哪怕是跟着视频做的,在不同的人手里,也是不一样的,这就如同,我们都知道像三次握手四次挥手,进程通信这些高频问题天天会被问,但面试官还是会问你这些问题,并且不同的人,回答出来的效果完全不一样。
也就是说,在校招面试中,项目烂不烂大街并不那么重要,重要的是你做项目过程的思考,是你学到了什么,因为市面上的项目就哪些,无论是什么项目,都会成为烂大街项目,比如秒杀,商城,论坛,RPC,等等。
但是无数人也用这些烂大街的拿到了中大厂 Offer。
帅地作为一个过来人,并且也接触过很多面试官,在我看来,一个项目最重要的就是,能够让面试官觉得你是用心+真实做过这些项目的,而不是只背诵了一些理论,连代码可能都没有去打过,因为事实确实是大部分人只看视频不写代码,更不知道如何去解决项目中遇到的 bug。
所以为了让自己的项目更加真实,为了让自己的项目比别人更加有吸引力,我们可以给项目加工,这样哪怕是同一个项目,也能立马让面试官对你的项目感兴趣,比如可以做如下的加工优化:
1、部署上线:让项目真实部署到服务器,甚至给出一个域名,让别人去访问,哪怕你的项目是跟着视频做的也是没有关系的,因为能够把项目搞到服务以及配置上域名,你就已经超过了很多人了。
2、给项目添加新功能:新功能不需要高大上,只需要实用+有意义,我说实话,虽然我们的项目用到了 Redis,MQ 之类的,但是也用的很简单,比如缓存啊,就 get,set 一下,很简单,没啥好说的。不过如果你是自己给自己加功能,那你就可以刻意让你的功能有趣,让面试官有的问了。
3、给项目加上数据:最能引起面试官提问的,就是给项目加上具体的数据,比如通过加上缓存,提高了 xx 的QPS 等。
但是呢,我相信很多人,其实是不知道为啥要加上这些缓存的,只知道理论,不懂实践,难道加了缓存就一定会提高效率吗?你测试过吗?时间复杂度O(n^2) 就一定比 O(n) 快吗?答案是不一定的,还和数据有关。
所以呢,我觉得如果你要真正让面试官信服你,你最好就是,测试一下没有优化之前是什么情况,然后加上优化,测试下优化后的又是什么情况。毕竟在项目中,事实才是最重要的,理论终究是理论,项目最重要的就是,用实践去验证理论。
加上绝大部分相同项目的简历写法是差不多的,如果面试官看到你的简历,看到你自己加了很多东西,那肯定就是比别人加分了,毕竟面试比的就是哪个更好,哪怕这个东西很一般,也都行,而且通过加东西,你可以更加熟悉项目。
也就是说,如果你觉得你的项目是跟着视频做的,觉得烂大街,那你不妨按照我上面的思路,去不停优化你的项目,我保证,你完成了之后,不仅更加熟悉项目了,而且也更加自信了,面试官也能相信你是真正做过,而不是 copy 源码,只看视频不搞实践。
下面我们说一说,如果要添加功能或者完善也有的功能,我们可以怎么加呢?
我们可以添加/完善哪些功能呢?
具体添加哪些功能,我这里就不说了,不过我这里可以给出一些方向,也就是,你添加新功能或者完善已有功能的时候,可以往下面四个维度去考虑。
1、时间复杂度:我们在做算法题的时候,经常会说时间复杂度,其实做项目,也是可以考虑上的,就是为了让某个功能的效率更高,我们可以考虑做什么?比如为了接口响应更快,我们用上了缓存,为了查询更快,我们用上了索引,等等。
所以呢,添加新功能以及优化也有接口的时候,我们可以往如何让某个接口影响更快的层面去考虑。
2、空间复杂度:和时间类似,就是我们可以通过架构设计、数据结构的选用以及设计一块数据结构,使得让我们的系统更加节省空间,为相信,这些一定能够让你很好去思考很多东西。
3、安全性:对于一个项目,安全性的维度有很多,比如可以是防止被别人恶意攻击,比如对接口限频,设置 IP 黑名单,等等,总之就是减少网站被人恶意消耗资源,这块可以做的小玩意有很多,而且很多都是通用滴。
4、高并发:就是考虑极端情况。比如当我们的用户变多了,容易出现很多临界 bug,比如线程安全问题啊,缓存一致性问题啊,等等,这些都是极端情况。
那我们可以思考,为了减少这种极端情况出现,我们可以怎么做,比如点赞关注功能,一般我们都不考虑原子性问题,比如 A 关注 B,B 也会成为 A 的粉丝,这里有两个操作,但是很多情况下我们并不会去保证原子性,因为不值得,但是你此时就想较劲,你就想万无一失,那你也可以保证他们的原子性,那你就可以用上分布式锁啊,等等。
总之,很多项目本来很简单,一旦考虑高并发问题,就会变的很难,而你,哪怕你用户很少,也可以当做学习,去考虑这些问题。
但是,我们也一定要懂的去权衡,就是很多东西,并不是越完美越好,我们在实际的项目中,还需要考虑性价比,比如有时候为了安全,我们加了很多很多东西,浪费了很多时间,这其实是不值得的,所以你一定要懂的权衡。
当然,面试官问起的时候,如果你是校招,那你可以说自己是为了学习,比如你的项目,用户肯定不多,肯定不需要啥分布式锁,但是你加上也没有关系,就说是为了学习嘛,那别人也和你一样的项目,面试官看到你做了很多优化,那你机会就比别人更多了。
总结
总之,烂大街是常态,但是烂大街并不是最重要的,最重要的是,你能够比别人更加突出,你能够让面试官感受到你有不错的实践能力,项目做的过程中也有自己的思考......
那么,你的项目就是一个优质的项目!
------------------------------------------
最后,欢迎加入帅地的1对1指导训练营,适合任何阶段的用户,早就是优势,帅地会提供:
1、1对1个性化规划学习,个性化给你安排学习,查漏补缺,冲击大厂冲击银行还是对标小厂学习路线都不同,帅地会让你以最快的速度去突击这些岗位。
进来基于你各方面都会变的很明确,也可量化,不再迷茫,不再纠结,一心学习!
2、网上很多大杂乱,不靠谱,帅地一对一给你指导,可以让你少走很多弯路,帮助你提前比别人快一步,往正确方向一心学习,才是最重要!不少用户进来突击一个月拿到中大厂offer
3、完整八股文专题,算法,项目资料,一站式简历服务,从0到1,所有都有,告别网上大杂乱!把时间花在最重要的事情上!
4、训练营永久有效,越早进来价格越低,享受权益越多,不促销,并且保证价格只涨不降,否则你可以来退差价!因为我是真的认可自己的服务!.......
5、帅地全职24小时在线,随时解答你的纠结,给你心理按摩!避免少走弯路
具体欢迎来帅地的后端训练营,详情点击这里:后端训练营突击