一:集合
1. 常用的集合?
List ,Set ,Map
List : 有序,可重复的集合, ArrayList和LinkedList有什么区别?
Set : 无序,不可重复。HashSet如何保证元素不重复?
Map: 数据结构?TreeMap,LinkedHashMap,HashMap 区别?
HashMap 的 put 过程?扩容过程?扩容后的大小为什么是2的倍数?时间复杂度?1.7和1.8的区别,JDK1.8之后做了哪些优化?
线程安全的Map有哪些?
HsahTable,ConcurrentHashMap 如何实现线程安全?
2. 项目中用过Java8吗?
JAVA8有哪些新特性?
lambda 和 Stream流 ,Stream中常用的操作? java8中的 foreach 循环的效率问题有了解过吗?
3. Object类中有哪些方法?简单描述一下他们的作用?
1.clone方法 2.getClass方法 3.toString方法 4.finalize方法 5.equals方法 6.hashCode方法
7.wait方法 8.notify方法 9.notifyAll方法
重写过 equals和hashCode 方法吗?为什么要重写?
4. 说几个开发中常见的异常?
空指针异常,数组越界异常,找不到类,方法异常,运算异常,类型转换异常
5. String,StringBuffer, StringBuilder区别?线程安全?
String 类是 final 修饰的,final关键字的作用?
二:多线程
1. 创建线程的几种方式?
实现 Runnable 接口
实现 Callable 接口
继承 thread 类
使用 Executors 工具类创建线程池
2.实现Runnable 接口和Callable 接口有什么区别?
一个有返回值一个没有
3.工作中有用过线程池吗?好处?
阿里巴巴开发规范中明确不能使用线程池Executors创建线程,而是使用 ThreadPoolExecutor 类知道为什么吗?
ThreadPoolExecutor 类中构造器的核心参数?
corePoolSize:核心池的大小,maximumPoolSize:线程池最大线程数,workQueue:一个阻塞队列,用来存储等待执行的任 务,keepAliveTime:表示线程没有任务执行时最多保持多 久时间会终止,handler:表示当拒绝处理任务时的策略
2. 线程间的通讯方式?
1. 同步,synchronized 关键字 2. while 轮询 3. wait 和 notify 机制
3. synchronized 关键字的作用?项目中是否用到?底层实现?还用过哪些锁?
修饰类,方法,代码块,保证线程安全
4. volatile作用?
1. 保证线程可见行 2. 禁止指令重排序
三:框架
1. Spring
spring的Aop和IOC理解?项目应用?
Aop:面向切面编程。实现日志,权限。
底层实现?动态代理的两种方式,JDK和Cglib的区别?除了代理还了解哪些常用的设计模式?
IOC:控制反转, 以前代码控制现在容器控制,控制权发生转移,叫控制反转。
spring常用的注解?作用?@Autowired注解和@Resource的区别?Bean的加载过程?