zoukankan      html  css  js  c++  java
  • Java 面试题

    1.解释实现多线程的几种方法? 

    一 Java 线程可以实现 Runnable 接口或者继承 Thread 类来实现,当你打算多重继承时,优先选择实现 Runnable。 

    2.Thread.start ()与 Thread.run ()有什么区别? 

    Thread.start ()方法(native)启动线程,使之进入就绪状态,当 cpu 分配时间该线程时,由 JVM 调度执行 run ()方法。 

    3.为什么需要 run ()和 start ()方法,我们可以只用 run ()方法来完成任务吗? 

    我们需要 run ()&start ()这两个方法是因为 JVM 创建一个单独的线程不同于普通方法的调用,所以这项工作由线程的 start 方法来完成,start 由本地方法实现,需要显示地被调用,使用这俩个方法的另外一个好处是任何一个对象都可以作为线程运行,只要实现了 Runnable 接口,这就避免因继承了 Thread 类而造成的 Java 的多继承问题。 

    Collection和Collections的区别   

     
     

    Collection是个java.util下的接口,它是各种集合结构的父接口。

    Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。

    Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 SetList)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。

    Collection  
    ├List  
    │├LinkedList  
    │├ArrayList  
    │└Vector  
    │ └Stack  
    └Set 

    collections 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。它包含在 collection 上操作的多态算法,即“包装器”,包装器返回由指定 collection 支持的新 collection,以及少数其他内容。 如果为此类的方法所提供的 collection 或类对象为 null,则这些方法都会抛出 NullPointerException

     Java代码

    1. import java.util.ArrayList;   
    2. import java.util.Collections;   
    3. import java.util.List;   
    4.   
    5. public class TestCollections {   
    6.        
    7.     public static void main(String args[]) {   
    8.         //注意List是实现Collection接口的   
    9.         List list = new ArrayList();   
    10.         double array[] = { 11211123456231 };   
    11.         for (int i = 0; i < array.length; i++) {   
    12.             list.add(new Double(array[i]));   
    13.         }   
    14.         Collections.sort(list);   
    15.         for (int i = 0; i < array.length; i++) {   
    16.             System.out.println(list.get(i));   
    17.         }   
    18.         // 结果:23.0 111.0 112.0 231.0 456.0   
    19.     }   
    20. }  
     

    最有效率的方法算出2乘以8等於几?

    用移位运算 int a=2<<3;
    a就是2乘以8 最后结果是16 这是最省内存 最有效率的方法

    这个方法确实高效率的。我来解释一下:
    2的二进制是10 在32位存储器里面是0000 0000 0000 0010
    左移三位后变成 0000 0000 0001 0000 也就是16

    再来观察左移三位,需要消耗3个机器时钟,如果能在一个时钟内完成,效率就更高了。
    a=2 & 16 只要一个机器时钟。^_^,效率是不是更高呢?

  • 相关阅读:
    python自动化之利用configparser库获取配置文件中的section,option,value值
    python自动化之pymysql库连接mysql数据库封装成类
    python中封装pymysql库连接mysql数据库
    python自动化之requests库封装
    OS模块获取文件相对路径
    元素定位之xpath定位详解
    Jmeter工具-连接postgresql数据库+提取参数并应用到下个接口中
    JDK安装与环境变量配置
    python使用psycopg2连接postgresql数据库
    SQL的in的参数化查询
  • 原文地址:https://www.cnblogs.com/dnxf/p/3738079.html
Copyright © 2011-2022 走看看