Java 培训 4 个月就能学会了吗?

最近有些同学老师问我说“老师,我是零基础开始学习java,有些培训班的老师告诉我java培训4个月就可以参加工作,不知道能不能学会?”。

哄鬼的吧!

我明确的告诉你,不能!

踩过坑的过来人,当时招生的老师告诉我一般要四到六个月,我TM居然信了,没有基础的人,系统学完java的时间几乎是固定的,比如说需要一年,如果要想半年教完怎么办呢,两种办法,只讲一半的内容,或者双倍进度,而双倍进度往往意味着如果你不是每天熬夜,零基础的人几乎听不懂,也学不会。

我培训那会,每天都很焦虑,老师上周讲的东西,下次要用的时候马上就想起来,对零基础的我来说,这几乎是不可能的,因此进度不可能快的起来。可以这样说,如果现在让我去做培训,我甚至可以两个月讲完,关键是别人能学的会吗?因此双倍进度对零基础的人来说几乎是不可能的。

web开发我为什么不选python要选你java呢,因为java的比较优势就是什么缓存、微服务、分布式、高并发这些业内成熟、解决方案多。不然选python、PHP都差不多。而我的培训班的只讲一半就恰恰没有包含这些。

locks没讲,并发集合、阻塞队列、并发工具类没讲,线程池、定时器、folk/join框架没讲。。。

NIO、AIO没讲(Netty更不会讲)。。。

redis没讲、mongodb没讲、消息队列没讲,因为下一届招生要来了…

java语言包和工具包,最核心的两个包,讲了还不到一半,Arrays、Collections都没讲,我tm刚开始工作连enum都不会写,这tm到底讲了个啥啊...

重要的数据结构,链表、二叉树、哈希表都没讲,不知道怎么讲的集合框架。。。就告诉你一般用arraylist,键值对用hashmap,写了几个demo…,哪个面试不问hashmap的原理的???

工作之后,单表的增删查改还在自己写sql,因为mybatis generate没讲;入参的字段长度、数字的大小、正则的验证还在写大量if else,因为Hibernate validator没讲...

话说java8早就发布了,好歹lambda、stream、optional、函数式要教一下吧,面试太多相关问题了。

nginx没讲、postman没讲,linux命令讲了一点点,然而这也是工作之后最头疼的问题,打包发布上去之后,项目出了问题,排查起来简直无从入手。。。

都微服务了rpc总得讲吧,springcloud或者dubbo总得讲一个吧,内容哪怕就多讲一个服务发现也好啊…

设计模式没怎么讲,就告诉你spring是动态代理,面试要考…

不知是教学体系落后还是老师知识体系落后,讲hibernate我没意见,毕竟外企用的多,早就过时的技术像jsp、jstl、el表达式、struts还花了两周,前后端早就分离了你给我讲jsp???,讲html和css都是多余的......

培训总体感觉就是还有一半没讲。数据结构我是在网易云课堂上学的,函数式、设计模式、mybatis generate、Hibernate validator这些是在csdn上看的,collection的原理、微服务这些是在腾讯课堂上看的,基本一大半都是自学。

根据个人经验,java基础学完lang包和util包就够了

language包:

Enum、Annotation、Exception

Object、Number、wrapper(包装类)、Boolean、String

util包:

collection(集合框架)

Arrays、Objects、Collections、Comparators

面向对象、编程规范

以及三大框架+数据库

依赖管理框架 IOC、AOP Spring

MVC框架 MVC SpringMVC

对象-关系映射框架 ORM MyBatis(、Hibernate、JPA)

Mysql

学完这些,ok,你增删改查没问题了,能够开始写业务,已经是个初级码农了,是的,码农,培训班出来的差不多都会写;

然后就是学会使用一些工具类、中间件、框架(其实都是一个意思):

缓存框架(CACHE) SpringDataRedis+Redis

消息队列中间件(MQ) Kafka

远程调用框架(RPC) Dubbo、Spring Cloud

日志框架(Log) Log4j2、slf4j

消息推送 websocket

权限控制(Auth) Shiro

会用工具类:regex-正则、time包、Currency、Locale、Random、Formatter

会自定义切面、自定义注解、自定义servlet、listener、filter、Interceptor

会使用线程池、懂几个设计模式、懂几种算法和几种tree

能够熟练使用这些框架和工具类,积累了两三年经验,ok你差不多是个中级程序猿了。

当然,还有一些专用场景下的框架

参数校验(Bean Validation) SpringValidator

数据批处理(Batch) SpringBatch

分布式事务 seata

检索 ElasticSearch

excel生成 Apache PIO

安全 SpringSecurity

但是我们的追求不止是个增删改查的码农,还想继续往下,就需要学习很多分布式、微服务框架、容器化,以及更底层原理性的东西了

下面这些,只做增删改查用不到,写框架用得到,看底层源码用的到

反射——java.lang.reflect

多线程/并发——java.util.concurrent

序列化——(java.nio包)IO/NIO包

网络通信——java .net包)Socket、HttpClient

函数式——java.util.function、stream、Optional、lambda

JVM、Compiler

分布式、微服务框架、容器化...技术无止境,说不完了

然后你就成了java开发工程师了。

然后?35岁被新来的应届生替代了。

为什么?因为你做的是web开发,web开发既没有技术含量,做的人也多,甚至是个语言都能做web,javaweb,pythonweb,phpweb,cpp/c#web,nodejs web,rubyweb,go web,缺你一个javaweb吗?web开发太容易饱和了,况且应届生也能做,到35岁你不失业谁失业?

我总是在讲,做java的不要一门心思的只做web开发,容易遭遇中年危机,最好能同时懂javaweb和java大数据。

更多的java基础知识可以添加我的java编程技术交流学习q峮:前108  中  062 后 1881 。希望你是带着学习的心态来的!