美文网首页Java
面试题汇总(Java基础)

面试题汇总(Java基础)

作者: 王勇1024 | 来源:发表于2019-10-29 09:58 被阅读0次

    Timer执行任务会有什么缺点?

    Timer执行定时任务只会创建一个线程。
    Timer是基于绝对时间的调度机制,对系统时间敏感。
    Timer存在线程泄露问题(Timer不捕获异常,当抛出一个未检查异常时线程将终止)。

    深拷贝和浅拷贝区别是什么?

    对于基本数据类型,实际上是拷贝的它的值,但是对于对象而言,其实赋值的只是这个对象的引用,将原对象的引用传递过去,他们实际上还是指向的同一个对象。
    1、浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝。

    == 和 equals 的区别是什么?

    基本数据类型他们之间的比较,应用双等号(==),比较的是他们的值。
    复合数据类型(类),当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址

    字符串比较

    # s1 == s2
    String s1 = "Monday";
    String s2 = "Monday";
    
    # s1 != s2
    String s1 = "Monday";
    String s2 = new String("Monday");
    
    # s1 == s2
    String s1 = "Monday";
    String s2 = new String("Monday");
    s2 = s2.intern();
    
    浅拷贝

    2、深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。

    深拷贝

    for、foreach和iterator的区别

    1. 使用 Iterator 的好处在于可以使用相同方式去遍历集合中元素,而不用考虑集合类的内部实现(只要它实现了 java.lang.Iterable 接口)
    2. 使用for/foreach如果在循环的过程中调用集合的remove()方法,就会导致循环出错

    强引用、软引用、弱引用、虚引用

    • 强引用所指向的对象在任何时候都不会被系统回收。JVM宁愿抛出OOM异常;
    • 当堆使用率临近阈值时,才会去回收软引用对象,软引用可用于实现对内存敏感的Cache;
    • 在系统GC时,只要发现弱引用,不管系统堆空间是否足够,都会将对象进行回收;
    • 当试图通过虚引用的get()方法取得引用对象时,总是返回null,虚引用的作用在用跟踪垃圾回收过程。

    参考资料

    https://github.com/Snailclimb/JavaGuide
    Java面试题汇总

    相关文章

      网友评论

        本文标题:面试题汇总(Java基础)

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