阅读源代码

  • 数据类型
    • String、Integer、Long
  • 其他
    • Enum、BigDecimal、ThreadLocal、ClassLoader & URLClassLoader
  • 集合
    • ArrayList & LinkedList、 HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap、HashSet & LinkedHashSet & TreeSet

Java基础知识

  • Java中各种变量类型
  • String
    • 熟悉Java String的使用,熟悉String的各种函数
    • JDK 6和JDK 7中substring的原理及区别
    • replaceFirst、replaceAll、replace区别
    • String对“+”的重载
    • String.valueOf和Integer.toString的区别
    • 字符串的不可变性
  • 自动拆装箱
    • Integer的缓存机制
  • 熟悉Java中各种关键字
    • transient、instanceof、volatile、synchronized、final、static、const 原理及用法。
  • 集合类
    • 常用集合类的使用
    • ArrayList和LinkedList和Vector的区别
    • SynchronizedList和Vector的区别
    • HashMap、HashTable、ConcurrentHashMap区别
    • Java 8中stream相关用法
    • apache集合处理工具类的使用
    • 不同版本的JDK中HashMap的实现的区别以及原因
  • 枚举
    • 枚举的用法、枚举与单例、Enum类
  • Java IO&Java NIO,并学会使用
    • bio、nio和aio的区别、三种IO的用法与原理、netty
  • Java反射与javassist
    • 反射与工厂模式、 java.lang.reflect.*
  • Java序列化
    • 什么是序列化与反序列化、为什么序列化
    • 序列化底层原理
    • 序列化与单例模式
    • protobuf
    • 为什么说序列化并不安全
  • 注解
    • 元注解、自定义注解、Java中常用注解使用、注解与反射的结合
  • JMS
    • 什么是Java消息服务、JMS消息传送模型
  • JMX
    • java.lang.management.、 javax.management.
  • 泛型
    • 泛型与继承
    • 类型擦除
    • 泛型中K T V E
    • object等的含义、泛型各种用法
  • 单元测试
    • junit、mock、mockito、内存数据库(h2)
  • 正则表达式
    • java.lang.util.regex.*
  • 常用的Java工具库
    • commons.lang, commons.*… guava-libraries netty
  • 什么是API&SPI
  • 异常
    • 异常类型、正确处理异常、自定义异常
  • 时间处理
    • 时区、时令、Java中时间API
  • 编码方式
    • 解决乱码问题、常用编码方式
  • 语法糖

    • Java中语法糖原理、解语法糖

      Java并发编程

  • 什么是线程,与进程的区别

  • 阅读源代码,并学会使用
    • Thread、Runnable、Callable、ReentrantLock、ReentrantReadWriteLock、Atomic*、Semaphore、CountDownLatch、、ConcurrentHashMap、Executors
  • 线程池
    • 自己设计线程池、submit() 和 execute()
  • 线程安全
    • 死锁、死锁如何排查、Java线程调度、线程安全和内存模型的关系
    • CAS、乐观锁与悲观锁、数据库相关锁机制、分布式锁、偏向锁、轻量级锁、重量级锁、monitor、锁优化、锁消除、锁粗化、自旋锁、可重入锁、阻塞锁、死锁
  • 死锁
  • volatile
    • happens-before、编译器指令重排和CPU指令重
  • synchronized
    • synchronized是如何实现的?
    • synchronized和lock之间关系
    • 不使用synchronized如何实现一个线程安全的单例
  • 方法对比
    • sleep 和 wait wait 和 notify notify 和 notifyAll
  • ThreadLocal
  • 写一个死锁的程序
  • 写代码来解决生产者消费者问题
  • 守护线程
    • 守护线程和非守护线程的区别以及用法