zoukankan      html  css  js  c++  java
  • java 面试 --java 基础

    1 、ArrayList、Vector、LinkedList 之间的 区别?

    ArrayList:底层数组,查询快,增删慢,线程不安全,效率高
    Vector:底层数组,查询快(由于线程安全,其实查询也不快),增删慢,线程安全,效率低
    LinkedList:底层双重链表,查询慢,增删快,线程不安全,效率高。

    3、列举Collections工具类常用方法?

    Collections.sort(list);按自然顺序排序;
    Collections.binarySearch(list,key); 二分查找;
    Collections.reverse(list) 反转;
    Collections.shuffle(list) 随机替换;

    4、final、finally、finalize的区别?

    final:修饰类,不能被继承,修饰方法不能被重写,修饰变量是常量
    finally:是异常处理的一部分,用于释放资源,一般来说代码肯定会执行,除非在执行finally之前,jvm退出了。
    finalize:是Object的一个方法,用于垃圾回收。


    5、如果catch里有return语句,请问finally还会执行吗?如果会是在return前还是return后?

    会,在return前执行。不过finally的逻辑不会改变return的返回值。

    6、实现多线程有几种方式?分别是什么

    有三种方式,继承Thread类,实现runnable接口,实现callable接口

    7、runnable与callable的区别?

    Callable任务执行后可以有返回值,而runnable不能返回值,call方法可以抛出异常,而run方法只能try catch,运行callable任务可以拿到一个Future对象,callable依赖线程池。

    8、使用线程池的好处?

    使用线程池提高系统的性能,减少创建,销毁线程的资源开销,因为代码结束后,线程不会死亡,而是再回到线城池,等待下一个对象的调用。

     
     
    9、线程的生命周期?

    10、sleep()和wait()的区别?

        Sleep  会把执行机会给其他线程,到时后自动恢复,不会释放对象锁,

        wait    会释放对象锁,只有对象发出notify或notifyAll才准备获取对象锁。

    11 、join()


    join  单核cpu运行多线程时底层实现原理是多个线程间切换,由于cpu的处理速度很快,看上去像多个线程同时运行。

             那么我们如何实现让线程T1,T2,T3,在T1执行完成后才执行T2,T2执行完成后才执行T3,

             也就是线程的串行化,通过Thread类的join方法就可以实现。

    11、run()和start()的区别?

    Run仅仅是调线程执行的普通方法,start首先会启动线程,由Jvm调用run方法。

     

  • 相关阅读:
    CrackMe17
    逆向按钮事件定位
    CrackMe20
    CrackMe14
    CrackMe09
    CrackMe08
    分布式事务seata
    SpringBoot自动注入原理初解与实现
    InnoDB事务日志(redo log 和 undo log)详解
    高频面试题:Spring 如何解决循环依赖?
  • 原文地址:https://www.cnblogs.com/ou-pc/p/9656761.html
Copyright © 2011-2022 走看看