感觉学Java好累啊,要学的东西也太多了吧,大家什么感受呢?

感觉要学的东西也太多了吧,java基础+spring全家桶+各种中间件+mysql+oracle+docker+k8s+前端html+css+js+vue等,还有Linux,等等,感觉好累啊,要学的东西实在太多了吧,大家觉得呢?而且我觉得学的广不如学的精,什么都会一点其实等于什么都不会。

阅读 6.3k
4 个回答

如果你是个Java初学者,我建议你换个方向吧,Java语言学习学习,作为第二第三语言,拓展自己,都是个不错的选择,如果作为主要语言,并且靠这个生存,那你最多只有干个四五年的,现在这个赛道人又多,又卷,市场又差。

加上国内的互联网市场本来就很垃圾,你不精,有的是人精,你了解的少,有的是人学得多。

普通随随便便的300人小企业,整天CRUD,还在用Java 8,Spring 2.3,稍微用了点dev ops,加上Redis,上了MQ,但是他面试就是让你讲ZGC,讲Docker,讲MySQL内存页等,或许还要出场景让你写方案,你答的不错,进来了,前几个月就是改改bug,整天做不完的垃圾需求,都是客户说什么就做什么,代码写的跟山一样,节假日周末还要轮流值班,混个把年,工资从来不涨,你要走,意思挽留挽留,也不涨工资,人家会再招个新人。

如果你非要学,想要快速上班,就去B站刷视频,每个了解了解不停的面试,学习就行了。

你想要逐步扎实,稳定提高,那我推荐你个步骤

  1. Linux基础 (基本命令,包括git/svn/ssh/代理等)
  2. Java 基础(用VIM在Linux环境下,了解java javac javap): 语法、三大特性等
  3. Java 高级 (IDEA): IO、并发、反射,序列化打扎实
  4. 了解一些Java 基础库 lombok ,log4j,JSON库,图片库等
  5. Maven
  6. TCP/UDP/HTTP
  7. XML + JSON
  8. SQL 语法(Linux终端学习),事务
  9. JDBC (至少两种数据库,推荐MySQL + Oracle)
  10. MyBatis (sqlSession ,Interceptor , Transaction)
  11. Servlet
  12. Spring /Spring Beans/Spring Core/Spring MVC / Spring JSON各种基础库
  13. Spring Boot (就看AutoConfiguration)
  14. Spring Boot + MVC + MyBatis + MySQL 项目
  15. Redis基础命令和数据结构
  16. 14步的基础上加Redis
  17. Spring Security / Spring Oauth 2 / Spring AI /Spring Jms 等高级点的组件
  18. Spring Cloud (阿里巴巴那一套不学,主要看Spring Cloud标准)
  19. RocketMQ了解一下整合到16步的项目
  20. 结合19的项目,第5的maven,学习Docker,优化包结构,分离打Jar,优化项目启动速度等
  21. 了解K8S和基础命令

基本上15步骤结束就能过面试了,后面的步骤上班边历练边学,前端空闲时间随便看看再学,有了Java的基础,学习什么Vue,webpakg,rollup带入到Maven很快的,B站找找视频看就行。

面试的时候,简历别写前端,后端就是后端,前端就是前端.

学编程重在敲,多自己写就会了。

其实大部分业务不需要多深的理解,学习就从最基础的来。

所有的技术都是给业务服务的,从产品的角度来看,一个好的产品不过是一些技术的集合,不在于使用的技术有多强,但要求功能必须好用。

如果你想做全栈,可以循序渐进的学习,至于balabala的技术名词,我就不提了,我就提一些实际的。

假如做一个博客,把产品分为几个阶段。

1、你用后端去完成增删改查,用前端去完成页面交互,用docker去完成快速部署,买域名、租服务器,部署网站。到这一步,可以实现简单的博客功能。到这一步,你基本学会了Java语法、Maven,理解了Spring、MVC,会用了git,知道了DNS和网站运行的逻辑,理解了前后端分离的作用,明白了Linux的基本命令...

2、加一些新功能,例如音视频、聊天、上传文件。你可能又接触到oss对象存储、事务处理...

3、假如你的网站做大了,你想提高用户体验,你可能又用上了分布式,CDN。这里你又接触到了grpc、Redis、kafka、RocketMQ...

在做你的产品时,你会遇到各种各样的报错,遇到各种线上事故,这些才是你真正学到的东西。

学习永远不是靠嘴说,死记硬背,一定要上手敲,付诸实践。

btw多说几句,

大部分的产品体量不会有多大,面试官就喜欢看你不会的样子。

至于你所说的学的广不如学得精,互联网时代,是百度github不好用还是gpt不给力了,你知道做功能时候用什么技术就OK了。学习阶段,先学广再学精,互联网这个技术更新这么快,你不跟上就被淘汰。大家以贫穷相聚,技术这东西,说得过去就行,相信大部分人所谓的技术,不过是封装的好看不好看罢了。

至于面试,就当今环境来说,技术不如学历,会的多不如经历牛,太扎心了。

学习技术是给自己生活的兜底,ppt写的好才是工作的真理。

前端部分的可以不学,先把Java的部分学好。
虽然说现在都开始往全栈开发回归,但是大部分岗位还是前后端分离的。学习起来负担小、路径也简单很多。

前端东西太纷杂了,很容易在很多犄角旮旯不重要的东西上面花费精力。

单纯学Java语言还是很快的,主要是学习周边的一套生态会花费大量的精力。主要是去从会用Java写代码转变成吸收 Spring 的那一套开发范式和思考模式。


做开发累是必然的,在整个职业生涯中都会需要自己持续学习。等到什么时候觉得自己学不动了,不想学了职业生涯也就快结束了。

你提到的“学的广不如学的精”,这句话确实很有道理。在某种程度上,深度确实比广度更重要。但是也要认识到,在现在这个快速发展的时代,具备一定的广度也是非常重要的。因为很多问题都需要跨领域的知识来解决。

学习过程中的实践也是非常重要的。通过实际项目来应用所学知识,不仅可以加深理解,还可以提高学习的兴趣和动力。可以在学习的过程中找一些实际项目来练手。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
极客观点
子站问答
访问
宣传栏