zoukankan      html  css  js  c++  java
  • java牛客刷题记录

    java牛客刷题记录

    好几天没刷题了,大清早刷个题,清醒地认识到自己有多菜。

    不过这次错的还行,4个单选,6个多选,结果对了6个。虽然有好多都不太熟悉。看题吧,以下记录模糊或者有意义的题目。

    1. 关于static说法不正确的是( )

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

      可以直接用类名来访问类中静态方法(public权限)
      静态块仅在类加载时执行一次
      static方法中不能有用this调用的方法
      不可以用对象名来访问类中的静态方法(public权限)
      解释:
      A、静态方法属于类本身,可以使用类名调用。
      B、静态块只执行一次。
      C、static块和方法不能出现this和super
      D、可以的,实例对象也可以调用静态方法。
      D选项,项目中不都经常用吗?比如类加载ClassLoader不也是静态方法吗?
      
    2. 请问所有的异常类皆直接继承于哪一个类?()

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

      java.applet.Applet
      java.lang.Throwable
      java.lang.Exception
      java.lang.Error
      

    3. 下列说法正确的是()?

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

      A我们直接调用Thread对象的run方法会报异常,所以我们应该使用start方法来开启一个线程
      B一个进程是一个独立的运行环境,可以被看做一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源
      C synchronized可以解决可见性问题,volatile可以解决原子性问题
      D ThreadLocal用于创建线程的本地变量,该变量是线程之间不共享的
      解释:
      volatile与synchronized的区别:
      volatile本质是在告诉jvm当前变量在寄存器中的值是不确定的,需要从主存中读取,synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住.
      volatile仅能使用在变量级别,synchronized则可以使用在变量,方法.
      volatile仅能实现变量的修改可见性,但不具备原子特性,而synchronized则可以保证变量的修改可见性和原子性.
      volatile不会造成线程的阻塞,而synchronized可能会造成线程的阻塞.
      volatile标记的变量不会被编译器优化,而synchronized标记的变量可以被编译器优化.
      记住一句话,synchronized很强大,既可以保证可见性,又可以保证原子性,而volatile不能保证原子性!
      A:可以直接调用run方法, 但就起不到多线程的目的了。
      
    4. 下面有关 java 类加载器,说法正确的是?()

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

      引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的
      扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。
      系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类
      tomcat 为每个 App 创建一个 Loader,里面保存着此 WebApp 的 ClassLoader。需要加载 WebApp 下的类时,就取出 ClassLoader 来使用
      
      解释:
      类的加载是由类加载器完成的,类加载器包括:根加载器( BootStrap )、扩展加载器( Extension )、系统加载器( System )和用户自定义类加载器( java.lang.ClassLoader 的子类)。从 Java 2 ( JDK 1.2 )开始,类加载过程采取了父亲委托机制( PDM )。 PDM 更好的保证了 Java 平台的安全性,在该机制中, JVM 自带的 Bootstrap 是根加载器,其他的加载器都有且仅有一个父类加载器。类的加载首先请求父类加载器加载,父类加载器无能为力时才由其子类加载器自行加载。 JVM 不会向 Java 程序提供对 Bootstrap 的引用。下面是关于几个类加载器的说明:
      
      Bootstrap :一般用本地代码实现,负责加载 JVM 基础核心类库( rt.jar );
      Extension :从 java.ext.dirs 系统属性所指定的目录中加载类库,它的父加载器是 Bootstrap ;
      system class loader :又叫应用类加载器,其父类是 Extension 。它是应用最广泛的类加载器。它从环境变量 classpath 或者系统属性 java.class.path 所指定的目录中记载类,是用户自定义加载器的默认父加载器。
      用户自定义类加载器: java.lang.ClassLoader 的子类
      
      父类委托机制是可以修改的,有些服务器就是自定义类加载器优先的。
      
    5. 下列说法错误的有( )

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

      能被java.exe成功运行的java class文件必须有main()方法
      J2SDK就是Java API
      Appletviewer.exe可利用jar选项运行.jar文件
      能被Appletviewer成功运行的java class文件必须有main()方法
      解释:
      B选项中J2SDK是编程工具,不是API.
      C选项中 Appletviewer.exe 就是用来解释执行java applet应用程序的,简单理解就是没有main函数的继承applet类的java类。
      D选项中 能被Appletviewer成功运行的java class文件没有main()方法
      
    6. 以下说法错误的是()

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

      其他选项均不正确
      java线程类优先级相同
      Thread和Runnable接口没有区别
      如果一个类继承了某个类,只能使用Runnable实现线程
      B选项,在java中线程是有分优先等级的所以优先级不能相同,错误
      C选项,Thread实现了Runnable接口是一个类不是接口,错误
      D选项,实现多线程的三种方式,一种是继承Thread类使用此方式就不能继承其他的类了。还有两种是实现Runnable接口或者实现Callable接口
      ,所以D错误。
      A选项,综上A说其余三项都是错误的,所以A选项所述为真,不是错误的。
      
  • 相关阅读:
    复制书稿(book) (二分,贪心+dp)
    spark0.9.1集群模式执行graphx測试程序(LiveJournalPageRank,新增Connected Components)
    java 的File文件
    最长公共字序列.cpp
    产品级敏捷开发关键的第一步: 制订版本号公布的节奏
    MySQL优化之——触发器
    Android 打造随意层级树形控件 考验你的数据结构和设计
    【Android】Android聊天机器人实现
    Mysql用户权限管理
    Android经常使用的工具类
  • 原文地址:https://www.cnblogs.com/chenyameng/p/13624966.html
Copyright © 2011-2022 走看看