zoukankan      html  css  js  c++  java
  • face task

    ok题:

    1.equals 和== 区别

    答:== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同 一个对象。(基本数据类型 == 比较的是值,引用数据类型 == 比较的是内存地址)

    equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况: 情况1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时, 等价于通过“==”比较这两个对象。

    情况

    2:类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来两个对象 的内容相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。

    2.hashmap 原理 和jdk解决重新分配死锁

    HashMap实现通过数组加链表,JDK1.8在计算hashcode值时进行了优化,同时也把链表进行升级为红黑二叉树加快结点遍历速度,程序有时执行HashMap的get()方法时会出现卡死(死锁发生)问题,原因是因为扩容时链表部分的指针产生了循环指向引用,导致执行get()遍历到此结点时发生死循环,JDK1.7在扩容时是直接头插法倒叙排一遍,JDK1.8是打乱顺序排一遍,但是如果恰好打乱后的数据某一段顺序和之前一样,还是会出现死锁问题!
    https://blog.csdn.net/bibiboyx/article/details/98756621

    3.jdk8新特性有哪些

    4.currenthashmap 1.8改造

    **改进一:取消segments字段,直接采用transient volatile HashEntry<K,V>[] table保存数据,采用table数组元素作为锁,从而实现了对每一行数据进行加锁,进一步减少并发冲突的概率。**

    **改进二:将原先table数组+单向链表的数据结构,变更为table数组+单向链表+红黑树的结构。对于hash表来说,最核心的能力在于将key hash之后能均匀的分布在数组中。如果hash之后散列的很均匀,那么table数组中的每个队列长度主要为0或者1。但实际情况并非总是如此理想,虽然ConcurrentHashMap类默认的加载因子为0.75,但是在数据量过大或者运气不佳的情况下,还是会存在一些队列长度过长的情况,如果还是采用单向列表方式,那么查询某个节点的时间复杂度为O(n);因此,对于个数超过8(默认值)的列表,jdk1.8中采用了红黑树的结构,那么查询的时间复杂度可以降低到O(logN),可以改进性能。**

    5.reetenlock的公平锁和非公平锁

    6.syn同步锁实现原理

    7.线程池原理

    8.其中Java 面向对象编程三大特性:抽象 封装 继承 多态

    面向对象五大基本原则是:单一、开放封闭、里氏替换、依赖倒置、接口分离原则

    9.形成死锁的四个必要条件是什么 
    1. 互斥条件:线程(进程)对于所分配到的资源具有排它性,即一个资源只 能被一个线程(进程)占用,直到被该线程(进程)释放 
    2. 请求与保持条件:一个线程(进程)因请求被占用资源而发生阻塞时,对 已获得的资源保持不放。 
    3. 不剥夺条件:线程(进程)已获得的资源在末使用完之前不能被其他线程 强行剥夺,只有自己使用完毕后才释放资源。 
    4. 循环等待条件:当发生死锁时,所等待的线程(进程)必定会形成一个环 路(类似于死循环),造成永久阻塞 

     10.创建线程有四种方式:
    - 继承 Thread 类;
    - 实现 Runnable 接口;
    - 实现 Callable 接口;
    - 使用 Executors 工具类创建线程池继承 Thread 类

  • 相关阅读:
    分页小算法
    幻影粒子游戏开发
    X文件的导出系列1——静态模型
    JavaScript 强行弹出窗口 与 无提示关闭页面
    SqlHelper中使用事务
    一个不错的WEB打印解决方案!
    【转载】3层架构应用AspNetPager分页 GridView分页
    c#操作在word指定书签插入文字
    多数据库事务处理[改写]
    rdlc报表使用技巧一(转)
  • 原文地址:https://www.cnblogs.com/lvgg/p/15255314.html
Copyright © 2011-2022 走看看