第一部分:java基础知识
1、java核心机制:jvm内存布局(堆内存,方法区,常量池,虚拟机栈,本地方法栈,程序计数器,直接内存)、类加载机制(双亲委派加载),如何判断对象为垃圾(引用计数、有向图),垃圾回收算法(空间维度、时间维度),垃圾收集器(串行、并行、CMS,G1),基于jvm的性能调优;推荐书籍《深入理解java虚拟机:JVM高级特征与最佳实践》
2、java概述,标识符、关键字、变量类型4类8种相互转换、装箱和拆箱,分支循环判断,递归;
3、面向对象编程,理解this,super,abstract,interface,static,final,重写与重载,构造方法;
4、异常处理,理解try,catch,throw,throws,finally,运行时异常与非运行时异常区别,方法重写与异常处理的关系;
5、数组,数组的内存结构,数组的遍历;
6、常用的java包,类,接口,类方法;
7、容器与并发容器,熟悉collection,list,set,map,queue,dequeue,HashTable与hashmap,ConcurrentHashMap实现原理,copyonwrite容器,blockingqueue阻塞队列,生产者消费者模型;推荐书籍《Java并发编程实战》;
8、IO/NIO与序列化,熟悉InputStream、outputStream、reader、writer,file,buffer,channel,Serializable,Externalable;
9、多线程、并发、线程池,掌握Thread,Runnable,Executor,ExecutorService,Executors,ThreadPoolExecutor,锁机制,synchronized,Lock,ReadWriteLock,ReentrantLock,公平锁非公平锁,原子变量Atomic,并发工具(CountDownLatch,Semaphore,FutureTask,CyclicBarrier),volatile,线程死锁,线程池中断策略;
10、网络协议,tcp/ip协议,http协议,https协议,http状态码,UDP协议;
11、枚举、泛型、反射(Constructor,Method,Field)、注解;
12、GUI编程;
13、设计模式,包括创建型(简单工厂,抽象工厂,单例,建造者,原型),结构型(适配器,代理,装饰,外观,桥接,享元,组合),行为性(11种,模板方法,订阅者,责任链等),JDK中包含那些设计模式,系统架构中使用那些设计模式,框架中使用了哪些设计模式;
14、java web,熟悉jsp,servlet(非线程安全),jdbc,cookie,session;推荐书籍《深入分析Java Web技术内幕》;
15、常用的数据结构,线性表,链表,队列,堆栈,数组,树,二叉树和红黑树,图;
16、常用的排序和查找方法;
17、JDK8有哪些新增特性?
(lambda表达式和函数式接口;方法应用;接口支持默认方法和静态方法;增强集合库;并发;日期优化;hotspot,移除永久带,用metaspace代替)
第二部分:java开发框架及架构设计
1、基础框架,spring IOC/AOP/MVC,mybatis,shiro权限控制,druid数据库连接池,Log4J;推荐书籍《Spring In Action》;
2、消息框架,ActiveMQ,ZeroMQ等;
3、缓存框架,Ehcache,Redis,Memcached;
4、搜索框架,Lucene,solr;
5、RPC框架:Dubbo,Dubbox,ice,webservice;
6、I/O框架:Netty,Mina;
7、分布式框架:Zookeeper;
8、深入理解框架的工作机制和实现原理,合理的设计系统和使用开源框架;
第三部分:数据库相关
1、数据库基础;
2、sql语句优化;
3、分库分表实战;
第四部分:系统优化及维护
1、系统优化的原则;推荐书籍《java性能优化权威指南》;
2、系统优化的手段;
3、代码重构;推荐书籍《Effectice Java》、《重构》;
第五部分:其他工具的使用
1、熟练使用maven;
2、熟练使用git、svn;
3、熟练使用Eclipse;
4、熟练使用linux系统命令;
第六部分:项目管理
1、需求分析的方法及需求文档;
2、数据库设计、架构设计的原则及实践;
3、任务分配、过程管理、系统上线、维护及相关文档撰写;