-
八种基本数据类型的大小,以及他们的封装类
byte,char,short,int,long,float,double,boolean
Byte,Character,Short,Integer,Long,Float,Double,Boolean int是基本类型,Integer是保证类;Integer默认值为null,int默认值为0;Integer需要实例才能使用,实例对象放在堆中,对象的引用放在栈里
-
引用数据类型
类class,接口interface,枚举类Enum,
Switch能否用string做参数
Jdk1.7以前不能使用string作为参数,1.7开始可以使用
而原理是通过调用string.hashcode方法将string类型转换为int类型
equals与==的区别
equals是比较两个对象属性是否相同,常用于比较对象
==是比较两个值是否相同,引用类型是比较两个地址值是否相同
自动装箱,常量池
Object有哪些公用方法
Wait,notify,toString,equals,hashcode,notifyAll,getClass
Java的四种引用,强弱软虚,用到的场景
New Object object = ‘hello’ 强引用 JVM不会回收,除非定义为null
SoftReference 软引用 JVM在内存充足时,不会回收,内存不足时才会回收
WeakReference 弱引用 JVM均会回收,无论内存是否充足
Hashcode的作用
获得hashcode值
HashMap的hashcode的作用
获得hashcode值,用于数据插入时的判断
为什么重载hashCode方法?
原生的hashCode是Object类下的方法,比较的内存地址是否相同,两个对象,在重写后的equals比较下返回true,但是原生的hashcode指向的内存地址不同,就会认为是两个不同的对象,不满足实际情况
ArrayList、LinkedList、Vector的区别
Arraylist和Vector底层都是数组实现,
arraylist是线程不安全的,
vector是线程安全的,所有的方法是同步的
LinkedList底层是通过双链表实现的,非线程安全
数组初始容量是10,扩容是1.5倍的
String、StringBuffer与StringBuilder的区别
StringBuffer和StringBuilder都是用于大字符串存储,
StringBuilder是线程不安全的
Map、Set、List、Queue、Stack的特点与用法
HashMap和HashTable的区别
Hashmap是线程不安全的,
Hashtable是线程安全的
Hashtable运用了syn锁
JDK7与JDK8中HashMap的实现
原先是数组+链表
1.8中变成了数组+链表,链表长度超过8时,变成红黑树
HashMap和ConcurrentHashMap的区别,HashMap的底层源码
ConcurrentHashMap本质上也是数组+链表,他是由segment数组和hashEntry数组组成,每个hashEntry中是一个链表结构。segment是一个可重入的reentrantLock,当要对hashEntry数组下的数据进行操作时,先需要获得segment锁
ConcurrentHashMap能完全替代HashTable吗
ConcurrentHashMap是弱一致性的
HashTable是强一致性的
如果某个Segment实例中的put将一个Entry加入到了table中,在未执行count赋值操作之前有另一个线程执行了同一个Segment实例中的get,来获取这个刚加入的Entry中的value,那么是有可能取不到的!
为什么HashMap是线程不安全的
操作没有上锁
如何线程安全的使用HashMap
不考虑多线程情况下用hashmap
Put方法前,加syn操作
操作hashmap前加个分布式锁
多并发情况下HashMap是否还会产生死循环
1.7以前hashmap中的链表插入采用头插入法,这种情况下会有死循环造成,1.8中改为尾插入法,不会造成死循环
TreeMap、HashMap、LindedHashMap的区别
Hashmap无序,线程不安全
LindedHashMap有序
TreeMap同样有序
Collection包结构,与Collections的区别
-
Collection是集合类的顶级接口,子接口有Set,Map,List Collecitons只是一个集合的工具类
-
-
try?catch?finally,try里有return,finally还执行么
会执行
Excption与Error包结构,OOM你遇到过哪些情况,SOF你遇到过哪些情况
-
https://blog.youkuaiyun.com/qiuchaoxi/article/details/79788993
Java(OOP)面向对象的三个特征与含义
Override和Overload的含义去区别
-
override重写 方法的参数个数及类型,以及返回值类型均不可发生变化,常用语接口实现类下重写某个方法
overload重载,方法的入参个数及类型发生变化,返回值类型变化与否均可
Interface与abstract类的区别
Static?class?与non?static?class的区别
java多态的实现原理
foreach与正常for循环效率对比
Java?IO与NIO
java反射的作用于原理
泛型常用特点
解析XML的几种方式的原理与特点:DOM、SAX
Java1.7与1.8,1.9,10 新特性
设计模式:单例、工厂、适配器、责任链、观察者等等
JNI的使用
AOP是什么
OOP是什么
AOP与OOP的区别
-