这篇回答没有长篇大论的 Java 进阶学习路线推荐,作为纯靠自学获得大厂 offer 的过来人,给几点建议:

1、一定要动手实践

2、避免货物崇拜编程

3、提高系统设计能力

4、造轮子

5、深入学习,学会总结沉淀

当然也是需要扎实的基础的,例如先了解java的基础

1、一定要动手实践

学习任何一门编程语言非常重要的一点就是:“动手实践”。

如果没办法获得企业级真实的项目经验的话,你可以通过下面几种方式来做项目。

实战项目视频/专栏

在网上找一个符合自己能力与找工作需求的实战项目视频或者专栏,跟着老师一起做。

跟着老师做的过程中,你一定要有自己的思考,不要浅尝辄止。对于很多知识点,别人的讲解可能只是满足项目就够了,你自己想多点知识的话,对于重要的知识点就要自己学会去深入学习。

实战类开源项目

Github 或者码云上面有很多实战类别项目,你可以选择一个来研究,为了让自己对这个项目更加理解,在理解原有代码的基础上,你可以对原有项目进行改进或者增加功能。

一定要记住: 不光要做,还要改进,改善。不论是实战项目视频或者专栏还是实战类开源项目,都一定会有很多可以完善改进的地方。

我在下面会详细介绍我们可以从哪些方面来优化项目。

从头开始做

自己动手去做一个自己想完成的东西,遇到不会的东西就临时去学,现学现卖。

这个要求比较高,我建议你已经有了一个项目经验之后,再采用这个方法。如果你没有做过项目的话,还是老老实实采用上面两个方法比较好。

2、避免货物崇拜编程

何为货物编程?

维基百科是这样解释的:

货物崇拜编程(Cargo Cult Programming)是一种计算机程序设计中的反模式,其特征为不明就里地、仪式性地使用代码或程序架构。货物崇拜编程通常是程序员既没理解他要解决的 bug、也没理解表面上的解决方案的典型表现。

简单来说,货物编程就是我们不明就理地使用各种框架/优秀实践(比如设计模式)/软件架构,最后把项目搞得像个四不像。

列举一些我身边发生过的实际的例子吧!

  • 看到一些比较火的框架就直接套用在自己的项目上,而不知道这个框架究竟能解决项目上的什么问题?是否适合项目?有没有什么风险?
  • 学习了某个设计模式/工程实践之后,不顾项目实际情况,刻意使用在项目上!
  • 直接复制从网上(比如 Stack Overflow )找到的代码,只要运行 OK 就好。
  • 看到一些比较火的概念就魔怔了,比如前两年开始爆火的中台概念。

3、提高系统设计能力

有哪些考察系统设计能力的问题

不论是面试应届生还是高级开发,系统设计能力是大部分面试官会重点关注的对象。比如面试官可能会问题你:

  • 如何设计一个 RPC 框架?消息队列?
  • 如何设计一个秒杀系统?
  • 如何设计一个排行榜?
  • 如何设计一个视频网站?有哪些需要注意的地方?(比如如何解决大文件上传问题、如何保证视频的安全性)
  • 如何设计微博 Feed 流?
  • ......

这些问题都是非常能够考验你的工程能力的,相比于理论性的题目,这种问题的细节点较多,要更难准备一些。

如何提高系统设计能力

想要提供系统设计能力,需要我们的刻意训练。那到底该怎么训练呢?

简单说说我自己的看法,欢迎大家补充:

  1. 多对你做过的系统进行复盘总结,思考一下这个系统有哪些需要改进/完善的地方。
  2. 多进行系统设计实战,比如你可以多问问自己:“如果让你去设计 xx 系统,你该怎么做?”。你最好把这个系统设计的过程记录下来,以便后续再完善改进。

系统设计不一定非要我们实际写代码去实现,系统设计好了之后,写代码并不是什么难事。我这样说并不是代码实践不重要,只是每个人的精力都有限,你应该把你的精力用在最值得你投入时间的地方。

4、造轮子

何为造轮子

在编程领域,你可以把造轮子中的“轮子”简单地理解为各种框架、标准库或者软件。

造轮子说的就是我们对现有的各种框架、标准库或者软件进行改进或者重新创造一个类似的。就比如说已经有了现成的任务调度框架,你自己又创造了一个更满足自己需求的任务调度框架。

不知道何时起,“重复造轮子”被大家看作是一个很傻叉的行为。我却不是这么认为的!在我看来,不论是对于个人还是公司,亦或是技术本身来说,造轮子都有其重要的意义存在。

虽然,造轮子很有意义。但是,有一点不可否认的是:我们在实际项目开发中,会从成本、稳定性、成熟度等方面优先考虑使用比较可靠的开源项目。

另外,我们不是每个人能够写出一个被广泛使用的框架或者标准库。这个需要坚持,也需要我们长期积累的经验。我认识到的很多优秀开源库的作者,他们大部分都是工作中遇到一个问题,现有的开源库没办法很好地解决,最后自己经过很长时间才写出来的。比如安全框架 sureness 的作者,自己在使用 shiro 的时候,不太满意,就花了 2 年多写了这个框架。再比如 sa-token 这个项目的作者公司的项目需要用到踢人下线、账号封禁等功能,现有的权限认证框架没有现成的功能,于是他就自己写了这个框架。

那造轮子会为我们带来什么呢?

为什么要造轮子

从个人角度来说

第一,造轮子能够非常有效地提高自己的系统编程能力。

我之前在搞懂了 RPC 的原理之后,就自己动手写了一个简单的 RPC 框架。我的 RPC 框架肯定是无法和 Dubbo 这类已经这么成熟的相提并论。但是,在自己去写 RPC 框架的时候,更加加深了自己对于 RPC 框架的认识。实现的过程中,遇到了很多问题,解决问题的过程中也提高了自己的编程能力。

第二,造轮子可以提高自己的影响力。

那我自己来说,我写的建议一个建议的 RPC 框架 guide-rpc-framework 虽然功能很简陋,但是,凭借这详细的 README 介绍以及清晰的代码结构还是被很多热爱技术的小伙伴喜欢。

java学习到了瓶颈期,要怎么样才能进阶?相关推荐

  1. CSS学习中的瓶颈期深入分析

    虽已数年,但未就学习专门写过文章,这回破处了.苍蝇不叮没有缝隙的鸡蛋,领导不做没有跟拍的表演,同样,想到写CSS学习的文章也是有原因的(虽然我的不少行为没有原因). 情景再现(尊重隐私,下面故事中人名 ...

  2. 【史上最强实战项目合集】java项目20套 +完整版java学习视频

    如果你是初学者,或者是自学者!你可以加小编微信(2782278837)!小编可以给你一些好的建议以及给你(免费)提供学习资料!你在学习上有什么问题都可以咨询小编!小编都会为你解答! 注:本公众号纯属个 ...

  3. 深度学习三人行(第10期)----CNN经典网络之LeNet-5和AlexNet

    上一期,我们一起学习了深度学习卷积神经网络中的代码实现,内存计算以及池化层的原理等, 深度学习三人行(第9期)----卷积神经网络实战进阶(附代码) 接下来我们一起学习下关于CNN中比较经典的网络Le ...

  4. java发展瓶颈_作为Java程序员,该如何度过自身的瓶颈期?

    关于Java程序员如何突破自身的瓶颈期,我谈谈自己的看法. 在工作中突破瓶颈 首先我有一个观点,可能和很多人的想法不太一样. 大家应该看到过很多这样的说法:"工作八个小时是为了生活,下班后的 ...

  5. 【组队学习】【27期】Java编程语言

    Java编程语言 论坛版块: http://datawhale.club/c/team-learning/33-category/33 开源内容: https://github.com/datawha ...

  6. 工作5年左右的程序员如何在职业瓶颈期内快速提升自己的身价?提升后如何有效变现自己的高质量技能?...

    当一般的程序员工作5年左右后,往往会遇到事业上的一个瓶颈期:能力上已经达到高级开发,工资比上不足比下有余,而且至少能在所在城市站稳脚跟. 不过根据行业现状,这类程序员再要向上提升,难度就不小了,具体表 ...

  7. 工作5年左右的程序员如何在职业瓶颈期内快速提升自己的身价?提升后如何有效变现自己的高质量技能?

    当一般的程序员工作5年左右后,往往会遇到事业上的一个瓶颈期:能力上已经达到高级开发,工资比上不足比下有余,而且至少能在所在城市站稳脚跟. 不过根据行业现状,这类程序员再要向上提升,难度就不小了,具体表 ...

  8. 《转载》工作5年左右的程序员如何在职业瓶颈期内快速提升自己的身价?提升后如何有效变现自己的高质量技能?...

    工作5年左右的程序员如何在职业瓶颈期内快速提升自己的身价?提升后如何有效变现自己的高质量技能? 当一般的程序员工作5年左右后,往往会遇到事业上的一个瓶颈期:能力上已经达到高级开发,工资比上不足比下有余 ...

  9. 做嵌入式开发有35岁瓶颈期嘛?

    你只要不学习,危机会在35岁以前到来,危机可不管你在什么行业. 可以肯定地说,嵌入式从业者薪酬比其他IT业同行大约高出很多,尤其是在一线城市.嵌入式人才目前是处于供不应求的状态中,据权威统计机构统计在 ...

最新文章

  1. c语言程序设计复习提纲,C语言程序设计复习提纲
  2. 【转】体验 Silverlight 5 3D开发之环境搭配篇
  3. 使用Arquillian(包括JPA,EJB,Bean验证和CDI)测试Java EE 6
  4. Sentinel服务熔断只配置fallback_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0050
  5. 洛谷P2862 [USACO06JAN]把牛Corral the Cows
  6. DataSet的Join操作
  7. 与时间有关的10个短语
  8. Java编程:弗洛伊德算法(无向图所有顶点最小路径)
  9. IAR教程之IAR下载和调试
  10. OC 教程 极光推送
  11. vb webQQ登陆器
  12. wpa_supplicant2.9编译过程
  13. 英语专业转行计算机可以吗,英语专业转行学IT,从“小白”到月薪10k+,她做到了!...
  14. 如何在Microsoft Word里面插入图片作为背景?
  15. python是低级语言吗_低级语言和高级语言的区别
  16. Windows\Ubuntu修复UEFI引导
  17. 雅思口语考官常问的100个话题整理-自己整理
  18. CredSSP 加密数据库修正
  19. 前端学习之路坑一:json对象和JS对象
  20. iOS Vary for Traits

热门文章

  1. 骏安产业一站式解决企业纳税筹划方面的痛点
  2. c语言 编译器关键字,C语言关键字 restrict
  3. 28 WebGL绘制立方体
  4. 子网192.168.15.19/28的主机地址范围怎么算?
  5. clickjacking漏洞的挖掘与利用
  6. 中国医学影像人工智能20年回顾和展望
  7. JS代码实现:鼠标悬停与离开(两种方式)
  8. 《剑指offer》【树的子结构】(python版)
  9. SharePoint网站定义
  10. 令狐冲独孤九剑篇--策略模式