@chenxuxiong
2016-05-22T07:23:12.000000Z
字数 2143
阅读 419
j2se问题衍生
一、 集合问题
1.HashMap相关
- hashMap线程安全吗?
- hashMap的数据结构。
- hashMap扩容方式?
- hashMap怎样去重。(如何处理冲突的?)
- 如果key中放的是Object值,该怎么做? \
回答到重写hashCode和equals方法
- 如果别人知道怎么实现的,故意构造相同的hash的字符串进行攻击,怎么处理?
- jdk1.8中如何处理?
- jdk1.7中如何处理?
- 如何去重后还能有序?
- 与Hashtable有什么区别?
2.ConcurrentHashMap相关
- ConcurrentHashMap线程安全吗?
- 是如何实现的?1.8和1.7中分别怎么实现的?
- 里面的锁是怎样的锁?
- 它的锁是怎样实现的?(ReetrantLock)
3.LinkedHashMap相关
4.TreeMap相关
- TreeMap底层结构?
- TreeMap如何去重?
- 与HashMap性能效率相比如何?
- TreeMap添加一个元素的过程。
- TreeMap具体实现。
5.HashSet相关
- HashSet底层结构。->HashMap
- 如何扩容。
6.ArrayList,LinkedList,Vector,Stack,Queue,Heap相关
- ArrayList,LinkedList,Vector的区别
- 提供两个Stack,如何实现一个队列
7.Collections的常用方法
- 二分查找
- 排序
- 根据对象本身comparable,或者外部的comparator
- 与TreeMap,TreeSet类似
- min,max,copy
二、设计模式
1.单例模式
> 代码编写
* 饿汉式
* 懒汉式
* 双重检验锁
* 内部类式
* 枚举式
2.生产者消费者模式
3.策略模式
- 在原有的代码内插入一段代码
- 利用接口实现动态方式
- 使用场景:comparator,runnable
- 高内聚,低耦合,可扩展
4.观察者模式
三、jdk1.7和jdk1.8的新特性
1.jdk1.7
2.jdk1.8
- 1.lambda表达式
- 2.接口内预先添加一个非抽象方法的实现,需要用default关键字修饰(扩展方法)
- 3.jvm永久代移除,以元空间代替
- 4.集合类改变 hashMap,concurrentHashmap
四、java关键字
- transient
- static
- final
- private,protected,public,default区别
- volatile
- synchronized
五、java并发编程基础
- 1.如何实现多线程并发
- 2.CAS是什么
- 3.如何实现线程同步
- 4.Thread和Runnable的区别
- 5.对volatile的理解
- 6.synchronized与reentrantLock的区别
- 7.java有什么锁,分别讲一下。
- 8.ThreadLocal的作用
- 9.wait()和sleep()的区别
- 10.线程池的用法与优势
- 11.多线程的优缺点
六、jvm基础问题
- 1.jvm的内存模型,每个区域放的什么东西。
- 2.堆的每个分区的特点
- 3.jvm的四种引用。
- 4.什么时候会出现栈溢出,堆溢出,永久代溢出,内存泄漏。
- 5.jvm什么时候进行垃圾回收,回收什么垃圾
- 6.有什么垃圾回收算法。
- 7.jvm的收集器
- 分别如何工作
- 回收哪堆内那一部分
- 采用哪种算法
- 什么时候会进行停顿(stop the world)
- 如何与fullGC进行合作
- cms收集器重点
- 8.jvm类加载过程
- 9.jvm的双亲委派模型
- 10.minor GC和Full GC分别发生在什么时候
- 11.jvm调试工具 jconcole,jstack,jmap
七、spring框架