美文网首页
java基础

java基础

作者: 一步一看 | 来源:发表于2018-09-27 20:48 被阅读0次

    根据以下链接来解答的面试问题


    https://www.jianshu.com/p/62311ac9add7

    java史上最全的面试题目


    java基础


    JAVA中的几种基本数据类型是什么,各自占用多少字节。

    参考链接

    bit --位:计算机中二进制的一个位数

    byte --字节: 计算机存储容量的基本单位,一个字节由8个二进制数组成,在计算机内部,一个字节可以表示一个数据也可以表示一个英文字母,两个字节表示一个汉字

    1Byte=8bit 

    1KB=1024Byte(字节)=8*1024bit

    1MB=1024KB        1GB=1024MB        1TB=1024GB

    java基本数据类型

    int    32bit    4byte

    short    16bit    2byte

    long    64bit    8byte

    byte     8bit    1byte

    char     16bit    2byte

    float     32bit    4byte

    double     64bit

    boolean    1bit

    String类能被继承吗,为什么。

    不可以

    因为String类有final修饰符修饰,final修饰的类不能被继承,实现细节不允许改变

    关于final:深入理解final关键字

    当final变量是基本数据类型以及String类型时,如果在编译期间能知道它的确切值,则编译器会把它当做编译期常量使用

    String,Stringbuffer,StringBuilder的区别

    三者区别:

    String被final修饰,无法被继承,确认以后无法改变,如果+改变是相当于新建一个新的String对象

    StringBuffer线程安全,被synchronized关键字修饰,

    StringBuilder相较于Buffer线程不安全,效率高10%~15~左右

    ArrayList和LinkedList有什么区别。参考链接 

    linkdelist在从断点增加和删除更快,更方便,在数据多的时候,ArrayList的索引和查找删除插入更快速。

    ArrayList和LinkedList在性能上各有优缺点,都有各自所适用的地方,总的说来可以描述如下: 

    1.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。

    2.在ArrayList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。

    3.LinkedList不支持高效的随机元素访问。

    4.ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间

    链表和数组的区别。    参考链接

    时间复杂度的计算:计算方式 

    讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当new的时候,他们的执行顺序。参考链接

    执行顺序:

    父类静态代变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量(父类实例成员变量)、父类构造函数、子类非静态变量(子类实例成员变量)、子类构造函数。 

    java中int和Integer的区别 答案链接

    最关键的是Integer直接声明时,

    在-128-127之间是直接从常量池中取,超过范围会去新建对象,从堆空间中新建

    IInteger a = 127   

    Integer b = 127

    a==b // true

    Integer a1 = 128;

    Integer b2 = 128;

    a2==b2 //false

    用过哪些Map类,都有什么区别,HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理分别是什么,比如存储方式,hashcode,扩容,默认容量等。

    JAVA8的ConcurrentHashMap为什么放弃了分段锁,有什么问题吗,如果你来设计,你如何设计。

    有没有有顺序的Map实现类,如果有,他们是怎么保证有序的。

    抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么。

    继承和聚合的区别在哪。

    IO模型有哪些,讲讲你理解的nio ,他和bio,aio的区别是啥,谈谈reactor模型。反射的原理,反射创建类实例的三种方式是什么。

    反射中,Class.forName和ClassLoader区别 。

    描述动态代理的几种实现方式,分别说出相应的优缺点。

    动态代理与cglib实现的区别。

    为什么CGlib方式可以对接口实现代理。

    final的用途。

    写出三种单例模式实现 。

    如何在父类中为子类自动完成所有的hashcode和equals实现?这么做有何优劣。

    请结合OO设计理念,谈谈访问修饰符public、private、protected、default在应用设计中的作用。

    深拷贝和浅拷贝区别。数组和链表数据结构描述,各自的时间复杂度。

    error和exception的区别,CheckedException,RuntimeException的区别。

    请列出5个运行时异常。

    在自己的代码中,如果创建一个java.lang.String类,这个类是否可以被类加载器加载?为什么。

    说一说你对java.lang.Object对象中hashCode和equals方法的理解。在什么场景下需要重新实现这两个方法。

    在jdk1.5中,引入了泛型,泛型的存在是用来解决什么问题。

    这样的a.hashcode() 有什么用,与a.equals(b)有什么关系。

    有没有可能2个不相等的对象有相同的hashcode。Java中的HashSet内部是如何工作的。

    什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决。

    java8的新特性。

    相关文章

      网友评论

          本文标题:java基础

          本文链接:https://www.haomeiwen.com/subject/nfseoftx.html