### Java基础
1、List 和 Set 的区别?
2、HashSet 是如何保证不重复的?
3、HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)?
4、HashMap 的扩容过程?
5、HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的?
6、final finally finalize 区别?
7、强引用 、软引用、 弱引用、虚引用?
8、Java反射?
9、Arrays.sort 实现原理和 Collection 实现原理?
10、LinkedHashMap的应用?
11、cloneable接口实现原理?
12、异常分类以及处理机制?
13、wait和sleep的区别?
14、数组在内存中如何分配
1、集合类以及集合框架;HashMap与HashTable实现原理,线程安全性,hash冲突及处理算法;ConcurrentHashMap
2、进程和线程的区别?
3、Java的并发、多线程、线程模型?
4、什么是线程池,如何使用?
5、数据一致性如何保证?
*注意点:*
Synchronized关键字,类锁,方法锁,重入锁;
6、Java中实现多态的机制是什么?
7、如何将一个Java对象序列化到文件里?
8、说说你对Java反射的理解?
9、同步的方法;多进程开发以及多进程应用场景?
10、在Java中wait和seelp方法的不同?
*注意点:*
最大的不同是在等待时wait 会释放锁,而sleep 一直持有锁。wait 通常被用于线程间交互,sleep 通常被用于暂停执行。
11、synchronized 和volatile 关键字的作用和区别?
*注意点:*
volatile 本质是在告诉jvm 当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;
synchronized 则是锁定当前变量,只有当前线程可以访问该变量,
其他线程被阻塞住。
(1).volatile 仅能使用在变量级别;synchronized 则可以使用在变量、方法、和类级别的
(2).volatile 仅能实现变量的修改可见性,并不能保证原子性;synchronized 则可以保证变量的修改可见性和原子性
(3).volatile 不会造成线程的阻塞;synchronized 可能会造成线程的阻塞。
(4).volatile 标记的变量不会被编译器优化;synchronized 标记的变量可以被编译器优化
12、服务器只提供数据接收接口,在多线程或多进程条件下,如何保证数据的有序到达?
13、ThreadLocal原理,实现及如何保证Local属性?
14、String StringBuilder StringBuffer对比?
15、你所知道的设计模式有哪些?
*注意点:*
(Java 中一般认为有23 种设计模式,我们不需要所有的都会,但是其中常用的几种设计模式应该去掌握。下面列出了所有的设计模式。
需要掌握的设计模式我单独列出来了,当然能掌握的越多越好。
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
)
16、Java如何调用c、c++语言?
17、接口与回调;回调的原理;写一个回调demo;
18、泛型原理,举例说明;
*注意点:*
解析与分派;
19、抽象类与接口的区别;应用场景;抽象类是否可以没有方法和属性;
20、静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?
21、修改对象A的equals方法的签名,那么使用HashMap存放这个对象实例的时候,会调用哪个equals方法?
22、说说你对泛型的了解?
23、Java的异常体系?
24、如何控制某个方法允许并发访问线程的个数?
25、动态代理的区别,什么场景使用?
26、Dex加载过程和优化方式?
27、Jvm和Gc机制?
### Java 并发
1、synchronized 的实现原理以及锁优化?
2、volatile 的实现原理?
3、Java 的信号灯?
4、synchronized 在静态方法和普通方法的区别?
5、怎么实现所有线程在等待某个事件的发生才会去执行?
6、CAS?CAS 有什么缺陷,如何解决?
7、synchronized 和 lock 有什么区别?
8、Hashtable 是怎么加锁的 ?
9、HashMap 的并发问题?
10、ConcurrenHashMap 介绍?1.8 中为什么要用红黑树?
11、AQS 12、如何检测死锁?怎么预防死锁?
13、Java 内存模型?
14、如何保证多线程下 i++ 结果正确?
15、线程池的种类,区别和使用场景?
16、分析线程池的实现原理和线程的调度过程?
17、线程池如何调优,最大数目如何确认?
18、ThreadLocal原理,用的时候需要注意什么?
19、CountDownLatch 和 CyclicBarrier 的用法,以及相互之间的差别?
20、LockSupport工具
21、Condition接口及其实现原理
22、Fork/Join框架的理解
23、分段锁的原理,锁力度减小的思考
24、八种阻塞队列以及各个阻塞队列的特性
### Spring
1、BeanFactory 和 FactoryBean?
2、Spring IOC 的理解,其初始化过程?
3、BeanFactory 和 ApplicationContext?
4、Spring Bean 的生命周期,如何被管理的?
5、Spring Bean 的加载过程是怎样的?
6、如果要你实现Spring AOP,请问怎么实现?
7、如果要你实现Spring IOC,你会注意哪些问题?
8、Spring 是如何管理事务的,事务管理机制?
9、Spring 的不同事务传播行为有哪些,干什么用的?
10、Spring 中用到了那些设计模式?
11、Spring MVC 的工作原理?
12、Spring 循环注入的原理?
13、Spring AOP的理解,各个术语,他们是怎么相互工作的?
14、Spring 如何保证 Controller 并发的安全?
### JVM
1、详细jvm内存模型?
2、讲讲什么情况下回出现内存溢出,内存泄漏?
3、说说Java线程栈
4、JVM 年轻代到年老代的晋升过程的判断条件是什么呢?
5、JVM 出现 fullGC 很频繁,怎么去线上排查问题?
6、类加载为什么要使用双亲委派模式,有没有什么场景是打破了这个模式?
7、类的实例化顺序?
8、JVM垃圾回收机制,何时触发MinorGC等操作?
9、JVM 中一次完整的 GC 流程(从 ygc 到 fgc)是怎样的?
10、各种回收器,各自优缺点?
*注意点:*
重点CMS、G1
11、各种回收算法?
12、说下OOM错误,stackoverflow错误,permgen space错误?
***************************************