一个java程序猿的技能经验储备分为两大块 : 一. Java语言本身及高级特性 二. Java项目经验
先从一说起,除了使用java完成基础工作外,哪些方面需要必备呢:
1)Java数据结构相关的类的实现原理:比如 LinkedList,ArrayList,HashMap,TreeMap等
比如:哪些集合是有序的? 它是如何保证自己的有序性? 哪个集合的有序性实现的比较好?有没有更好更高效的实现方式?
2)Java并发包
比如:想实现程序的并发执行,有什么好的办法吗?哪个办法更好?
3)IO和NIO (NIO重要)
NIO模型?(selector一定要非常清楚它的职责和实现原理,记住NIO的核心是IO线程池)
IO包的设计模式?(装饰器模式)为什么这样设计?
4)Java虚拟机内容 (三大部分:GC,类加载机制,内存模型)
比如:GC:对象什么时候会被GC?GC策略有哪些?为什么要选择这个策略?
类加载机制:类加载机制有哪些?每个类加载器都加载哪些类?什么是双亲委派机制?为什么要用双亲委派机制?
内存模型:内存分为哪几部分?哪些部分参与GC?Java内存模型是怎么设计的?为什么这么设计?什么是内存可见性?
以上就是Java语言稍微高级点的内容,包含了JVM,并发机制,多线程,数据结构类实现原理等,也是工作中最常见的问题所在。