1)thinking in java 4 看完90%,仔细看了其中85%的代码例子,手动运行了30%的代码。 复习的话一周到两周。有些部分如讲回字的四种写法的可以不看,当然这部分小于10%,多线程,内部类,io,集合框架,反射是重点
2)effective java 这本书很好,看了这本书才能理解为啥需要设计模式,这本书不厚,大约需要1周左右看完90%
3)java与模式,这本书需要反复体会,一般达到面试的要求1周左右就可以,类与类的关系;设计模式总的原则;创建,结构,行为,每种会5-7个模式即可
4)sql 基础,深入浅出mysql, 这部分一周吧,要了解数据库的三个设计范式,四种隔离级别,jdbc的主要操作,mysql的索引。
5)ssh 部分,spring 结合那个随着安装包的reference看最好,因为版本变动的原因,有些书籍讲的可能落伍了,当然不用全看,因为短时间内也看不完,ioc,bean的作用域,完整的生命周期,beanpostprocessor, aop, spring mvc,web service,jax-ws,spring mvc的各种注解,DispatchServlet,HandlerMapping,ViewResovler,Interceptor,事务
6) linux 基础命令 1到两天,最好自己安装个虚拟机,敲一下
7)redis 这个一到两天吧,就string,map,set, list,sorted set 5种,一般问和memecache 有啥区别,问问内存申请,分配啥的,java一般用jedis.
8) hibernate,mybatis 各两到三天吧,结合spring mvc 用或者不用maven自己配一下,自己用mysql 做一个小的demo,如果你能知道性能,缓存,那就nb了,反正我现在还不怎么懂,现在一般用mybatis,mybatis3学起来快,我看了3天吧每天3个小时,我学得慢
9)深入java虚拟机,建议大概看看,一周吧,了解一下方法区和堆,class文件加载的机制,内存溢出和泄露的情况,快的话两个小时,当然想成为大牛必须深入了解。我是不怎么了解的。
10)大一点的公司一般用soa,主流是阿里公司的dubbo协议,这个原理可能有点复杂,我也不是很清楚,用起来似乎挺简单的。
11) mq,或者active m
其次掌握的技能树主要有三个方面:
第一个是基础。比如对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计。比如一般面试都会问ConcurrentHashMap,CopyOnWrite,线程池,CAS,AQS,虚拟机优化等知识点,因为这些对互联网的企业是绝对重要的。而且一般人这关都过不了,还发闹骚说这些没什么用,为什么要面试。举一例子,在使用线程池时,因为使用了无界队列,在远程服务异常情况下导致内层飙升,怎么去解决?你要是连线程池都不清楚,你怎么去玩?再举一例,由于对ThreadLocal理解出错,使用它做线程安全的控制,导致没能实现真的线程安全,你怪我哦?所以作为一个拿两万的JAVA程序员这点基础是必须的。
第二你需要有全面的互联网技术相关知识。从底层说起,你起码得深入了解mysql,redis,mongodb,nginx,tomcat,rpc,jms等方面的知识。你要问需要了解到什么程度,我可以给你说个大慨。首先对于MySQL,你要知道常见的参数设置,存储引擎怎么去选择,还需要了解常见的索引引擎,知道怎么去选择。知道怎么去设计表,怎么优化sql,怎么根据执行计划去调优。高级的你需要去做分库分表的设计和优化,一般互联网企业的数据库都是读写分离,还会垂直与水平拆分,所以这个也有经验的成分在里面。然后redis,mongodb都是需要了解原理,需要会调整参数的,而nginx和tomcat几乎都是JAVA互联网方面必配,其实很阿里的技术栈选择有点关系。至于rpc相关的就多的去,必须各种网络协议,序列化技术,SOA等等,你要有一个深入的理解。现在应用比较广的rpc框架,在国内就是dubbo了,可以自行搜索。至于jms相关的起码得了解原理吧,一般情况下不是专门开发中间件系统和支撑系统的不需要了解太多细节,国内企业常用的主要是activeMQ和kafka。你能对我说的都研究的比较深入,阿里p6我觉得是没问题的,当然这个还需要看你的架构能力方面的面试表现了。
第三就是编程能力,编程思想,算法能力,架构能力的考量。首先2W程序员对算法的要求我觉得还是比较低,再高级也最多红黑树吧,但是排序和查询的基本算法得会。编程思想是必须的,问你个AOP和IOC你起码的清清楚楚,设计模式不说每种都用过,但是也能深入理解个十四五种。编程能力这个我觉得不好去评价,但是拿一个2000W用户根据姓名年龄排序这种题目也能信手拈来。最后就是架构能力,这种不是说要你设计个多牛逼多高并发的系统,起码让你做一个秒杀系统,防重请求的设计能快速搞定而没有坑吧。
JAVA互联网应用架构师课程大纲
1、JAVA并发编程Netty、NOI、MiNa等技术详解
2、JAVA虚拟机、JVM调优、Tomcat优化等技术详解
3 、Linux入门命令、虚拟机安装精品课程详解
4 、MySQL、Oracle等数据库设计的详解
5、分布式缓存Redis、Memcached、Mongodb的使用
6、中间件ActiveMQ、RocketMQ、MyCat使用
7、互联网技术Zookeeper、Dubbox、Storm、FastDFS技术详解
8、Redis集群、Solr集群、MySQL集群等集群分布式技术
9、Nginx+Keepalive实现高可用 Lvs-Haproxy负载均衡等技术10、互联网综合运用分布式大型电商项目实战