Java基础问题

  • Java的三大特性
    封装--->就是将类的信息隐藏在类的内部,不允许外部程序直接进行访问,而是通过该类的方法实现对隐藏信息的操作
    继承--->就是类与类的一种关系,在Java中只能单继承,多实现
    多态--->多态是指对象的多种形态,继承是显示多态的基础

  • 面向对象的优势有哪些
    易维护性---> 由于继承的存在,即使改变需求那么维护也是在局部的模块进行的,方便效率高
    质量高--->在设计的时候可以重用现有的代码
    易扩展--->多态的特性就可以提现出来Java代码的易扩展性

  • overrede和overload的区别
    方法重写--->它的参数列表与返回值的类型必须与父类的方法保持一致,访问的权限不能低于父类该方法的权限
    方法的重载--->方法名必须保持一致,参数列表中参数的顺序,个数,可以不同,与返回值无关

  • final finally finalize的区别
    final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承
    finally 异常处理语句结构的一部分,表示总是执行
    finalze object类的一个方法,在垃圾回收器执行的时候回调用

  • ==和equals的区别
    equals是object的方法,==是运算符
    ==如果比较的是节基本数据类型,则比较的是值是否相等,如果比较的是引用数据类型,则比较的是地址值是否相同
    equals用来比较两个对象的内容是否相等,不能用于基本数据类型

  • wait与sleep的区别
    wait是object的方法,sleep是Thread的方法
    wait在等待的时会释放锁资源,sleep在等待的时候回持有锁资源
    wait通常用于线程间的交互,sleep通常被用于暂停执行

  • HashMap与HashTable的区别
    HashMap是线程不安全的,HashTable是线程安全的
    HashMap的效率要高于HashTable
    HashMap是允许null值与null键的,HashTable不允许null值null键

  • 对线程池的理解
    降低资源消耗,通过重复利用已创建的线程降低线程的创建和销毁造成的消耗
    提高响应速度,任务到达时,任务可以不需要等到线程创建就可以直接执行
    提高线程的可管理性,可以统一的进行分配 调优和监控

  • 什么时候造成线程死锁,遇到死锁怎么解决
    死锁:指多个线程因竞争资源而造成的一种互相等待其他线程释放锁
    资源的一种状态,如果无外力介入,这些进程将无法继续推进

    产生死锁的条件?
    互斥条件:线程要求所分配的资源进行排他性控制,意思就是说,在某一个时间段内,资源仅为一个线程控制,此时若有其他的线程请求该资源,则线程请求只能等待
    不剥夺的条件:就是线程所获得的资源在未使用完的情况下,不能被其他的线程夺走,意思就是说该线程所持有的资源只能由该线程自己释放(主动释放)
    请求和保持的条件:线程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其他的线程所以占有,此时请求的进程被阻塞,但对自己已经获得的资源保持不变
    循环等待条件:存在一种资源的循环等待链,链中的每一个线程都持有资源,并由提出了对新资源的请求

    如何避免线程的死锁?
    加锁顺序(线程按照一定的顺序加锁)
    加锁时限(线程尝试取锁的时候加上一定的时限,超过时限就放弃对
    该锁的请求,并释放自己占有的锁资源)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。