java牛客错题 2020年9月16日

  1. 下面有关java classloader说法错误的是?

    正确答案: C 你的答案: C (正确)

    Java默认提供的三个ClassLoader是BootStrap ClassLoader,Extension ClassLoader,App ClassLoader
    ClassLoader使用的是双亲委托模型来搜索类的
    JVM在判定两个class是否相同时,只用判断类名相同即可,和类加载器无关
    ClassLoader就是用来动态加载class文件到内存当中用的
    解释:
    JVM在判定两个class是否相同时,不仅要判断两个类名是否相同,而且要判断是否由同一个类加载器实例加载的。
    一个jvm中默认的classloader有Bootstrap ClassLoader、Extension ClassLoader、App ClassLoader,分别各司其职:
    
    Bootstrap ClassLoader     负责加载java基础类,主要是 %JRE_HOME/lib/ 目录下的rt.jar、resources.jar、charsets.jar和class等
    Extension ClassLoader      负责加载java扩展类,主要是 %JRE_HOME/lib/ext 目录下的jar和class
    App ClassLoader           负责加载当前java应用的classpath中的所有类。
    classloader 加载类用的是全盘负责委托机制。 所谓全盘负责,即是当一个classloader加载一个Class的时候,这个Class所依赖的和引用的所有 Class也由这个classloader负责载入,除非是显式的使用另外一个classloader载入。
    所以,当我们自定义的classlo ader加载成功了 com.company.MyClass以后,MyClass里所有依赖的class都由这个classLoader来加载完成。
    
  2. 下面有关java实例变量,局部变量,类变量和final变量的说法,错误的是?

    正确答案: B 你的答案: C (错误)

    实例变量指的是类中定义的变量,即成员变量,如果没有初始化,会有默认值。
    局部变量指的是在方法中定义的变量,如果没有初始化,会有默认值
    类变量指的是用static修饰的属性
    final变量指的是用final 修饰的变量
    
    类变量不就是ClassName.variableName吗。
    解释:
    局部变量必须有初始值。
    
  3. 以下多线程对int型变量x的操作,哪个不需要进行同步()

    正确答案: D 你的答案: D (正确)

    ++x
    x=y
    x++
    x=1
    自我感觉是赋值的话,不涉及到线程问题,而X++,或者变量之间的赋值问题都涉及到先后顺序。肯定会导致脏数据等问题。
    同步是害怕在操作过程的时候被其他线程也进行读取操作,一旦是原子性的操作就不会发生这种情况。
    因为一步到位的操作,其他线程不可能在中间干涉。另外三项都有读取、操作两个步骤,而X=1则是原子性操作。
    
  4. 顺序执行下列程序语句后,则b的值是()

    String a="Hello";

    String b=a.substring(0,2);

    正确答案: C 你的答案: B (错误)

    Hello
    Hel
    He
    null
    解释:
    不用看答案了,直接自己写吧。
    substring截取字符串前闭后开,也就是[0,2),按理说是从0,1,2但是2不包括所以就是C
    
  5. @SuppressWarnings(“deprecation”)的功能是什么?

    正确答案: A 你的答案: B (错误)

    屏蔽不赞同使用的类和方法的警告
    屏蔽在强制类型转换的时候编译器给出的警告
    关闭所有警告信息
    当在可序列化的类上缺少serialVersionUID定义的警告
    考注解:
    本题考查注解编程,对java三大注解是否了解:
    @SuppressWarnings这是java三大注解之一,主要功能是屏蔽相应的警告。
    里面的deprecation修饰符则是对java中已经过时或者废弃方法的警告。
    @SuppressWarnings(“deprecation”)的功能是屏蔽不赞同(就是过时废弃的意思)使用的类和方法的警告
    
  6. 以下哪些方法是Object类中的方法

    正确答案: A B C D 你的答案: B C (错误)

    clone()
    toString()
    wait()
    finalize()
    都是
    
  7. 下述有关c++的虚类和java接口的描述,说法错误的是?

    正确答案: C D 你的答案: A C (错误)

    c++虚类相当与java里面的抽象类
    c++中没有接口的概念,与之对应的是纯虚类,对应的是java的接口
    纯虚函数和虚函数的区别在于前者只包含定义,而后者还可以包含函数体。
    一个抽象类和接口中的方法必须是抽象方法
    解释:
    1、一个子类只能继承一个抽象类(虚类),但能实现多个接口;
    2、一个抽象类可以有构造方法,接口没有构造方法;
    3、一个抽象类中的方法不一定是抽象方法,即其中的方法可以有实现(有方法体),接口中的方法都是抽象方法,不能有方法体,只有声明;
    4、一个抽象类可以是public、private、protected、default,
       接口只有public;
    5、一个抽象类中的方法可以是public、private、protected、default,
       接口中的方法只能是public和default
    
 posted on 2020-09-16 09:00  ben跑的换行符  阅读(311)  评论(0编辑  收藏  举报