Java基础大全

原创
2019/04/24 08:32
阅读数 26
  1. 八种基本数据类型的大小,以及他们的封装类

     

    byte,char,short,int,long,float,double,boolean

     

    Byte,Character,Short,Integer,Long,Float,Double,Boolean     int是基本类型,Integer是保证类;Integer默认值为null,int默认值为0;Integer需要实例才能使用,实例对象放在堆中,对象的引用放在栈里

    1. 引用数据类型

       

      类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只是一个集合的工具类

 

    1. try?catch?finally,try里有return,finally还执行么

       

      会执行

       

      Excption与Error包结构,OOM你遇到过哪些情况,SOF你遇到过哪些情况

    2.  

      https://blog.csdn.net/qiuchaoxi/article/details/79788993

       

      Java(OOP)面向对象的三个特征与含义

       

      Override和Overload的含义去区别

    3.  

       

      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的区别

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部