1. JDK和JRE有什么区别
    2. ==和equals的区别是什么
    3. 两个对象的hashCode()相同,则equals()夜一定为true,对么?
    4. final在java中有什么作用
    5. java中的Math.round(-1.5)等于多少
    6. 深拷贝和浅拷贝的区别
    7. String属于基础的数据类型么
    8. java中操作字符串都有哪些累?他们之间有什么区别
    9. String str=“i”与String str = new String(“i”)一样么
    10. 如何将字符串反转
    11. String类的常用方法都有哪些
    12. 抽象类必须要有抽象方法么
    13. 普通类和抽象类有哪些区别
    14. 抽象类能使用final修饰么
    15. 接口和抽象类有什么区别
    16. java中io流分为几种
    17. BIO、NIO、AIO有什么区别?

    BIO是阻塞的,NIO非阻塞
    BIO是面向流的,NIO面向缓冲区
    NIO会轮询了解事情的进度
    AIO会有提醒进度已完成

    NIO核心:Channel(通道双向,同时读写),Buffer(数组),Selector(多路复用)
    bio nio aio

    1. Files的常用方法都有哪些
    2. 在java中守护线程和本地线程区别
    3. 线程与进程的区别
    4. 什么是多线程中的上下文切换
    5. 死锁与活锁的区别,死锁与饥饿的区别
    6. java中用到的线程调度算法是什么
    7. 什么是线程组,为什么在java中不推荐使用
    8. 为什么使用Executor框架
    9. 在java中Executor和Executors的区别
    10. 什么是原子操作?在java Concurrency API中有哪些原子类(atomic classes)?
    11. java Concurrency API的Lock接口(Lock interface)是什么?对比同步它有什么优势
    12. 什么是Executors框架
    13. 什么阻塞队列?阻塞队列的原理什么?如何使用阻塞队列来实现生产者-消费者模型?
    14. 什么是Callable和Future
    15. 什么是FutureTask?使用ExecutorService启动任务。
    16. 什么是并发容器的实现
    17. 多线程同步和互斥有几种实现方式,都是什么
    18. 什么竞争条件?你怎样发现和解决竞争?
    19. 你将如何使用Thread dump?你将如何分析Thread dump?
    20. 为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?
    21. java中你怎样唤醒一个阻塞的线程
    22. 在java中Cyclibarriar和CountdownLatch有什么区别?
    23. 什么是不可变对象,它对写并发应用有什么帮助?
    24. 什么时多线程中的上下文切换
    25. java中用到的线程调度算法是什么
    26. 什么是线程组,为什么在java中不推荐使用
    27. 为什么使用Executor框架比使用应用创建和管理线程好?
    28. java中有几种方法可以实现一个线程
    29. 如何停止一个正在运行的线程
    30. notify()和notifyAll()有什么区别
    31. 什么是Daemon线程?它有什么意义?
    32. CopyOnWriteArrayList可以勇于什么应用场景
    33. 什么叫线程安全?servlet是线程安全的么
    34. volatile有什么作用?能否一句话说明下volatile的应用场景
    35. 为什么代码会重排序
    36. 在java中wait和sleep方法的不同
    37. 一个线程运行时发生异常会怎样
    38. 如何在两个线程间共享数据?
    39. 为什么wait,notify和notifyAll这些方法不在thread类里面
    40. 什么时ThreadLocal变量
    41. java中interrupted和isInterrupted方法的区别
    42. 为什么wait和notify方法要在同步块中调用
    43. 为什么你应该在循环中检查等待条件
    44. java中的同步集合与并发集合有什么区别
    45. 什么是线程池?为什么要使用它?
    46. 怎么检测一个线程是否拥有锁?
    47. 你如何在java中获取线程堆栈信息
    48. Jvm中哪个参数是用来控制线程的栈堆栈小的?
    49. Thread类中的yield方法有什么作用
    50. Java中ConcurrentHashMap的并发度是什么
    51. java中Semaphore是什么
    52. java线程池中submit()和execute()方法有什么区别
    53. 什么是阻塞式方法
    54. java中的ReadWriteLock是什么
    55. volatile变量和atomic变量有什么不同
    56. 可以直接调用Thread类的run()方法么
    57. 如何让正在运行的线程暂停一段时间
    58. 你对线程优先级的理解是什么
    59. 什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing)
    60. 你如何确保main()方法所在的线程是java程序最后结束的线程
    61. 线程之间是如何通信的
    62. 为什么线程通信的方法wait(),notify()和notifyAll()被定义在Object类里
    63. 为什么wait(),notify()和notifyAll()必须在同步方法或者同步块中被调用
    64. 为什么Thread类的sleep()和yield()方法是静态的
    65. 如何确保线程安全
    66. 同步方法和同步块,哪个是更好的选择
    67. 如何创建守护线程
    68. 什么是java Timer类?如何创建一个有特定时间间隔的任务?
    69. 为什么等待和通知实在Object类而不是Thread中声明的?
    70. 为什么java中不支持多重继承
    71. 为什么java不支持运算符重载
    72. 为什么String在Java中是不可变的
    73. 为什么char数组比java中的String更适合存储密码
    74. 如何使用双重检查锁定在java中创建线程安全的单例
    75. 编写java程序时,如何在java中创建死锁并修复它
    76. 如果你的Serializable类包含一个不可序列化的成员,会发生什么?你是如何解决的
    77. 为什么Java中的wait方法需要在synchronized的方法中调用
    78. 你能用Java覆盖静态方法么?如果我在子类中创建相同的方法是编译时错误
    79. 看过HashMap源码么
    80. 讲讲HashMap的实现原理么
    81. HashMap什么时候会进行rehash?put结束后会判断,当size>threshold=负载因子(loadFactor)x容量(capacity);
    82. HashMap什么时候会进行扩容?size>容量(capacity)*0.75
    83. 那HashMap的初始容量设置程多少比较合适呢?16啊
    84. 结合源码说说HashMap在高并发场景中为什么会出现死循环?
    85. JDK1.8中对HashMap做了哪些性能优化
    86. HashMap和HashTable有何不同
    87. HashMap和ConcurrentHashMap的区别
    88. ConcurrentHashMap和LinkeHashMap有什么区别
    89. 为什么ConcurrentHashMap中的链表转红黑树的阈值是8
    90. 什么是ConcurrentSkipListMap?他和ConcurrentHashMap有什么区别?
    91. 还看过其他的源码吗?Spring的源码有了解吗?
    92. java如何实现多线程之间的通讯和协作
    93. 什么是可重入锁(ReentrantLock)?
    94. 当一个线程进入某个对象的一个synchronized的实例方法后,其它线程是否可进入此对象的其它方法
    95. 乐观锁和悲观锁的理解及如何实现,有哪些实现方式?
    96. SynchronizedMap和ConcurrentHashMap有什么区别?